From 811606e057d04766321a28a8d5264da070808df9 Mon Sep 17 00:00:00 2001 From: diven Date: Tue, 30 Jun 2026 22:11:51 +0800 Subject: [PATCH] init --- marketing-ui/admin-ui/public/favicon.ico | Bin 0 -> 4286 bytes marketing-ui/admin-ui/public/logo.gif | Bin 0 -> 6334 bytes marketing-ui/admin-ui/src/App.vue | 57 + .../src/api/domesticsms/record/index.ts | 59 + .../src/api/domesticsms/sendtask/index.ts | 84 + .../src/api/domesticsms/sendtask/index2.ts | 126 + .../src/api/domesticsms/signinfo/index.ts | 57 + .../src/api/domesticsms/templateinfo/index.ts | 52 + .../templateinfo/templatebindinginfo/index.ts | 56 + .../src/api/infra/apiAccessLog/index.ts | 34 + .../src/api/infra/apiErrorLog/index.ts | 48 + .../admin-ui/src/api/infra/codegen/index.ts | 122 + .../admin-ui/src/api/infra/config/index.ts | 48 + .../src/api/infra/dataSourceConfig/index.ts | 35 + .../src/api/infra/demo/demo01/index.ts | 40 + .../src/api/infra/demo/demo02/index.ts | 37 + .../src/api/infra/demo/demo03/erp/index.ts | 91 + .../src/api/infra/demo/demo03/inner/index.ts | 57 + .../src/api/infra/demo/demo03/normal/index.ts | 57 + .../admin-ui/src/api/infra/file/index.ts | 45 + .../src/api/infra/fileConfig/index.ts | 61 + .../admin-ui/src/api/infra/job/index.ts | 63 + .../admin-ui/src/api/infra/jobLog/index.ts | 34 + .../admin-ui/src/api/infra/redis/index.ts | 8 + .../admin-ui/src/api/infra/redis/types.ts | 176 + marketing-ui/admin-ui/src/api/login/index.ts | 76 + .../admin-ui/src/api/login/oauth2/index.ts | 41 + marketing-ui/admin-ui/src/api/login/types.ts | 38 + .../api/smschannel/channelaccount/index.ts | 59 + .../api/smschannel/smschannelinfo/index.ts | 60 + .../admin-ui/src/api/system/area/index.ts | 11 + .../admin-ui/src/api/system/client/index.ts | 52 + .../admin-ui/src/api/system/dept/index.ts | 43 + .../admin-ui/src/api/system/dict/dict.data.ts | 49 + .../admin-ui/src/api/system/dict/dict.type.ts | 44 + .../admin-ui/src/api/system/loginLog/index.ts | 25 + .../admin-ui/src/api/system/menu/index.ts | 49 + .../admin-ui/src/api/system/notice/index.ts | 42 + .../admin-ui/src/api/system/oauth2/client.ts | 47 + .../admin-ui/src/api/system/oauth2/token.ts | 22 + .../src/api/system/operatelog/index.ts | 30 + .../src/api/system/permission/index.ts | 42 + .../admin-ui/src/api/system/post/index.ts | 46 + .../admin-ui/src/api/system/role/index.ts | 61 + .../src/api/system/social/client/index.ts | 37 + .../src/api/system/social/user/index.ts | 24 + .../admin-ui/src/api/system/user/index.ts | 76 + .../admin-ui/src/api/system/user/profile.ts | 65 + .../src/api/system/user/socialUser.ts | 31 + .../src/api/tenant/SmsAppinfo/index.ts | 50 + marketing-ui/admin-ui/src/api/tenant/index.ts | 51 + .../admin-ui/src/assets/ai/copy-style2.svg | 1 + marketing-ui/admin-ui/src/assets/ai/copy.svg | 1 + marketing-ui/admin-ui/src/assets/ai/dall2.jpg | Bin 0 -> 110271 bytes marketing-ui/admin-ui/src/assets/ai/dall3.jpg | Bin 0 -> 89280 bytes .../admin-ui/src/assets/ai/delete.svg | 1 + marketing-ui/admin-ui/src/assets/ai/gpt.svg | 1 + .../admin-ui/src/assets/ai/qingxi.jpg | Bin 0 -> 88392 bytes marketing-ui/admin-ui/src/assets/ai/ziran.jpg | Bin 0 -> 124202 bytes .../admin-ui/src/assets/audio/response.mp3 | Bin 0 -> 3070838 bytes .../admin-ui/src/assets/imgs/avatar.gif | Bin 0 -> 6334 bytes .../admin-ui/src/assets/imgs/avatar.jpg | Bin 0 -> 6264 bytes .../src/assets/imgs/diy/app-nav-bar-mp.png | Bin 0 -> 3595 bytes .../src/assets/imgs/diy/statusBar.png | Bin 0 -> 8917 bytes .../admin-ui/src/assets/imgs/iot/device.png | Bin 0 -> 10007 bytes .../admin-ui/src/assets/imgs/logo.png | Bin 0 -> 2801 bytes .../admin-ui/src/assets/imgs/profile.jpg | Bin 0 -> 7885 bytes .../admin-ui/src/assets/imgs/wechat.png | Bin 0 -> 1881 bytes .../admin-ui/src/assets/map/json/china.json | 856 + marketing-ui/admin-ui/src/assets/svgs/403.svg | 1 + marketing-ui/admin-ui/src/assets/svgs/404.svg | 1 + marketing-ui/admin-ui/src/assets/svgs/500.svg | 1 + .../admin-ui/src/assets/svgs/bpm/add-user.svg | 1 + .../admin-ui/src/assets/svgs/bpm/approve.svg | 1 + .../admin-ui/src/assets/svgs/bpm/auditor.svg | 1 + .../admin-ui/src/assets/svgs/bpm/cancel.svg | 1 + .../src/assets/svgs/bpm/child-process.svg | 1 + .../src/assets/svgs/bpm/condition.svg | 1 + .../admin-ui/src/assets/svgs/bpm/copy.svg | 1 + .../admin-ui/src/assets/svgs/bpm/delay.svg | 1 + .../admin-ui/src/assets/svgs/bpm/finish.svg | 1 + .../admin-ui/src/assets/svgs/bpm/parallel.svg | 1 + .../admin-ui/src/assets/svgs/bpm/reject.svg | 1 + .../admin-ui/src/assets/svgs/bpm/running.svg | 1 + .../src/assets/svgs/bpm/simple-process-bg.svg | 1 + .../admin-ui/src/assets/svgs/bpm/starter.svg | 1 + .../src/assets/svgs/bpm/transactor.svg | 1 + .../admin-ui/src/assets/svgs/icon.svg | 1 + .../src/assets/svgs/iot/card-fill.svg | 1 + .../admin-ui/src/assets/svgs/iot/cube.svg | 1 + .../admin-ui/src/assets/svgs/login-bg.svg | 1 + .../admin-ui/src/assets/svgs/login-box-bg.svg | 1 + .../src/assets/svgs/member_balance.svg | 1 + .../svgs/member_expenditure_balance.svg | 1 + .../admin-ui/src/assets/svgs/member_level.svg | 1 + .../admin-ui/src/assets/svgs/member_point.svg | 1 + .../assets/svgs/member_recharge_balance.svg | 1 + .../admin-ui/src/assets/svgs/message.svg | 1 + .../admin-ui/src/assets/svgs/money.svg | 1 + .../src/assets/svgs/pay/icon/alipay_app.svg | 1 + .../src/assets/svgs/pay/icon/alipay_bar.svg | 2 + .../src/assets/svgs/pay/icon/alipay_pc.svg | 1 + .../src/assets/svgs/pay/icon/alipay_qr.svg | 2 + .../src/assets/svgs/pay/icon/alipay_wap.svg | 1 + .../src/assets/svgs/pay/icon/mock.svg | 1 + .../src/assets/svgs/pay/icon/wx_app.svg | 2 + .../src/assets/svgs/pay/icon/wx_bar.svg | 1 + .../src/assets/svgs/pay/icon/wx_lite.svg | 1 + .../src/assets/svgs/pay/icon/wx_native.svg | 1 + .../src/assets/svgs/pay/icon/wx_pub.svg | 2 + .../admin-ui/src/assets/svgs/peoples.svg | 1 + .../admin-ui/src/assets/svgs/send.svg | 1 + .../admin-ui/src/assets/svgs/shopping.svg | 1 + .../AppLinkInput/AppLinkSelectDialog.vue | 207 + .../src/components/AppLinkInput/data.ts | 236 + .../src/components/AppLinkInput/index.vue | 43 + .../admin-ui/src/components/Backtop/index.ts | 3 + .../src/components/Backtop/src/Backtop.vue | 17 + .../admin-ui/src/components/Card/index.ts | 3 + .../src/components/Card/src/CardTitle.vue | 37 + .../src/components/ColorInput/index.vue | 34 + .../src/components/ConfigGlobal/index.ts | 3 + .../ConfigGlobal/src/ConfigGlobal.vue | 62 + .../src/components/ContentDetailWrap/index.ts | 3 + .../src/ContentDetailWrap.vue | 58 + .../src/components/ContentWrap/index.ts | 3 + .../ContentWrap/src/ContentWrap.vue | 36 + .../admin-ui/src/components/CountTo/index.ts | 3 + .../src/components/CountTo/src/CountTo.vue | 182 + .../admin-ui/src/components/Crontab/index.ts | 2 + .../src/components/Crontab/src/Crontab.vue | 1015 + .../admin-ui/src/components/Cropper/index.ts | 4 + .../components/Cropper/src/CopperModal.vue | 261 + .../src/components/Cropper/src/Cropper.vue | 183 + .../components/Cropper/src/CropperAvatar.vue | 142 + .../src/components/Cropper/src/types.ts | 8 + .../src/components/DeptSelectForm/index.vue | 122 + .../src/components/Descriptions/index.ts | 4 + .../Descriptions/src/Descriptions.vue | 167 + .../src/DescriptionsItemLabel.vue | 29 + .../admin-ui/src/components/Dialog/index.ts | 3 + .../src/components/Dialog/src/Dialog.vue | 141 + .../admin-ui/src/components/DictTag/index.ts | 3 + .../src/components/DictTag/src/DictTag.vue | 90 + .../components/ComponentContainer.vue | 239 + .../components/ComponentContainerProperty.vue | 168 + .../DiyEditor/components/ComponentLibrary.vue | 211 + .../components/mobile/Carousel/config.ts | 50 + .../components/mobile/Carousel/index.vue | 43 + .../components/mobile/Carousel/property.vue | 106 + .../mobile/CouponCard/component.tsx | 73 + .../components/mobile/CouponCard/config.ts | 47 + .../components/mobile/CouponCard/index.vue | 142 + .../components/mobile/CouponCard/property.vue | 119 + .../components/mobile/Divider/config.ts | 29 + .../components/mobile/Divider/index.vue | 29 + .../components/mobile/Divider/property.vue | 80 + .../mobile/FloatingActionButton/config.ts | 36 + .../mobile/FloatingActionButton/index.vue | 74 + .../mobile/FloatingActionButton/property.vue | 44 + .../HotZoneEditDialog/controller.ts | 143 + .../components/HotZoneEditDialog/index.vue | 236 + .../components/mobile/HotZone/config.ts | 43 + .../components/mobile/HotZone/index.vue | 42 + .../components/mobile/HotZone/property.vue | 63 + .../components/mobile/ImageBar/config.ts | 27 + .../components/mobile/ImageBar/index.vue | 24 + .../components/mobile/ImageBar/property.vue | 34 + .../components/mobile/MagicCube/config.ts | 49 + .../components/mobile/MagicCube/index.vue | 73 + .../components/mobile/MagicCube/property.vue | 76 + .../components/mobile/MenuGrid/config.ts | 79 + .../components/mobile/MenuGrid/index.vue | 35 + .../components/mobile/MenuGrid/property.vue | 65 + .../components/mobile/MenuList/config.ts | 48 + .../components/mobile/MenuList/index.vue | 31 + .../components/mobile/MenuList/property.vue | 45 + .../components/mobile/MenuSwiper/config.ts | 66 + .../components/mobile/MenuSwiper/index.vue | 119 + .../components/mobile/MenuSwiper/property.vue | 76 + .../NavigationBar/components/CellProperty.vue | 98 + .../components/mobile/NavigationBar/config.ts | 82 + .../components/mobile/NavigationBar/index.vue | 90 + .../mobile/NavigationBar/property.vue | 86 + .../components/mobile/NoticeBar/config.ts | 46 + .../components/mobile/NoticeBar/index.vue | 26 + .../components/mobile/NoticeBar/property.vue | 46 + .../components/mobile/PageConfig/config.ts | 23 + .../components/mobile/PageConfig/property.vue | 34 + .../components/mobile/Popover/config.ts | 26 + .../components/mobile/Popover/index.vue | 38 + .../components/mobile/Popover/property.vue | 38 + .../components/mobile/ProductCard/config.ts | 97 + .../components/mobile/ProductCard/index.vue | 167 + .../mobile/ProductCard/property.vue | 149 + .../components/mobile/ProductList/config.ts | 64 + .../components/mobile/ProductList/index.vue | 132 + .../mobile/ProductList/property.vue | 99 + .../mobile/PromotionArticle/config.ts | 25 + .../mobile/PromotionArticle/index.vue | 27 + .../mobile/PromotionArticle/property.vue | 56 + .../mobile/PromotionCombination/config.ts | 96 + .../mobile/PromotionCombination/index.vue | 201 + .../mobile/PromotionCombination/property.vue | 164 + .../mobile/PromotionPoint/config.ts | 96 + .../mobile/PromotionPoint/index.vue | 202 + .../mobile/PromotionPoint/property.vue | 154 + .../mobile/PromotionSeckill/config.ts | 96 + .../mobile/PromotionSeckill/index.vue | 201 + .../mobile/PromotionSeckill/property.vue | 164 + .../components/mobile/SearchBar/config.ts | 43 + .../components/mobile/SearchBar/index.vue | 75 + .../components/mobile/SearchBar/property.vue | 73 + .../components/mobile/TabBar/config.ts | 97 + .../components/mobile/TabBar/index.vue | 66 + .../components/mobile/TabBar/property.vue | 103 + .../components/mobile/TitleBar/config.ts | 67 + .../components/mobile/TitleBar/index.vue | 81 + .../components/mobile/TitleBar/property.vue | 116 + .../components/mobile/UserCard/config.ts | 21 + .../components/mobile/UserCard/index.vue | 29 + .../components/mobile/UserCard/property.vue | 17 + .../components/mobile/UserCoupon/config.ts | 23 + .../components/mobile/UserCoupon/index.vue | 15 + .../components/mobile/UserCoupon/property.vue | 17 + .../components/mobile/UserOrder/config.ts | 23 + .../components/mobile/UserOrder/index.vue | 13 + .../components/mobile/UserOrder/property.vue | 17 + .../components/mobile/UserWallet/config.ts | 23 + .../components/mobile/UserWallet/index.vue | 15 + .../components/mobile/UserWallet/property.vue | 17 + .../components/mobile/VideoPlayer/config.ts | 37 + .../components/mobile/VideoPlayer/index.vue | 30 + .../mobile/VideoPlayer/property.vue | 55 + .../DiyEditor/components/mobile/index.ts | 61 + .../src/components/DiyEditor/index.vue | 599 + .../admin-ui/src/components/DiyEditor/util.ts | 125 + .../src/components/DocAlert/index.vue | 34 + .../src/components/Draggable/index.vue | 84 + .../admin-ui/src/components/Echart/index.ts | 3 + .../src/components/Echart/src/Echart.vue | 119 + .../admin-ui/src/components/Editor/index.ts | 8 + .../src/components/Editor/src/Editor.vue | 241 + .../admin-ui/src/components/Error/index.ts | 3 + .../src/components/Error/src/Error.vue | 58 + .../admin-ui/src/components/Form/index.ts | 15 + .../admin-ui/src/components/Form/src/Form.vue | 307 + .../src/components/Form/src/componentMap.ts | 55 + .../Form/src/components/useRenderCheckbox.tsx | 26 + .../Form/src/components/useRenderRadio.tsx | 26 + .../Form/src/components/useRenderSelect.tsx | 57 + .../src/components/Form/src/helper.ts | 148 + .../admin-ui/src/components/Form/src/types.ts | 17 + .../src/components/FormCreate/index.ts | 4 + .../FormCreate/src/components/DictSelect.vue | 59 + .../src/components/useApiSelect.tsx | 247 + .../components/FormCreate/src/config/index.ts | 15 + .../FormCreate/src/config/selectRule.ts | 181 + .../src/config/useDictSelectRule.ts | 64 + .../FormCreate/src/config/useEditorRule.ts | 32 + .../FormCreate/src/config/useSelectRule.ts | 36 + .../src/config/useUploadFileRule.ts | 80 + .../FormCreate/src/config/useUploadImgRule.ts | 89 + .../src/config/useUploadImgsRule.ts | 84 + .../components/FormCreate/src/type/index.ts | 50 + .../FormCreate/src/useFormCreateDesigner.ts | 100 + .../components/FormCreate/src/utils/index.ts | 61 + .../src/components/Highlight/index.ts | 3 + .../components/Highlight/src/Highlight.vue | 65 + .../admin-ui/src/components/IFrame/index.ts | 3 + .../src/components/IFrame/src/IFrame.vue | 47 + .../admin-ui/src/components/Icon/index.ts | 4 + .../admin-ui/src/components/Icon/src/Icon.vue | 86 + .../src/components/Icon/src/IconSelect.vue | 239 + .../admin-ui/src/components/Icon/src/data.ts | 1961 ++ .../src/components/ImageViewer/index.ts | 33 + .../ImageViewer/src/ImageViewer.vue | 35 + .../src/components/ImageViewer/src/types.ts | 9 + .../admin-ui/src/components/Infotip/index.ts | 3 + .../src/components/Infotip/src/Infotip.vue | 54 + .../src/components/InputPassword/index.ts | 3 + .../InputPassword/src/InputPassword.vue | 152 + .../src/components/InputWithColor/index.vue | 35 + .../src/components/MagicCubeEditor/index.vue | 270 + .../src/components/MagicCubeEditor/util.ts | 72 + .../src/components/MarkdownView/index.vue | 204 + .../src/components/OperateLogV2/index.ts | 3 + .../OperateLogV2/src/OperateLogV2.vue | 105 + .../src/components/Pagination/index.vue | 87 + .../admin-ui/src/components/Qrcode/index.ts | 3 + .../src/components/Qrcode/src/Qrcode.vue | 253 + .../src/components/RouterSearch/index.vue | 119 + .../admin-ui/src/components/Search/index.ts | 3 + .../src/components/Search/src/Search.vue | 157 + .../ShortcutDateRangePicker/index.vue | 84 + .../src/NodeHandler.vue | 321 + .../src/ProcessNodeTree.vue | 150 + .../src/SimpleProcessDesigner.vue | 208 + .../src/SimpleProcessModel.vue | 265 + .../src/SimpleProcessViewer.vue | 47 + .../SimpleProcessDesignerV2/src/consts.ts | 900 + .../SimpleProcessDesignerV2/src/index.ts | 5 + .../SimpleProcessDesignerV2/src/node.ts | 616 + .../nodes-config/ChildProcessNodeConfig.vue | 610 + .../src/nodes-config/ConditionNodeConfig.vue | 222 + .../src/nodes-config/CopyTaskNodeConfig.vue | 392 + .../src/nodes-config/DelayTimerNodeConfig.vue | 190 + .../src/nodes-config/RouterNodeConfig.vue | 201 + .../src/nodes-config/StartUserNodeConfig.vue | 224 + .../src/nodes-config/TriggerNodeConfig.vue | 525 + .../src/nodes-config/UserTaskNodeConfig.vue | 1058 + .../src/nodes-config/components/Condition.vue | 277 + .../components/ConditionDialog.vue | 309 + .../components/HttpRequestParamSetting.vue | 188 + .../components/HttpRequestSetting.vue | 127 + .../components/UserTaskListener.vue | 88 + .../src/nodes/ChildProcessNode.vue | 106 + .../src/nodes/CopyTaskNode.vue | 97 + .../src/nodes/DelayTimerNode.vue | 97 + .../src/nodes/EndEventNode.vue | 102 + .../src/nodes/ExclusiveNode.vue | 240 + .../src/nodes/InclusiveNode.vue | 244 + .../src/nodes/ParallelNode.vue | 184 + .../src/nodes/RouterNode.vue | 97 + .../src/nodes/StartUserNode.vue | 154 + .../src/nodes/TriggerNode.vue | 97 + .../src/nodes/UserTaskNode.vue | 181 + .../SimpleProcessDesignerV2/src/utils.ts | 41 + .../theme/iconfont.ttf | Bin 0 -> 4808 bytes .../theme/iconfont.woff | Bin 0 -> 3176 bytes .../theme/iconfont.woff2 | Bin 0 -> 2628 bytes .../theme/simple-process-designer.scss | 826 + .../admin-ui/src/components/Sticky/index.ts | 3 + .../src/components/Sticky/src/Sticky.vue | 143 + .../src/components/SummaryCard/index.vue | 52 + .../admin-ui/src/components/Table/index.ts | 13 + .../src/components/Table/src/Table.vue | 311 + .../components/Table/src/TableSelectForm.vue | 92 + .../src/components/Table/src/helper.ts | 8 + .../src/components/Table/src/types.ts | 26 + .../src/components/Tinyflow/Tinyflow.vue | 63 + .../src/components/Tinyflow/ui/index.css | 1 + .../src/components/Tinyflow/ui/index.d.ts | 41 + .../src/components/Tinyflow/ui/index.js | 16984 ++++++++++++++++ .../src/components/Tinyflow/ui/index.umd.js | 9 + .../admin-ui/src/components/Tooltip/index.ts | 3 + .../src/components/Tooltip/src/Tooltip.vue | 17 + .../src/components/UploadFile/index.ts | 5 + .../components/UploadFile/src/UploadFile.vue | 230 + .../components/UploadFile/src/UploadImg.vue | 271 + .../components/UploadFile/src/UploadImgs.vue | 318 + .../components/UploadFile/src/useUpload.ts | 106 + .../src/components/UserSelectForm/index.vue | 171 + .../src/components/Verifition/index.ts | 3 + .../src/components/Verifition/src/Verify.vue | 441 + .../Verifition/src/Verify/VerifyPoints.vue | 250 + .../Verifition/src/Verify/VerifySlide.vue | 376 + .../components/Verifition/src/Verify/index.ts | 4 + .../components/Verifition/src/utils/ase.ts | 14 + .../components/Verifition/src/utils/util.ts | 97 + .../components/VerticalButtonGroup/index.vue | 44 + .../admin-ui/src/components/XButton/index.ts | 4 + .../src/components/XButton/src/XButton.vue | 50 + .../components/XButton/src/XTextButton.vue | 49 + .../package/designer/ProcessDesigner.vue | 655 + .../package/designer/ProcessViewer.vue | 379 + .../package/designer/index.ts | 8 + .../package/designer/index2.ts | 8 + .../plugins/content-pad/contentPadProvider.js | 423 + .../designer/plugins/content-pad/index.js | 6 + .../package/designer/plugins/defaultEmpty.js | 24 + .../descriptor/activitiDescriptor.json | 1004 + .../plugins/descriptor/camundaDescriptor.json | 1020 + .../descriptor/flowableDescriptor.json | 1483 ++ .../activiti/activitiExtension.js | 83 + .../extension-moddle/activiti/index.js | 11 + .../extension-moddle/camunda/extension.js | 151 + .../plugins/extension-moddle/camunda/index.js | 8 + .../flowable/flowableExtension.js | 83 + .../extension-moddle/flowable/index.js | 10 + .../designer/plugins/palette/CustomPalette.js | 233 + .../package/designer/plugins/palette/index.js | 22 + .../plugins/palette/paletteProvider.js | 219 + .../plugins/translate/customTranslate.js | 44 + .../package/designer/plugins/translate/zh.js | 242 + .../bpmnProcessDesigner/package/index.ts | 11 + .../package/palette/ProcessPalette.vue | 45 + .../package/penal/PropertiesPanel.vue | 258 + .../package/penal/base/ElementBaseInfo.vue | 183 + .../custom-config/ElementCustomConfig.vue | 39 + .../components/BoundaryEventTimer.vue | 252 + .../components/UserTaskCustomConfig.vue | 688 + .../package/penal/custom-config/data.ts | 13 + .../penal/flow-condition/FlowCondition.vue | 191 + .../package/penal/form/ElementForm.vue | 478 + .../package/penal/index.js | 7 + .../penal/listeners/ElementListeners.vue | 448 + .../penal/listeners/ProcessListenerDialog.vue | 85 + .../penal/listeners/UserTaskListeners.vue | 491 + .../package/penal/listeners/template.js | 178 + .../package/penal/listeners/utilSelf.ts | 89 + .../multi-instance/ElementMultiInstance.vue | 421 + .../penal/other/ElementOtherConfig.vue | 55 + .../penal/properties/ElementProperties.vue | 168 + .../penal/signal-message/SignalAndMessage.vue | 113 + .../package/penal/task/ElementTask.vue | 78 + .../package/penal/task/data.ts | 36 + .../task/task-components/CallActivity.vue | 280 + .../ProcessExpressionDialog.vue | 70 + .../task/task-components/ReceiveTask.vue | 125 + .../penal/task/task-components/ScriptTask.vue | 99 + .../task/task-components/ServiceTask.vue | 91 + .../penal/task/task-components/UserTask.vue | 469 + .../package/theme/element-variables.scss | 70 + .../package/theme/index.scss | 117 + .../package/theme/process-designer.scss | 159 + .../package/theme/process-panel.scss | 107 + .../bpmnProcessDesigner/package/utils.ts | 78 + .../src/highlight/index.js | 5 + .../modules/custom-renderer/CustomRenderer.js | 14 + .../src/modules/custom-renderer/index.js | 6 + .../src/modules/rules/CustomRules.js | 16 + .../src/modules/rules/index.js | 6 + .../bpmnProcessDesigner/src/translations.ts | 25 + .../src/utils/directive/clickOutSide.js | 39 + .../bpmnProcessDesigner/src/utils/index.js | 10 + .../bpmnProcessDesigner/src/utils/xml2json.js | 50 + marketing-ui/admin-ui/src/components/index.ts | 6 + .../admin-ui/src/config/axios/config.ts | 28 + .../admin-ui/src/config/axios/errorCode.ts | 6 + .../admin-ui/src/config/axios/index.ts | 47 + .../admin-ui/src/config/axios/service.ts | 219 + marketing-ui/admin-ui/src/directives/index.ts | 24 + .../src/directives/permission/hasPermi.ts | 31 + .../src/directives/permission/hasRole.ts | 28 + .../admin-ui/src/hooks/event/useScrollTo.ts | 60 + .../admin-ui/src/hooks/web/useCache.ts | 38 + .../admin-ui/src/hooks/web/useConfigGlobal.ts | 9 + .../admin-ui/src/hooks/web/useCrudSchemas.ts | 326 + .../admin-ui/src/hooks/web/useDesign.ts | 18 + .../admin-ui/src/hooks/web/useEmitt.ts | 22 + .../admin-ui/src/hooks/web/useForm.ts | 94 + .../admin-ui/src/hooks/web/useGuide.ts | 49 + .../admin-ui/src/hooks/web/useI18n.ts | 53 + .../admin-ui/src/hooks/web/useIcon.ts | 8 + .../admin-ui/src/hooks/web/useLocale.ts | 35 + .../admin-ui/src/hooks/web/useMessage.ts | 95 + .../admin-ui/src/hooks/web/useNProgress.ts | 33 + .../admin-ui/src/hooks/web/useNetwork.ts | 21 + marketing-ui/admin-ui/src/hooks/web/useNow.ts | 60 + .../admin-ui/src/hooks/web/usePageLoading.ts | 18 + .../admin-ui/src/hooks/web/useTable.ts | 223 + .../admin-ui/src/hooks/web/useTagsView.ts | 63 + .../admin-ui/src/hooks/web/useTimeAgo.ts | 49 + .../admin-ui/src/hooks/web/useTitle.ts | 24 + .../admin-ui/src/hooks/web/useValidator.ts | 60 + .../admin-ui/src/hooks/web/useWatermark.ts | 55 + marketing-ui/admin-ui/src/layout/Layout.vue | 75 + .../src/layout/components/AppView.vue | 55 + .../src/layout/components/Breadcrumb/index.ts | 3 + .../components/Breadcrumb/src/Breadcrumb.vue | 130 + .../components/Breadcrumb/src/helper.ts | 31 + .../src/layout/components/Collapse/index.ts | 3 + .../components/Collapse/src/Collapse.vue | 35 + .../layout/components/ContextMenu/index.ts | 10 + .../ContextMenu/src/ContextMenu.vue | 76 + .../src/layout/components/Footer/index.ts | 3 + .../layout/components/Footer/src/Footer.vue | 27 + .../layout/components/LocaleDropdown/index.ts | 3 + .../LocaleDropdown/src/LocaleDropdown.vue | 52 + .../src/layout/components/Logo/index.ts | 3 + .../src/layout/components/Logo/src/Logo.vue | 88 + .../src/layout/components/Menu/index.ts | 3 + .../src/layout/components/Menu/src/Menu.vue | 272 + .../Menu/src/components/useRenderMenuItem.tsx | 50 + .../src/components/useRenderMenuTitle.tsx | 27 + .../src/layout/components/Menu/src/helper.ts | 54 + .../src/layout/components/Screenfull/index.ts | 3 + .../components/Screenfull/src/Screenfull.vue | 32 + .../src/layout/components/Setting/index.ts | 3 + .../layout/components/Setting/src/Setting.vue | 302 + .../src/components/ColorRadioPicker.vue | 67 + .../src/components/InterfaceDisplay.vue | 236 + .../src/components/LayoutRadioPicker.vue | 172 + .../layout/components/SizeDropdown/index.ts | 3 + .../SizeDropdown/src/SizeDropdown.vue | 40 + .../src/layout/components/TabMenu/index.ts | 3 + .../layout/components/TabMenu/src/TabMenu.vue | 240 + .../layout/components/TabMenu/src/helper.ts | 51 + .../src/layout/components/TagsView/index.ts | 3 + .../components/TagsView/src/TagsView.vue | 651 + .../layout/components/TagsView/src/helper.ts | 21 + .../layout/components/ThemeSwitch/index.ts | 3 + .../ThemeSwitch/src/ThemeSwitch.vue | 46 + .../src/layout/components/ToolHeader.vue | 88 + .../src/layout/components/UserInfo/index.ts | 3 + .../components/UserInfo/src/UserInfo.vue | 122 + .../UserInfo/src/components/LockDialog.vue | 98 + .../UserInfo/src/components/LockPage.vue | 270 + .../src/layout/components/useRenderLayout.tsx | 294 + marketing-ui/admin-ui/src/locales/en.ts | 460 + marketing-ui/admin-ui/src/locales/zh-CN.ts | 456 + marketing-ui/admin-ui/src/main.ts | 74 + marketing-ui/admin-ui/src/permission.ts | 106 + .../admin-ui/src/plugins/animate.css/index.ts | 1 + .../admin-ui/src/plugins/echarts/index.ts | 49 + .../admin-ui/src/plugins/elementPlus/index.ts | 17 + .../admin-ui/src/plugins/formCreate/index.ts | 133 + .../admin-ui/src/plugins/svgIcon/index.ts | 3 + .../admin-ui/src/plugins/tongji/index.ts | 23 + .../admin-ui/src/plugins/unocss/index.ts | 1 + .../admin-ui/src/plugins/vueI18n/helper.ts | 3 + .../admin-ui/src/plugins/vueI18n/index.ts | 42 + marketing-ui/admin-ui/src/router/index.ts | 28 + .../admin-ui/src/router/modules/remaining.ts | 293 + marketing-ui/admin-ui/src/store/index.ts | 12 + .../admin-ui/src/store/modules/app.ts | 282 + .../admin-ui/src/store/modules/dict.ts | 104 + .../admin-ui/src/store/modules/locale.ts | 59 + .../admin-ui/src/store/modules/lock.ts | 48 + .../admin-ui/src/store/modules/permission.ts | 71 + .../admin-ui/src/store/modules/tagsView.ts | 177 + .../admin-ui/src/store/modules/user.ts | 103 + .../src/styles/FormCreate/fonts/fontello.woff | Bin 0 -> 4252 bytes .../admin-ui/src/styles/FormCreate/index.scss | 22 + .../admin-ui/src/styles/global.module.scss | 6 + marketing-ui/admin-ui/src/styles/index.scss | 37 + marketing-ui/admin-ui/src/styles/theme.scss | 6 + marketing-ui/admin-ui/src/styles/var.css | 74 + .../admin-ui/src/styles/variables.scss | 4 + .../admin-ui/src/types/auto-components.d.ts | 179 + .../admin-ui/src/types/configGlobal.d.ts | 4 + .../admin-ui/src/types/contextMenu.d.ts | 7 + .../admin-ui/src/types/descriptions.d.ts | 14 + .../admin-ui/src/types/elementPlus.d.ts | 3 + marketing-ui/admin-ui/src/types/form.d.ts | 44 + marketing-ui/admin-ui/src/types/icon.d.ts | 5 + marketing-ui/admin-ui/src/types/infoTip.d.ts | 4 + marketing-ui/admin-ui/src/types/layout.d.ts | 1 + .../admin-ui/src/types/localeDropdown.d.ts | 10 + marketing-ui/admin-ui/src/types/qrcode.d.ts | 9 + marketing-ui/admin-ui/src/types/table.d.ts | 44 + marketing-ui/admin-ui/src/types/theme.d.ts | 16 + marketing-ui/admin-ui/src/utils/Logger.ts | 100 + marketing-ui/admin-ui/src/utils/auth.ts | 63 + marketing-ui/admin-ui/src/utils/color.ts | 174 + marketing-ui/admin-ui/src/utils/constants.ts | 465 + marketing-ui/admin-ui/src/utils/dateUtil.ts | 18 + marketing-ui/admin-ui/src/utils/dict.ts | 158 + marketing-ui/admin-ui/src/utils/domUtils.ts | 289 + marketing-ui/admin-ui/src/utils/download.ts | 100 + marketing-ui/admin-ui/src/utils/filt.ts | 157 + marketing-ui/admin-ui/src/utils/formCreate.ts | 58 + marketing-ui/admin-ui/src/utils/formRules.ts | 7 + marketing-ui/admin-ui/src/utils/formatTime.ts | 356 + marketing-ui/admin-ui/src/utils/formatter.ts | 7 + marketing-ui/admin-ui/src/utils/index.ts | 553 + marketing-ui/admin-ui/src/utils/is.ts | 118 + marketing-ui/admin-ui/src/utils/jsencrypt.ts | 31 + marketing-ui/admin-ui/src/utils/permission.ts | 36 + marketing-ui/admin-ui/src/utils/propTypes.ts | 24 + .../admin-ui/src/utils/routerHelper.ts | 256 + marketing-ui/admin-ui/src/utils/tree.ts | 403 + marketing-ui/admin-ui/src/utils/tsxHelper.ts | 16 + marketing-ui/admin-ui/src/views/Error/403.vue | 8 + marketing-ui/admin-ui/src/views/Error/404.vue | 7 + marketing-ui/admin-ui/src/views/Error/500.vue | 7 + .../admin-ui/src/views/Home/Index.vue | 171 + .../admin-ui/src/views/Home/Index2.vue | 319 + .../admin-ui/src/views/Home/echarts-data.ts | 399 + marketing-ui/admin-ui/src/views/Home/types.ts | 54 + .../admin-ui/src/views/Login/Login.vue | 121 + .../admin-ui/src/views/Login/SocialLogin.vue | 347 + .../Login/components/ForgetPasswordForm.vue | 263 + .../src/views/Login/components/LoginForm.vue | 318 + .../views/Login/components/LoginFormTitle.vue | 26 + .../src/views/Login/components/MobileForm.vue | 217 + .../src/views/Login/components/QrCodeForm.vue | 30 + .../views/Login/components/RegisterForm.vue | 258 + .../src/views/Login/components/SSOLogin.vue | 199 + .../src/views/Login/components/index.ts | 9 + .../src/views/Login/components/useLogin.ts | 42 + .../admin-ui/src/views/Profile/Index.vue | 62 + .../views/Profile/components/BasicInfo.vue | 96 + .../views/Profile/components/ProfileUser.vue | 99 + .../src/views/Profile/components/ResetPwd.vue | 73 + .../views/Profile/components/UserAvatar.vue | 45 + .../views/Profile/components/UserSocial.vue | 107 + .../src/views/Profile/components/index.ts | 6 + .../admin-ui/src/views/Redirect/Redirect.vue | 28 + .../views/domesticsms/record/RecordDetail.vue | 69 + .../views/domesticsms/record/RecordForm.vue | 145 + .../src/views/domesticsms/record/index.vue | 350 + .../sendtask/SendTaskForm-backup.vue | 435 + .../domesticsms/sendtask/SmsTaskForm.vue | 593 + .../src/views/domesticsms/sendtask/index.vue | 387 + .../domesticsms/signinfo/SignInfoForm.vue | 204 + .../src/views/domesticsms/signinfo/index.vue | 284 + .../templateinfo/TemplateInfoForm.vue | 219 + .../views/domesticsms/templateinfo/index.vue | 277 + .../TemplateBindingInfoForm.vue | 132 + .../templatebindinginfo/index.vue | 206 + .../infra/apiAccessLog/ApiAccessLogDetail.vue | 79 + .../src/views/infra/apiAccessLog/index.vue | 224 + .../infra/apiErrorLog/ApiErrorLogDetail.vue | 81 + .../src/views/infra/apiErrorLog/index.vue | 251 + .../admin-ui/src/views/infra/build/index.vue | 184 + .../src/views/infra/codegen/EditTable.vue | 87 + .../src/views/infra/codegen/ImportTable.vue | 151 + .../src/views/infra/codegen/PreviewCode.vue | 222 + .../codegen/components/BasicInfoForm.vue | 87 + .../codegen/components/ColumInfoForm.vue | 153 + .../codegen/components/GenerateInfoForm.vue | 385 + .../views/infra/codegen/components/index.ts | 4 + .../src/views/infra/codegen/index.vue | 254 + .../src/views/infra/config/ConfigForm.vue | 131 + .../admin-ui/src/views/infra/config/index.vue | 227 + .../dataSourceConfig/DataSourceConfigForm.vue | 111 + .../views/infra/dataSourceConfig/index.vue | 106 + .../infra/demo/demo01/Demo01ContactForm.vue | 126 + .../src/views/infra/demo/demo01/index.vue | 213 + .../infra/demo/demo02/Demo02CategoryForm.vue | 114 + .../src/views/infra/demo/demo02/index.vue | 206 + .../demo/demo03/erp/Demo03StudentForm.vue | 121 + .../erp/components/Demo03CourseForm.vue | 99 + .../erp/components/Demo03CourseList.vue | 130 + .../demo03/erp/components/Demo03GradeForm.vue | 99 + .../demo03/erp/components/Demo03GradeList.vue | 130 + .../src/views/infra/demo/demo03/erp/index.vue | 247 + .../demo/demo03/inner/Demo03StudentForm.vue | 153 + .../inner/components/Demo03CourseForm.vue | 100 + .../inner/components/Demo03CourseList.vue | 51 + .../inner/components/Demo03GradeForm.vue | 72 + .../inner/components/Demo03GradeList.vue | 55 + .../views/infra/demo/demo03/inner/index.vue | 228 + .../demo/demo03/normal/Demo03StudentForm.vue | 153 + .../normal/components/Demo03CourseForm.vue | 100 + .../normal/components/Demo03GradeForm.vue | 72 + .../views/infra/demo/demo03/normal/index.vue | 213 + .../admin-ui/src/views/infra/druid/index.vue | 26 + .../src/views/infra/file/FileForm.vue | 99 + .../admin-ui/src/views/infra/file/index.vue | 202 + .../views/infra/fileConfig/FileConfigForm.vue | 196 + .../src/views/infra/fileConfig/index.vue | 217 + .../src/views/infra/job/JobDetail.vue | 73 + .../admin-ui/src/views/infra/job/JobForm.vue | 137 + .../admin-ui/src/views/infra/job/index.vue | 300 + .../views/infra/job/logger/JobLogDetail.vue | 59 + .../src/views/infra/job/logger/index.vue | 197 + .../admin-ui/src/views/infra/redis/index.vue | 267 + .../admin-ui/src/views/infra/server/index.vue | 28 + .../src/views/infra/skywalking/index.vue | 26 + .../src/views/infra/swagger/index.vue | 27 + .../src/views/infra/webSocket/index.vue | 184 + .../internationalsms/record/RecordDetail.vue | 69 + .../internationalsms/record/RecordForm.vue | 145 + .../views/internationalsms/record/index.vue | 306 + .../internationalsms/sendtask/SmsTaskForm.vue | 593 + .../views/internationalsms/sendtask/index.vue | 367 + .../signinfo/SignInfoForm.vue | 204 + .../views/internationalsms/signinfo/index.vue | 246 + .../templateinfo/TemplateInfoForm.vue | 219 + .../internationalsms/templateinfo/index.vue | 277 + .../TemplateBindingInfoForm.vue | 123 + .../templatebindinginfo/index.vue | 206 + .../channelaccount/ChannelAccountForm.vue | 278 + .../views/smschannel/channelaccount/index.vue | 188 + .../smschannelinfo/SmsChannelInfoForm.vue | 320 + .../views/smschannel/smschannelinfo/index.vue | 250 + .../src/views/system/area/AreaForm.vue | 72 + .../admin-ui/src/views/system/area/index.vue | 78 + .../src/views/system/client/ClientForm.vue | 127 + .../src/views/system/client/index.vue | 290 + .../src/views/system/dept/DeptForm.vue | 174 + .../admin-ui/src/views/system/dept/index.vue | 190 + .../src/views/system/dict/DictTypeForm.vue | 124 + .../views/system/dict/data/DictDataForm.vue | 183 + .../src/views/system/dict/data/index.vue | 210 + .../admin-ui/src/views/system/dict/index.vue | 231 + .../views/system/loginlog/LoginLogDetail.vue | 51 + .../src/views/system/loginlog/index.vue | 179 + .../src/views/system/menu/MenuForm.vue | 257 + .../admin-ui/src/views/system/menu/index.vue | 316 + .../src/views/system/notice/NoticeForm.vue | 132 + .../src/views/system/notice/index.vue | 189 + .../system/operatelog/OperateLogDetail.vue | 68 + .../src/views/system/operatelog/index.vue | 212 + .../src/views/system/post/PostForm.vue | 125 + .../admin-ui/src/views/system/post/index.vue | 203 + .../views/system/role/RoleAssignMenuForm.vue | 153 + .../system/role/RoleDataPermissionForm.vue | 169 + .../src/views/system/role/RoleForm.vue | 126 + .../admin-ui/src/views/system/role/index.vue | 267 + .../src/views/system/user/DeptTree.vue | 63 + .../views/system/user/UserAssignRoleForm.vue | 96 + .../src/views/system/user/UserForm.vue | 219 + .../src/views/system/user/UserImportForm.vue | 138 + .../admin-ui/src/views/system/user/index.vue | 360 + .../tenant/SmsAppinfo/SmsAppinfoForm.vue | 214 + .../src/views/tenant/SmsAppinfo/index.vue | 234 + .../admin-ui/src/views/tenant/TenantForm.vue | 150 + .../admin-ui/src/views/tenant/index.vue | 242 + marketing-ui/admin-ui/types/custom-types.d.ts | 27 + marketing-ui/admin-ui/types/env.d.ts | 35 + marketing-ui/admin-ui/types/global.d.ts | 58 + marketing-ui/admin-ui/types/router.d.ts | 84 + 706 files changed, 98319 insertions(+) create mode 100644 marketing-ui/admin-ui/public/favicon.ico create mode 100644 marketing-ui/admin-ui/public/logo.gif create mode 100644 marketing-ui/admin-ui/src/App.vue create mode 100644 marketing-ui/admin-ui/src/api/domesticsms/record/index.ts create mode 100644 marketing-ui/admin-ui/src/api/domesticsms/sendtask/index.ts create mode 100644 marketing-ui/admin-ui/src/api/domesticsms/sendtask/index2.ts create mode 100644 marketing-ui/admin-ui/src/api/domesticsms/signinfo/index.ts create mode 100644 marketing-ui/admin-ui/src/api/domesticsms/templateinfo/index.ts create mode 100644 marketing-ui/admin-ui/src/api/domesticsms/templateinfo/templatebindinginfo/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/apiAccessLog/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/apiErrorLog/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/codegen/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/config/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/dataSourceConfig/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/demo/demo01/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/demo/demo02/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/demo/demo03/erp/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/demo/demo03/inner/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/demo/demo03/normal/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/file/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/fileConfig/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/job/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/jobLog/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/redis/index.ts create mode 100644 marketing-ui/admin-ui/src/api/infra/redis/types.ts create mode 100644 marketing-ui/admin-ui/src/api/login/index.ts create mode 100644 marketing-ui/admin-ui/src/api/login/oauth2/index.ts create mode 100644 marketing-ui/admin-ui/src/api/login/types.ts create mode 100644 marketing-ui/admin-ui/src/api/smschannel/channelaccount/index.ts create mode 100644 marketing-ui/admin-ui/src/api/smschannel/smschannelinfo/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/area/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/client/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/dept/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/dict/dict.data.ts create mode 100644 marketing-ui/admin-ui/src/api/system/dict/dict.type.ts create mode 100644 marketing-ui/admin-ui/src/api/system/loginLog/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/menu/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/notice/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/oauth2/client.ts create mode 100644 marketing-ui/admin-ui/src/api/system/oauth2/token.ts create mode 100644 marketing-ui/admin-ui/src/api/system/operatelog/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/permission/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/post/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/role/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/social/client/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/social/user/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/user/index.ts create mode 100644 marketing-ui/admin-ui/src/api/system/user/profile.ts create mode 100644 marketing-ui/admin-ui/src/api/system/user/socialUser.ts create mode 100644 marketing-ui/admin-ui/src/api/tenant/SmsAppinfo/index.ts create mode 100644 marketing-ui/admin-ui/src/api/tenant/index.ts create mode 100644 marketing-ui/admin-ui/src/assets/ai/copy-style2.svg create mode 100644 marketing-ui/admin-ui/src/assets/ai/copy.svg create mode 100644 marketing-ui/admin-ui/src/assets/ai/dall2.jpg create mode 100644 marketing-ui/admin-ui/src/assets/ai/dall3.jpg create mode 100644 marketing-ui/admin-ui/src/assets/ai/delete.svg create mode 100644 marketing-ui/admin-ui/src/assets/ai/gpt.svg create mode 100644 marketing-ui/admin-ui/src/assets/ai/qingxi.jpg create mode 100644 marketing-ui/admin-ui/src/assets/ai/ziran.jpg create mode 100644 marketing-ui/admin-ui/src/assets/audio/response.mp3 create mode 100644 marketing-ui/admin-ui/src/assets/imgs/avatar.gif create mode 100644 marketing-ui/admin-ui/src/assets/imgs/avatar.jpg create mode 100644 marketing-ui/admin-ui/src/assets/imgs/diy/app-nav-bar-mp.png create mode 100644 marketing-ui/admin-ui/src/assets/imgs/diy/statusBar.png create mode 100644 marketing-ui/admin-ui/src/assets/imgs/iot/device.png create mode 100644 marketing-ui/admin-ui/src/assets/imgs/logo.png create mode 100644 marketing-ui/admin-ui/src/assets/imgs/profile.jpg create mode 100644 marketing-ui/admin-ui/src/assets/imgs/wechat.png create mode 100644 marketing-ui/admin-ui/src/assets/map/json/china.json create mode 100644 marketing-ui/admin-ui/src/assets/svgs/403.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/404.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/500.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/add-user.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/approve.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/auditor.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/cancel.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/child-process.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/condition.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/copy.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/delay.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/finish.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/parallel.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/reject.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/running.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/simple-process-bg.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/starter.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/bpm/transactor.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/icon.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/iot/card-fill.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/iot/cube.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/login-bg.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/login-box-bg.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/member_balance.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/member_expenditure_balance.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/member_level.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/member_point.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/member_recharge_balance.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/message.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/money.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_app.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_bar.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_pc.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_qr.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_wap.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/mock.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_app.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_bar.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_lite.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_native.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_pub.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/peoples.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/send.svg create mode 100644 marketing-ui/admin-ui/src/assets/svgs/shopping.svg create mode 100644 marketing-ui/admin-ui/src/components/AppLinkInput/AppLinkSelectDialog.vue create mode 100644 marketing-ui/admin-ui/src/components/AppLinkInput/data.ts create mode 100644 marketing-ui/admin-ui/src/components/AppLinkInput/index.vue create mode 100644 marketing-ui/admin-ui/src/components/Backtop/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Backtop/src/Backtop.vue create mode 100644 marketing-ui/admin-ui/src/components/Card/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Card/src/CardTitle.vue create mode 100644 marketing-ui/admin-ui/src/components/ColorInput/index.vue create mode 100644 marketing-ui/admin-ui/src/components/ConfigGlobal/index.ts create mode 100644 marketing-ui/admin-ui/src/components/ConfigGlobal/src/ConfigGlobal.vue create mode 100644 marketing-ui/admin-ui/src/components/ContentDetailWrap/index.ts create mode 100644 marketing-ui/admin-ui/src/components/ContentDetailWrap/src/ContentDetailWrap.vue create mode 100644 marketing-ui/admin-ui/src/components/ContentWrap/index.ts create mode 100644 marketing-ui/admin-ui/src/components/ContentWrap/src/ContentWrap.vue create mode 100644 marketing-ui/admin-ui/src/components/CountTo/index.ts create mode 100644 marketing-ui/admin-ui/src/components/CountTo/src/CountTo.vue create mode 100644 marketing-ui/admin-ui/src/components/Crontab/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Crontab/src/Crontab.vue create mode 100644 marketing-ui/admin-ui/src/components/Cropper/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Cropper/src/CopperModal.vue create mode 100644 marketing-ui/admin-ui/src/components/Cropper/src/Cropper.vue create mode 100644 marketing-ui/admin-ui/src/components/Cropper/src/CropperAvatar.vue create mode 100644 marketing-ui/admin-ui/src/components/Cropper/src/types.ts create mode 100644 marketing-ui/admin-ui/src/components/DeptSelectForm/index.vue create mode 100644 marketing-ui/admin-ui/src/components/Descriptions/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Descriptions/src/Descriptions.vue create mode 100644 marketing-ui/admin-ui/src/components/Descriptions/src/DescriptionsItemLabel.vue create mode 100644 marketing-ui/admin-ui/src/components/Dialog/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Dialog/src/Dialog.vue create mode 100644 marketing-ui/admin-ui/src/components/DictTag/index.ts create mode 100644 marketing-ui/admin-ui/src/components/DictTag/src/DictTag.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentContainer.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentContainerProperty.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentLibrary.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/component.tsx create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/controller.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PageConfig/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PageConfig/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/config.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/property.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/index.ts create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/index.vue create mode 100644 marketing-ui/admin-ui/src/components/DiyEditor/util.ts create mode 100644 marketing-ui/admin-ui/src/components/DocAlert/index.vue create mode 100644 marketing-ui/admin-ui/src/components/Draggable/index.vue create mode 100644 marketing-ui/admin-ui/src/components/Echart/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Echart/src/Echart.vue create mode 100644 marketing-ui/admin-ui/src/components/Editor/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Editor/src/Editor.vue create mode 100644 marketing-ui/admin-ui/src/components/Error/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Error/src/Error.vue create mode 100644 marketing-ui/admin-ui/src/components/Form/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Form/src/Form.vue create mode 100644 marketing-ui/admin-ui/src/components/Form/src/componentMap.ts create mode 100644 marketing-ui/admin-ui/src/components/Form/src/components/useRenderCheckbox.tsx create mode 100644 marketing-ui/admin-ui/src/components/Form/src/components/useRenderRadio.tsx create mode 100644 marketing-ui/admin-ui/src/components/Form/src/components/useRenderSelect.tsx create mode 100644 marketing-ui/admin-ui/src/components/Form/src/helper.ts create mode 100644 marketing-ui/admin-ui/src/components/Form/src/types.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/index.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/components/DictSelect.vue create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/components/useApiSelect.tsx create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/config/index.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/config/selectRule.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/config/useDictSelectRule.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/config/useEditorRule.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/config/useSelectRule.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/config/useUploadFileRule.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/config/useUploadImgRule.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/config/useUploadImgsRule.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/type/index.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/useFormCreateDesigner.ts create mode 100644 marketing-ui/admin-ui/src/components/FormCreate/src/utils/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Highlight/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Highlight/src/Highlight.vue create mode 100644 marketing-ui/admin-ui/src/components/IFrame/index.ts create mode 100644 marketing-ui/admin-ui/src/components/IFrame/src/IFrame.vue create mode 100644 marketing-ui/admin-ui/src/components/Icon/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Icon/src/Icon.vue create mode 100644 marketing-ui/admin-ui/src/components/Icon/src/IconSelect.vue create mode 100644 marketing-ui/admin-ui/src/components/Icon/src/data.ts create mode 100644 marketing-ui/admin-ui/src/components/ImageViewer/index.ts create mode 100644 marketing-ui/admin-ui/src/components/ImageViewer/src/ImageViewer.vue create mode 100644 marketing-ui/admin-ui/src/components/ImageViewer/src/types.ts create mode 100644 marketing-ui/admin-ui/src/components/Infotip/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Infotip/src/Infotip.vue create mode 100644 marketing-ui/admin-ui/src/components/InputPassword/index.ts create mode 100644 marketing-ui/admin-ui/src/components/InputPassword/src/InputPassword.vue create mode 100644 marketing-ui/admin-ui/src/components/InputWithColor/index.vue create mode 100644 marketing-ui/admin-ui/src/components/MagicCubeEditor/index.vue create mode 100644 marketing-ui/admin-ui/src/components/MagicCubeEditor/util.ts create mode 100644 marketing-ui/admin-ui/src/components/MarkdownView/index.vue create mode 100644 marketing-ui/admin-ui/src/components/OperateLogV2/index.ts create mode 100644 marketing-ui/admin-ui/src/components/OperateLogV2/src/OperateLogV2.vue create mode 100644 marketing-ui/admin-ui/src/components/Pagination/index.vue create mode 100644 marketing-ui/admin-ui/src/components/Qrcode/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Qrcode/src/Qrcode.vue create mode 100644 marketing-ui/admin-ui/src/components/RouterSearch/index.vue create mode 100644 marketing-ui/admin-ui/src/components/Search/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Search/src/Search.vue create mode 100644 marketing-ui/admin-ui/src/components/ShortcutDateRangePicker/index.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessModel.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessViewer.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/consts.ts create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/index.ts create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/node.ts create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/DelayTimerNodeConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/ConditionDialog.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestParamSetting.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestSetting.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/UserTaskListener.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ChildProcessNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/CopyTaskNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/DelayTimerNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/EndEventNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/RouterNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/StartUserNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/TriggerNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/utils.ts create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/theme/iconfont.ttf create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/theme/iconfont.woff create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/theme/iconfont.woff2 create mode 100644 marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/theme/simple-process-designer.scss create mode 100644 marketing-ui/admin-ui/src/components/Sticky/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Sticky/src/Sticky.vue create mode 100644 marketing-ui/admin-ui/src/components/SummaryCard/index.vue create mode 100644 marketing-ui/admin-ui/src/components/Table/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Table/src/Table.vue create mode 100644 marketing-ui/admin-ui/src/components/Table/src/TableSelectForm.vue create mode 100644 marketing-ui/admin-ui/src/components/Table/src/helper.ts create mode 100644 marketing-ui/admin-ui/src/components/Table/src/types.ts create mode 100644 marketing-ui/admin-ui/src/components/Tinyflow/Tinyflow.vue create mode 100644 marketing-ui/admin-ui/src/components/Tinyflow/ui/index.css create mode 100644 marketing-ui/admin-ui/src/components/Tinyflow/ui/index.d.ts create mode 100644 marketing-ui/admin-ui/src/components/Tinyflow/ui/index.js create mode 100644 marketing-ui/admin-ui/src/components/Tinyflow/ui/index.umd.js create mode 100644 marketing-ui/admin-ui/src/components/Tooltip/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Tooltip/src/Tooltip.vue create mode 100644 marketing-ui/admin-ui/src/components/UploadFile/index.ts create mode 100644 marketing-ui/admin-ui/src/components/UploadFile/src/UploadFile.vue create mode 100644 marketing-ui/admin-ui/src/components/UploadFile/src/UploadImg.vue create mode 100644 marketing-ui/admin-ui/src/components/UploadFile/src/UploadImgs.vue create mode 100644 marketing-ui/admin-ui/src/components/UploadFile/src/useUpload.ts create mode 100644 marketing-ui/admin-ui/src/components/UserSelectForm/index.vue create mode 100644 marketing-ui/admin-ui/src/components/Verifition/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Verifition/src/Verify.vue create mode 100644 marketing-ui/admin-ui/src/components/Verifition/src/Verify/VerifyPoints.vue create mode 100644 marketing-ui/admin-ui/src/components/Verifition/src/Verify/VerifySlide.vue create mode 100644 marketing-ui/admin-ui/src/components/Verifition/src/Verify/index.ts create mode 100644 marketing-ui/admin-ui/src/components/Verifition/src/utils/ase.ts create mode 100644 marketing-ui/admin-ui/src/components/Verifition/src/utils/util.ts create mode 100644 marketing-ui/admin-ui/src/components/VerticalButtonGroup/index.vue create mode 100644 marketing-ui/admin-ui/src/components/XButton/index.ts create mode 100644 marketing-ui/admin-ui/src/components/XButton/src/XButton.vue create mode 100644 marketing-ui/admin-ui/src/components/XButton/src/XTextButton.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/index.ts create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/index2.ts create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/index.ts create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/index.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/ProcessListenerDialog.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/template.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/data.ts create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ProcessExpressionDialog.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/element-variables.scss create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/index.scss create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/process-designer.scss create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/process-panel.scss create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/utils.ts create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/highlight/index.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/rules/index.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/translations.ts create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/index.js create mode 100644 marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/xml2json.js create mode 100644 marketing-ui/admin-ui/src/components/index.ts create mode 100644 marketing-ui/admin-ui/src/config/axios/config.ts create mode 100644 marketing-ui/admin-ui/src/config/axios/errorCode.ts create mode 100644 marketing-ui/admin-ui/src/config/axios/index.ts create mode 100644 marketing-ui/admin-ui/src/config/axios/service.ts create mode 100644 marketing-ui/admin-ui/src/directives/index.ts create mode 100644 marketing-ui/admin-ui/src/directives/permission/hasPermi.ts create mode 100644 marketing-ui/admin-ui/src/directives/permission/hasRole.ts create mode 100644 marketing-ui/admin-ui/src/hooks/event/useScrollTo.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useCache.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useConfigGlobal.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useCrudSchemas.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useDesign.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useEmitt.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useForm.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useGuide.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useI18n.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useIcon.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useLocale.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useMessage.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useNProgress.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useNetwork.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useNow.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/usePageLoading.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useTable.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useTagsView.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useTimeAgo.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useTitle.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useValidator.ts create mode 100644 marketing-ui/admin-ui/src/hooks/web/useWatermark.ts create mode 100644 marketing-ui/admin-ui/src/layout/Layout.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/AppView.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/Breadcrumb/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/Breadcrumb/src/Breadcrumb.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/Breadcrumb/src/helper.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/Collapse/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/Collapse/src/Collapse.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/ContextMenu/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/ContextMenu/src/ContextMenu.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/Footer/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/Footer/src/Footer.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/LocaleDropdown/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/Logo/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/Logo/src/Logo.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/Menu/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/Menu/src/Menu.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/Menu/src/components/useRenderMenuItem.tsx create mode 100644 marketing-ui/admin-ui/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx create mode 100644 marketing-ui/admin-ui/src/layout/components/Menu/src/helper.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/Screenfull/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/Screenfull/src/Screenfull.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/Setting/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/Setting/src/Setting.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/Setting/src/components/ColorRadioPicker.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/Setting/src/components/InterfaceDisplay.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/Setting/src/components/LayoutRadioPicker.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/SizeDropdown/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/SizeDropdown/src/SizeDropdown.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/TabMenu/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/TabMenu/src/TabMenu.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/TabMenu/src/helper.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/TagsView/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/TagsView/src/TagsView.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/TagsView/src/helper.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/ThemeSwitch/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/ToolHeader.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/UserInfo/index.ts create mode 100644 marketing-ui/admin-ui/src/layout/components/UserInfo/src/UserInfo.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/UserInfo/src/components/LockDialog.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/UserInfo/src/components/LockPage.vue create mode 100644 marketing-ui/admin-ui/src/layout/components/useRenderLayout.tsx create mode 100644 marketing-ui/admin-ui/src/locales/en.ts create mode 100644 marketing-ui/admin-ui/src/locales/zh-CN.ts create mode 100644 marketing-ui/admin-ui/src/main.ts create mode 100644 marketing-ui/admin-ui/src/permission.ts create mode 100644 marketing-ui/admin-ui/src/plugins/animate.css/index.ts create mode 100644 marketing-ui/admin-ui/src/plugins/echarts/index.ts create mode 100644 marketing-ui/admin-ui/src/plugins/elementPlus/index.ts create mode 100644 marketing-ui/admin-ui/src/plugins/formCreate/index.ts create mode 100644 marketing-ui/admin-ui/src/plugins/svgIcon/index.ts create mode 100644 marketing-ui/admin-ui/src/plugins/tongji/index.ts create mode 100644 marketing-ui/admin-ui/src/plugins/unocss/index.ts create mode 100644 marketing-ui/admin-ui/src/plugins/vueI18n/helper.ts create mode 100644 marketing-ui/admin-ui/src/plugins/vueI18n/index.ts create mode 100644 marketing-ui/admin-ui/src/router/index.ts create mode 100644 marketing-ui/admin-ui/src/router/modules/remaining.ts create mode 100644 marketing-ui/admin-ui/src/store/index.ts create mode 100644 marketing-ui/admin-ui/src/store/modules/app.ts create mode 100644 marketing-ui/admin-ui/src/store/modules/dict.ts create mode 100644 marketing-ui/admin-ui/src/store/modules/locale.ts create mode 100644 marketing-ui/admin-ui/src/store/modules/lock.ts create mode 100644 marketing-ui/admin-ui/src/store/modules/permission.ts create mode 100644 marketing-ui/admin-ui/src/store/modules/tagsView.ts create mode 100644 marketing-ui/admin-ui/src/store/modules/user.ts create mode 100644 marketing-ui/admin-ui/src/styles/FormCreate/fonts/fontello.woff create mode 100644 marketing-ui/admin-ui/src/styles/FormCreate/index.scss create mode 100644 marketing-ui/admin-ui/src/styles/global.module.scss create mode 100644 marketing-ui/admin-ui/src/styles/index.scss create mode 100644 marketing-ui/admin-ui/src/styles/theme.scss create mode 100644 marketing-ui/admin-ui/src/styles/var.css create mode 100644 marketing-ui/admin-ui/src/styles/variables.scss create mode 100644 marketing-ui/admin-ui/src/types/auto-components.d.ts create mode 100644 marketing-ui/admin-ui/src/types/configGlobal.d.ts create mode 100644 marketing-ui/admin-ui/src/types/contextMenu.d.ts create mode 100644 marketing-ui/admin-ui/src/types/descriptions.d.ts create mode 100644 marketing-ui/admin-ui/src/types/elementPlus.d.ts create mode 100644 marketing-ui/admin-ui/src/types/form.d.ts create mode 100644 marketing-ui/admin-ui/src/types/icon.d.ts create mode 100644 marketing-ui/admin-ui/src/types/infoTip.d.ts create mode 100644 marketing-ui/admin-ui/src/types/layout.d.ts create mode 100644 marketing-ui/admin-ui/src/types/localeDropdown.d.ts create mode 100644 marketing-ui/admin-ui/src/types/qrcode.d.ts create mode 100644 marketing-ui/admin-ui/src/types/table.d.ts create mode 100644 marketing-ui/admin-ui/src/types/theme.d.ts create mode 100644 marketing-ui/admin-ui/src/utils/Logger.ts create mode 100644 marketing-ui/admin-ui/src/utils/auth.ts create mode 100644 marketing-ui/admin-ui/src/utils/color.ts create mode 100644 marketing-ui/admin-ui/src/utils/constants.ts create mode 100644 marketing-ui/admin-ui/src/utils/dateUtil.ts create mode 100644 marketing-ui/admin-ui/src/utils/dict.ts create mode 100644 marketing-ui/admin-ui/src/utils/domUtils.ts create mode 100644 marketing-ui/admin-ui/src/utils/download.ts create mode 100644 marketing-ui/admin-ui/src/utils/filt.ts create mode 100644 marketing-ui/admin-ui/src/utils/formCreate.ts create mode 100644 marketing-ui/admin-ui/src/utils/formRules.ts create mode 100644 marketing-ui/admin-ui/src/utils/formatTime.ts create mode 100644 marketing-ui/admin-ui/src/utils/formatter.ts create mode 100644 marketing-ui/admin-ui/src/utils/index.ts create mode 100644 marketing-ui/admin-ui/src/utils/is.ts create mode 100644 marketing-ui/admin-ui/src/utils/jsencrypt.ts create mode 100644 marketing-ui/admin-ui/src/utils/permission.ts create mode 100644 marketing-ui/admin-ui/src/utils/propTypes.ts create mode 100644 marketing-ui/admin-ui/src/utils/routerHelper.ts create mode 100644 marketing-ui/admin-ui/src/utils/tree.ts create mode 100644 marketing-ui/admin-ui/src/utils/tsxHelper.ts create mode 100644 marketing-ui/admin-ui/src/views/Error/403.vue create mode 100644 marketing-ui/admin-ui/src/views/Error/404.vue create mode 100644 marketing-ui/admin-ui/src/views/Error/500.vue create mode 100644 marketing-ui/admin-ui/src/views/Home/Index.vue create mode 100644 marketing-ui/admin-ui/src/views/Home/Index2.vue create mode 100644 marketing-ui/admin-ui/src/views/Home/echarts-data.ts create mode 100644 marketing-ui/admin-ui/src/views/Home/types.ts create mode 100644 marketing-ui/admin-ui/src/views/Login/Login.vue create mode 100644 marketing-ui/admin-ui/src/views/Login/SocialLogin.vue create mode 100644 marketing-ui/admin-ui/src/views/Login/components/ForgetPasswordForm.vue create mode 100644 marketing-ui/admin-ui/src/views/Login/components/LoginForm.vue create mode 100644 marketing-ui/admin-ui/src/views/Login/components/LoginFormTitle.vue create mode 100644 marketing-ui/admin-ui/src/views/Login/components/MobileForm.vue create mode 100644 marketing-ui/admin-ui/src/views/Login/components/QrCodeForm.vue create mode 100644 marketing-ui/admin-ui/src/views/Login/components/RegisterForm.vue create mode 100644 marketing-ui/admin-ui/src/views/Login/components/SSOLogin.vue create mode 100644 marketing-ui/admin-ui/src/views/Login/components/index.ts create mode 100644 marketing-ui/admin-ui/src/views/Login/components/useLogin.ts create mode 100644 marketing-ui/admin-ui/src/views/Profile/Index.vue create mode 100644 marketing-ui/admin-ui/src/views/Profile/components/BasicInfo.vue create mode 100644 marketing-ui/admin-ui/src/views/Profile/components/ProfileUser.vue create mode 100644 marketing-ui/admin-ui/src/views/Profile/components/ResetPwd.vue create mode 100644 marketing-ui/admin-ui/src/views/Profile/components/UserAvatar.vue create mode 100644 marketing-ui/admin-ui/src/views/Profile/components/UserSocial.vue create mode 100644 marketing-ui/admin-ui/src/views/Profile/components/index.ts create mode 100644 marketing-ui/admin-ui/src/views/Redirect/Redirect.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/record/RecordDetail.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/record/RecordForm.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/record/index.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/sendtask/SendTaskForm-backup.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/sendtask/SmsTaskForm.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/sendtask/index.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/signinfo/SignInfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/signinfo/index.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/templateinfo/TemplateInfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/templateinfo/index.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/templateinfo/templatebindinginfo/TemplateBindingInfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/domesticsms/templateinfo/templatebindinginfo/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/apiAccessLog/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/apiErrorLog/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/build/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/codegen/EditTable.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/codegen/ImportTable.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/codegen/PreviewCode.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/codegen/components/BasicInfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/codegen/components/ColumInfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/codegen/components/GenerateInfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/codegen/components/index.ts create mode 100644 marketing-ui/admin-ui/src/views/infra/codegen/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/config/ConfigForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/config/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/dataSourceConfig/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo01/Demo01ContactForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo01/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo02/Demo02CategoryForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo02/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/Demo03StudentForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03CourseForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03CourseList.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03GradeForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03GradeList.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/druid/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/file/FileForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/file/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/fileConfig/FileConfigForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/fileConfig/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/job/JobDetail.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/job/JobForm.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/job/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/job/logger/JobLogDetail.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/job/logger/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/redis/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/server/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/skywalking/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/swagger/index.vue create mode 100644 marketing-ui/admin-ui/src/views/infra/webSocket/index.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/record/RecordDetail.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/record/RecordForm.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/record/index.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/sendtask/SmsTaskForm.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/sendtask/index.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/signinfo/SignInfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/signinfo/index.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/templateinfo/TemplateInfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/templateinfo/index.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/templateinfo/templatebindinginfo/TemplateBindingInfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/internationalsms/templateinfo/templatebindinginfo/index.vue create mode 100644 marketing-ui/admin-ui/src/views/smschannel/channelaccount/ChannelAccountForm.vue create mode 100644 marketing-ui/admin-ui/src/views/smschannel/channelaccount/index.vue create mode 100644 marketing-ui/admin-ui/src/views/smschannel/smschannelinfo/SmsChannelInfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/smschannel/smschannelinfo/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/area/AreaForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/area/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/client/ClientForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/client/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/dept/DeptForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/dept/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/dict/DictTypeForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/dict/data/DictDataForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/dict/data/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/dict/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/loginlog/LoginLogDetail.vue create mode 100644 marketing-ui/admin-ui/src/views/system/loginlog/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/menu/MenuForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/menu/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/notice/NoticeForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/notice/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/operatelog/OperateLogDetail.vue create mode 100644 marketing-ui/admin-ui/src/views/system/operatelog/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/post/PostForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/post/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/role/RoleAssignMenuForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/role/RoleDataPermissionForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/role/RoleForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/role/index.vue create mode 100644 marketing-ui/admin-ui/src/views/system/user/DeptTree.vue create mode 100644 marketing-ui/admin-ui/src/views/system/user/UserAssignRoleForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/user/UserForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/user/UserImportForm.vue create mode 100644 marketing-ui/admin-ui/src/views/system/user/index.vue create mode 100644 marketing-ui/admin-ui/src/views/tenant/SmsAppinfo/SmsAppinfoForm.vue create mode 100644 marketing-ui/admin-ui/src/views/tenant/SmsAppinfo/index.vue create mode 100644 marketing-ui/admin-ui/src/views/tenant/TenantForm.vue create mode 100644 marketing-ui/admin-ui/src/views/tenant/index.vue create mode 100644 marketing-ui/admin-ui/types/custom-types.d.ts create mode 100644 marketing-ui/admin-ui/types/env.d.ts create mode 100644 marketing-ui/admin-ui/types/global.d.ts create mode 100644 marketing-ui/admin-ui/types/router.d.ts diff --git a/marketing-ui/admin-ui/public/favicon.ico b/marketing-ui/admin-ui/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..5a7de08267811feb034bb0c54ab38ca417731aab GIT binary patch literal 4286 zcmcJTdr*|u8OGm?f3Tad7j|KHxq~xpVq;A@HfgF7QY~O)Go9%q6O&2POq*#slbPnf zwzf$$rcG^ZYDE+@N@~3q7I49+L1DRyKt#F7{U!nn%U;+^j39aYobU7VmKqZ!%ltTJ zSayHU`<%1G3`F1^k7e(&;Z`VJu(?k;=T7X%N)jqMq!dMyZeDC3iF!z6rw+67kxV&jDKh*=XMMH7BzC%0ZZgW^F*GR;m`LJ8Nxh;MnV_2 zo#Aeu7~L8}V>!_RD+rBki)NV^cA^7!L1e&FY)JDI!(TGDXW-mnR@`bh?a0EnGI=P9 zy>>$Z2m|CjGIt$Z+!8}0*)asCbu>FBggr}a!3yv^PwX`@<_>sE4e5ZqN9V>rmTRUF zbU(T+S`C+7@m92s-#UA`Fo4_`PSqdlNi_8Le1D!YO<=@vm4O z$%$c4iIKfW(ZR8ZbU?mO?%glC2lvBQG7OL4g2E>3CE|D(x!lD@#>|2OxWk0scT#t^ zS6+JEa8?X~2srB%*M&`SJoL{S_(0yf@}t;S27g&Z0Hpg)z+Z89e{|ZcvsAWtlnyU! zrooK~1ov;@oE;J_FsSek>;)U+*tyTdzLW6F6!^;ZVSuI_-@Jq7m6vJu4@{*G56tUW zpGZTSVx!<}kX-N$2;dyp7%$QPemsxlS=d(&zn~%_Fjb*XpK`!o{mnXPeP))mj8zZ^lWb$NF4{~3AH+q%ce-ErK%W3!iN7WAAnu?S-NPqStq)-K z^r;$jQ1|uDpfTeToz0w~uIE_Ym=?0w^$yVAEIfqUV+#(N3e zk2~QhGcbJDsny&3bvhLwfBl_1IF%8kGpjCBvvt~9zrr8d9#JR!m$M(Jd}05>Eb4nd zJ`&DTz3>To1b>z3MIY{C28N5L>h#j;Kcx$R41YcR4PV_s^-rhhbVi8kGeYX7r!U!S zQoWp`s}X+Qa=*iY4)hJLtt9w=1?Lsv?f#1(Q9@*K9WgR|GWA#mr*$@egH|Q{flqJW zfn&Lc>e2!ND{_P?Q{22wTP^vKVHzF$V&C_+Q16C#BfNFp?VUHBP>oj2B zhz=UjK_mQU{=dKMNf%Wv_mX3|SB)O*b?E`FSmwIXFFL5s)z(Cu`t>S;|CO%wi8Gz> zcD{3+@uDaWG)hk4Wq*?l=C;AD68_*>&6hq4$5NbB{u8&riVPuS;Bxqt{>2%98FcW< z-UZpz{a%6r-kQ#JN!+2ZHi^e>j@Xfb z(FH3R_9nI5>KFImbdI(Z5j@?YYO33 z34gFFoDTl5j|!g{5?GNTRI+4*l?*4In&hHK`i1Yt`Ne(~9lZ9R?`G5acM|n*SGN8s znFXUbf8oK55?7tV%W!hALlXom0foB5=@9%tUGVsTz3@jvj0}t(u4OpB%*i{yd6`D*|GZP1pkYzYvxb4teMYa#Zj_Lo>g|rUJiD`FX%!C-Qg-g2Nw4TGLa#a|M&na z8A`8a_#|~g>R_v;>eddvKnJhy{!TWvy`7|kyQ1Zf^VxYMQp~8#D(_{d@N%#l^n?dP zJ>eOEc0bbbz}_Ep9p1mVhmnEN1LG{D9z=$tSMNjqf-V*rZoG@=pcx%l%Ab3d&aIih z8eE{+mp&i+1G+xk}WiODJh<6N)JDmfKzAKZd|2|w0ncYeRMI&V=sBLj;JI14`X znA}4Vday6K$fZk1`Dluh#aSF*>g2+Oy}Ud24Cm@=8E1fdP!-j*CXKqY;$HSP>1S?o zig|DLDt@t+^XG}oKAp^97_-1JPiEbH%mN~Xwb-w{LX;}_oG4M?Bhm>5iNXX9qIrUK L_}7DgzT)vecywrn literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/public/logo.gif b/marketing-ui/admin-ui/public/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdbd32c675f85af4ed57021ac0638a21a3c6cad3 GIT binary patch literal 6334 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 literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/App.vue b/marketing-ui/admin-ui/src/App.vue new file mode 100644 index 0000000..7407d97 --- /dev/null +++ b/marketing-ui/admin-ui/src/App.vue @@ -0,0 +1,57 @@ + + + diff --git a/marketing-ui/admin-ui/src/api/domesticsms/record/index.ts b/marketing-ui/admin-ui/src/api/domesticsms/record/index.ts new file mode 100644 index 0000000..23375ba --- /dev/null +++ b/marketing-ui/admin-ui/src/api/domesticsms/record/index.ts @@ -0,0 +1,59 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 短信记录信息 */ +export interface Record { + id: number; // 主键 雪花算法 + mobile?: string; // 手机号 + nationcode?: string; // 国际电话区号如 86 + appId: string; // 调用服务方 + recordType: number; // 0-验证码 1-短信通知 2-推广短信 + templateId?: number; // 模版编号 + templateParam?: string; // 模版参数 + attime: string; // 指定发送时间 + sendStatus?: number; // -1:待发送 / 0:已发送 /1 : 发送失败 + senderIp: string; // 发送IP + } + +// 短信记录 API +export const RecordApi = { + // 查询短信记录分页 + getRecordPage: async (params: any) => { + return await request.get({ url: `/sms/record/page`, params }) + }, + + // 查询短信记录详情 + getRecord: async (id: number) => { + return await request.get({ url: `/sms/record/get?id=` + id }) + }, + + // 新增短信记录 + createRecord: async (data: Record) => { + return await request.post({ url: `/sms/record/create`, data }) + }, + + // 修改短信记录 + updateRecord: async (data: Record) => { + return await request.put({ url: `/sms/record/update`, data }) + }, + + // 删除短信记录 + deleteRecord: async (id: number) => { + return await request.delete({ url: `/sms/record/delete?id=` + id }) + }, + + /** 批量删除短信记录 */ + deleteRecordList: async (ids: number[]) => { + return await request.delete({ url: `/sms/record/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出短信记录 Excel + exportRecord: async (params) => { + return await request.download({ url: `/sms/record/export-excel`, params }) + }, + + // 根据任务ID列表查询各任务的发送记录计数 + countByTaskIds: async (taskIds: number[]) => { + return await request.get({ url: `/sms/record/count-by-task?taskIds=${taskIds.join(',')}` }) + } +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/api/domesticsms/sendtask/index.ts b/marketing-ui/admin-ui/src/api/domesticsms/sendtask/index.ts new file mode 100644 index 0000000..6fab7cf --- /dev/null +++ b/marketing-ui/admin-ui/src/api/domesticsms/sendtask/index.ts @@ -0,0 +1,84 @@ +import request from '@/config/axios' + +/** 短信任务信息 */ +export interface SmsTask { + id: number; // 任务编号 + appId?: number; // 应用编号 + taskName?: string; // 任务名称 + signId?: number; // 签名编号 + signName?: string; // 签名名称 + templateId?: number; // 模版编号 + templateName?: string; // 模版名称 + templateContent?: string; // 模版内容 + totalCount?: number; // 手机总数量 + successCount?: number; // 发送成功数量 + failCount?: number; // 发送失败数量 + sendStatus?: number; // 发送状态:0-待发送 1-发送中 2-已完成 3-已取消 + international?: number; // 短信区域:0-国内短信 1-国际/港澳台短信 + attime: string; // 指定发送时间 + remark: string; // 备注信息 + } + +// 短信任务 API +export const SmsTaskApi = { + // 查询短信任务分页 + getSmsTaskPage: async (params: any) => { + return await request.get({ url: `/record/sms-task/page`, params }) + }, + + // 查询短信任务详情 + getSmsTask: async (id: number) => { + return await request.get({ url: `/record/sms-task/get?id=` + id }) + }, + + // 新增短信任务 + createSmsTask: async (data: Partial) => { + return await request.post({ url: `/record/sms-task/create`, data }) + }, + + // 通过文件创建短信任务 + createSmsTaskByFile: async (formData: FormData) => { + return await request.post({ + url: `/record/sms-task/create-by-file`, + data: formData, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) + }, + + // 修改短信任务 + updateSmsTask: async (data: SmsTask) => { + return await request.put({ url: `/record/sms-task/update`, data }) + }, + + // 删除短信任务 + deleteSmsTask: async (id: number) => { + return await request.delete({ url: `/record/sms-task/delete?id=` + id }) + }, + + /** 批量删除短信任务 */ + deleteSmsTaskList: async (ids: number[]) => { + return await request.delete({ url: `/record/sms-task/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出短信任务 Excel + exportSmsTask: async (params) => { + return await request.download({ url: `/record/sms-task/export-excel`, params }) + }, + + // 暂停短信任务 + pauseSmsTask: async (id: number) => { + return await request.put({ url: `/record/sms-task/pause?id=` + id }) + }, + + // 恢复短信任务 + resumeSmsTask: async (id: number) => { + return await request.put({ url: `/record/sms-task/resume?id=` + id }) + }, + + // 终止短信任务 + terminateSmsTask: async (id: number) => { + return await request.put({ url: `/record/sms-task/terminate?id=` + id }) + } +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/api/domesticsms/sendtask/index2.ts b/marketing-ui/admin-ui/src/api/domesticsms/sendtask/index2.ts new file mode 100644 index 0000000..c2e5d54 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/domesticsms/sendtask/index2.ts @@ -0,0 +1,126 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 短信发送任务信息 */ +export interface SendTask { + id?: number; // 主键ID + taskName: string; // 任务名称 + signName: string; // 短信签名 + templateId: number; // 短信模板ID + content: string; // 短信内容 + receiveType: string; // 接收方式:0-手动输入,1-文件导入,2-选择联系人 + mobiles: string; // 手动输入的手机号,多个用逗号分隔 + file?: File; // 导入的文件 + contactIds: string[]; // 联系人ID列表 + isTiming: boolean; // 是否定时发送 + sendTime?: string; // 发送时间 + sendCount?: number; // 发送数量 + successCount?: number; // 成功数量 + failCount?: number; // 失败数量 + sendStatus?: number; // 发送状态:0-待发送,1-发送中,2-发送完成,3-发送失败 + remark: string; // 备注说明 + createTime?: string; // 创建时间 +} + +/** 短信签名信息 */ +export interface SignInfo { + id: number; + signName: string; +} + +/** 短信模板信息 */ +export interface TemplateInfo { + id: number; + templateName: string; + templateContent: string; +} + +// 短信发送任务 API +export const SendTaskApi = { + + // 查询短信发送任务分页 + getSendTaskPage: async (params: any) => { + return await request.get({ url: `/domesticsms/send-task/page`, params }) + }, + + // 查询短信发送任务列表 + getSendTaskList: async (params: any) => { + return await request.get({ url: `/domesticsms/send-task/list`, params }) + }, + + // 查询短信发送任务详情 + getSendTask: async (id: number) => { + return await request.get({ url: `/domesticsms/send-task/get?id=${id}` }) + }, + + // 新增短信发送任务 + createSendTask: async (data: SendTask) => { + return await request.post({ url: `/domesticsms/send-task/create`, data }) + }, + + // 修改短信发送任务 + updateSendTask: async (data: SendTask) => { + return await request.put({ url: `/domesticsms/send-task/update`, data }) + }, + + // 删除短信发送任务 + deleteSendTask: async (id: number) => { + return await request.delete({ url: `/domesticsms/send-task/delete?id=${id}` }) + }, + + /** 批量删除短信发送任务 */ + deleteSendTaskList: async (ids: number[]) => { + return await request.delete({ url: `/domesticsms/send-task/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出短信发送任务 Excel + exportSendTask: async (params: any) => { + return await request.download({ url: `/domesticsms/send-task/export-excel`, params }) + }, + + // 发送短信任务 + sendTask: async (id: number) => { + return await request.post({ url: `/domesticsms/send-task/send?id=${id}` }) + }, + + // 取消短信任务 + cancelTask: async (id: number) => { + return await request.post({ url: `/domesticsms/send-task/cancel?id=${id}` }) + }, + + // 获取短信签名列表 + getSignList: async () => { + return await request.get({ url: `/domesticsms/sign-info/list` }) + }, + + // 获取短信模板列表 + getTemplateList: async () => { + return await request.get({ url: `/domesticsms/template-info/list` }) + }, + + // 导入手机号文件 + importMobiles: async (file: File) => { + const formData = new FormData() + formData.append('file', file) + return await request.post({ + url: `/domesticsms/send-task/import-mobiles`, + data: formData, + headers: { 'Content-Type': 'multipart/form-data' } + }) + }, + + // 验证手机号格式 + validateMobiles: async (mobiles: string[]) => { + return await request.post({ url: `/domesticsms/send-task/validate-mobiles`, data: { mobiles } }) + }, + + // 获取任务发送统计 + getTaskStatistics: async (id: number) => { + return await request.get({ url: `/domesticsms/send-task/statistics?id=${id}` }) + }, + + // 重发失败的短信 + resendFailedSms: async (id: number) => { + return await request.post({ url: `/domesticsms/send-task/resend-failed?id=${id}` }) + } +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/api/domesticsms/signinfo/index.ts b/marketing-ui/admin-ui/src/api/domesticsms/signinfo/index.ts new file mode 100644 index 0000000..276bd69 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/domesticsms/signinfo/index.ts @@ -0,0 +1,57 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 短信签名信息信息 */ +export interface SignInfo { + id: number; // 主键ID + signName?: string; // 签名名称 + tenantId?: number; // 租户ID + tenantUserName?: string; // 租户名称 + signType?: number; // 签名类型:0-企业,1-APP,2-商标,3-政府/事业单位/其他企业 + bindingAccountIds: number[]; // 绑定的账号ID集合 + international?: number; // 短信区域:0-国内短信 1-国际/港澳台短信 + remark: string; // 备注说明 + } + +// 短信签名信息 API +export const SignInfoApi = { + + // 查询短信签名信息分页 + getSignInfoPage: async (params: any) => { + return await request.get({ url: `/smschannel/sign-info/page`, params }) + }, + + getSignInfolist: async (params: any) => { + return await request.get({ url: `/smschannel/sign-info/list`, params }) + }, + + // 查询短信签名信息详情 + getSignInfo: async (id: number) => { + return await request.get({ url: `/smschannel/sign-info/get?id=` + id }) + }, + + // 新增短信签名信息 + createSignInfo: async (data: SignInfo) => { + return await request.post({ url: `/smschannel/sign-info/create`, data }) + }, + + // 修改短信签名信息 + updateSignInfo: async (data: SignInfo) => { + return await request.put({ url: `/smschannel/sign-info/update`, data }) + }, + + // 删除短信签名信息 + deleteSignInfo: async (id: number) => { + return await request.delete({ url: `/smschannel/sign-info/delete?id=` + id }) + }, + + /** 批量删除短信签名信息 */ + deleteSignInfoList: async (ids: number[]) => { + return await request.delete({ url: `/smschannel/sign-info/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出短信签名信息 Excel + exportSignInfo: async (params) => { + return await request.download({ url: `/smschannel/sign-info/export-excel`, params }) + } +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/api/domesticsms/templateinfo/index.ts b/marketing-ui/admin-ui/src/api/domesticsms/templateinfo/index.ts new file mode 100644 index 0000000..f9aa133 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/domesticsms/templateinfo/index.ts @@ -0,0 +1,52 @@ +import request from '@/config/axios' + +/** 短信模板信息信息 */ +export interface TemplateInfo { + id: number; // 模板ID + templateName?: string; // 模板名称 + content?: string; // 模板内容 + signId?: number; // 签名ID + signName?: string; // 签名名称 + international?: number; // 短信区域:0-国内短信 1-国际/港澳台短信 + templateType?: number; // 模板类型 + switchOpen?: number; // 启用开关:1-开启 0-关闭 + remark: string; // 备注 + } + +// 短信模板信息 API +export const TemplateInfoApi = { + // 查询短信模板信息分页 + getTemplateInfoPage: async (params: any) => { + return await request.get({ url: `/smschannel/template-info/page`, params }) + }, + + // 查询短信模板信息详情 + getTemplateInfo: async (id: number) => { + return await request.get({ url: `/smschannel/template-info/get?id=` + id }) + }, + + // 新增短信模板信息 + createTemplateInfo: async (data: TemplateInfo) => { + return await request.post({ url: `/smschannel/template-info/create`, data }) + }, + + // 修改短信模板信息 + updateTemplateInfo: async (data: TemplateInfo) => { + return await request.put({ url: `/smschannel/template-info/update`, data }) + }, + + // 删除短信模板信息 + deleteTemplateInfo: async (id: number) => { + return await request.delete({ url: `/smschannel/template-info/delete?id=` + id }) + }, + + /** 批量删除短信模板信息 */ + deleteTemplateInfoList: async (ids: number[]) => { + return await request.delete({ url: `/smschannel/template-info/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出短信模板信息 Excel + exportTemplateInfo: async (params) => { + return await request.download({ url: `/smschannel/template-info/export-excel`, params }) + } +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/api/domesticsms/templateinfo/templatebindinginfo/index.ts b/marketing-ui/admin-ui/src/api/domesticsms/templateinfo/templatebindinginfo/index.ts new file mode 100644 index 0000000..ce6b3e8 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/domesticsms/templateinfo/templatebindinginfo/index.ts @@ -0,0 +1,56 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 短信模板渠道绑定信息 */ +export interface TemplateBindingInfo { + id: number; // 绑定ID + templateId?: number; // 模板ID + templateCode?: string; // 三方模板编码 + templateContent?: string; // 三方模板内容 + channelId?: number; // 渠道ID + status?: number; // 审核状态:0-待提交 1-待审核 2-审核成功 3-审核失败 + auditRemark: string; // 审核备注 + } + +// 短信模板渠道绑定 API +export const TemplateBindingInfoApi = { + // 查询短信模板渠道绑定分页 + getTemplateBindingInfoPage: async (params: any) => { + return await request.get({ url: `/sms/template-binding-info/page`, params }) + }, + + // 查询短信模板渠道绑定详情 + getTemplateBindingInfo: async (id: number) => { + return await request.get({ url: `/sms/template-binding-info/get?id=` + id }) + }, + + // 新增短信模板渠道绑定 + createTemplateBindingInfo: async (data: TemplateBindingInfo) => { + return await request.post({ url: `/sms/template-binding-info/create`, data }) + }, + + // 修改短信模板渠道绑定 + updateTemplateBindingInfo: async (data: TemplateBindingInfo) => { + return await request.put({ url: `/sms/template-binding-info/update`, data }) + }, + + // 手工绑定 + handBind: async (data: TemplateBindingInfo) => { + return await request.put({ url: `/sms/template-binding-info/handBind`, data }) + }, + + // 删除短信模板渠道绑定 + deleteTemplateBindingInfo: async (id: number) => { + return await request.delete({ url: `/sms/template-binding-info/delete?id=` + id }) + }, + + /** 批量删除短信模板渠道绑定 */ + deleteTemplateBindingInfoList: async (ids: number[]) => { + return await request.delete({ url: `/sms/template-binding-info/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出短信模板渠道绑定 Excel + exportTemplateBindingInfo: async (params) => { + return await request.download({ url: `/sms/template-binding-info/export-excel`, params }) + } +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/api/infra/apiAccessLog/index.ts b/marketing-ui/admin-ui/src/api/infra/apiAccessLog/index.ts new file mode 100644 index 0000000..4fa50e1 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/apiAccessLog/index.ts @@ -0,0 +1,34 @@ +import request from '@/config/axios' + +export interface ApiAccessLogVO { + id: number + traceId: string + userId: number + userType: number + applicationName: string + requestMethod: string + requestParams: string + responseBody: string + requestUrl: string + userIp: string + userAgent: string + operateModule: string + operateName: string + operateType: number + beginTime: Date + endTime: Date + duration: number + resultCode: number + resultMsg: string + createTime: Date +} + +// 查询列表API 访问日志 +export const getApiAccessLogPage = (params: PageParam) => { + return request.get({ url: '/infra/api-access-log/page', params }) +} + +// 导出API 访问日志 +export const exportApiAccessLog = (params) => { + return request.download({ url: '/infra/api-access-log/export-excel', params }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/apiErrorLog/index.ts b/marketing-ui/admin-ui/src/api/infra/apiErrorLog/index.ts new file mode 100644 index 0000000..59ee214 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/apiErrorLog/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +export interface ApiErrorLogVO { + id: number + traceId: string + userId: number + userType: number + applicationName: string + requestMethod: string + requestParams: string + requestUrl: string + userIp: string + userAgent: string + exceptionTime: Date + exceptionName: string + exceptionMessage: string + exceptionRootCauseMessage: string + exceptionStackTrace: string + exceptionClassName: string + exceptionFileName: string + exceptionMethodName: string + exceptionLineNumber: number + processUserId: number + processStatus: number + processTime: Date + resultCode: number + createTime: Date +} + +// 查询列表API 访问日志 +export const getApiErrorLogPage = (params: PageParam) => { + return request.get({ url: '/infra/api-error-log/page', params }) +} + +// 更新 API 错误日志的处理状态 +export const updateApiErrorLogPage = (id: number, processStatus: number) => { + return request.put({ + url: '/infra/api-error-log/update-status?id=' + id + '&processStatus=' + processStatus + }) +} + +// 导出API 访问日志 +export const exportApiErrorLog = (params) => { + return request.download({ + url: '/infra/api-error-log/export-excel', + params + }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/codegen/index.ts b/marketing-ui/admin-ui/src/api/infra/codegen/index.ts new file mode 100644 index 0000000..441ca83 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/codegen/index.ts @@ -0,0 +1,122 @@ +import request from '@/config/axios' + +export type CodegenTableVO = { + id: number + tableId: number + isParentMenuIdValid: boolean + dataSourceConfigId: number + scene: number + tableName: string + tableComment: string + remark: string + moduleName: string + businessName: string + className: string + classComment: string + author: string + createTime: Date + updateTime: Date + templateType: number + parentMenuId: number +} + +export type CodegenColumnVO = { + id: number + tableId: number + columnName: string + dataType: string + columnComment: string + nullable: number + primaryKey: number + ordinalPosition: number + javaType: string + javaField: string + dictType: string + example: string + createOperation: number + updateOperation: number + listOperation: number + listOperationCondition: string + listOperationResult: number + htmlType: string +} + +export type DatabaseTableVO = { + name: string + comment: string +} + +export type CodegenDetailVO = { + table: CodegenTableVO + columns: CodegenColumnVO[] +} + +export type CodegenPreviewVO = { + filePath: string + code: string +} + +export type CodegenUpdateReqVO = { + table: CodegenTableVO | any + columns: CodegenColumnVO[] +} + +export type CodegenCreateListReqVO = { + dataSourceConfigId: number + tableNames: string[] +} + +// 查询列表代码生成表定义 +export const getCodegenTableList = (dataSourceConfigId: number) => { + return request.get({ url: '/infra/codegen/table/list?dataSourceConfigId=' + dataSourceConfigId }) +} + +// 查询列表代码生成表定义 +export const getCodegenTablePage = (params: PageParam) => { + return request.get({ url: '/infra/codegen/table/page', params }) +} + +// 查询详情代码生成表定义 +export const getCodegenTable = (id: number) => { + return request.get({ url: '/infra/codegen/detail?tableId=' + id }) +} + +// 新增代码生成表定义 +export const createCodegenTable = (data: CodegenCreateListReqVO) => { + return request.post({ url: '/infra/codegen/create', data }) +} + +// 修改代码生成表定义 +export const updateCodegenTable = (data: CodegenUpdateReqVO) => { + return request.put({ url: '/infra/codegen/update', data }) +} + +// 基于数据库的表结构,同步数据库的表和字段定义 +export const syncCodegenFromDB = (id: number) => { + return request.put({ url: '/infra/codegen/sync-from-db?tableId=' + id }) +} + +// 预览生成代码 +export const previewCodegen = (id: number) => { + return request.get({ url: '/infra/codegen/preview?tableId=' + id }) +} + +// 下载生成代码 +export const downloadCodegen = (id: number) => { + return request.download({ url: '/infra/codegen/download?tableId=' + id }) +} + +// 获得表定义 +export const getSchemaTableList = (params) => { + return request.get({ url: '/infra/codegen/db/table/list', params }) +} + +// 基于数据库的表结构,创建代码生成器的表定义 +export const createCodegenList = (data) => { + return request.post({ url: '/infra/codegen/create-list', data }) +} + +// 删除代码生成表定义 +export const deleteCodegenTable = (id: number) => { + return request.delete({ url: '/infra/codegen/delete?tableId=' + id }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/config/index.ts b/marketing-ui/admin-ui/src/api/infra/config/index.ts new file mode 100644 index 0000000..5ef59f3 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/config/index.ts @@ -0,0 +1,48 @@ +import request from '@/config/axios' + +export interface ConfigVO { + id: number | undefined + category: string + name: string + key: string + value: string + type: number + visible: boolean + remark: string + createTime: Date +} + +// 查询参数列表 +export const getConfigPage = (params: PageParam) => { + return request.get({ url: '/infra/config/page', params }) +} + +// 查询参数详情 +export const getConfig = (id: number) => { + return request.get({ url: '/infra/config/get?id=' + id }) +} + +// 根据参数键名查询参数值 +export const getConfigKey = (configKey: string) => { + return request.get({ url: '/infra/config/get-value-by-key?key=' + configKey }) +} + +// 新增参数 +export const createConfig = (data: ConfigVO) => { + return request.post({ url: '/infra/config/create', data }) +} + +// 修改参数 +export const updateConfig = (data: ConfigVO) => { + return request.put({ url: '/infra/config/update', data }) +} + +// 删除参数 +export const deleteConfig = (id: number) => { + return request.delete({ url: '/infra/config/delete?id=' + id }) +} + +// 导出参数 +export const exportConfig = (params) => { + return request.download({ url: '/infra/config/export', params }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/dataSourceConfig/index.ts b/marketing-ui/admin-ui/src/api/infra/dataSourceConfig/index.ts new file mode 100644 index 0000000..b413f34 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/dataSourceConfig/index.ts @@ -0,0 +1,35 @@ +import request from '@/config/axios' + +export interface DataSourceConfigVO { + id: number | undefined + name: string + url: string + username: string + password: string + createTime?: Date +} + +// 新增数据源配置 +export const createDataSourceConfig = (data: DataSourceConfigVO) => { + return request.post({ url: '/infra/data-source-config/create', data }) +} + +// 修改数据源配置 +export const updateDataSourceConfig = (data: DataSourceConfigVO) => { + return request.put({ url: '/infra/data-source-config/update', data }) +} + +// 删除数据源配置 +export const deleteDataSourceConfig = (id: number) => { + return request.delete({ url: '/infra/data-source-config/delete?id=' + id }) +} + +// 查询数据源配置详情 +export const getDataSourceConfig = (id: number) => { + return request.get({ url: '/infra/data-source-config/get?id=' + id }) +} + +// 查询数据源配置列表 +export const getDataSourceConfigList = () => { + return request.get({ url: '/infra/data-source-config/list' }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/demo/demo01/index.ts b/marketing-ui/admin-ui/src/api/infra/demo/demo01/index.ts new file mode 100644 index 0000000..e34a05d --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/demo/demo01/index.ts @@ -0,0 +1,40 @@ +import request from '@/config/axios' + +export interface Demo01ContactVO { + id: number + name: string + sex: number + birthday: Date + description: string + avatar: string +} + +// 查询示例联系人分页 +export const getDemo01ContactPage = async (params) => { + return await request.get({ url: `/infra/demo01-contact/page`, params }) +} + +// 查询示例联系人详情 +export const getDemo01Contact = async (id: number) => { + return await request.get({ url: `/infra/demo01-contact/get?id=` + id }) +} + +// 新增示例联系人 +export const createDemo01Contact = async (data: Demo01ContactVO) => { + return await request.post({ url: `/infra/demo01-contact/create`, data }) +} + +// 修改示例联系人 +export const updateDemo01Contact = async (data: Demo01ContactVO) => { + return await request.put({ url: `/infra/demo01-contact/update`, data }) +} + +// 删除示例联系人 +export const deleteDemo01Contact = async (id: number) => { + return await request.delete({ url: `/infra/demo01-contact/delete?id=` + id }) +} + +// 导出示例联系人 Excel +export const exportDemo01Contact = async (params) => { + return await request.download({ url: `/infra/demo01-contact/export-excel`, params }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/demo/demo02/index.ts b/marketing-ui/admin-ui/src/api/infra/demo/demo02/index.ts new file mode 100644 index 0000000..736a123 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/demo/demo02/index.ts @@ -0,0 +1,37 @@ +import request from '@/config/axios' + +export interface Demo02CategoryVO { + id: number + name: string + parentId: number +} + +// 查询示例分类列表 +export const getDemo02CategoryList = async () => { + return await request.get({ url: `/infra/demo02-category/list` }) +} + +// 查询示例分类详情 +export const getDemo02Category = async (id: number) => { + return await request.get({ url: `/infra/demo02-category/get?id=` + id }) +} + +// 新增示例分类 +export const createDemo02Category = async (data: Demo02CategoryVO) => { + return await request.post({ url: `/infra/demo02-category/create`, data }) +} + +// 修改示例分类 +export const updateDemo02Category = async (data: Demo02CategoryVO) => { + return await request.put({ url: `/infra/demo02-category/update`, data }) +} + +// 删除示例分类 +export const deleteDemo02Category = async (id: number) => { + return await request.delete({ url: `/infra/demo02-category/delete?id=` + id }) +} + +// 导出示例分类 Excel +export const exportDemo02Category = async (params) => { + return await request.download({ url: `/infra/demo02-category/export-excel`, params }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/demo/demo03/erp/index.ts b/marketing-ui/admin-ui/src/api/infra/demo/demo03/erp/index.ts new file mode 100644 index 0000000..a2ab539 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/demo/demo03/erp/index.ts @@ -0,0 +1,91 @@ +import request from '@/config/axios' + +export interface Demo03StudentVO { + id: number + name: string + sex: number + birthday: Date + description: string +} + +// 查询学生分页 +export const getDemo03StudentPage = async (params) => { + return await request.get({ url: `/infra/demo03-student/page`, params }) +} + +// 查询学生详情 +export const getDemo03Student = async (id: number) => { + return await request.get({ url: `/infra/demo03-student/get?id=` + id }) +} + +// 新增学生 +export const createDemo03Student = async (data: Demo03StudentVO) => { + return await request.post({ url: `/infra/demo03-student/create`, data }) +} + +// 修改学生 +export const updateDemo03Student = async (data: Demo03StudentVO) => { + return await request.put({ url: `/infra/demo03-student/update`, data }) +} + +// 删除学生 +export const deleteDemo03Student = async (id: number) => { + return await request.delete({ url: `/infra/demo03-student/delete?id=` + id }) +} + +// 导出学生 Excel +export const exportDemo03Student = async (params) => { + return await request.download({ url: `/infra/demo03-student/export-excel`, params }) +} + +// ==================== 子表(学生课程) ==================== + +// 获得学生课程分页 +export const getDemo03CoursePage = async (params) => { + return await request.get({ url: `/infra/demo03-student/demo03-course/page`, params }) +} +// 新增学生课程 +export const createDemo03Course = async (data) => { + return await request.post({ url: `/infra/demo03-student/demo03-course/create`, data }) +} + +// 修改学生课程 +export const updateDemo03Course = async (data) => { + return await request.put({ url: `/infra/demo03-student/demo03-course/update`, data }) +} + +// 删除学生课程 +export const deleteDemo03Course = async (id: number) => { + return await request.delete({ url: `/infra/demo03-student/demo03-course/delete?id=` + id }) +} + +// 获得学生课程 +export const getDemo03Course = async (id: number) => { + return await request.get({ url: `/infra/demo03-student/demo03-course/get?id=` + id }) +} + +// ==================== 子表(学生班级) ==================== + +// 获得学生班级分页 +export const getDemo03GradePage = async (params) => { + return await request.get({ url: `/infra/demo03-student/demo03-grade/page`, params }) +} +// 新增学生班级 +export const createDemo03Grade = async (data) => { + return await request.post({ url: `/infra/demo03-student/demo03-grade/create`, data }) +} + +// 修改学生班级 +export const updateDemo03Grade = async (data) => { + return await request.put({ url: `/infra/demo03-student/demo03-grade/update`, data }) +} + +// 删除学生班级 +export const deleteDemo03Grade = async (id: number) => { + return await request.delete({ url: `/infra/demo03-student/demo03-grade/delete?id=` + id }) +} + +// 获得学生班级 +export const getDemo03Grade = async (id: number) => { + return await request.get({ url: `/infra/demo03-student/demo03-grade/get?id=` + id }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/demo/demo03/inner/index.ts b/marketing-ui/admin-ui/src/api/infra/demo/demo03/inner/index.ts new file mode 100644 index 0000000..e366307 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/demo/demo03/inner/index.ts @@ -0,0 +1,57 @@ +import request from '@/config/axios' + +export interface Demo03StudentVO { + id: number + name: string + sex: number + birthday: Date + description: string +} + +// 查询学生分页 +export const getDemo03StudentPage = async (params) => { + return await request.get({ url: `/infra/demo03-student/page`, params }) +} + +// 查询学生详情 +export const getDemo03Student = async (id: number) => { + return await request.get({ url: `/infra/demo03-student/get?id=` + id }) +} + +// 新增学生 +export const createDemo03Student = async (data: Demo03StudentVO) => { + return await request.post({ url: `/infra/demo03-student/create`, data }) +} + +// 修改学生 +export const updateDemo03Student = async (data: Demo03StudentVO) => { + return await request.put({ url: `/infra/demo03-student/update`, data }) +} + +// 删除学生 +export const deleteDemo03Student = async (id: number) => { + return await request.delete({ url: `/infra/demo03-student/delete?id=` + id }) +} + +// 导出学生 Excel +export const exportDemo03Student = async (params) => { + return await request.download({ url: `/infra/demo03-student/export-excel`, params }) +} + +// ==================== 子表(学生课程) ==================== + +// 获得学生课程列表 +export const getDemo03CourseListByStudentId = async (studentId) => { + return await request.get({ + url: `/infra/demo03-student/demo03-course/list-by-student-id?studentId=` + studentId + }) +} + +// ==================== 子表(学生班级) ==================== + +// 获得学生班级 +export const getDemo03GradeByStudentId = async (studentId) => { + return await request.get({ + url: `/infra/demo03-student/demo03-grade/get-by-student-id?studentId=` + studentId + }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/demo/demo03/normal/index.ts b/marketing-ui/admin-ui/src/api/infra/demo/demo03/normal/index.ts new file mode 100644 index 0000000..e366307 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/demo/demo03/normal/index.ts @@ -0,0 +1,57 @@ +import request from '@/config/axios' + +export interface Demo03StudentVO { + id: number + name: string + sex: number + birthday: Date + description: string +} + +// 查询学生分页 +export const getDemo03StudentPage = async (params) => { + return await request.get({ url: `/infra/demo03-student/page`, params }) +} + +// 查询学生详情 +export const getDemo03Student = async (id: number) => { + return await request.get({ url: `/infra/demo03-student/get?id=` + id }) +} + +// 新增学生 +export const createDemo03Student = async (data: Demo03StudentVO) => { + return await request.post({ url: `/infra/demo03-student/create`, data }) +} + +// 修改学生 +export const updateDemo03Student = async (data: Demo03StudentVO) => { + return await request.put({ url: `/infra/demo03-student/update`, data }) +} + +// 删除学生 +export const deleteDemo03Student = async (id: number) => { + return await request.delete({ url: `/infra/demo03-student/delete?id=` + id }) +} + +// 导出学生 Excel +export const exportDemo03Student = async (params) => { + return await request.download({ url: `/infra/demo03-student/export-excel`, params }) +} + +// ==================== 子表(学生课程) ==================== + +// 获得学生课程列表 +export const getDemo03CourseListByStudentId = async (studentId) => { + return await request.get({ + url: `/infra/demo03-student/demo03-course/list-by-student-id?studentId=` + studentId + }) +} + +// ==================== 子表(学生班级) ==================== + +// 获得学生班级 +export const getDemo03GradeByStudentId = async (studentId) => { + return await request.get({ + url: `/infra/demo03-student/demo03-grade/get-by-student-id?studentId=` + studentId + }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/file/index.ts b/marketing-ui/admin-ui/src/api/infra/file/index.ts new file mode 100644 index 0000000..0e1b2e7 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/file/index.ts @@ -0,0 +1,45 @@ +import request from '@/config/axios' + +export interface FilePageReqVO extends PageParam { + path?: string + type?: string + createTime?: Date[] +} + +// 文件预签名地址 Response VO +export interface FilePresignedUrlRespVO { + // 文件配置编号 + configId: number + // 文件上传 URL + uploadUrl: string + // 文件 URL + url: string +} + +// 查询文件列表 +export const getFilePage = (params: FilePageReqVO) => { + return request.get({ url: '/infra/file/page', params }) +} + +// 删除文件 +export const deleteFile = (id: number) => { + return request.delete({ url: '/infra/file/delete?id=' + id }) +} + +// 获取文件预签名地址 +export const getFilePresignedUrl = (path: string) => { + return request.get({ + url: '/infra/file/presigned-url', + params: { path } + }) +} + +// 创建文件 +export const createFile = (data: any) => { + return request.post({ url: '/infra/file/create', data }) +} + +// 上传文件 +export const updateFile = (data: any) => { + return request.upload({ url: '/infra/file/upload', data }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/fileConfig/index.ts b/marketing-ui/admin-ui/src/api/infra/fileConfig/index.ts new file mode 100644 index 0000000..ba40054 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/fileConfig/index.ts @@ -0,0 +1,61 @@ +import request from '@/config/axios' + +export interface FileClientConfig { + basePath: string + host?: string + port?: number + username?: string + password?: string + mode?: string + endpoint?: string + bucket?: string + accessKey?: string + accessSecret?: string + domain: string +} + +export interface FileConfigVO { + id: number + name: string + storage?: number + master: boolean + visible: boolean + config: FileClientConfig + remark: string + createTime: Date +} + +// 查询文件配置列表 +export const getFileConfigPage = (params: PageParam) => { + return request.get({ url: '/infra/file-config/page', params }) +} + +// 查询文件配置详情 +export const getFileConfig = (id: number) => { + return request.get({ url: '/infra/file-config/get?id=' + id }) +} + +// 更新文件配置为主配置 +export const updateFileConfigMaster = (id: number) => { + return request.put({ url: '/infra/file-config/update-master?id=' + id }) +} + +// 新增文件配置 +export const createFileConfig = (data: FileConfigVO) => { + return request.post({ url: '/infra/file-config/create', data }) +} + +// 修改文件配置 +export const updateFileConfig = (data: FileConfigVO) => { + return request.put({ url: '/infra/file-config/update', data }) +} + +// 删除文件配置 +export const deleteFileConfig = (id: number) => { + return request.delete({ url: '/infra/file-config/delete?id=' + id }) +} + +// 测试文件配置 +export const testFileConfig = (id: number) => { + return request.get({ url: '/infra/file-config/test?id=' + id }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/job/index.ts b/marketing-ui/admin-ui/src/api/infra/job/index.ts new file mode 100644 index 0000000..033b2cb --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/job/index.ts @@ -0,0 +1,63 @@ +import request from '@/config/axios' + +export interface JobVO { + id: number + name: string + status: number + handlerName: string + handlerParam: string + cronExpression: string + retryCount: number + retryInterval: number + monitorTimeout: number + createTime: Date +} + +// 任务列表 +export const getJobPage = (params: PageParam) => { + return request.get({ url: '/infra/job/page', params }) +} + +// 任务详情 +export const getJob = (id: number) => { + return request.get({ url: '/infra/job/get?id=' + id }) +} + +// 新增任务 +export const createJob = (data: JobVO) => { + return request.post({ url: '/infra/job/create', data }) +} + +// 修改定时任务调度 +export const updateJob = (data: JobVO) => { + return request.put({ url: '/infra/job/update', data }) +} + +// 删除定时任务调度 +export const deleteJob = (id: number) => { + return request.delete({ url: '/infra/job/delete?id=' + id }) +} + +// 导出定时任务调度 +export const exportJob = (params) => { + return request.download({ url: '/infra/job/export-excel', params }) +} + +// 任务状态修改 +export const updateJobStatus = (id: number, status: number) => { + const params = { + id, + status + } + return request.put({ url: '/infra/job/update-status', params }) +} + +// 定时任务立即执行一次 +export const runJob = (id: number) => { + return request.put({ url: '/infra/job/trigger?id=' + id }) +} + +// 获得定时任务的下 n 次执行时间 +export const getJobNextTimes = (id: number) => { + return request.get({ url: '/infra/job/get_next_times?id=' + id }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/jobLog/index.ts b/marketing-ui/admin-ui/src/api/infra/jobLog/index.ts new file mode 100644 index 0000000..ed54761 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/jobLog/index.ts @@ -0,0 +1,34 @@ +import request from '@/config/axios' + +export interface JobLogVO { + id: number + jobId: number + handlerName: string + handlerParam: string + cronExpression: string + executeIndex: string + beginTime: Date + endTime: Date + duration: string + status: number + createTime: string + result: string +} + +// 任务日志列表 +export const getJobLogPage = (params: PageParam) => { + return request.get({ url: '/infra/job-log/page', params }) +} + +// 任务日志详情 +export const getJobLog = (id: number) => { + return request.get({ url: '/infra/job-log/get?id=' + id }) +} + +// 导出定时任务日志 +export const exportJobLog = (params) => { + return request.download({ + url: '/infra/job-log/export-excel', + params + }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/redis/index.ts b/marketing-ui/admin-ui/src/api/infra/redis/index.ts new file mode 100644 index 0000000..f27be77 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/redis/index.ts @@ -0,0 +1,8 @@ +import request from '@/config/axios' + +/** + * 获取redis 监控信息 + */ +export const getCache = () => { + return request.get({ url: '/infra/redis/get-monitor-info' }) +} diff --git a/marketing-ui/admin-ui/src/api/infra/redis/types.ts b/marketing-ui/admin-ui/src/api/infra/redis/types.ts new file mode 100644 index 0000000..548bfe9 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/infra/redis/types.ts @@ -0,0 +1,176 @@ +export interface RedisMonitorInfoVO { + info: RedisInfoVO + dbSize: number + commandStats: RedisCommandStatsVO[] +} + +export interface RedisInfoVO { + io_threaded_reads_processed: string + tracking_clients: string + uptime_in_seconds: string + cluster_connections: string + current_cow_size: string + maxmemory_human: string + aof_last_cow_size: string + master_replid2: string + mem_replication_backlog: string + aof_rewrite_scheduled: string + total_net_input_bytes: string + rss_overhead_ratio: string + hz: string + current_cow_size_age: string + redis_build_id: string + errorstat_BUSYGROUP: string + aof_last_bgrewrite_status: string + multiplexing_api: string + client_recent_max_output_buffer: string + allocator_resident: string + mem_fragmentation_bytes: string + aof_current_size: string + repl_backlog_first_byte_offset: string + tracking_total_prefixes: string + redis_mode: string + redis_git_dirty: string + aof_delayed_fsync: string + allocator_rss_bytes: string + repl_backlog_histlen: string + io_threads_active: string + rss_overhead_bytes: string + total_system_memory: string + loading: string + evicted_keys: string + maxclients: string + cluster_enabled: string + redis_version: string + repl_backlog_active: string + mem_aof_buffer: string + allocator_frag_bytes: string + io_threaded_writes_processed: string + instantaneous_ops_per_sec: string + used_memory_human: string + total_error_replies: string + role: string + maxmemory: string + used_memory_lua: string + rdb_current_bgsave_time_sec: string + used_memory_startup: string + used_cpu_sys_main_thread: string + lazyfree_pending_objects: string + aof_pending_bio_fsync: string + used_memory_dataset_perc: string + allocator_frag_ratio: string + arch_bits: string + used_cpu_user_main_thread: string + mem_clients_normal: string + expired_time_cap_reached_count: string + unexpected_error_replies: string + mem_fragmentation_ratio: string + aof_last_rewrite_time_sec: string + master_replid: string + aof_rewrite_in_progress: string + lru_clock: string + maxmemory_policy: string + run_id: string + latest_fork_usec: string + tracking_total_items: string + total_commands_processed: string + expired_keys: string + errorstat_ERR: string + used_memory: string + module_fork_in_progress: string + errorstat_WRONGPASS: string + aof_buffer_length: string + dump_payload_sanitizations: string + mem_clients_slaves: string + keyspace_misses: string + server_time_usec: string + executable: string + lazyfreed_objects: string + db0: string + used_memory_peak_human: string + keyspace_hits: string + rdb_last_cow_size: string + aof_pending_rewrite: string + used_memory_overhead: string + active_defrag_hits: string + tcp_port: string + uptime_in_days: string + used_memory_peak_perc: string + current_save_keys_processed: string + blocked_clients: string + total_reads_processed: string + expire_cycle_cpu_milliseconds: string + sync_partial_err: string + used_memory_scripts_human: string + aof_current_rewrite_time_sec: string + aof_enabled: string + process_supervised: string + master_repl_offset: string + used_memory_dataset: string + used_cpu_user: string + rdb_last_bgsave_status: string + tracking_total_keys: string + atomicvar_api: string + allocator_rss_ratio: string + client_recent_max_input_buffer: string + clients_in_timeout_table: string + aof_last_write_status: string + mem_allocator: string + used_memory_scripts: string + used_memory_peak: string + process_id: string + master_failover_state: string + errorstat_NOAUTH: string + used_cpu_sys: string + repl_backlog_size: string + connected_slaves: string + current_save_keys_total: string + gcc_version: string + total_system_memory_human: string + sync_full: string + connected_clients: string + module_fork_last_cow_size: string + total_writes_processed: string + allocator_active: string + total_net_output_bytes: string + pubsub_channels: string + current_fork_perc: string + active_defrag_key_hits: string + rdb_changes_since_last_save: string + instantaneous_input_kbps: string + used_memory_rss_human: string + configured_hz: string + expired_stale_perc: string + active_defrag_misses: string + used_cpu_sys_children: string + number_of_cached_scripts: string + sync_partial_ok: string + used_memory_lua_human: string + rdb_last_save_time: string + pubsub_patterns: string + slave_expires_tracked_keys: string + redis_git_sha1: string + used_memory_rss: string + rdb_last_bgsave_time_sec: string + os: string + mem_not_counted_for_evict: string + active_defrag_running: string + rejected_connections: string + aof_rewrite_buffer_length: string + total_forks: string + active_defrag_key_misses: string + allocator_allocated: string + aof_base_size: string + instantaneous_output_kbps: string + second_repl_offset: string + rdb_bgsave_in_progress: string + used_cpu_user_children: string + total_connections_received: string + migrate_cached_sockets: string +} + +export interface RedisCommandStatsVO { + command: string + calls: number + usec: number +} diff --git a/marketing-ui/admin-ui/src/api/login/index.ts b/marketing-ui/admin-ui/src/api/login/index.ts new file mode 100644 index 0000000..fd12064 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/login/index.ts @@ -0,0 +1,76 @@ +import request from '@/config/axios' +import type { RegisterVO, UserLoginVO } from './types' + +export interface SmsCodeVO { + mobile: string + scene: number +} + +export interface SmsLoginVO { + mobile: string + code: string +} + +// 登录 +export const login = (data: UserLoginVO) => { + return request.post({ url: '/system/auth/login', data }) +} + +// 注册 +export const register = (data: RegisterVO) => { + return request.post({ url: '/system/auth/register', data }) +} + +// 登出 +export const loginOut = () => { + return request.post({ url: '/system/auth/logout' }) +} + +// 获取用户权限信息 +export const getInfo = () => { + return request.get({ url: '/system/auth/get-permission-info' }) +} + +//获取登录验证码 +export const sendSmsCode = (data: SmsCodeVO) => { + return request.post({ url: '/system/auth/send-sms-code', data }) +} + +// 短信验证码登录 +export const smsLogin = (data: SmsLoginVO) => { + return request.post({ url: '/system/auth/sms-login', data }) +} + +// 社交快捷登录,使用 code 授权码 +export function socialLogin(type: string, code: string, state: string) { + return request.post({ + url: '/system/auth/social-login', + data: { + type, + code, + state + } + }) +} + +// 社交授权的跳转 +export const socialAuthRedirect = (type: number, redirectUri: string) => { + return request.get({ + url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri + }) +} +// 获取验证图片以及 token +export const getCode = (data: any) => { + debugger + return request.postOriginal({ url: 'system/captcha/get', data }) +} + +// 滑动或者点选验证 +export const reqCheck = (data: any) => { + return request.postOriginal({ url: 'system/captcha/check', data }) +} + +// 通过短信重置密码 +export const smsResetPassword = (data: any) => { + return request.post({ url: '/system/auth/reset-password', data }) +} diff --git a/marketing-ui/admin-ui/src/api/login/oauth2/index.ts b/marketing-ui/admin-ui/src/api/login/oauth2/index.ts new file mode 100644 index 0000000..f4a67fb --- /dev/null +++ b/marketing-ui/admin-ui/src/api/login/oauth2/index.ts @@ -0,0 +1,41 @@ +import request from '@/config/axios' + +// 获得授权信息 +export const getAuthorize = (clientId: string) => { + return request.get({ url: '/system/oauth2/authorize?clientId=' + clientId }) +} + +// 发起授权 +export const authorize = ( + responseType: string, + clientId: string, + redirectUri: string, + state: string, + autoApprove: boolean, + checkedScopes: string[], + uncheckedScopes: string[] +) => { + // 构建 scopes + const scopes = {} + for (const scope of checkedScopes) { + scopes[scope] = true + } + for (const scope of uncheckedScopes) { + scopes[scope] = false + } + // 发起请求 + return request.post({ + url: '/system/oauth2/authorize', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + response_type: responseType, + client_id: clientId, + redirect_uri: redirectUri, + state: state, + auto_approve: autoApprove, + scope: JSON.stringify(scopes) + } + }) +} diff --git a/marketing-ui/admin-ui/src/api/login/types.ts b/marketing-ui/admin-ui/src/api/login/types.ts new file mode 100644 index 0000000..b5790e6 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/login/types.ts @@ -0,0 +1,38 @@ +export type UserLoginVO = { + username: string + password: string + captchaVerification: string + socialType?: string + socialCode?: string + socialState?: string +} + +export type TokenType = { + id: number // 编号 + accessToken: string // 访问令牌 + refreshToken: string // 刷新令牌 + userId: number // 用户编号 + userType: number //用户类型 + clientId: string //客户端编号 + expiresTime: number //过期时间 +} + +export type UserVO = { + id: number + username: string + nickname: string + deptId: number + email: string + mobile: string + sex: number + avatar: string + loginIp: string + loginDate: string +} + +export type RegisterVO = { + tenantName: string + username: string + password: string + captchaVerification: string +} diff --git a/marketing-ui/admin-ui/src/api/smschannel/channelaccount/index.ts b/marketing-ui/admin-ui/src/api/smschannel/channelaccount/index.ts new file mode 100644 index 0000000..95e387f --- /dev/null +++ b/marketing-ui/admin-ui/src/api/smschannel/channelaccount/index.ts @@ -0,0 +1,59 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 短信渠道账号信息 */ +export interface ChannelAccount { + id: number; // 主键ID + channelId?: number; // 逻辑关联渠道ID + channelCode?: string; // 渠道标识 + accountName?: string; // 账号名称 + appKey?: string; // API密钥 + appSecret?: string; // API密钥 + md5Value: string; // 关键字段MD5值(算法:MD5(channel_id|account_name|app_key|app_secret)) + supportSmsType?: string; // 支持的短信类型[0:验证码,1:短信通知,2:推广短信,3:国际/港澳台消息] + extParams: string; // 扩展参数 + remark: string; // 备注 + } + +// 短信渠道账号 API +export const ChannelAccountApi = { + // 查询短信渠道账号分页 + getChannelAccountPage: async (params: any) => { + return await request.get({ url: `/smschannel/channel-account/page`, params }) + }, + + // 查询短信渠道账号列表 + getChannelAccountList: async (params: any) => { + return await request.get({ url: `/smschannel/channel-account/list`, params }) + }, + + // 查询短信渠道账号详情 + getChannelAccount: async (id: number) => { + return await request.get({ url: `/smschannel/channel-account/get?id=` + id }) + }, + + // 新增短信渠道账号 + createChannelAccount: async (data: ChannelAccount) => { + return await request.post({ url: `/smschannel/channel-account/create`, data }) + }, + + // 修改短信渠道账号 + updateChannelAccount: async (data: ChannelAccount) => { + return await request.put({ url: `/smschannel/channel-account/update`, data }) + }, + + // 删除短信渠道账号 + deleteChannelAccount: async (id: number) => { + return await request.delete({ url: `/smschannel/channel-account/delete?id=` + id }) + }, + + /** 批量删除短信渠道账号 */ + deleteChannelAccountList: async (ids: number[]) => { + return await request.delete({ url: `/smschannel/channel-account/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出短信渠道账号 Excel + exportChannelAccount: async (params) => { + return await request.download({ url: `/smschannel/channel-account/export-excel`, params }) + } +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/api/smschannel/smschannelinfo/index.ts b/marketing-ui/admin-ui/src/api/smschannel/smschannelinfo/index.ts new file mode 100644 index 0000000..2c9310c --- /dev/null +++ b/marketing-ui/admin-ui/src/api/smschannel/smschannelinfo/index.ts @@ -0,0 +1,60 @@ +import request from '@/config/axios' +import type {Dayjs} from 'dayjs'; + +/** 短信渠道配置表(含扩展属性字段)信息 */ +export interface SmsChannelInfo { + id: number; // 渠道ID + channelName?: string; // 渠道名称 + channelCode?: string; // 渠道标识(如:aliyun/tencent等) + domainUrl?: string; // 请求地址 + label: string; // 渠道标签(逗号分隔) + supportApplyTemplate?: boolean; // 是否支持申请模板(1-支持 0-不支持) + supportApplySign?: boolean; // 是否支持申请签名(1-支持 0-不支持) + supportBatchSend?: boolean; // 是否支持批量发送(1-支持 0-不支持) + supportInternational?: boolean; // 是否支持国际短信(1-支持 0-不支持) + supportQueryTemplate?: boolean; // 是否支持查询模板信息(1-支持 0-不支持) + supportReply?: boolean; // 是否支持上行回复(1-支持 0-不支持) + channelProperties: string; // 渠道扩展属性(JSON格式配置/动态参数) +} + +// 短信渠道配置表(含扩展属性字段) API +export const SmsChannelInfoApi = { + // 查询短信渠道配置表(含扩展属性字段)分页 + getSmsChannelInfoPage: async (params: any) => { + return await request.get({url: `/smschannel/sms-channel-info/page`, params}) + }, + + getSmsChannelInfoList: async (params: any) => { + return await request.get({url: `/smschannel/sms-channel-info/list`, params}) + }, + + // 查询短信渠道配置表(含扩展属性字段)详情 + getSmsChannelInfo: async (id: number) => { + return await request.get({url: `/smschannel/sms-channel-info/get?id=` + id}) + }, + + // 新增短信渠道配置表(含扩展属性字段) + createSmsChannelInfo: async (data: SmsChannelInfo) => { + return await request.post({url: `/smschannel/sms-channel-info/create`, data}) + }, + + // 修改短信渠道配置表(含扩展属性字段) + updateSmsChannelInfo: async (data: SmsChannelInfo) => { + return await request.put({url: `/smschannel/sms-channel-info/update`, data}) + }, + + // 删除短信渠道配置表(含扩展属性字段) + deleteSmsChannelInfo: async (id: number) => { + return await request.delete({url: `/smschannel/sms-channel-info/delete?id=` + id}) + }, + + /** 批量删除短信渠道配置表(含扩展属性字段) */ + deleteSmsChannelInfoList: async (ids: number[]) => { + return await request.delete({url: `/smschannel/sms-channel-info/delete-list?ids=${ids.join(',')}`}) + }, + + // 导出短信渠道配置表(含扩展属性字段) Excel + exportSmsChannelInfo: async (params) => { + return await request.download({url: `/smschannel/sms-channel-info/export-excel`, params}) + } +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/api/system/area/index.ts b/marketing-ui/admin-ui/src/api/system/area/index.ts new file mode 100644 index 0000000..e91a499 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/area/index.ts @@ -0,0 +1,11 @@ +import request from '@/config/axios' + +// 获得地区树 +export const getAreaTree = async () => { + return await request.get({ url: '/system/area/tree' }) +} + +// 获得 IP 对应的地区名 +export const getAreaByIp = async (ip: string) => { + return await request.get({ url: '/system/area/get-by-ip?ip=' + ip }) +} diff --git a/marketing-ui/admin-ui/src/api/system/client/index.ts b/marketing-ui/admin-ui/src/api/system/client/index.ts new file mode 100644 index 0000000..e639e14 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/client/index.ts @@ -0,0 +1,52 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 系统客户端信息 */ +export interface Client { + id: number; // 主键ID + clientKey: string; // 客户端KEY + clientSecret: string; // 客户端密钥 + grantType: string; // 授权类型 + deviceType: string; // 设备类型 + accessTimeout: number; // Token访问超时时间(秒) + refreshTimeout: number; // Token刷新超时时间(秒) + status: string; // 状态(0 正常 1 停用) + } + +// 系统客户端 API +export const ClientApi = { + // 查询系统客户端分页 + getClientPage: async (params: any) => { + return await request.get({ url: `/system/client/page`, params }) + }, + + // 查询系统客户端详情 + getClient: async (id: number) => { + return await request.get({ url: `/system/client/get?id=` + id }) + }, + + // 新增系统客户端 + createClient: async (data: Client) => { + return await request.post({ url: `/system/client/create`, data }) + }, + + // 修改系统客户端 + updateClient: async (data: Client) => { + return await request.put({ url: `/system/client/update`, data }) + }, + + // 删除系统客户端 + deleteClient: async (id: number) => { + return await request.delete({ url: `/system/client/delete?id=` + id }) + }, + + /** 批量删除系统客户端 */ + deleteClientList: async (ids: number[]) => { + return await request.delete({ url: `/system/client/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出系统客户端 Excel + exportClient: async (params) => { + return await request.download({ url: `/system/client/export-excel`, params }) + } +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/api/system/dept/index.ts b/marketing-ui/admin-ui/src/api/system/dept/index.ts new file mode 100644 index 0000000..04d5c88 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/dept/index.ts @@ -0,0 +1,43 @@ +import request from '@/config/axios' + +export interface DeptVO { + id?: number + name: string + parentId: number + status: number + sort: number + leaderUserId: number + phone: string + email: string + createTime: Date +} + +// 查询部门(精简)列表 +export const getSimpleDeptList = async (): Promise => { + return await request.get({ url: '/system/dept/simple-list' }) +} + +// 查询部门列表 +export const getDeptPage = async (params: PageParam) => { + return await request.get({ url: '/system/dept/list', params }) +} + +// 查询部门详情 +export const getDept = async (id: number) => { + return await request.get({ url: '/system/dept/get?id=' + id }) +} + +// 新增部门 +export const createDept = async (data: DeptVO) => { + return await request.post({ url: '/system/dept/create', data: data }) +} + +// 修改部门 +export const updateDept = async (params: DeptVO) => { + return await request.put({ url: '/system/dept/update', data: params }) +} + +// 删除部门 +export const deleteDept = async (id: number) => { + return await request.delete({ url: '/system/dept/delete?id=' + id }) +} diff --git a/marketing-ui/admin-ui/src/api/system/dict/dict.data.ts b/marketing-ui/admin-ui/src/api/system/dict/dict.data.ts new file mode 100644 index 0000000..f428648 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/dict/dict.data.ts @@ -0,0 +1,49 @@ +import request from '@/config/axios' + +export type DictDataVO = { + id: number | undefined + sort: number | undefined + label: string + value: string + dictType: string + status: number + colorType: string + cssClass: string + remark: string + createTime: Date +} + +// 查询字典数据(精简)列表 +export const getSimpleDictDataList = () => { + return request.get({ url: '/system/dict-data/simple-list' }) +} + +// 查询字典数据列表 +export const getDictDataPage = (params: PageParam) => { + return request.get({ url: '/system/dict-data/page', params }) +} + +// 查询字典数据详情 +export const getDictData = (id: number) => { + return request.get({ url: '/system/dict-data/get?id=' + id }) +} + +// 新增字典数据 +export const createDictData = (data: DictDataVO) => { + return request.post({ url: '/system/dict-data/create', data }) +} + +// 修改字典数据 +export const updateDictData = (data: DictDataVO) => { + return request.put({ url: '/system/dict-data/update', data }) +} + +// 删除字典数据 +export const deleteDictData = (id: number) => { + return request.delete({ url: '/system/dict-data/delete?id=' + id }) +} + +// 导出字典类型数据 +export const exportDictData = (params) => { + return request.download({ url: '/system/dict-data/export', params }) +} diff --git a/marketing-ui/admin-ui/src/api/system/dict/dict.type.ts b/marketing-ui/admin-ui/src/api/system/dict/dict.type.ts new file mode 100644 index 0000000..eaa5fb6 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/dict/dict.type.ts @@ -0,0 +1,44 @@ +import request from '@/config/axios' + +export type DictTypeVO = { + id: number | undefined + name: string + type: string + status: number + remark: string + createTime: Date +} + +// 查询字典(精简)列表 +export const getSimpleDictTypeList = () => { + return request.get({ url: '/system/dict-type/list-all-simple' }) +} + +// 查询字典列表 +export const getDictTypePage = (params: PageParam) => { + return request.get({ url: '/system/dict-type/page', params }) +} + +// 查询字典详情 +export const getDictType = (id: number) => { + return request.get({ url: '/system/dict-type/get?id=' + id }) +} + +// 新增字典 +export const createDictType = (data: DictTypeVO) => { + return request.post({ url: '/system/dict-type/create', data }) +} + +// 修改字典 +export const updateDictType = (data: DictTypeVO) => { + return request.put({ url: '/system/dict-type/update', data }) +} + +// 删除字典 +export const deleteDictType = (id: number) => { + return request.delete({ url: '/system/dict-type/delete?id=' + id }) +} +// 导出字典类型 +export const exportDictType = (params) => { + return request.download({ url: '/system/dict-type/export', params }) +} diff --git a/marketing-ui/admin-ui/src/api/system/loginLog/index.ts b/marketing-ui/admin-ui/src/api/system/loginLog/index.ts new file mode 100644 index 0000000..7296f25 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/loginLog/index.ts @@ -0,0 +1,25 @@ +import request from '@/config/axios' + +export interface LoginLogVO { + id: number + logType: number + traceId: number + userId: number + userType: number + username: string + result: number + status: number + userIp: string + userAgent: string + createTime: Date +} + +// 查询登录日志列表 +export const getLoginLogPage = (params: PageParam) => { + return request.get({ url: '/system/login-log/page', params }) +} + +// 导出登录日志 +export const exportLoginLog = (params) => { + return request.download({ url: '/system/login-log/export', params }) +} diff --git a/marketing-ui/admin-ui/src/api/system/menu/index.ts b/marketing-ui/admin-ui/src/api/system/menu/index.ts new file mode 100644 index 0000000..5a80668 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/menu/index.ts @@ -0,0 +1,49 @@ +import request from '@/config/axios' + +export interface MenuVO { + id: number + name: string + permission: string + type: number + sort: number + parentId: number + path: string + icon: string + component: string + componentName?: string + status: number + visible: boolean + keepAlive: boolean + alwaysShow?: boolean + createTime: Date +} + +// 查询菜单(精简)列表 +export const getSimpleMenusList = () => { + return request.get({ url: '/system/menu/simple-list' }) +} + +// 查询菜单列表 +export const getMenuList = (params) => { + return request.get({ url: '/system/menu/list', params }) +} + +// 获取菜单详情 +export const getMenu = (id: number) => { + return request.get({ url: '/system/menu/get?id=' + id }) +} + +// 新增菜单 +export const createMenu = (data: MenuVO) => { + return request.post({ url: '/system/menu/create', data }) +} + +// 修改菜单 +export const updateMenu = (data: MenuVO) => { + return request.put({ url: '/system/menu/update', data }) +} + +// 删除菜单 +export const deleteMenu = (id: number) => { + return request.delete({ url: '/system/menu/delete?id=' + id }) +} diff --git a/marketing-ui/admin-ui/src/api/system/notice/index.ts b/marketing-ui/admin-ui/src/api/system/notice/index.ts new file mode 100644 index 0000000..f643469 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/notice/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +export interface NoticeVO { + id: number | undefined + title: string + type: number + content: string + status: number + remark: string + creator: string + createTime: Date +} + +// 查询公告列表 +export const getNoticePage = (params: PageParam) => { + return request.get({ url: '/system/notice/page', params }) +} + +// 查询公告详情 +export const getNotice = (id: number) => { + return request.get({ url: '/system/notice/get?id=' + id }) +} + +// 新增公告 +export const createNotice = (data: NoticeVO) => { + return request.post({ url: '/system/notice/create', data }) +} + +// 修改公告 +export const updateNotice = (data: NoticeVO) => { + return request.put({ url: '/system/notice/update', data }) +} + +// 删除公告 +export const deleteNotice = (id: number) => { + return request.delete({ url: '/system/notice/delete?id=' + id }) +} + +// 推送公告 +export const pushNotice = (id: number) => { + return request.post({ url: '/system/notice/push?id=' + id }) +} diff --git a/marketing-ui/admin-ui/src/api/system/oauth2/client.ts b/marketing-ui/admin-ui/src/api/system/oauth2/client.ts new file mode 100644 index 0000000..6f71aca --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/oauth2/client.ts @@ -0,0 +1,47 @@ +import request from '@/config/axios' + +export interface OAuth2ClientVO { + id: number + clientId: string + secret: string + name: string + logo: string + description: string + status: number + accessTokenValiditySeconds: number + refreshTokenValiditySeconds: number + redirectUris: string[] + autoApprove: boolean + authorizedGrantTypes: string[] + scopes: string[] + authorities: string[] + resourceIds: string[] + additionalInformation: string + isAdditionalInformationJson: boolean + createTime: Date +} + +// 查询 OAuth2 客户端的列表 +export const getOAuth2ClientPage = (params: PageParam) => { + return request.get({ url: '/system/oauth2-client/page', params }) +} + +// 查询 OAuth2 客户端的详情 +export const getOAuth2Client = (id: number) => { + return request.get({ url: '/system/oauth2-client/get?id=' + id }) +} + +// 新增 OAuth2 客户端 +export const createOAuth2Client = (data: OAuth2ClientVO) => { + return request.post({ url: '/system/oauth2-client/create', data }) +} + +// 修改 OAuth2 客户端 +export const updateOAuth2Client = (data: OAuth2ClientVO) => { + return request.put({ url: '/system/oauth2-client/update', data }) +} + +// 删除 OAuth2 +export const deleteOAuth2Client = (id: number) => { + return request.delete({ url: '/system/oauth2-client/delete?id=' + id }) +} diff --git a/marketing-ui/admin-ui/src/api/system/oauth2/token.ts b/marketing-ui/admin-ui/src/api/system/oauth2/token.ts new file mode 100644 index 0000000..ac89ae8 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/oauth2/token.ts @@ -0,0 +1,22 @@ +import request from '@/config/axios' + +export interface OAuth2TokenVO { + id: number + accessToken: string + refreshToken: string + userId: number + userType: number + clientId: string + createTime: Date + expiresTime: Date +} + +// 查询 token列表 +export const getAccessTokenPage = (params: PageParam) => { + return request.get({ url: '/system/oauth2-token/page', params }) +} + +// 删除 token +export const deleteAccessToken = (accessToken: string) => { + return request.delete({ url: '/system/oauth2-token/delete?accessToken=' + accessToken }) +} diff --git a/marketing-ui/admin-ui/src/api/system/operatelog/index.ts b/marketing-ui/admin-ui/src/api/system/operatelog/index.ts new file mode 100644 index 0000000..cdb713e --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/operatelog/index.ts @@ -0,0 +1,30 @@ +import request from '@/config/axios' + +export type OperateLogVO = { + id: number + traceId: string + userType: number + userId: number + userName: string + type: string + subType: string + bizId: number + action: string + extra: string + requestMethod: string + requestUrl: string + userIp: string + userAgent: string + creator: string + creatorName: string + createTime: Date +} + +// 查询操作日志列表 +export const getOperateLogPage = (params: PageParam) => { + return request.get({ url: '/system/operate-log/page', params }) +} +// 导出操作日志 +export const exportOperateLog = (params: any) => { + return request.download({ url: '/system/operate-log/export', params }) +} diff --git a/marketing-ui/admin-ui/src/api/system/permission/index.ts b/marketing-ui/admin-ui/src/api/system/permission/index.ts new file mode 100644 index 0000000..b3c7696 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/permission/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +export interface PermissionAssignUserRoleReqVO { + userId: number + roleIds: number[] +} + +export interface PermissionAssignRoleMenuReqVO { + roleId: number + menuIds: number[] +} + +export interface PermissionAssignRoleDataScopeReqVO { + roleId: number + dataScope: number + dataScopeDeptIds: number[] +} + +// 查询角色拥有的菜单权限 +export const getRoleMenuList = async (roleId: number) => { + return await request.get({ url: '/system/permission/list-role-menus?roleId=' + roleId }) +} + +// 赋予角色菜单权限 +export const assignRoleMenu = async (data: PermissionAssignRoleMenuReqVO) => { + return await request.post({ url: '/system/permission/assign-role-menu', data }) +} + +// 赋予角色数据权限 +export const assignRoleDataScope = async (data: PermissionAssignRoleDataScopeReqVO) => { + return await request.post({ url: '/system/permission/assign-role-data-scope', data }) +} + +// 查询用户拥有的角色数组 +export const getUserRoleList = async (userId: number) => { + return await request.get({ url: '/system/permission/list-user-roles?userId=' + userId }) +} + +// 赋予用户角色 +export const assignUserRole = async (data: PermissionAssignUserRoleReqVO) => { + return await request.post({ url: '/system/permission/assign-user-role', data }) +} diff --git a/marketing-ui/admin-ui/src/api/system/post/index.ts b/marketing-ui/admin-ui/src/api/system/post/index.ts new file mode 100644 index 0000000..0e6f2ca --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/post/index.ts @@ -0,0 +1,46 @@ +import request from '@/config/axios' + +export interface PostVO { + id?: number + name: string + code: string + sort: number + status: number + remark: string + createTime?: Date +} + +// 查询岗位列表 +export const getPostPage = async (params: PageParam) => { + return await request.get({ url: '/system/post/page', params }) +} + +// 获取岗位精简信息列表 +export const getSimplePostList = async (): Promise => { + return await request.get({ url: '/system/post/simple-list' }) +} + +// 查询岗位详情 +export const getPost = async (id: number) => { + return await request.get({ url: '/system/post/get?id=' + id }) +} + +// 新增岗位 +export const createPost = async (data: PostVO) => { + return await request.post({ url: '/system/post/create', data }) +} + +// 修改岗位 +export const updatePost = async (data: PostVO) => { + return await request.put({ url: '/system/post/update', data }) +} + +// 删除岗位 +export const deletePost = async (id: number) => { + return await request.delete({ url: '/system/post/delete?id=' + id }) +} + +// 导出岗位 +export const exportPost = async (params) => { + return await request.download({ url: '/system/post/export', params }) +} diff --git a/marketing-ui/admin-ui/src/api/system/role/index.ts b/marketing-ui/admin-ui/src/api/system/role/index.ts new file mode 100644 index 0000000..3325dde --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/role/index.ts @@ -0,0 +1,61 @@ +import request from '@/config/axios' + +export interface RoleVO { + id: number + name: string + code: string + sort: number + status: number + type: number + dataScope: number + dataScopeDeptIds: number[] + createTime: Date +} + +export interface UpdateStatusReqVO { + id: number + status: number +} + +// 查询角色列表 +export const getRolePage = async (params: PageParam) => { + return await request.get({ url: '/system/role/page', params }) +} + +// 查询角色(精简)列表 +export const getSimpleRoleList = async (): Promise => { + return await request.get({ url: '/system/role/simple-list' }) +} + +// 查询角色详情 +export const getRole = async (id: number) => { + return await request.get({ url: '/system/role/get?id=' + id }) +} + +// 新增角色 +export const createRole = async (data: RoleVO) => { + return await request.post({ url: '/system/role/create', data }) +} + +// 修改角色 +export const updateRole = async (data: RoleVO) => { + return await request.put({ url: '/system/role/update', data }) +} + +// 修改角色状态 +export const updateRoleStatus = async (data: UpdateStatusReqVO) => { + return await request.put({ url: '/system/role/update-status', data }) +} + +// 删除角色 +export const deleteRole = async (id: number) => { + return await request.delete({ url: '/system/role/delete?id=' + id }) +} + +// 导出角色 +export const exportRole = (params) => { + return request.download({ + url: '/system/role/export-excel', + params + }) +} diff --git a/marketing-ui/admin-ui/src/api/system/social/client/index.ts b/marketing-ui/admin-ui/src/api/system/social/client/index.ts new file mode 100644 index 0000000..bf13ab4 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/social/client/index.ts @@ -0,0 +1,37 @@ +import request from '@/config/axios' + +export interface SocialClientVO { + id: number + name: string + socialType: number + userType: number + clientId: string + clientSecret: string + agentId: string + status: number +} + +// 查询社交客户端列表 +export const getSocialClientPage = async (params) => { + return await request.get({ url: `/system/social-client/page`, params }) +} + +// 查询社交客户端详情 +export const getSocialClient = async (id: number) => { + return await request.get({ url: `/system/social-client/get?id=` + id }) +} + +// 新增社交客户端 +export const createSocialClient = async (data: SocialClientVO) => { + return await request.post({ url: `/system/social-client/create`, data }) +} + +// 修改社交客户端 +export const updateSocialClient = async (data: SocialClientVO) => { + return await request.put({ url: `/system/social-client/update`, data }) +} + +// 删除社交客户端 +export const deleteSocialClient = async (id: number) => { + return await request.delete({ url: `/system/social-client/delete?id=` + id }) +} diff --git a/marketing-ui/admin-ui/src/api/system/social/user/index.ts b/marketing-ui/admin-ui/src/api/system/social/user/index.ts new file mode 100644 index 0000000..f11231b --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/social/user/index.ts @@ -0,0 +1,24 @@ +import request from '@/config/axios' + +export interface SocialUserVO { + id: number + type: number + openid: string + token: string + rawTokenInfo: string + nickname: string + avatar: string + rawUserInfo: string + code: string + state: string +} + +// 查询社交用户列表 +export const getSocialUserPage = async (params) => { + return await request.get({ url: `/system/social-user/page`, params }) +} + +// 查询社交用户详情 +export const getSocialUser = async (id: number) => { + return await request.get({ url: `/system/social-user/get?id=` + id }) +} diff --git a/marketing-ui/admin-ui/src/api/system/user/index.ts b/marketing-ui/admin-ui/src/api/system/user/index.ts new file mode 100644 index 0000000..715d4c7 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/user/index.ts @@ -0,0 +1,76 @@ +import request from '@/config/axios' + +export interface UserVO { + id: number + username: string + nickname: string + deptId: number + postIds: string[] + email: string + mobile: string + sex: number + avatar: string + loginIp: string + status: number + remark: string + loginDate: Date + createTime: Date +} + +// 查询用户管理列表 +export const getUserPage = (params: PageParam) => { + return request.get({ url: '/system/user/page', params }) +} + +// 查询用户详情 +export const getUser = (id: number) => { + return request.get({ url: '/system/user/get?id=' + id }) +} + +// 新增用户 +export const createUser = (data: UserVO) => { + return request.post({ url: '/system/user/create', data }) +} + +// 修改用户 +export const updateUser = (data: UserVO) => { + return request.put({ url: '/system/user/update', data }) +} + +// 删除用户 +export const deleteUser = (id: number) => { + return request.delete({ url: '/system/user/delete?id=' + id }) +} + +// 导出用户 +export const exportUser = (params: any) => { + return request.download({ url: '/system/user/export', params }) +} + +// 下载用户导入模板 +export const importUserTemplate = () => { + return request.download({ url: '/system/user/get-import-template' }) +} + +// 用户密码重置 +export const resetUserPassword = (id: number, password: string) => { + const data = { + id, + password + } + return request.put({ url: '/system/user/update-password', data: data }) +} + +// 用户状态修改 +export const updateUserStatus = (id: number, status: number) => { + const data = { + id, + status + } + return request.put({ url: '/system/user/update-status', data: data }) +} + +// 获取用户精简信息列表 +export const getSimpleUserList = (): Promise => { + return request.get({ url: '/system/user/simple-list' }) +} diff --git a/marketing-ui/admin-ui/src/api/system/user/profile.ts b/marketing-ui/admin-ui/src/api/system/user/profile.ts new file mode 100644 index 0000000..1e80e85 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/user/profile.ts @@ -0,0 +1,65 @@ +import request from '@/config/axios' + +export interface ProfileVO { + id: number + username: string + nickname: string + dept: { + id: number + name: string + } + roles: { + id: number + name: string + }[] + posts: { + id: number + name: string + }[] + socialUsers: { + type: number + openid: string + }[] + email: string + mobile: string + sex: number + avatar: string + status: number + remark: string + loginIp: string + loginDate: Date + createTime: Date +} + +export interface UserProfileUpdateReqVO { + nickname: string + email: string + mobile: string + sex: number +} + +// 查询用户个人信息 +export const getUserProfile = () => { + return request.get({ url: '/system/user/profile/get' }) +} + +// 修改用户个人信息 +export const updateUserProfile = (data: UserProfileUpdateReqVO) => { + return request.put({ url: '/system/user/profile/update', data }) +} + +// 用户密码重置 +export const updateUserPassword = (oldPassword: string, newPassword: string) => { + return request.put({ + url: '/system/user/profile/update-password', + data: { + oldPassword: oldPassword, + newPassword: newPassword + } + }) +} + +// 用户头像上传 +export const uploadAvatar = (data) => { + return request.upload({ url: '/system/user/profile/update-avatar', data: data }) +} diff --git a/marketing-ui/admin-ui/src/api/system/user/socialUser.ts b/marketing-ui/admin-ui/src/api/system/user/socialUser.ts new file mode 100644 index 0000000..79f4d40 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/system/user/socialUser.ts @@ -0,0 +1,31 @@ +import request from '@/config/axios' + +// 社交绑定,使用 code 授权码 +export const socialBind = (type, code, state) => { + return request.post({ + url: '/system/social-user/bind', + data: { + type, + code, + state + } + }) +} + +// 取消社交绑定 +export const socialUnbind = (type, openid) => { + return request.delete({ + url: '/system/social-user/unbind', + data: { + type, + openid + } + }) +} + +// 社交授权的跳转 +export const socialAuthRedirect = (type, redirectUri) => { + return request.get({ + url: '/system/auth/social-auth-redirect?type=' + type + '&redirectUri=' + redirectUri + }) +} diff --git a/marketing-ui/admin-ui/src/api/tenant/SmsAppinfo/index.ts b/marketing-ui/admin-ui/src/api/tenant/SmsAppinfo/index.ts new file mode 100644 index 0000000..fd96b79 --- /dev/null +++ b/marketing-ui/admin-ui/src/api/tenant/SmsAppinfo/index.ts @@ -0,0 +1,50 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 租户应用信息 */ +export interface SmsAppinfo { + id: number; // 应用编号 + appKey?: string; // 应用密钥Key + appName?: string; // 应用名称 + appSecret?: string; // 应用密钥Secret + status: number; // 状态:0-有效 / 1-无效 + remark: string; // 备注信息 + } + +// 租户应用 API +export const SmsAppinfoApi = { + // 查询租户应用分页 + getSmsAppinfoPage: async (params: any) => { + return await request.get({ url: `/tenant/sms-appinfo/page`, params }) + }, + + // 查询租户应用详情 + getSmsAppinfo: async (id: number) => { + return await request.get({ url: `/tenant/sms-appinfo/get?id=` + id }) + }, + + // 新增租户应用 + createSmsAppinfo: async (data: SmsAppinfo) => { + return await request.post({ url: `/tenant/sms-appinfo/create`, data }) + }, + + // 修改租户应用 + updateSmsAppinfo: async (data: SmsAppinfo) => { + return await request.put({ url: `/tenant/sms-appinfo/update`, data }) + }, + + // 删除租户应用 + deleteSmsAppinfo: async (id: number) => { + return await request.delete({ url: `/tenant/sms-appinfo/delete?id=` + id }) + }, + + /** 批量删除租户应用 */ + deleteSmsAppinfoList: async (ids: number[]) => { + return await request.delete({ url: `/tenant/sms-appinfo/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出租户应用 Excel + exportSmsAppinfo: async (params) => { + return await request.download({ url: `/tenant/sms-appinfo/export-excel`, params }) + } +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/api/tenant/index.ts b/marketing-ui/admin-ui/src/api/tenant/index.ts new file mode 100644 index 0000000..8455d0d --- /dev/null +++ b/marketing-ui/admin-ui/src/api/tenant/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' +import type { Dayjs } from 'dayjs'; + +/** 租户信息 */ +export interface Tenant { + id: number; // 租户编号 + tenantUserName?: string; // 租户用户名 + password?: string; // 密码 + email: string; // 邮箱 + mobile: string; // 手机号 + nationcode: string; // 手机国家编码 + } + +// 租户 API +export const TenantApi = { + // 查询租户分页 + getTenantPage: async (params: any) => { + return await request.get({ url: `/sms/tenant/page`, params }) + }, + + // 查询租户详情 + getTenant: async (id: number) => { + return await request.get({ url: `/sms/tenant/get?id=` + id }) + }, + + // 新增租户 + createTenant: async (data: Tenant) => { + return await request.post({ url: `/sms/tenant/create`, data }) + }, + + // 修改租户 + updateTenant: async (data: Tenant) => { + return await request.put({ url: `/sms/tenant/update`, data }) + }, + + // 删除租户 + deleteTenant: async (id: number) => { + return await request.delete({ url: `/sms/tenant/delete?id=` + id }) + }, + + /** 批量删除租户 */ + deleteTenantList: async (ids: number[]) => { + return await request.delete({ url: `/sms/tenant/delete-list?ids=${ids.join(',')}` }) + }, + + // 导出租户 Excel + exportTenant: async (params) => { + return await request.download({ url: `/sms/tenant/export-excel`, params }) + } + +} \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/ai/copy-style2.svg b/marketing-ui/admin-ui/src/assets/ai/copy-style2.svg new file mode 100644 index 0000000..2d56a87 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/ai/copy-style2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/ai/copy.svg b/marketing-ui/admin-ui/src/assets/ai/copy.svg new file mode 100644 index 0000000..f51f8d8 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/ai/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/ai/dall2.jpg b/marketing-ui/admin-ui/src/assets/ai/dall2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c07374dc11ca7cca09aa481fe255f7c42c714a7b GIT binary patch literal 110271 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 \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/ai/gpt.svg b/marketing-ui/admin-ui/src/assets/ai/gpt.svg new file mode 100644 index 0000000..603e2e9 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/ai/gpt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/ai/qingxi.jpg b/marketing-ui/admin-ui/src/assets/ai/qingxi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d76b81563e5cb0ca6869ac3a2a90b0690c80aba1 GIT binary patch literal 88392 zcmb5Vg-=}H7xoK93oUK~6qh2!U5it+xVsiB?k+7d*x)b>THM{;Wd_&cGB{rxhSFYs z?|bhbaQ8ktImt>+vY$Lz>$7*(`M2_K8wpQI{);>kGBOep^6NzUw~i!(gocWWhKhoQ zhKh!cj)snj^A-~W0~7z1A4y6BYprXA&K}W_w!hDTVAphU!{}+4R)Egv}*KJ_@TSIz>@*2fM!Fvt95U(8s z=DJ6xj*MlE%j_!FnT4`;Fxb3Qd{rWh=6=4Yi`R3z!X=JLDPfIIW^%5vDa#AY)3*H9`RYiIkna!+%+~bowgz@AH*V*I8 zVX0jK#!@{pf8J7S%{ZU)5FG2Vd`f!3YsY56-u5ChpW z@wU2Q|K?8eCg}ZlF5`{&C0%*bG9C5Ik`(RYIU~G9&cFUFJ1s4k?u3fwR?bUIjq)Dn z%Yo{g>AaV41LkPcZ?@Q)?5{QM;@_sU^!e4l$*%WOx8CsYH&34cK&Vc zv6_h|3{DQ2-vOtUDz>x=ghAr!4CJ#2K*Zc&mSDP4Y9qN&BNK4aN3N&*3^Rj>YvYKN z+6H3sbAlS`TWrgb7GyOIE3C5}yvAJ6?wcoND$d990&fyMy``W^2D=BHgNKcpvB})` zfmW=}H4K5(3eE_{)m4_W_G?HGlY)Vp3>6W6F)P}ImmI6U*qJ706QokAhy%!@<J`YfQR`t?x}sN+-@-;8h5 zwn4CIMFCsvvdJ9bv3n#}{4EOf#g%w+dh2gYgptsZi>!$kLK>haaKct_>s6+so zEn3^RI)l4xwGkr8v%yJiIxNg9Q)AMXkqs+&)e`Fq7BaSsX<=XZzEzY#1>uS8Pp81r zCB=KQFF2FOw6}jjA2Rwzk8k;dIuPe2*9Ra3vu9;P);fbjky9i&qg1|EmQESb+xTXU zNkpIDmbtxRmgdgbI$o5;5*x=8I85(GJyh?;EJhuDmfI;YHLS5jN&S&sn>>-Qe|2rF z1Rt))Kx+-$(MzaNpY3Sna7ARif$nE{k%@%zP4swGln6@ApY*U|T}H)Nqi6P8v5eJz zJZD&+?csvT)PKp%BkwdD;t762t?&9-uBs7g$Sl%hu3Bh>mQohFarq4;ZL)*qr{8tc z-+hgmTtb3l4LZy=Va$-edx~KM4qMHpkx7WbCxFA*6KS4LNzg+uNYZCV0v`MmoY8l4 z{HOMIN96otsN%F+N)&N>1L}cT7>^<~&RLwJ1K|WKPpcBW=eyc;w_;I_7#@^nK-7Sl z5h3fdk^0dKT5|1=Ae_(RqaYp`<(uGQx5KNSMR28wnw~P9ajAiC{A7KrEF}Y2NHZJN zOhL%@w!9ixcFd-@Hth8sva$zURmu|a4qM(6`>o zwRrfd&dPjb4;$txshaY|2Bd8j(~rX&x97QT^w^84XM?r6;<8Gir88Js4D*aH#ZJ2^ z(xo7M%~}QF@nlFXPoOBQdHOILfn7~h@bO>f z3bai4^(N;GtY{)Z;X7s*YfgG?RWh;nI?;>uo{`?9z3#3Xeq?Xcux3Y1jH0xcQ2d=d z_V8J8E$AqT#-X@L(VgJ5VoA}&%e6xkcqKGZ`+g>%$a(QkR8oDncUJP=bF2So;;-Y< zGiK_zZlJ+A$jp|Mhi!+kPhWK6j7k7yo0KM1_~z|HIsjI+JF#PJtY;v=MLw{Pl$Ih> z9TG&B9KVH8v};M8R~3T?x3uuqF>LO}IDQ|U&e9eZD-%>N(0b4XBAdWN&5i&R(CY~p zDE*aE-_o8tjsoBu39x*$U$7wkX&vb*wQqqIQD=$w4@oFDFVF_!nFE-c)`!jA@%$I9 z60PSmqT}?)(9wjJtz%EGZ(bhK?~J~tbbXpPTBK-st|< zG5Blo=Y;vhUi5DNACLa=+6&X|H5~X9TGPBm^tzwr!Hddn&@BRBA$&_Vd4a4yvE0yP zq&LAxHjbf3ATseStxw0!fo;w4*Kk+j&`nY%7_q((Gt#06aW3PJ*7;ec(!br*J7e?_ zyzj_!@*~wxr%!eGQ&axls&f{{t-K?2+wsk`Jzmi%-b6yJ%*MijaK7C7AO*c{)Gf8? zpT0qoyrtwTGtGkww<`fVx9FCy10kyK{DjgX{YFhkFAVgyf^Kl!jo(8b4(x+A@yC>_ zXiXLdjh%sXKrg2^6iN|01k={kS|hERMZ7Zm^&_#r0Hc|2Fs=&9BIdl+JV!Cq zruk+J7P<1`a$0X?2QzF(R(j(}X#WI1&H_it16C59t9_n_l6u-5NUNd#sQhU~l88Zdn z-L_RjBY;fmQFPR>F&({(cs_xg_eYWTh!ZrpCuO>5(X4T8alCnc|4)m2T=9G_U7ST9 zJpmUFxGp5Ku`oF1)@+o5$~JFqW5luj!HCKo=UP%ml-5CvjVXc^!NbN9Xij_kL|?PB zn=HF`E8wnEfDqqFQo#LmWYdt}b9R%Jh_18#A=u0cwoy57R=2`GsFjPj6{H9humE$A z-+n7LD;W)eOwJXnB*L)Cy+E+Ys37qcCwWQk^5kA=@%B46mH&Bj^T!pr#a<2$?S z0D4+76|8eS(HzClxQj~u_lBE2#NG-y$DGb#4V}FP4S$ADe><-$b9OTBDaL5aop%w` z#t=uwV)aeg)59k%*SA+DN}|>0_d+)YIStJ_Dsm zjk~wG@>QhLdmPV`^#5%twz6AnDl%qEyPnN*F5zz$z@@XUNa+6__4B?{zR|!%Ih;%G zju5$oBSXHd!#%Hu_ehP{VD=|g{4`t5gj2(?O_9+TL##u*erNfQ`GXkY1p!XxFR~{T zzWe-?#kN$r{Q%mIXCgXNfH8*{YMD3Yo=D@Oyox@yRGf9N^Cs(0TZ zar@3u%wOETmv-@5Fb{%fm}~gXSnK(Hbf6=+%i& zOX{cJ;D6cbn0(mS&ht1Lywl+%kTD=*1LiaAVMV3u%@MfM>lw3)+UkFgv#uco-Wi-N z)xs!@I&qF>omlPNYn)n7=L}H$>SimyD38!;t;;n}?z=#;YD_Sf&g?SeoeF|ERgX5u z+v=P#fFdDTk@PP)5hZxhe&F&kVYMG#xwDp$p0~=4 zz?|huPI|Y;IHZyc5nIp8Q18XcCKha3BmO+R9%*(7F7J7%Ku>usLpM^=+-HOPkvzzI zwli(N_lAxByITV1cZg3Cfi(wre%rc{cV8@81PUl&_p>F3q^{wbk)JBI(xOzeIrik3 ztuvUT3NMvv0rk!F!#JGO%Ak(gPMwmVJKehHBh0?gkHF;pld6Z4OFaMet?b`BA{1rK zXzH~vcePwJuh?7+YfXXBIUaVt@TJA3cU>f8ST^>UnrMLfhW%1jvw9O0qT|F@+=;Tj$<1sfG%H0&zC5~#vDAdIe?9@?w{k7 zbn|v*P6@n;sg;5rd0xscnNU+sT9)jY9TK*M|8hk!UAUStRyUmWu`H|g+Jhyi4X8gw zHw#My)s8yHZ|vUlm+c7ZqI&sV4^kPbGNFH9VKb-@RZ?!v6&ttrNA(s=iNF3uS(=YS zb)umbo6hw{>vw!y@#v|CAmp3-y&-i@TB#Cvn6aF{y{)>$o;b_i6K7Hz>5^Cn#hp7_ z0DTd;#!ixSD!Rn)J;rD9QOeZ{I>7RxM4Q+muoK(uO?7t4pQoLKSQ+knKj!*A~;?KYxe#NPNu4E@IQQ-X|Dm|O=v z66^vQ+W#ST6n7TQr-;84 zIz+TddyBPdmCR9#H9uXHP4cUVZmZ7|+z)=@|GLXRb)~8;k}>f8T}?OP4`Hbn3evD2 zcD69u>;52Q)*OmJIi^ks{y0QQw=H2H@lc|xW_haewn}X%WcTlJh>%}pt%6th<(s@# z17`_0cyHm=v(e;#dB2j6YezkUOTL7_BA+!YQ*fwueVB82mnoQN%?gSLX;zC&NW9K# zeVNhn?rgJ_T-xX-BmE@h(p#_39qpZj3!}ZiO*QkLE!pu>mFbr6yq@tW;0c7M{Cqbr zIOzbpRFO^MCac6{?+j?cZKcZfZV=PU;56%g$iNqINvjX*Wz>%%K*ubSCVC2pDc^Z(PD(th9YA0HQ z-GqO`Pm|5~_>~22omP6kU6hqbi(XFO`mYFW@3%Os()|CB*r+P0b(@NC(oOtxL33H#fT{qTu6f>>FL$ z5C%QAmNKR9K%uUdsvg#czCQosI(|-0o1@)&b}ZEx%l-wzkp&-j3S`HxJ_Q1cl2}>q zO#~*#NhU26SZN}hP@}*EYqj_ctvDizyHSx=ea}jm)N}fsjSX;5k|Y|+X);z^ z`uM6_7JvHFvjvrAtXm?=sYFNB9oUA-A~vf2Jipn>w|nX;{yu~3tJn~b8%%7i{{3e} z^|IvWU;hnh=LJ>vGbU`!hW_=S<2-iwL)CHqf~j!OnH!=J_mmr#I6D<0xMdXZu$7A_ zy_M_DWnn>Re}`#1RNj6t%T!y|J4*gTEwXnzY?jK|^tY_`#_sbAz2r2L45BTMt`{io z(euR!*EBJSw!QbW)*dw@q~9!sST#7yEY1Du_#cuVdzC~bC(mP^M&)Eb{Yue3(dfPY zqyO60>h-3csogzOF!|&sNUwUzxYHd{*E$>$rw5VBnNhl)WHW%ZZz%rCI*`loCRbvCs%l-9>69<8p6X3|kw>{6>>aXM}%RL9D}8p;5jw2G59XSS*z{IuqQUg7e;IHvd*9I;&=v1Ns#F|unb?(PgM-iH$N!w*!sU88qhQRXM)A z%v6fS2u5=5cYKcGQffbWREnum=H!ne!QWpQ)lO_8*Hc;fn+q~(;CGVim9U(qaKy;G zG1)g1L2Q8}{GDk8zl^@q^{PY*pgZ#7{{C4bYVH3kc%d=o^^Vx>~Ypd zX05HG>FI?y&OXdcH(_dC#Jld9|1OJS3Bs*HWV3WfB^mp&O%p$9bfTDhqH%p`k?JcQtzQgL9&B9<6e1sN7oC6f|P^*`oT&^ z(Ywl`Ebe6T#|f6%%9&6C(GTd-)Ne^+w@Jd2LtNe!H~ZmWX;rn+TU5>V=gs%f6#yxW zYY?E=-KDU=vsh>7+JPHHeV-~9z5#Qyy`rjEs&GcDJ*>A)ej$;Zx8?hzR@fBasjHEN z*?&7b$7qFA*)xD{F^~-XdiBBCD=5CX692rlL<+Z%W-f5(&&`J|eH)JC#1W?II$gie za(9dAj0i+heyx7FiMYSTNxR6U)Cgn2=Z^1V>|b`d@`$hTdw8(X_x;`-O5)elDH9CR zaW1Ba%J%2_xZ+!F@(ir}NwmMg|Kwz=Vl2|aQdOo{9Fi){H(K+9w5C|;~p33HYo6XVoLr?Vo&px_*kVmr&CKZ=lO7e zFtifmeUd!Wh(9UBpfua*upG?g8E!H;GG9D>!D{I1Qlv1`y&b}L3pV}EVV$=)SefnB z?j#em&l9IiV@On8*y(s)1h7;Z)2At;1Wq5yoS>RXrOxg+o*~XhN}*t8$g)nfU=Exb z8*EZ4QLf4AG<4=Q!t56N20gf;gIUWL){a>WE|eCN6%$#p-ykL$cpQ{rA3~PtZ)i%_GrQo0r_jzx$KjZ7MryrSJ(7o($&x7ed zuX|M%!JD7o32%BCT~@KIx@-KRT9T#XuWB)qoA{m^Sba{g2GmPkHkXGr1J0G!2GS{8 z!4cd?Z~1EB*!Lg(A?Zeeoqq9E~ri;;0rxccbD@2SZZV6NmKVE6HTQ7!gvR&$?wV0&$ z`Kw~1owv{yf}Rb|nFmT$#(vOLdw4lgci!|i<^D{uZ#aV;&%B>%a-`Z)#vJkZfUn&p z>Qa@XFI*eC;laqZj=1^|z%k7McD#O^IbS^RODkL77W6uw4U$+L{TXme`FygX)Z>;>3G(-Txc(ER*SYrz?iZD;IIM}U2Ihio=~ zLhis(F^#ck*@fn~;?ZlD=E$`l2c74 zU}(wq%^V2ru*mq-MBuC`=iHbw=7I6s%uzW}9-1fRJgFF*>0X|vH!^P8sgY6*U+=Cr zYSF6Jh9m{tF$~y7CuTU z&o{l`K7HT3z1Vn!*F32cPUf@?TvXVmy{JC25!SiZ!n#pN^NKiC`~CTKb9fY6!3`=U z^=>40DvnM1PPqbKjNg`poiw~dy^)l<(Oz*mXBwg=sXoH4oprI5NYKkH_RbSDo8{x* zDoW;z3ai$OepUx*EtfSA8@K+))hXeBfkL6tkojM%14ldl!kJv$wi%mE8s7&+f&0wh z5;p@q_9On6Z>)WHSFvA78>hQr5H1=ZH;Gb$Hti|7{5Ut)YBdla>>wa4w65AkGL< z-<%#6c`(*#PHN2;8H=NRVN@|es%|eI`1vm!+flp5Bbzt#>b#RD){`XheF$tm_nYQp zd$!2Fv$^G->UV;=vpWWPGgNX5{h?3s>(@24Qv881T;s)6)2gRWOrmi{|tZ8|Q)vuq^Cj075RIXymz;WHU7REo1_ zAF}u!zWKc%R&<8^m`Zk;LE+cKX3QBC^4aeik{n*k&F|q;j-R3QKbet*ux&U(T( zXLGXW5rhG&R5tw}^G@i&`F1&2s`>0>Xtg6M`!n?XI`B-^vEkXp3q2>vt}^%6H;8#r z35|q;AgT;!l-aSOzeHGNo~WIvch=>Xo3lXhfy2gbqu{@Y`DPB87reyxx|YAEPa$KtK42(?v%J+j6_cA}qIY+oj+x z+Pu1yp58(KB3XY)y2>C$*UB=xJ+JC25`EJ4-QT*;N@Ol?t%IxL5X`7;Aw3|7kukL% z>rTV=g{IA}s&U%dpEV&(pkd;2G;sJ4CR0uQaqYwn16?6tRq$StYD;5m-g>s=z{5-K zX>~D|u5G6I_y$2F!g*wkA|lfLLr-gIXFKz)OHC0aLdK}#$oeU*gLZ#2+Ge&VlAAKiIn~<1)n-7Ld38CnXs~Ert<{^8rnj8K*cfG& z63quJjmL6^ftBIXpkuD!Re;FX&QpIFS5Bjs|0UI7t~V$C`ICt*#+1LVHynF^pJ%v! zetF)37wN7;T`Os@W1>yb6k{3=gaO1ho8#Y|tY2eW`AF?36P}Kj>4UPHMK$cZIpQkN z_ZXWv*fP`a#I;CT6dg+*P%t~YXT>IrZtA~KAb6Mp9Fl_qgFGnv3~O&aQTj_~sJ`|1x#MvEz|4C4SsFuIvk8vt!K%>sLXVVO`v_S-w zF`hsP%f*wPjOgf5Q06zWdQTi=;Fz517leG$~^l70*ZS5;U!_+Y{4#X)}XOjX)t`V*fUw|9}>RxE+ZvI7k-0%BX5~Psf-8I%mD6DPv9Oo|y}GT|;S4E~QTVu*6V9I9`VL`oIYdf-c z66xPv@YHo`RV6IGmzv>b@@P@D_GG>9rpSX!iq$+59HHc6A+5(xT&RLi7(w&;s6ODnZ>%yK%4rSILOEjl;#IwtN2!EGaZr)@fQ? zPYGeV4bn|EpK!lHloiz6Wc#w#mjC{UymkF#i_DmF$D!4tYKjy~`$R;r%xRyHp|F!RUB21g~3-TO$#)u4!g>pRm5=#hBHM?}O zo&FY7?t1S%1%EltA8odET0d;AIbOWx!Q11}E5BtY0^z){ZE`^5aK`89l)Jpk;16kp4yLI8NbJd&YNzNY#$aZ z_P1vLRx&wln>e0!O%avO`v)l&vmV{?t+ra#C}Swu<=y1HbunV*uSr7zHIroJX8%|^ zH1!g_3-={sVf{V*H)Qgg-poL}a1J}cI#r}I-5tvUG&N z9YMCZ_#u;#)0hvTBNRAMH2*MfUtd9D9IRrfnWwHZt%d%)o_t*`9+a)N-m2!d6cxe? zt2%Ssv!0YN%P$qM$kI6T?vW^x(^eV^RP#9SNlIZr6fziZqB+iW2b4P=EeNVlj$p0e zLWI@sS(@#J6N8cb>Y)#aqfC-sbg2Z=^A9Bx!OtJOc{FX++-5QyBuQnFl|gGYjXWbA#bTw`jMi}X5XSZ^81#i1sT}n_) zJE_HGq!(;QmdH0${ zXatk5YpQBK%@=5WHO5#UySV$5bhF&EQ;QOny1Bjm)XvvogA=zumB!`~@TBjThL@GmN^-rae~tZZ|9=;Maz{p$lv9m2R{0 zhxXcBU;$MJu5~YTtHA`&6A>N$mWk^%KA!6R+N8tuzKZEk1))nm(?D9FS87gN-fh^ zFV&)xL1I|#OlhPooRx2NN?V}K}JDA{oi_njP}1qHB=-td~^arB3f2DW}V1T8Op)LWpxe%yaPvof9wk~wr>Hp0BFg=P}yy$>^`-N^61;W$j1Rs3qi3I zke0-jZ_Gp~Yl3@Z+_vJMv9AGfN!#4h2(boA7*|sASA@u2JbQPV1Oh46NBMT?W+-a z(%7pl4 z4b|uyTV-vt020*PrFk1gd6-47ad^~tlqB|YZvcmxFtP1U+T^4$@Wps0)Jn8S!kw!~ zEO`DWrANwn4CE|q@E!~p&LhJhOy*7iyWa3ZC{y>D;mAVRK-xWe)H-F-xWteqH6N?r z+=M^H!24?QIP!`&$z!R)Bo0z!PT>5^Y5E85-05BtXeN!$f)+No9Z3Tvwv>qF?`2Z8eR zOP3Dl{lu0(&OvziK0U;5(J{;aKNgiE)hO`>{)eg{j+Js`q7KQjb5F0mWtZJ|`47z3(uDeQgzGwyZ$NYwGcG3!_X0M3v~;=W6mgVy+2O zZ84&(o@d0;3=q@thK!S z|BP-9YoYR1^R|}v-cFF-L$drn64*gn)p#V&9kwn@LmPZZO?L4h?>7Cor) zP7Tu%e@iHAkJdT_DGJ%`<5$_Bj@UnR$?VvNc7j35TGBC04tKPR;(~T=tqsT|8`z(0 z(&n&LiazI<4~Z~qx@^g%UV4*yi!vKG=dZ3D7YjPquQ)qhaIAEHH)yX{o!v6MuQdNq zR2=l86^Q5vAaY9E%mfP^3PXz#iN&+yzk&>w12_soNM95cVfIOGVh%pI^JdtogQxOS zc&_KmUpF^@vxzdGP;C>>u8mZ5?^8%7?E`x?@9E(5aNu5oul~;NU{6R0rFn&&m{wBT zxU3?S{1D4kTfbw-x8v7(vZg!RPpb1m9$tF>Hg+OwdV=1oPgOiZ3$6w`nNTKfH{lWQ z8%Q2FHjB7!kro`(HWo7mH0#=q9RjsEe{*Cgo;H)~Q?2Z(P3J_* zd6YYhvzRap`O(?ZtCI46Y9o(Z|3r&YQCaol z^9PGwtvivE?sd}|M0LZKGMh%D{kBSjbrvu0mN-~8S$4ZA-%dPVcq}VxNa&Q3fHE){ zFv#^7I)2|zCCrYWd1#GtduSf5yh_hxJQe97gn|cHg_5}?CnaaW(dgs!6L9e(HU45V zuQ7`TB)Aic*^O{Abk~hAi(-&PbB3z8fui?lMBSu5w66kI$z~3j$;v7BPB8xFfqOzw-WcfbbLi`p$5R4 zh7vw|+|<-)whLD)vJY`V?ZRkLWU{qSi;(f_+)zund$Cp$< z%=DNsh3hzcls?lI^NE| ze<7XYa1}1I*KjMgpuM*zO;aHa&Xj{01Ij=P>3bxG>>}k2TZ-q>KXchHn6@pGh!CgLEvx)LHGI~IG#x&d@0N@pgzX$ksNRqBSye}qm3;@T! ziY5TdD(>5P$_AVX=y;_#p3`UX3{C!IwzAO_CfDu;TOJuOWJb?P z#hh&&EVM_E1xOL-%zP0oF5S9I+GP^8qleS@QF#EvA-;gOdk>-a_o!2U9(mNPXs*@Y zgY8miv)&Jrw)mK*1|>52!Wru!#@E)3qCLMYZo;*A!>-~U`gIkpe{u`;We!jZ<+TDv zy!YkhW$geXZV#`{0Y*co@Ur@=q3@39hD-SlzeD1xr)Ne=?I#b(mJdE#Zo-Jz z1RiEGoQw<-Sga+M_56&g_QjPKAaQWX zjQn4TY{rFpV)PG{Kvb>)#U(^qpX`VO%odAqy2*HNGM&*AixC@oRcfJ33}M$v@oG7QnBg zLi7Oqq^>A6X}HjQB>vM?Dp8QVXkQ0;v-THzfSj<2gm ziYbrAt9nD$Y&2Z*ez5gFcR$TEju*%sT?8|Hj8K~WL^~CW-@XY4U9dp8*+AB6CY;RX z1EVe6_`K-)$b^z*ZpbJpLXY@3yQ`OPOBBoOhEyiceAMx1&tYqp*oU%~uDV*h;gGS5 z%m=ZovxmXJR4Cf9gS;<21nEeP+CKX+@u+9^tN3{Et_h8}@#4wq zr#|3zMY0|I+@hKk!gb<-Gb0;kxYhT}zfr}Ej!p-{y+1#wH#p!@HsGP1@!RuQCDp5L zAHAhLzaNLtZ?(CWMh}KV?AR4x2y`w58YVXj?mRM&%Ln$DXSH|xYO*gyq7676o9@BC zg9={>82Y-NZ@@2w!N1i$L*4Ev0mEQe3zm`sn1_ag0Wh^2mpL|u3_c?pLmmu^2IqZ) z26e-+gn{Sa*Zl2{f@*DtkqI^qFy98-1-?#iKOO^+2goKl8DKk6zTkLvS8A|&BHl;>!+tzs}6Q4^d z-h|Kze9WPu5K`1tWFlsnSnd}t`R%PoqLca5%xeq(eMa1ng7`*f%`RV`U8)(WX6*88v|xSnI(9z>0Ft?S!3)#IJ406P*91) z>|Y3v6^%Ov5uO1iC4=?yn1*>(J@)p?BK~?p75l@F#jAh;bayUycV>W)$7RYrb>Mlz z@3eh+Oxc}80Dc4+VUhvi>sbOGxYOFgV;1|;;|u)eEjxA5k)58N+VP;{HT<{u8@uxx z^F`t=52~kE#>iSHqlL0);h$d-Mr}yqktrY(D72is@l|zjQfA}*>2WSJm=_rR(w^rM zl&O)7YBS=S?=giPLng78m38(J_y|l;@(n}!x@UqirO=7JDe5}_yAn2*(<1OXMcKtf zQ5*B|e3Seo>CmkAB!{NHD(H9SM}oxv$nL9IOWt+hj#6Sq(3yAfY*;zUp&=cN6NSp*@2XBI#-W%#&EL92r}>IIx_%CP4=u{^c@= zAn?r&o|9+a9U{^q$R7Bu6DE>7?|gX7VZipaUn!I62+&loY0FhnziaXjDIVMu9O)O5 z5q*8izhTopWAgVs=i&x`MSeFV(XVQa$<7GI{MzIlXqUmbxw5opAp8zYvQKGc(zlc6 z{Yw3^)(PGtD)QbhkxW)-a>6XhqA;07?0sQ|6I;i40E^snXgjqn@p+&#bsVRFh(NukF6fz0SJp@ByHD?ujiSQH%% zU$d=OhZTcwhhcaX@8J)ckwP)Ga`6c?cl;!^4_I}v=E};HX051}lJ(<*;eHncA^wL` zp%(hWz-#E&PVQ>qcB8A-y)?6B>|Fwq@?75N35ozBQ}*iFe@MFe?iEJ2PHbx`Jnb#+ zh6bO&Sx;Hkf8ah)A9%`N%tI^55d|UcBw>7zurRj}>+9b!|Bz_#@j+kl&lEONz}s*D za&B@;3Sfk^2cu~_10~+Yk9RUDa2txw%54=&j}n3ZS3($i#sc3d)__=!(`5|<)1`Om zG12KU3waD6U&d`^+&@JALvp%=le}_Z^oStC8ZIU8fnrnRWJP|SThGJ1e``+-vU7wB3EQ=s#Ph~F8Ti`%u6JsorRG)Tgh zf`HOOKpObeJGc2!vXLP~eJmKl(W8W{iGv-SzwA{`p}Rz>F;UK&Z>2{gkRNs#s8<3?s| z@z|hn);M_Aj*f@RipFp3UG%exoeQSCy!uM_-+-V7X?Ic~+M!pPQ*(P|{Sj|@pR2_0 zU2tzHD7MfrZ{~11s}+d>M!36>+BggJc*H}PRtOnDi9_K#;JHIByak$Kg69G600O+Q zWV>jXzA%Y-gArg;hzsyWh>rWJ<77fa2du7n>Al_*Q8S|6rS_(~u{F9M2nOweofp|4 zX3Z@3TI9}IDJhu=JQ$tZkH}z)tSR_6qF}ff%s%|-mG7x|u;FBvS0CnuVZ0-hZpon8 zMEgt76Cq31K#dASn}||FtRg0O<5<>%hsL!T=F`c%)|0Rp7K1;pSJLAo@|(Tbk@88x zD&djxJJ#Q8>lR7r%*;IoIk!!<`tu>~dFH-y-dDu=W(g9cPg%+ShZHIBR!S;5!py(O z^39L+1t~Ows%I|u2l{&mQgKi$Ap3kc*XF>m^!0A8l7U8`qo-unB|yf6jWUT0*K+I` zbtJ&!wdk%V1Mu(jnnvUUM-j|Sui5o=J&ebUaA4YDG6c`YfelDL-H>szaL|$KQ%o@1 z&3~TC5K|DMg_2!?4EDi-0Z@u-qsX%iHNyY4BLCcp$rE2C=8eBo<8{I(oD}HiJ&PYm zGgUm^?DcM6C3a3fh721|=45y5PjZ}z{QbUq+bm#2BoJu$tjBH=c85>Keg6cchA;^b zolMegYyev`^>}Y2?PIK`hE#q~2xkpuQ3a?*%B_c&jdT9T%#DBHbPthm4eGJ}xo=%! z7agfD8MD-8l~pZUysxhVYVo%DOw`|R;J(NWu@ZtT#7vEa`@2E&4po&5XI?m*^@k_Y zaK7Da5pGcJY7lZK1fuS*Ts&@<{vOL9L`Y2aPhka|1?-Y=ZF2vq3b;wi3*=(t!IIOe zujq4Nk>Cg)7|tp4e9Tb!)I)_H=k;5@q3$43lx4k6!S5qe<_L(zK=W8p|yX8;;_3CGqAL9km5naRKB4)b|oW z4R)BlBgU&tjSMP2l}z`O0>>!H0xq+JBckOb?V0FafIMEpZtJo{T>rht+`&h%=!Nj1 z<+}U(C^6abzbhRsw_KB08*A|tY9BHZ0~BZer<&5ePK&vOv`1pm{@J*jX86hOuT388&TO$ zmg?)v__SXY$>$4_`D}*;xK`2-!EUhcOY|msq+=jsk8|s5TXB*CsymslaRC@k&P$w> z`eqp!7DWEgo#H!BOVI>c)T7DPI2#$TJ^s}6arCM9hor7*^Q0}c68sOTYV<_r*&}Ig zf^1m^Ex25;8x!X(jyhjJY!k z7=rr3-+BP{*!l1S&G;S5Kg5Z$9W*uQGMkkPSNTwsc|b}HMfFx2e)D+ChqPe-L$V~fk}Seu-f<;-xw5SQ2TrGDXX^x>C*w)nKRso=U`jg~ zI5Q-Fo`jjsv!aqn%0D7YF|?EpI;e>fht6pD#~xIXCRWvyPV5+;jd+VU8cqw8PXJj5 zCT_@>>gyyNmelIG=8b&YE-(zDYsV0av@0V|A3y5S9tn`6vV8j$q$VvcMM zU;Co2hSm4h=H_;$+uW}$=y0bkYsx+4YJ{6H*my1JBTiILdabU9tY?voc~VxT zK-;{4Nb*JtHYo(^uUKYyJpFx+2zK3G+bp+X|S>97`RX><^CZffeB7J0| zaQDM14^bV!Kk<1si4y&&6Xe$Pyk3<@D-F=y?{(=n-J(^D6ZQ}ZUJSh&8eq{Vn&tERpo zMnoMMW3x%mo!_8(NuF)Ji2MHlZ$Oa0_h+?DKp{(SHpeB9{$uqi_U;({gl`aQhrrYaUsNysz$+Up*-3)XRO01hihSH4?W`%4I z+>2XyVL>gl^x8Nav!`=cEL#-H&6qyuA)Jn4XFH1(V3)y0pXxsMSWArQe!bT3)eAT% zknV{4cgAVktbGkA;{x{u4 zS5C45y|sSAk^yu2s!RuRE%}@Ng z_CzL17>Fvy#4)z&0SG2na6}z@Ms@2As+#*vL*T_5Vob;6=p8#K=97`k{{R)VssNhJ zH3Gf2YZ%R0I`bM4($-v3+bY*4g|l|X^vu3nC14V%VczNzF(p+iZEyF~zWQh6tm{o- zkvE=a26LV<_g0T=ouqNjKH;>dB)QIg^PUGLbDl6uiO&B3Y~z^bC!TUoh@4kxM9f2c zT+S83K6qn0r`&sBd5-zx9?~O`$UemJfU`KBDirtejz8R^EBQaPD(M_&lcb@MI0eK^M`vtg5cf}cki<^}$&PV0$z9SyZM6PIf+cdp9gR_vQ>)q6 zfL56mHfdP>SkbWIDZk@bB4Uk$u}Wqtk+trI#c*9~Djj?+4{-&1Ek&DDC(7XcB9izs z7uc>0Hv(Y&Oig*MerT{z$C`}_I`wKM{{Ve*kac@9wyIFX&z1V2vXbqJW{FRAasD$I zr?vF`+?{%RI{njkQtGoT2E_c}mPFvs5tUkNWRUd7U*FT3>z0pmM|(rm>&P&IVEM=y z$cc})1(6)*hn(^8gY$}K7%YjwD4ep%9AGfHoZ#akPdufQJm)i=QPnX-CankAZH5uJ zNMa|u6q9$b(9qgFBd!e#^%2tcD=dFU!A*X;u@zw^d!5_>lI?Bwc19~*W}?*h98*<= zgH2wPuCaj+Ng@9LuDZ(`QK6OVEfyrD&9keY3+TwWe471lPzgb=V-NL+Hi_JgPPLA( z&CImcikmH+ePwQ4dt^-`v2N!0eZ>#B$ISP^PIJU(eCIPWgEVI0<>q(2DF$*)&l6W~3gL`*>Ja}XvcKj7pzD8h(|-~@qX%#m{$ z;$s4QK%$Rl*gC^KfTyyDnc1Sz3K z%XYceYwk#F+Oif|>7AKctI_`eQtR*RSzgMtuG;(2;_b*+F_5T;!Wo}{ zQGcI^oHqO99Ap>#a#*sMk8+-U=1x811O&cGYlzD(N@iu2H}$}#6SeA#M_|Ue%Pbkr zd|-!n!YZ3i20A}N8p`aswBGD#T+kZS%J!=+O!$L|nM|o>Cd2AWq#iWI+XO``Ro033 zVm56<4a>5dkobDXu~xu#4$!)2w&u1GZ3`kL*&&Y=l~wL(mb$jG*}t5tygDz0J8r#g z+v$C+$5<|+h&8tQmCUkc7Hz)KOuOGBBmFj?BOCV0whKe5I$g%C%p2~8R!H;HRlxuGfzT;eXaEp#T&B)Z7sEWG=yoI@uu4~ zXx}S{f1haCJEVE9zAw`PA99S_qYuEjBC(7`l~<%-ULP=lVm4g36xI57RVh<$JPgLn z{{Xy|NF<=isE(sM2)YqEizJ1>7wut2)lbQE(E(Fo-1Z7U@NMSrNDHpr`^tZgM+9p0?H zWMUSSTi67Xc6U==xz?*Q&JS|HiUuHxIq80tR@GqAq0^d;U7iDVu+oKLjf8cUwH?u4 zYr2cbHN>HknP?;+%3?tZ0+TWi&yN(OB;+JCyXK>dO(e-0Jm}y9V8+U3nX)@5X#*c5|G>N4xEajKGsSre=A? z$8m9v;SnA3(J$;Jv51dE|M3s>2>} zA|V_UQ*DRJ!iKxnUzE39O18Cv80VojPQh5%pw+^iXo!1Yn*r|x#<8;!K_SKsIFarq zN>lQ4A2~3>neJ2o2RLsPwS|{0vEpzfWgNy;L0Bdn>-6k!m8@R99m1wmzIy<`1P zdMQ?_%@GCnY-yn)s;u3(Y?1=kF}dOK3beBr*I5M7p3PuDZ!WkW`|i1zTtg1EdhsX7 zVeVE8At1apGN5X!^z>Y}w3`k!yzEtSAPvxA8nawLOk^AZK^X5iRE2gp z+(b^9iT>VkMLa;l_KyWf5X=|EImqX-Y_?M>$Jni|)E$Z3bwhR%F;M16xtO1yw;yQ9 zpR~FIo@`p~nSdghjOQe{z&QEFmmwr%-Uswt^ApI=9_1u#pU{95Q!H~#oiikT(ZuA; zUG@1<<;z&D{Aw}S8eWICN>AA}llxA{8)lV&7ghrK1M(3kL-s$|8B`xO)c_>8j)J z(%LXHiMhUIOD}Ow*k-A)-?=pf8LRo_KC?MxVNTE-yCB7FBR197^V^`zM6*Rsm;wz+7L#*30LMo%%1YTFd|_@U8!D=)v* zrN!Y_qqkbmky}lqt`#tjqW=JM*o2y1&g`9JJ|-pf9)gn241Pi)W4k-Uo-?L;+iTOy z2&rG{B~ATMS}Sd=)PfN-TG-eYP2QenzLdS>B|gGeCF>L|mir6aO|w*_l6~|bJA-Bv zP8|_q$u#6+wlZ*3Y>DkozSz?%5l!XY#JI}Nz~(8{QI`*nd)TB*JO+Ex+^&ID|+)~qy=%TS|;2b{cp)2_19iB)Yo8rg>{ zTUiC)o@qz9H)4?Y%NtP$DFfIM@^Z&PoRM-pp3-GL@S|LTLv=2$Y&AuK=G&472i(G8 z%moyXSdts6g+AcU;AZS|I0fdGU3fn$)sX4S$I&AQjovT87Ps zY&BuA(<&7@>a{haHc@gJXyD?+)3r83Un6d%kiq3w3(2dpB#1Y8>*msd&?PK1_Usjj z<~xzOJ(umdA7SFtb0O>NrML3%w=l~G*`N}RvC4xU=_kj zZ5!)M2-uJS5<_Z)l;mvBV>1}Gp|p$-&Ypivo(UKiaY)!TSt7}q zDdatoZS`3)hV8CA1RE3G@*+L?zyl}8CBaWWIV=!93JbbFQl7|}DcaObNfrL1XL-eU z-mzk4TO7_tahy&>asG+UesR`dB63?MQ!-xp1Bdn_fsB%#KUhJt`}|%NcMBiiKdiUB zry*r4?#0l2#5B^L#>_e{)25RcwYDbC7TBDiNI9kiB|7__ruxL~R${ho>g*H&UC#Y-1d zETf>;Uas+m+|mY_mIbiuW9cFA!*T_DGPcKuTIbi&h`Xvm^nI}omt>>Z9?W!(*scrwv1mN|I6Ms{3HAJ1n}6!X0~zZ;~D!lm)Fo zLzAYxUhACdnsZ872eMGFW`qTV%V``cqhU2brpZb#^OLn1tv&k3FXd_=KX`j#4V8sZ zY_Mc3+_Op{xQ*MTZeVRU3|_5Xrd(6Fn6*)eX65uL&4N0~ty!zLMtriJsIIg+PpFaN zKQgyyGhF2#6yonX7TTRV)VW+RE7 zr|p&P08q+H!lj_6|>;JK$N{ zmbP^3M9XY-U3IE_F6t*+vS`UN`NA*%0KaZVK+bXYiTn2P9LcakCmC?3o(QDAM0w7B z#Xo6D9Q)Qo4Etq?l$7_fyB*pv8k(_F$X(ReGvc+e2BX1^uxCA(Hp(P~m`3Ku9+BjI zp+~1LPkT)|6Lim#j*gnU`yXiv0hw;$LXO~1s=lK-qO&<5h8>Rc13Qxpk(CiPIU5S$ zv)CgsGbWXZ>-(X#&F9K%>RPH0$3e~Qyi=iTrPV@Q)?YgTI3(nS+Tr=@UeRNQE-uDUNa(~eOb zE&ZE5*xEVh&{hiOLW+P_dZTIi9rv(@bnzM%wyF%yv5O^=RvO5>*)3^z*Iz!V!TQFr z4OK~&H747v5PrH{P^J1dm0}^Uw3>I9Sp>gNUuebDttMQPRzfy=KnXTi&TsY*lT1Zv zR@#EdrlC`(GXu%KKx*r2?JGjrJvj@D$(?s)Ch+7i9^!1mrT6Arv_Vh=_G^pOR+zE0 zbZM-Cq>gVSWz2y#@+;NCw%)p;sTt3xp=V)gDtqhg`je4uCDyj5s#NO9zRE2)s7Ko} zO;kvQJMvHf%iChC5n)N{D=9>Xud1!3;-=Kv zo0K+wtTmlji+y&YZ11aG-VFrV-K9NJ+N`tGC>xh6C!sdMXbzD{2*kwq$8>htuocv7 zW!=?kXb$FY$MIe9OLu9NVIbT5x>Xx1-jcVI3gav>jEz-^Ggox-KG8c#W$00hR%q|Y zIP_-hgY8P>(O@iz68?GOsl!2&pRW_ioCY%F#7qksOy`*R&fX$sR%?71s5$4hVMb;k z6Qr^YfMs1AIi?H>8tPH}p`-HYB=YwJYm!-rMTiNj5A7mglKKLF+52TM?@}4xd`D&#fwz^fzW} zTiHKn0a~u@mZpm?7 zKFwqb_FDH7po3ncR@t)IHSD@kslRHYLX?J5Tprp=EIZL9L~#{%-8*QkZS_g00`w>f z1IRU+)1xsuj#*@w8@M9bjLw}y?aZ9POk@*csvJTUjTLRo4&JHKp!T|$ zSlW|fYIY^*;0mA%h+z_SiKyOHCY5%ExEmByiq5i9nXIo%!U5~5@P?=s1_uml2E98? zHptLbHC{Mv>kQhMi*~4MB3O^&Pi}6L>h-LX-1HfCcRI_U)q_L}9EyUSlosv@;7yQNUn+PRP1>ncvYmlCGT zH0Cvyo36MlOS*zew6`@o+b*>V&Gy`ewTjsLR<0V8E4$xWXgZEhq>{(%9Tr?cU}s}m zxv4tp*B@ajP`0~4Dqj59GAyCPUN%S9MOf^z7lieay!C@L^)1o}07>!i~B&NgLUArReY1B0X zBE94)wWysnnp+60@*498Xcc&X=mj#O}Jj(NRpBHsP_blAROm z7Vy;_L10@$%dp+E)U{3>0$hK~l=}jLTRl;%9j{Dz;dE73Q!=X7;WH#3o_HC;lfPsO zM#A6D&&=A}W>(Zs9Zg|Io>i|~DnH3C8m^-rZ7ZSr_op4Mmug)`8$wo+NYVpR2fs!E zGU77?H)JB?SEamieuahai*INF#mcf4l(K^Nx(%UJKbs4x@@fX zgEt{Fe$de>)*{WWcS9|(OSetU72hY@S(QOLgDpL#&L>(%JDCybtmIxJM+0+0+o{bnP@pl&Bla_*^Fn{th6~3W7U(l7=XQJw|?R$ouwy{=0{(hX-0=Gc4eM0us)^Xf;olqS5eXB;+ z^X2*ktU86EV`SFanG!pyLZZjxB0TlrZG7 zM6`8S3&0Yk!zyW!oHDWz9X4u1;)O)2lADg4Ds<*b3MSZA&&09%gSV zfweC^E2QoVbAFWvRX)O|!w#wzH0wo*Fb%ch*9!+9eu7&)-lba=c+&$|s}W7D?f(GG z$OS$Dvbj6e^_v(R*+;9_u>r4pF6zBIV}biN_661T0}gBM<^w(4Ay*jinkSW~xM zrCOS%H1<2{$p!l~{cwgQ4&;+_ruIm&Nt7I$q(c?+tC(oC!c7gd!>mbZ?Qvy=3*I%Y z@L1avS=UREt_3ertBt9)jgov$wV+WQ@})aS*U==E8i?P`Vzig5T~f-1_;7Lo>iryW zR2vs+2_Psmt}#G0J5ml(KRJ(+;FRCh2D7zXqnxzN<#n?(RR6P$~J}9t<34| z!Vi$Ux`VST1yJnS+%{fN>~$gw`~|Yy&4|CNs=C&cs`Spk3Ax~ysAHQa3jAY)#!pAW z&b`R5Qqtq6OWsU1Og3%ptOs~Qr`T6^pK?kw60x%&pm938C20-kSF#YY@jY(B4|?S0 zxJmmX8DzOHNj|lfJ@!gBttjc>Xms7>RM(w`@2szVvr`dkQEsFu0n?I7zJb5JDi=35 zir-E^X|=-4)+@xTw_*wV4ayeXK^+dMvXkmhM`NKF%bhIt)u}vhUUOHpdNaOv>2rFP zhvxP76p-oL*AmZ5^r1~tth_H(y=!;0LUcMi4s)ryf73^=>C~+BN>FqK)if^NXm(|q zw|3NZ=@vmlm=H^|QiW-1DfaYrhE1&@v~OBm^xs`&8=Ao~59p)f=U4vMC78qk(b(<)j`E zxQ(gn!hDU|>}$b*m~7TcWY;Y^Hr+AW8Zaa{Q=8-y?I5e2S#3q5G{qrJMBb|qw_ei1 zb~bD5r4QFOOR>OiH!0G4M_wyFJ2m_%1c7aJt_xb%J#?4^lAUT9Ui^dhJ@gk3tZa+a zQt?R;?Utl%W>rN?Us|cO?4q(`U0{<0-F$FL<7IZWj;t;ckN$Ycwd#U8hS=t}XA!)$ zUf$4Yzna)}S4UrIgHFAQ-1mmSS8VyzT6MHKsaL=1YMN?v<3)9dPIrX6*Oxom19=l= z9W}B#Ap}FQWsS;tZDmcCnZAl!QrJI6f~`g*uG+NakV=WGSHohNm8#CqLu=7J2c)RWV42F4gbwN- zv)9R?eXmnrdPIt!g1ITG)-sHPRW%4w1`VY6uWnMnurv}a*VT1|L!maT(LT&&k+RSU z{8(%%3awSv+d)c?XVV*qwnq`J*dB?=r(34?Ox8Lxr*&6W4^x+>xmRru$Mh49@yV;{ z*4bu9m%4Lwn=q2Crr1zVES`eCr=|2Yy$5&th|bCMrOG=hg$&dS==R#bt#t)40bi%D zZ1gpvU(waD)QhRy*E+*zRggRDC;EFQX28}T1JV{Sf0nkXADlt z>Ae=AFvq@~AO)wUAQXc zR?QlFI&=(3Xg!Z6*mi>W7@c{gu?sR$ujz?K-_&5TjNqBk%qqM9^bit7Ctsr>byAX7N)u1K)6zC;rSS^sHhQ^qpFkn-K2>xz zbStn^(g`JYOS&({b0|+nPre65cE8F$(RPr1)aRsSMqTdd6}~xPbmgA#U3GNDSX?qo zK~`8IZ_`%_g(*g&qz_@()Y62iaCMsb@9ZiG7=km`Qt@^%=%hW6x!CJKp;IMT(Gq8W zR0JHmcdS>ug{>uo%#^cGqJjw8RzNaNuH{c$s3WS`abCd!n5)$-tpuD+mroOYj3 zwP)Ltyklm2lelOBMjq|Zx$pd~nd~rr#jF0v+YrYwTHs3wj~ht|GA~rN1ms#s^UCdN z#(bqaEnCC+j&%*6;zf;ZK#|1W)gaHtt=z^z-IVMlg; zW{5Q6KQB|~6{FV8!;xhgRVoCnPoz=U-^XiV()cc%)DwKjwWg|dO=DN5g*=$6Us04z zE`F0==;d)rqUk&ew4p{(BD%1*L8{AMW<9oOTreL_${RM-!===a;4D{6?roe}ou@@_ zF6kdiu=Gyqbm^+k=-tTEO6vzl?q+-DdOK!ui|GpiSH(5DQT5Wm6!dvQyGdOXrE*jK zB$;%ahfO5W<8btrstRU9qcm$=2p>sl*q~WQOlpNPte%|JkdJWcb?_aqI?5tEK+vfX zz?C|_`~_qLOhi>oN4JD$+XYJ=IU!v0Gd;iJ7!mD+&^X{u{bhrOYVE37KEx4m?qtCT zjJ2|_S_7E7UP227#c~;#m!=m56Sk(FWan!^N|KxXWkQXWD;vF|abh8BU94>RTGr@l zS?y~!y*JtIQN1rT9>dUXK3& zO7H@8{mzc9VRS33b!UIYE$ZzkM~*M`jTm$dCiR0kkTB|1LH8VWZB<0cFRb*^VGr7M zrFcyG6m^f0J>c!#IN-?orn2~4M^OZ^QUTVMggI58sF%{BFn3(vw&*#n^%rD-l?eS( z+dz8{)Sbe+%4h0D>3K1~^+RzX1s6KgX|V~Ge^%^(1A^+Um6(q9?k+IIB6j;!D0@FO zxBwCn*=`DWk=S($o!KKBxtWMMyW@x?E{|1v_WCZX=ZySsRF|}`P1Oezk)i6ZfG(Zt zj|t%P*H^MRn%ybYa%LwTCDmWy{TbFp?v->;Rg(Vzl|2vDBH!NE)6SuJA7uSK>Oh6Y zN7L=}nDbwtHp#g!J3R@qc7M}L&}L?TP3{W#ANp-(QdqC04kX2dRKXLn#~p3hOa?2JPeFNRU*rwD8s3 zs=j&JeNWZVdlHcPsX&4yyHBbWU0br152)UlBwFvPs7Url{a8jH)OJ{4m`~LtgfPip zQ`OINm-S+thw{7X{Y0O1yXxh6r!7@qtciV?n2)QJJL8+5ST(~k6_NFA1nGjc^>9@A z@gLQ4gp9=fOt?0pPJW?nAQ>TRuD3nC&1ckIp&$_j^$T?>@z+;Z?F{&PI-=+XS?VkO ztr^$vY-_k;taW|6YW^VVOMzK(!{0Z*nI5x9*qZr0Rv@S>uhrsV+b!xyn3w?Fx&k1l zZd2_n+e(IEk-HAgaQAg(f+stg>vRPEO+J!&j9ULQ33Oc&~-ysFcmsqsKN)&Jt@>7dPJ>sF8Qm8t{+Ty_dVo3kZlX)Uq>(h z0PY_~pDp(fq%fm~4bP>v-X7XNr&o18=U-OPPY#M}8U2AN_>W6jg~0_%(GeNot;ocB zbdS9E)cAr$f1ETYjxd2d%w&QlCM47#U#!IZ$Gk=|($vTk*!5*yb9j;K+Hn3NKA^k1$M zQ~gb;DUp|TX21Is?yRB$JbzVDk>V4+pv1vXL-BvssPm%P9^?JyB)c95<@%t};5# z;Ntqy%tXweT-^mh4R5Fyn%EhC)GNt+tOKw16CKh$aeTfV*H^~}>JHoBDfL#`-}l$E zw6h-ln+c8!(OMz>r&>kqQ_~ft#?xm_RcJ`J`U9u^=O6T+rA}m`KA3dK3=V(N{*@E= z52rmN4dWm5=cLcuBk6BT6mgZlnDnX-2kE~^+3)bj(~g=Hz{zwkORI^I=zf$bk%fId z>1jkrkJFx&f{DTUbJGR!KTbMkc_7es7m9H?fS~KWzk8w)^(SfH*$4Ft zaVAlX`j5GVL5O`q-aN=;zM}2>$_hTC?PO<}`j4}0Fd<)1_A4-mAF3M_A0S^-w{X&c zXVneodusYx532TRh~WCSYRQN;^+x0h zK}FSj_%n&K)cdBFbX>i9T5MtL+L0C;FR+J@e)N+i5kr3K7QHgr)B=l9S|8OTQD@$L zPWwhMqw52JJge1(;$%gBsWvRTPkvD*^yh$o2IJ4q|%loJTV~dq=n2exd8; zWJhoHIZ9EDZFgEdW^Xv_D}F;bM_k-eKUa0_*NJ9p1Dnq`a?8#hZp0K@QRWto% zeR5JU*ZX9y6$jTlRW^B7)IFdCa34{2?HPeCwAvBOLG_K|KEh`H?U3w0%gNc5vc~C) zKEo~9ghXWQ1kx~Gy^Bo3*|wNCh_SX5FS(<=?wK`)^x>RKH;@hD8?}^G7DV+Z%itus zm|?Rp9YC-MEPnbUkxA|(QQU6d!qTX~->A>Es@$ryOetHDYq`nTG@mg8vGG@lFx#pV z&VFoRy`tWyU2^7E)krp+;`*kny>pYluK?UF+KkiMThJbRf2tN10 z!@8s=ys=$RHVkDE)RKf5HrH4JR?9GsyB5JR=k-DQXew^%he;?}Jy5YQ1>Nd1CN#3H z4%nhcTDntU%qCb_60vH%wSvi@_g;NF;hPh&^;7798OYeyd z&YiPif5J2zhDflfHU?mZmzf=_tEqS!B!-(8Swn+F%p{04&~19KG`zHVR=FhEh?*b_ zlEBvSS-h&GCbx82xbwF#aPl30F{ao#OXhd{!yCZ&d&KL?JLG1($XSfp5fjIX-1hN4 zGQ!yHN-gxiju-wE^!mHVsKkUJIyrtZLOMvI5(bEY0V3Rib3C-tznvBL!q# zvn51Giwm`U##Fli{vd46k+4AmV8Wi>$e9}^(>Pv2h(m~Y?L}kQ$lAdBO^c8WhIwsy z3|cm=p|S`aj>;JjY}o9j5!+Vn`8=2HRUfz{rPk2!9I?=%TUzWfYutws6$iCRl*<>L!yw7}I4ZCUj+bB@9uG@-Ep|lo%zF&Gr=}!g8KL1F zrdlC1hbho4f3%LcPnZ^Kr@BHHt?;MEji6J^XP_=7Fm>exGX>M^x5&c!G{N)R9TM+2 zOb180O|rk~>nicY{ssR4w8->xjQi!?Dr;!The$G8&Nrl-Gd$SoXF-H0Iz-rl<=qS| zK>?4`#8+9tE2o7ufD&CV-@y>+YK#Gu-Bmd`m7=27j}Wg^gbey|q&>3?3N)bkaO+g) zGX+wp9pc5+)+}L!E1=f+knpWpF~co{`$bb5G5fSc948hC+b~$|c`=jXB*-6W0+a{b zY`Un96IW<3GYlJaY)rw_+SjZT106|Fz<55SLeylZ?jq}?kIt^nVZD{p-Zd_Rmpt1f z3@epcSw2MXU#nRKDOS=7s1Z?e+g3^&c4En_f!);S06f*W3#gUdknvdTfC29k%lyM)a=IH69Pr5Y#k$<4B$;92W7xk?^OAsz54371(cXP& z0RDj5ve$9e=|0L5nRiXxO{Pg#)!B$Rot<0hQhZc(yEoMSTN-;n1v5Q5_s4tH(?$m! zkwM8@h83>ZJ;uNqI|{O93|{=(%IvqO>#8{hZLCB?H!*Uxag(4n9%4&ApM8;;ZEl+- z#IFOUTF!YMmT4v<7t*&N`(S!n_mW0xbj8#C4!=Yx%0XCfMQZ#b3;u_vZ(1-V(KP$t zCOsWlD+7S(irhzgdR~!-CeE6oqnxWwnja%o)V1!j0fVQj6V45P8Gx)R14=}bNicFk zG^)XuaO!IpdEezt=hKQP>`umsu%%Zwi-z$H-3h8hzcVxX;cZfUaytZf%!;=PQsao~PG^{Y z@*G1YTV}bIPA6P(eYfgeHY zFSX{Hq^iZ_U3G`I!7^aZy(WF0^H4ku-=a7={Wr2r(?ZMDi*b`JYm@+e&OI%(9C66@dWn6K1*)ucr| zM`F{P1kSDSck*3G+W;OLJxEHFg^L^ZNz5v~(!mFmZSS^Kgd)G@cJ@Vt+FM(Kei^T@ zwG-K%XTiytZHvAX=-S0@OfB2Huv0u$2Wv{a&PP#hRA>|rRPI-05VPuSk%Y|E-d!U( zYIfILbH!Sl3$5>EDxqDI8K<<0mV2#iEzz~FGY?)XD3GkfHcOiI8OJeJl(E0G>z4`R zH=$Qwu5;fzuTo~MI<^(6()AW=1K&|^f=heib5aBy@?er&%n{TdJeDC4G0rNln9s-A z!b>H6s*}b3;8TbD77*krbHf=a!3hb(2^nBjBALc0yps?$WXp-MuZ{}_pD=xwDmYA{ zNe>vA!-hvZtOTctunG+dlx8ehe&Ysnz{!`qXPJZjjbj=8@*HzHFjMkiGd#y=K<8k= z^AkTjd*nTwcIS3X@?6Z6Ok~b+f@A*xvWZ-l3D)t!AQ=4sjUEV_tru$*2_o)9f)=s!j&2^`TM^zg!(zh8miZ!H+iLrwtidqGF5?YmLh@ z7uDB7ZJmspF3L4KDa)l4rt(xNxzg60j~Xa+=Y-B;ww7m=zB)(?)WW|WHEEYM^tPgc zP#@56*RjqHoT*XJ2V{{ZF5K^; z90AxmimeRF@~b=$CFNFo0PpuQK-w^~hLY}9a85;p$xMd7xy=4L9V`xrGft|#YTh&z z5QdgEw}_@<4rNj?;F;$u)&Br*+mWt0j&iMLEXql&AkV6IofNBA1#YKDdCSVSB@L~! zv!%A{8r)-=CGLl_-+^iW0G(>4&5zx*)QDWOTdrE_vO?`4h0H~iz@Xzb;Svss?Vfm# z2ev63hr3fFkQ1I9qK;=P*N7s=uZstXPx;3y-MEx<-;SZ*6U((z;+(mxkrJ7)w}=%8 zDzQ4e1YD}*OnLPwCTvD=%OyR6QrGhwe~1*TcfKorL?QTFFO z{qSdq;v}=pJaL{}mS>ZUhVvLr=N4HroX$kfd(KGD&K6JFXAwLWJor3gKTcx0&8e9Y zM`d#j#ynL*};#6_IlZ4$v!S*h8k!aEwu0{JmJTKHHxMOFk2m@sm4 zI3UO#a!y1ewq%Uwg)HWBRU?&4vL`B+F*7ee_lFoPD356(BA!;L?wpiHH5^3d=|+uR zh9;c`T|?QGLax@YD4NTiG!pgoR%E%cXc}Vfz@+wj08wh^myHz44aUKiRN>Rjyd<|i01_P zDet<@Dz-;Yy=6Lv;;!&_7tZFA%NI|5f$_Dwt+o(SEp&jK=0EvvPbt@6P&fakC$yb=l zoJ)+&*N7t{bs{~pJGH41C1a_S%MvoaunPU<2i2A=x0O}gxYzsacRL2`L%{p43v?J7 z9qn|6uAEV&`tqx;udh>?X?6)sF$y8JTOR5a~zg)5mv8z@o14o=ix+nXCc zroE$~URTo{XdB8NQK{adwwZRZe!QQG>AJV;^JiVt$Wu**zc75ScE z6)}kR8H{Qt)RAN&a4X=~5uEUjF)JzUo~F=#S5zvkQ>Ix{aj+Y7dTx@131cl*)9%4q z?XOc+s@k3M6Byt-8?7{mE=Rsb%Jj0a2~IICQj?u**!K#hpGt)H7Ns(iw0H%K8q zye)L^`P%HXh5FLI%5RAn6xFYFf|SB%Y{8MHnR$flsVLjn8uOaUYJp6y>mkeGU=!h0 z1;3ug^!$s+ir%m*)`L}2HJO}kee8j*Ves_K!fuI?gcEJ4e`-oTV2Yt6s{Iw7G~Lk}=h))L7J-MpRK% zJ~30-Mv7{s4$|~vNi}cO(Dau5b*3M=`gyv(H`!rdOt(j@2Ns*@UAQxgJvq?-0EetT zwKSBAEqKm$;zuBIBM5QBjo<=Em3^A~N~>_rXzLK5qrz!ZMjHF49E`A!na$JHM^SOs zYgTRB@-$m_sUoqUzM1WO8#1osM;DzC`Qhx%V98SEH9-<5n-Gs!c{ri?;>7Sd=8RE9 zk1+P}Vq+n^&L^4qWN=s^8E4tNWzm43#z?6A>ov+*Y9h?J z7cYb2Z4%I_@7MSSw2~wQe4~ty-f*MmByklPXvkGq1=J0WuqA16VV7#7@zCV)86%UE z86O#1;nin)*|W4{Qzbp~GdVGwXBjb^VgBCJKG_8s2N?yB&wp@vVrBKFqo0FJ z`}1W*C_XiswmjV?dV30S90t7oM|K9Vh~QjQ*H#=Utwo-mPbDp2l$1jO#w6;`GnoNf zS_S2yQGTj>t<{LMWKmqD!Id>~**{vdiR+s{OxHnPOgv^Rxe(Cme8Q#k_$0j43T_=+)bP6EwD=MZKAEo z6x!HXIeRLi>E57-xH`))h)A!eMWY@{{XVBvkX`L74mBeQK zWZI!@81S0`O||t-i(5B#k}&J#ir=KnY-)jtsk_>))pZ%$rPIV)X?sjMfttI~S6$Nk zD=#oB_Z`iq@t_X5+rL9zRw>7D z@qXCS*tIU!?MWvPhTo*yuoR3U892cC!VIwEt`i{}D{TlA=^o3Qkb~b-r^^dp74X(D zGo6@2$KHPPk;W>hx8ijr+uaSOYK}-N3rmchPbVV{4;u(Fatqr8{{Vc6{cuYn%!Uoz z8vn{h6KX3 zfXM=q>FIR;00zHA^obIy=(gk$-km106)|%CO&+IDZsgBfv$}YXT=Nyax~xMT5@#|{ zmRPM7EGW-c;zgM9tR{xJ?R+>4MEW1_FMHamYpzmiPO)mfiA6R{Y&ix2Oq9=0UmwL9OQ+irdO~`|@EhLH zGlD|0l4eyUHiSt9$E0M0%yyF75jzMK*qmLM5s1oHfMPk?Y(P6EBX1dIM=0+uxAaG*Yz^YFX#i_6zs{z>pV4q`OW#DqDm(~bV*LAC( z*JZP_VG~``LDMrh#57m>Ytr_2kxd`gNCQXb2#KH&6sEM-Cqb@@w%X#kyEzM;D{8Wg zLZ+3Y-OVjAO?RZ!sXEoYTWc!CmNkj19;9Wqbah}2_GxI9Wguryrq-)L1EtWd1t%L= zio2=;E!ui5&gkuEkH;RIySNz1C@A9xIOFZk5oFIfBOU$O@fj1G@se|$^PTz5bu19- z;>d4N6RW&Ks*$(T+L?GhY6VJ4m+_Nka%~XA;aDk&ndWX#%ul=!ew<+DAy^c`ivULSvc6po8r(oM&!vkUZq1u&XfV^oq|3{i9J}(F_^XS?9K2thAY) z@<~K~(itKD00S-vp2#OMKV;Og0qnqdhhw5A$WbwaKerhi3g-gUq$C2p&hB9R!8k%C z@jQq2d3i5!G2@Ij$j|E!EUkEwQX)R~KfwvU!hb*@U}Gb$LPIXQiiJdRlRH z8YyPFJwdwTC)zlPoGHdL{6|v|hO@{|wmRx}lIH4t(^R^DULpu7+EnaU`&7{~4i3}z z6&}z=vt4r1pvzmNga`B2N|pVGG1-$iSm5sF3EJhbxyYa*97myyX1EF`8K@4)oN3E< zY(QAA3oVp|ZAUZ}1+-Krb#}DYsz*!@G+J|Zyxl*AKIn|u*6>5Tx|0RhbBeVyxN>Ox zRI!pxe@`aTdrNQ7WVj=)S{5b?$yb?ugk&qY6tJ*x5K4)U+wI3Og;Y)_FX|;CvIDL` zKIg|C-r2@PXJ$(pqUCe4xe>+&`uIm|hf{2q?y~Aj$Ipz11*W4>Z$WLuD;`Tg?sqQeewjOIebSjHkk#+Ezo1` z!5)3PNEI`aGoAC0Q-*U9g4xM9!zhUMp?v7rmO$B==5j52VTXF=Ct9VK>x%#ao^3E@ zBZNP&@K3{U$jU+sIVrDV9TwctXo$}xW$zUBabc@#hizunSd-0Oy5kSeojuVuZd^CC zboVvALrv5o1bv`?#%|pEHuqJqZiS84g<4caZE&q{Sp^y2^N}%*desvpt=X>N_MGHS zPrgKCXLee!ssvXRJyEkp$v2bJ`w-b^D%b)aC>Um@gLJ)D=QTbl^q>WP zoc%g}sLakx<6JN^5zciDSht|InO#`geLTLal$_G2Ej=E?!L=N*I>=0R zuhKu96!v6y55)8Df-+gz{v_+f=Yt7yI7;U&L@v4aI3|wU*9L+obA6I;Oa(WVZyG`C zuO^HF>QFP)>j4^cfR!#kdEF`*JA`E6MYvV~ABT^9la|IoT5v1=QMQyGd=e z>(m$Rb`Di!8{B*bp-ivI+SXS>pws<5Vd|4f)=C}Yd3IJPB^B!Sqy5c+S(Nqw0!z58 zy+m;$a6bG*bN2D~bBq~`09 zBbW$Xq{sW&vson~N!d~*oJ!DEmkb+~AxbV1X+ybWZS|rf!0f8Ohy!&RhX*%yR9io< z6=X_c7(ww2kMlM_Bzbd^$e0grj3I%aY@O{?)-|m=RjPnQdg5b>MY2U4%n?aI0Uuzf z91JTj@x)n`R%DuX>qjs&_T<oi4*>rlWMq^tB8%boS5k zJv^7Wm%uMgauz{HIWFTS#!Zs{03T7x-2Fb;O)i<$>vk}}zD~9PsuT3{PjgGIdM&e( zQH*UjRUpS&uxK3zK~{R!$Tb*16JvuS-~A zJ%{a(rT+kkjy<9Pf628gk9aj4ezODq7~uk##aRL8pHjJ;f*FaJBc4A~d3Matn0tB6 z<&jc=b7+2*6_6b(uNu)Q#;Ipnqn49iDjHvD3!UDP4h2LEak1fAt0y}WlHU7jR1X@% zlxu};VpW{L544oT%+HvKf+N+$=;GjX)alzq3_=Tx>6+ zycSki!|rE1=O1$jKbBMyj5;tg>{U)Cc!iipyC!5O6cyyB&d?Ys@s!SYeWY?DIG)KY ztFs#M#H)2&WPEk@RhwW*mo%T3N1n6#M|J(mxzl@Uz{s>xUj_dF`Xv#bNt~I^a7z^4 zR|6+8F_JkWImEWf0i%*{2mkS4E9DTqU~p)|peRMvzUWySiJs|KWv z)FLNGX4P`==>C_T)OjDS`g2QKa3Sa?^Sc_7`!lezX`%^TWCeCC{Jm3VQ?9e-I13lXxdcU8Sgx?t@WPKy~*hiLYI01OsMXMS~Urv{Ac(~gS?w& zD^A6mo}wzf2ds@{&53Ml724ec)Ymo_As3D~<}zaP<>FR{8roaN-tAi7DA^@zV?Ik=+XBi<8I0j=J06xmTV`p#TY*=%q zWt?P>+A>c&@(wT?#zUha(K#ORl0U9adSZmjKhW@5HcAaXd4ZK6)C0%l8xlMn=RTd$ z3JM~IFtl1HJj`}o6QZiEJUT+6*USa?0c3 zA^!l3JCEyqZO!(|u+i3nHU$1#ZjZY)m~RntEHc^)7jE=g;7?|og?XOpQqg?ccx9{6y%tUPdBO4 z>U|??Sl&JTF6gVNp}91g4%V*hdPD@-uqa8ey5SMDM3rupLn>Odc6C;(S^h*Q>-Lnx zH?+{s$?FcfEnd}QpVWJMj#kc&hkE&Q<$(X0w7`{&195JWzD{=7Q&&{+0oiLiJ-JzOn)pf z+(hRsHO?u_nFY%>QDbMcPS00aboCX6-md<=-bjw5VN_FJM{BdWzFXLii`O>drk#$0 zi;<@#TIwVJ0AT?;_(^m%cdt)gE$>0dQs5T@kOMj55AxK9KHpUo+384xSY5h`to8J* zVt7GJK*>*j_ou1ukZZHQ=u6bjWfD*pNMzqtUeb&7!9^zR&Zx*vZfwrbkc4xe5$+S- zeWM6u6mp7WMp7qE$1}^QOvKI=57K*`(>916lNqHkNGn0@V*o`Axi8zfVsW}i| zP2NB6Pf8yiDE;`Dn4C4w%rlrT zcqqu?e$l3`4Q2xM=(XV=Ll#8H>Gas_Qfk+J4!*VThiuA?8c3S@)*}6NShuG{QPI_^ zk#WGEI~U3?u%Fbs2P!q1^pwpi6*Sar!pz$0EZYxYc-+;~(pILrogGI}v0@iXNvNWh z77o6kdKisa#O%_d>|*N(pI=d0&u~6sJ03`MT5Z>LV)V+jXa+gD>?P_5cUA){UV74*@r)+dJp{d(} z`lmkT$uFuk)wsX1xv2E*re3p3wcoL`)rOxFe@eQ*brUu0R5qijA5U_JY$sKH^!jGi zW6||NY^w&Qr-0|F@6KxbLhjW{*Xr#ap(uo#Ww5v^o|ZX=PlccO3X7Ix34tcx|28*8++t-Y=qHmcWpzgSOD+h9<9 z%lCTY=+936g0KTe&vu^Hy~@JXMWBf0S7l6}V3qeqb)9KY$FaJ-hfnS`wqaM=Mhr2|?1qTPx~*3Zd+OcP3?Hct zwG~J3qkk}c=N&->CQ^6VGmY3hx#D(h;s#F4SefpZDwMp}(itOMob6l$M$I#nnl~%taYL`%FQr{^18XAsO2l*%(|# z0mNXJ`Gu6uDY7N|Sy+^ECK5O$#&_jScC34Nt2*-Dn$F7Wvy?AG6>ICQJzE)c+uJe}_t4tbuQfJPNfcQTYW*FKjYfN3sH}~x0-Ywsej7V`UbPmRvV4}z zrs|<;yq30{w0A@Kmuv>*<+oi~C)96JX=}YVOx{>-j>cBE*skej%prZuwYYjLjAQRy z+S*VQg*vURQl;k?p{@XnGi1>v)E6EIRX78BcJJ_3xGYj!ySIjwG}cs@061OK9UR`G zv#>jsG+&L>UYG3vxirSU;M3Iwtk>R(G%GOnok*KrNYiWfkF{RccBf{0R9V%)QAVQOOFbltI(T=Z+9|8pzRKpnqjh1GXJG0T zmIjTfP4G(DV9#gdey&tj>^$qR)`v{ju|41_*0s%brW4F0JR!SyO<|@})4FOJ)9PN5sH&tuu(_d;GNln$O>-8Nw zW24GhUbj(c#-@(8-iJ*b&c?mkdU>U0;@NJ-o|DFXFI3at=}q%fs;c_f)t0eZ`W+{u zr%L4u?Q!rCRc~MJ8j7GpFcpF(dwTAfLSB$pfmHRDHyRzCR_N+Q6p=7zoadixI^c0U z^&d@z?K8ryj*Guh?3dW-!{TJ`QJP-TB2zqLQ7Yq+=O$)xOekh7q>J4YO3GMDZ?Vi` zgAGE^m^(VDj%7}&LGvcS_?vDRn3QbI2hK*(ZJ*@0L-Ua4am2~aNA~lD@j2f)-JRu~ z+5Oq^p7>FmVz4KS=Mkuf^lNX0m>8Z0W9_Zf`f8D4#rCSbW3-6 z>k|0Vf*e)`#Y(VYYt1M~gspa-Eq z@~7qWsS8#1%+~D~yo;uqdnudSH|;h(;aHz$p>|iMJ{s$K=+tv2vU;an{btk6SD~+y zHWseWQhCMCdo=rd6hdzy9ctSxN>0x0u=7Q&lLQrSzP-|`DP?8tDFrJCwMO@*y-uxW zy(zpFHZ0l*TN6cND5zFhFB(y=uMu=&*^DmuNh$|ZW+oQcvuB;?5Oqb^UgKHY)Vq}H zdU%G`&t+!EY_)8s5{+$(R5se3mXAeWski&>4vnX5df8TW7E^QbC9&Pr3$*^A^tPvD zHx;=$Jx@U2YgN2-Y42$F5o5PVsEtQk>zAWCwS%s9T991U*L_M?QFRGdv8?Iadhe)a z)6+hUd1d<*cJ*wp_!QA-%#6So@LOJ%josLg>Sk`WR4UZmZn|e`er1x3VF zrL1I-1(Y0qos5oW250=lM905XbUjV|QZ;P45!&Q3Y~MiFY_B3lW_wSAh{FhsEE)I3 z6i>x1n`r|?3-+0uPqa=9N@)MtZgghO2Y_eZ%lb-VixUP z**4E$RW0qN{+ZO~&2^+-9Zk1CW@(eYn%5AgV9J8i>RSdHRXrq zCCIhlz4GoSrZt-j71wIk+zyo&n!=^pv?BIivb|*>3pOcP-E3KK&G2Vfan}a@miVpT zdoC`#-GdHty$Xj9SYTJ>THHoVr*9aHlwP*%vgvG)!Dbz8k2Wh>FxCv$mdN@QEd|R9W6e<9V?`FexYnT z+C59w&gwlyO%~H@()E<|FI4MptG%*zb{$2z-BW^gqoaDOrSw0O)H|t5YqMkS($kK| zS958%po^M{{%3S0`XQ!RpI_;y)7@)t>orZ*-`YOKnq6R<&MJC-&Y)>|BC+iQ-qpR4 zqCbym*8c#8tZu!y>r{2ik5OiiRyRY_m(O$4T}jnFTV!1S08W}N@?{G>Ke$w&X;+GA z6ohd(#K-o4G9qIgKwc6q>yC`h27y@(G{N5$?w{v zI;LuNUDn*!j^)f#QLU{^y&?%oF{4`N8(VIrv6jsprp=mSH;&*qFcI3@I^i&_tn69- z^Lw&5LLoYR(=9QpQQA^3vB$GaJ=7gp)~u&hX1-Q4Ev)x?xhjERG}hW?`=w#5Z8wRI z$;=8aYHpFsCpUFa*+8U5D`=R*O-EV^m+aoChNc$Dl&0IsE~>(tE^f1Mr1a2HC0bEm z2E{GR+H6(>xQgqjyx!aMRvSy$++^*lMp`*)<#cFRbtm_?OR{}wX1F#R3eRb!TI)T# z6!@u;`YQr82qq(9K@bHOL8`n!j?+&9|4+9aKAwEZLFSUuYbz z?$fPNJ;d9Q=_p{X6ce_$#Hek%it%>c0(OIuw;OtVvAI@=IXfS{@-#Murkvx$uC ziOE+V5i=h=iwiv?<$w`ZMOOyJnVuoHaZ$PbtnDe7{d z8uV8M*QungtJ_aYM)b2_t99iBQ8ds@r(AM^At*UgZ&$XJGB0dwCh!GWQlGn~ZD!du zwP2-fwvB$m8V`Ni?;A5alnKJGLXokq@rwQ>(Td@*YVTF?vtr1n6zeZw$Hi%MQ)x{h zoY`DD^n8_RkgBJdb(+@sN_E6-Pp31n+bUjPY5ASvQ>jHop@vmLVPL3(0AefB2)g+| zssf$Tjbt^~!IxJltE@jJvhwO#S;%ZFmddNjr;^-SQmy*eZ0^L;2r6#k+@ULZJh+NbPmb8wmc{lex9cU|A+>K@LW!l=C=SoQ*38jcgz0YY z`jb%#n?cp}`^7iz?X*2bt7UDKs%WFt-hBMM8jiZT={~8cFGahyzM=mBGNV{~{nX5m z>i02zipj88t7#+b4VKB8$}?y+-APW()mJzOWJhdP=5u+|HTRmuL} zVNL{l`zXi{n6ijvFl1A!29D`5kO|6{=An@bec3$B_n-$gXd62uB=(PRZ|zl@Xj&C9 zaW5jVE1i@t*0;kv^Pd?r&U{V@bA+Rhh%VEZn2A5^A()xx1PJH#(dz4kpHZ~yI<@}* zBsP%x)~H29+_Fe>=hJJpR;kgl_}E=_>uhuQjP&t)ZC;4%s~wHCj{SzL=DTK{ORleO z6uLJl`rtb6f(_sBP_4=&*w-@N?WYB^n<^+Y@WlyPw(UCvB#8jtQ9{*bS(btH)l+&d zT6g9Op~)>8$J=yF6h@p%ovW;K_i~y_ZCcun6g@(-K5ae^Y6E4nt4sX8I(J{FX)0yi zt**#riI%FO7VFW}c9y{qhWM?dMd4-y#A2DEb1$8I7ymns>?TCt| z(_m{D(3GWbbk${xDK)x~Ivj1#gx3o*VD(bg{!GEXG}S}gwpn#LRm+9V?UFTVc(+m1 z*HyAJJ)3!7n>F=_8xq|(lS#lOL3ij_QuTU~)d3lTN}}LKyZA>lUgrcr6eF;kWyLW2 zKf%4&+Ir@o%<>4Rs{>?gENeS#EZA0CHanR7=j(r{_II`-mTdGP6_8O{n2xS>52Mq_ zkL5xsr}K-~?CD`9_jki*>x4IdV77K);y#aPXF*FbGlfs>`!J+lCM4VtUZmZdF%q9rb>GR`(F8Y-g?uAZ1? z_E>QL0Hi?`pwM4UH$u~a*8MVTfahf2q>S^Ig7?!q6zfUKKAdeBJm>Tl)=QLsKyI5` zz};s-PTuOy2#CrqgHBjkQtbb#yy@HRVmsiPSWK2Jr&w$%x(SHG4jqtv0G? z)j^H7h^6Ya0*Sq)J$PE%E%Sd;c%cDuAS7iSN~3o4Yttj%(|iJ@44sqR74CwNA6GSl6?&S-h;Rvpn_|h}gpuW-8LyIkgvYZmBri zQ&I(#-A-nNSVbg-UAaES$;9o_U8`2zHn)&ht&Xn6r#{ZfYks~hRjY2xXazg8`eN;* zRGHoH=cl15g4_x1#^tK_s$JKhP5Xr=jmnfGU$DOkl-Zq^<1R9E(7G>@Yc>aEA~9-j zGStM;(O6wqTt>rcZi_6U9L0N=n#MkDTC}D?rh=B^ve#)!QzKCuA!BYi zF9h8bF|n`M*b_S|-E7$F$~}EeYV?Osr2UFvAySDPSdF^ zIL!8ych-}6Y?JCMg~_JA`@d!rbv9?iHZ}J8hscpo)ZHZY&{%tByn6#%4^+8Wo#_Bh z1e>N@H$aWha)lAsnFN_C7!kguzO!|Yy{bD1kW)4A_U_?;m!-2j6a@1E-VnLMx{^A^ zetPf`;*qctXA>goUR>%8(N5uY!977#Qi`_$7MHMPx_XnecIA1sn7!09)2^{n z--nSR#LJR=D^N^;~2O7+q*T-dIf;XWO$Rh<@CinRS%f&eYK zgso1&kBwy7*ARAzg>|TedyK8nD*;)++UrT!?=^+t9>Sup>3cR2q@ZzBrIssrh*ptv zYPLmILdy1Pxtse4a1ueKI?=S0nFqpRE3M9TDzbnF#Tri(q+5Z9;v`bsnwg6Q58LB2@q$ zu`3kPv;v5KXqhCkWsTd-2g|D#`0QHeV)xc3r?X@MvZl0Fp`;d98#gvKDlK7LE9^#U zADwp{t+W>FZ#R^0d92x}E!(|v!rKYZY)-o6hf`yx)fF2sb$6Rvk3n&)u*9X%RreMz zIVu2rKVLqwqZzJ`HBGkG-=OtVds2GZfw!?ScWgoDOmM3UM!RlmwF$DT0YpxV>vdFX zj8cpHD?6t8ijlLo3GA}Yr%JZ0LMq+1>t`rN!hImwXl{>XRV{6~@uH&*`&+5L2wu87 zuiCurx(3Fk$|~#0m5`Y$idB_Ff;Fz7?=i;e;iemmr)O(mHf~~WQn(%#S+eKUO`5xN zot?=F3_r%(z9X^?kpBQZebd>pQ=c1!#rCatw{|R5RMxR8#Qce+-#d$6f#|CmYqdqUzplH{VA#F_BWNWh& zw6*}d4y++rtWXu1)a)VScWr-aa!JutT{R!%+Umx~l-09U{h-mUttZ$iV%^kb(dbhe+y*^ssQ^NH=fDKfO5{HiI0p+`PXS~aMxzi z`n7Ok&r%ymj|uPJSXo-j*cq1am+3UpSDbqjQDF5up{6J+PbqD`AAf_eJaSeoZ%i87=uEv2z4pqm!x zmeWuRbsc&5nxZ@LO|{0&lv8L@^yhk=OY+;A`X{%t-%)9Gbx&+-6>?QsP8y7<8#Xg6 zYLss@D_vH-eT1s)?Rj;T18>>%AltLB9($y=@Y=IkC3w<^tj+C0((I|OO$@mzXjh0s z-8XJY(?qGd%g(OQRNL8Ae&vWlHvXL4h}4)hw&j}bvD~u6Ibk%P1}}Y9)2y7-vV}TMb#MsNUXi*|WQ`M52uyow7cb zTqj#;)?R^93gQhm-E!iuq6=T=OEn`_6XuG_jH7IuY2tSE;A#k3stR?`O!S7Rj&pJyj8dX&> z;b27uJ4)+ObU}9C+o_8g#n66p5I>^~NYf)-K^bOkyBhW>i7q0EJjy5K9S($#dg^^ySklx+?AH7ldb7xL$p?zzS{PjYbLJ6 zrmA`y8%?TiD%Ohaa%(O(UW)JxrLah|U~dXCt2X?bEh@XouYXebmsJA@2}(Nx!U|Ap zEk*S%*M`M9kU?%0ZrGynm79B*DvOE_xoOtMFS})9Q(;e5;px5KboJX^uCRORuXN4E zoGqpOM-J9Ln|1bKx04Fi(X&^m%+M7b^Rg;C3lg)ezvbJ&+qGExEFD&Y*VF90^kJ+1oQj0fU z2jUggdMK%jwXV2|fYaI{EYYoI#d2kUBTW_gwWjCXmK3To#ZZwsRjms<7kZYGk|W9L z{Vd2bXd;zV)>*^d9=5`vv>57w*@~bnNmyo{EJI4F$m&pH6Q_F1YR>-vFQx@nsd{Xt z)Hzg_39##tV(XQ%gG_3PR=nZ3@Uvm*+g&80^zv0*W~7BpY}u=@C0-L)(tnV4Yj&no zy6=_Kke^ZBm_nT*u&9(=pm1oi7En|)iiaw(GHck11iMpYTd`r)+}UOx{QQN8*-(9pJ7H!tB+c6JY;l<;kXtip>e2zxNHKK&=xRo)+4}(gXPOiqdRdcMq zlsf24RAVY!zSCaOcWTdNt1{53xh0|G{wptck+f_GlLr)5gb^ib(?iK0^w`%>Cso_gYW+t}FWDL^@9NKO5 zrlvh>%XM^F;==Qbx~TG)$BcEwfh1CL|W z4VW0Orr2zDbzaw5ruFR5c|&S9dV1H8c6OAfmFfjX-MDmFuX4R(y@^nN4fvze0~x+DX{xm^7>E zf_v*l4FEEN+Woeg=v`7WiqP3omV5T>7veH$TCg6nmrwxicukUod0h0KwTP3qKkVLd zI@oLW?x|_|fYsj_+S{Q~I~0=Y)LZ?Eog-jNBCV829A2+!h;2nN$_SSRS2k;y$**3` znUd{!(YBH2ywP{TkR8Ak-BPaD=qF{nJHI(Z(9hs z7BRa*v=AxMkVrbaYf2)pD8{i}p=MdHxXpW*Rjp{`^-}3(x}pV3x2B4qeU^5$U#Y9) z7WE5hABM%kCf|z_>f*<7o}W>&*wr^FK|0zkVm(?Vb&1W2u{>fYU8K51>YH4V45+MSVKT-7_&>=maRowBJNmg_w`nQON9 zHbN>&=>uxqt^V&}d$qC^s9p`s5}DH!7dq#_ITF3ytCK~ngxeW;oy$bATAGvd&rbCt z^$l%s+-#e+oZ z1v}cy3d^mzxmL~l#Z|6r#nE3=SI|_864%<=4KE$_-Kclm5w$wHzXVa#n<)$1TTd#f z+S-exzQw@m-(KQ?ty(()_sv=eQ{uP<2|H#YRiP*W8oMV2=(BR8&~@%X zSJ=>Ip>4l-!?7MZsiNyP3HLO~H>JA!^pX{T>+8zpyAT%zV)r@{rOZ%~dz%ln1}>jd zziU@K+_J!$n&>9_pr>7L+C7z;wXuNr+DtZ*S{3a)_dM9Dvi!4_B$xqVMz|R}B*5K> z*KGD{D$XU^WuP0DHdN_dix*NoL47RT-Z3CZ>n*tl{Ijs61t2;^3;Kqzj>ll};YT)w zNCCyrgR?BkcGKGlZI+_bU{f_L+*l1o^!53x<-YN(3L;GnbAtM80&PNepw=qfUxLks znCm!*_lGof6{u_N+^~zRMC+`I903jLChN7VNN={6Y??`$=dkFoti+(K;<|#xYAV*t ztqZH1rA`NxTTyIAX`yu|Qo`1QY1d5_*M(lICmNR1w_#3(@vp9n4b~;Bwt#nI8_DbF zF3o7I>VgfM8dFnd<28-8q+&f_-`~+y##%?5{0i@l=NJ@uk%Y`5=)o7CNEQAqSw zZdTS_x;?W9J2h(Fx3#?8aBeiL)rzeuhf^WC^CP8N#uzoTI)OYrpd0o{WiT0gQpg2I0!)M2bGWWYxT;s=}46`fry|q ze-BUzI|obbRj*p6n_EWwGktoxd`*hhbz5VH7}s11B}AU6wE7g>%J-PvsG1It&0;8# zX18qwx@<+A-L_v+fYI8Rvg3pyHjE%(AFy?YnAaVBVH)h4Iu>lB*1%g;n)YOr;yS89 zvuXq1Udri*h0yicWxE^2u$f=Tc8Kdg#7=wZsEkOmg{HX;oUFntgDbzZFlvg{!pOUV z3fsjc?5uj*wXa&RHHyXjDjuVB3smbWwe`|HMWq@H?o}T+$C4~6(W&i)ZBJiHy?adB5Z;onwrrNU zFO68b_OZa|{ZY&41InX3x`Ys1GiKvqV69nGZTece;tN&gJyRIh)Go@7Rp0_T?v-ym zyHi}gh3dc{<2iC<4lPA#j}=YK#Tc&U%eAs%YkY-dK-Sn+^!1=x__YRXwXr>#B0)8; z(%2?$Ti8uYmTFU{Nw)QC3DJX-M(t)vooG}~<2_c~#;(TXs67qNmaX}|vaFEm?SS6c z$BjX@aXKn#i*Kx`6LN>5>PWIds;REGSY}_K9gVU&cC_?0cBvY=vO>$ib(#eYdo1;P z9;LIe-xSWh)OI$ab5CJuxn$X9-D+^axm#40sM=qKTD;?1&{tXVKGl0>Ge+CO9cs5oDw4O1eX6@gN=-9W z30j=mw)W25!=qtTlR=&1#dm;2Y^680ZrM7M#>$OltlCwk5W5!&E?y_$RjXZH^>;Vz z8~su1uU&cbm%4-n!l6#*c$;XTHEv$eh*-L!v3BK~RJZ#8Y*hy6kxJ;PM)%&*>dw2X z93skWSlXs;_sCT*G1!XLpJg&?VyL%c4`g50nM;aj*&?SR^}=erTH6%tBJGE*A%Ak< zrtVmco%$~grH9t-drFm-gA_yHa#Lq^)g#FWyR*F-l^Ogg}enZbIc#c6IOSm`HYaZV^N5)1ZbnODxW^*3ojuEa~iPu~W92n^qp#;7oGO z_pL7B1;|yf+Qcd1E{jGnUJiq!%Xt?oMPaELbxDVvikFLpb?ggJ3n6?n&D=ywN(?N$ zME?Ngt++)%xCw`<*B4@i)P-*yLkB^32Ef^8RTDyW7tEydq~=2XsRbGN>dtQ(f0ll0 z%>Mv48DOXKWt&)uw=+7yi8ga!ViJxtf-`RdBl0&hM%GVK97+DKT#Tt?yJbCL{{Wbr zGM_G9{{Zx@EFzykahoxSvc5G&M1Qk>3lskUb$Kx#mWx%R?bZ88jjYP5-0{(w8X?BSq_->?wlNYMSSg$S?-(7WJ~qNC3dF9P{rZPd z-+azBmZB^_!0=2TdIHnC)kA5NlA zU+C&0&cJsU#j-|IT zu_^R?Vg^4JGm-ChIqV54yxLO7$=jp-(qMadfu@m-JVb1gQ1Y46qniUCh8f0x;!-Sw zDb{Uyq59aR#{2uovgf{&P0jTIeKJXv(>c;ACPYRaBewS4hZFw*oV=Ny8JgdHV`RF+ z^rj*e%6$c?&;I~m?5F<#VYuIIK=JeQr5N?cm!^LNxXmZUsmcEU$#yITRXmE9+Zq4F z07ei10s;X900jaA2Lb~I1O){F0ssRM1QH=J6Cy!TVGuF}AaNrwLQ;W|p%k$*(cvUO zP+*e522*126>@@;qC0463dM_8R^0|ES)z#Nk=tSStW zOw=FrULh5t^g#8RbEw`hpd1yJ*a6@uJqf6FAmor`TdL^Tk%KAdkKC}oSbEc^WA&F2 zLh_WaOBV_wjXsGF7O?xjNkcMHnRjQ#;}NUTs~--t=pvo9uIFRWna9&T-~kkd1Ec8= z{!~->1{A_(Vr7i1#3BK^=;{LWx#f?rgz5DCEg=5@lP<7>*xmFXGn@&16dgd^w-Rs! z)zPWeXU$z+(w91G@~>M>aMWm7veX{y%%!Ubr(UD2m7a?JT}n}>PrAm0(WB_3>AuZN{{Y!Eb@ZZMd@bMbQ>B+8RZ#t)J)HYM-X)K@ z*!y#jt6|XOHX|2yIVAr0f8b^qfAAgz<-aoJq7R~yTzB*#^#pk;2eUO6J?UXJ)K8H_ zIY7h+g=lkya$>dMFG?W@x?ek!@foZ(xd=)7K;k)0Hq%Re&-zC!?a=lf(Tmi3LS@OO zzrO|gF@^e5!`6o)aQ(U-*XfK7$(H{Bs@A9{!cKwtGX1)6a=Lo>Rr(PHX8QWyG?ZI; z95l4r{{XHb2?~N3Otf%HtDCt}5ocRC8Rzu>SxC zF=Bq0oDa+g?t%XR#RMPsQ3M7L-P*O*gR>aZp$E|Y{{WbI;;u&v4<-cOMn?09;mRBm zCm^0kimwq;k3%&MQUe zkAKMctxiA#@*U8WIKafuC$l>-en~Kb;yGjclgH*K@(6Z_r^A>Fk0}Ny&!HbqBM;mI z6vKx42tV=>`Vom}P)C)0Tl9=*(GIEyzt$ExOuxbX+ig+nGDk)IO#6t){nuY!{m2Cbi~4@?gd`yQi28F3JpForA7Xzn&*nWv;d&%bQ4a&N4p-^wVI{K|;uMHp zj>%4OHI^Xll};w9?Wff(T~%I3Tde}st?a#0%f2J9f>9aUUfJhUjG1a59IC)5&0C8 z>R3iOpKQ!NNWu_DWC_%NG;^O|euKk*P)~6MD&si_S`-)H}lhN{CKD=*?Bg z7oZ%=#q?L&zikWYEaTuS;lQ^Az zQ}sBV{X|*7SfrSPFqVt4eM?J2l5jvVKuOQg=5ad{*XX&O#h-edu6xX>nTOiIbq-Pb z$@^t&>5f@_gtx)56z9Z>z9=N`UW^`PKU-R>>*ZJ(r@1X74`?G9n(E%h=?{PSKB}{S z^3H#DVTLe_BM9O!j3%6oIvf)iLoHMST6CITn(tCRB}|oPFJ*_%VfU6X*fyZ_1M^gE z%Hc46)9*3_KT*f#82p3i46U&j8H@z;8N;58$#11>%-(`n5j{ZeDwp>#_-Z4QJwApQ za3hTUJs=yQ9JgXPitc^Ei_prDVm||;D{X+_w%EtM%m5MD5D=%bBNOsW2FoRZ zebhoX4~}8Pa?E=I0toDr^gYEm1}K0G4giml6yz8N;n^^QlY@z8k>h5yF`(RWmO~5f z-QQw53wi_@NGezF#}V+k2x ze}-xHnoiQ_I#^3to*&#y(W^nR91i8C{Uh>*9|fi8P!0ewb`O78S{!IG2jG;OtY@_&@I0`hg!FioeWb5nghs=pZJr zGRg;LHV;*z^rCJQ=dAt4DcXYp5K9$?sefr(Oj2D*aKku18H>FOeapr^WtrOBk+H!a zF%sH|0U0^j9SuZfip;hqoj=rD)yL8!G0!-P!oOEB#n$7JM5T~3Wr_5RTUBH2L=*O8 zeZ-t#OGB+g0T-Rk0sjC{$D{ls=rBl@rD{(u=4uyI%$Q^BekFh}cqSvevA`g5e@U-h zHhC3x{{Yy{KZ9LICC_$Bz{hQ#Pvjs*!p0}}2kFdF^(G!5$ogkLM%xZZigMfugP8oD za0IME0Du$jOvF_mPUd}!7^JBii35=>eavz}jzWRRCK6@_2L^rp&J@5wtD`tjc_KJ< zRpnxquBYISNQQZo!~@B@Iq1e74c~AvgXxf9VE+IKfRzWM*oXE+VS$b2#t4Aq9zck9 zgMpC=1silb9Qwo#2W4P5{GE=7nxl0|$ALd8tS3h_1pJ?v5J&#Y;BNT3)zKmeW*#y86Qm=JOlrS?=7?z2%O-S2XpHnPQNzTCt z2%qrl9MSyT-d5U}NM%$R) zD`%2S0FOxc!QcZik8=n=Lz$1D^%Mm#l{+~y zz{N+Dkq$R@0PH|TK;$umHckvUrqEas^C@GuiH8}$g@Imh#u5%YBdA`=g3BB^jJ4g3 z!Ne{Z4l+ju77jXbEmHG1^^7+u$`X4Kyr;1r7Pm|~fHi$&AIiiuwXM=`&4Kwcz{$~5 z*gvQ5^ZB3l`13!sV(fb){XvxwwGMZTN{j0+K5UKvfMo!gKxV&8($QuH2NJS~=W>dK z($jYCefGeCvCU}W4ed`aUO6Id{SO#`@L_kOc5OxN54>&qD@g^1p+4}f+Fa(gQIRey zsK(|Qo=X$6D1QVF3FCCrqHkalwIecyy4K~+JgW$^R!5Z=J&1 z5dAaH)b|3izyhd<%*4Qek;Z$QS&w9yj2O+6&=Ft+w{Ur3!HtQN00I*V;YUUsd#Lp> zk1IMufe70_p`WS5Qotq|qv6Wtv7Q<}+m*23$2j(x1&@71Bq1I2Le}ghrxd+++YA1{yVA@xLL}CD3k9@+3WKh9JBp+A^5e3?7 zJ4|GWzJ_x%Wk;q01D~Ot%(!8Pt@;N&=)jbqB{lSOmewg~YD1^VcmbgCR z9n5(o{TDF|(jZkElf*s3!qypD=`x!YbJs(`>yIsWq3EO~60>>J-Q z##_1$3}ke-w*#Z|DsWE(V;K3C)VHeO6g*g;BiFC9lvzf6cmN2!kFh*WVHK)fCaos-y%$8Qgq zJc-=soXy7zk_5E@>Jx6GJBTN^q!Y#jtazySLaT%Q zOnY%w2u;%KI07o$p58br43gV>SbORs+dOPJej+3ITE&Y>_fx(fX}>O9~cKc zO7=S(Z(gGi{>{@u7uZ0CzfxyTcoNdg{D9nnH0-vi#^5`QxpROCgAS(zAIYq>6n2E< zOwoF;E;=(^S+?$w@P9GLhqy#wzQoJa0ocs6g@~{72(R>xLMh8xVcGVrP(e`#tnrV z?gNoB?Z1{M(jP0lV0p}4$`3g_G*lQQ6$7ycleI{NmwzGv3qJD1bq??suhLSUQ;18{ z=PXEtn1Ra>`pQ=2oSYP_LBx`&o&R? zFx_Sk4n0H-!Qv(XJmNQ)4j9K$z;R}HX?tXx7Cw^3Hlf@f+Y$1_b~-VGk6pf#Yko&$ zu@4LkLTl*iWrE7w22wtUIPNJ=a(gfc2?B3g_jWpjkVM=;`c~kW7d38k+91xEX|#uar9lvJ6WWr zpgJeGcM}v3p~enD1~_yh1RtX^gX#=+DtX#{OxKjO{q&xubm#^MQ};qo?oZ?}5-l`{`;AOOo1ed7l{v4R26 zmKFr?1WpXVQg8{4zdaEYJFk{G4BXG_20`RbtQd}V2H;LDBZc&p?rTO^1NO@scZY>Y zHn||!2dR#2qS2B^@SkXeuJ{#PtPB{E2qI(~4pR_$!k7SNvvDwm-ZG^6!a}&g6GU6) z0BRgE0oUmiIu*z#)?>azOxR8^Jtri9GEZhJ3lMO9;^WxM()w#$0DBRY28f4-c;aALL^qR2M9!|{mFrF(^Nw!@}LmG^=wPm z;YVf{W9f(tI07lXam>?-eT=#6Vtr5UPd}LbIiGjXViWYq%w!86Dn96{Em6?*gA43u zSlk3WBjJS3`$7^XW0Uc!l2oDR&iZDW80EYTJ|81@9`>%hkZ!JNQDlfa3}LyWKl zz@#$rNtGjDV1pDY*gAw4?A!df^ne6GxRN`HMU^)L`9#W#n}LtIE1*-sJ+wxxI#y%% z2+A!+;GcP8uB{s^hocDDpC}P`D1*$yFtNu#nNBgpc&8S0@tgp5g(H9?DhC^opI8*F zXMzWDh+uOYePnV;i~}+9#$w^KjQzqlE_hO7oW=s*a|q<)fiUW(W7&k#qq2}V;(UqM=Kb^(7+#Fqqfu7 z2Z`QH?T^yJhxvrHnPG-Lay>-n@*H!?F~P^6F>t4VOtH`X&xyeLdPO061c($5Oqswv z5fmFc4H(8e7{?Qp$eG*HksAbGe2cewQ!+mGsFD$%4hTY5x6!h5lmvCt;K|B)*fbFyq8^o_z zc92FeV(y^^5Fbp&4tzqudvg>Tv$a4GO8S6eFtBz^J@#QN9cD)ugK^!+CMoj~fJ{~9 z1vZ7kvGg%PVm7lzC=lU_`$k&=35vYk6Zc0Ym~f&YeaExVihNPH)ok)Md& zjFIgXkv8G}f2>pcBa$J>Xv9{_kY$)8;{)11ia_a(Czm{62yl0B*o<9?rB$2qUPeV}b1v0QUA1RMk{?P<^HL z0tW`O*^bFpe`xP!f3&hoQTWe9*Hm#JxGL{nVf+!v>l@+5rZtvm2$(|F@v&? zFoVj|veSsb{%jTcHe0L-&4t3Ou9kq#DGO9ROGlr9HE#88XK zz>a4i4h%hzF)L@u^brDpdNRZTd%?`hSb#AwgEr@W&;&)=2U+Gb1_z&BV{{MrfuZ0> z9dHaB#pNQge?TK3SL_qWgKCkro4kC@alJs;0}r*OX0&JAjgIG;w(aGi2b@=yBs-6^%;Z=6& zK<)yp4hChUvm6jRmp&Jc-~f(W-e*xEbU(cJpbnf#rO6F#EW2Jp?Di9$-j?k-_p9rJM{YivBKe!V;tm z04H34GwUy5U^!(59o1RTFez6UP)BoVDmMUqB4xi`pl!OoSOe5%+?|hjTfZ+e=ZR;ThhEb1s8^FOEn0&u$@!LG zXC^xj28^jb;t*EH%b#&SWlh!X$oJwp*rL6`gmn}xV1gy6%9?KwADkHO*OFWogl=BO zXE1=MxiQyusl5zr*i__*%C+_h?pod`?B){0j>(oXu{rOl@7{Tx&NfEJ(D&Jgqk{+l zLz0aT<|lAH{X1?1DVB}2r)Sa@wVALCQ@IWRB2(XdOIK(d0Xa*T3PGH%a7@j#mCp5! zp+`U-VLWrsQ%Zu(-~tS(6~yg?w;HB9jYRbngJR)udoyrWSaL;?L#?xDOOy}?sfZ~) z6PzDhMd*=?L4=EyBWNJ>VLla4fDGY~b&lev`mmeHGSJ#PnNHWs* zLSMqHFkpS7pA+UBF!GV^V~wNG2&Kbn;4u4&4IfDAwC{eh=(A#7>nd{!TFZ+ zzZ0sDP!mHgaWWM~CQBH{HJnaZrdoA+?gQF3EZw&PT6}zR35UyNXOCkT4a3Y&ymciG za~T3wBk-M=r(y!kAi!5UL}B8;WP3yo2Vjn2*~a1w3MaJlYrYTy8;+AhWw6(II{gFa>RLsCFh<sagcrGL|%=G9XkHAn>uKU%UbZF z4Yl+@?lH|4F4OKIt&?w<4(0}1tn(i!&=Iodr3MyFt+-&vTUOEn3B0w-hXC~lDsTtH z1hV;*L}jhishD!7gBXH>GL^?dXE@5k!Z#!4a;?gcBaUEF2p%8;1XTxfJ9|bOYxEwX zI4zz5>_p2aV9Es+bnZH7s2H?vL4(}$T9$d0gjEz4>_S6n`$Qe7igstrG0Zz`as&jc z3=mIwmFy&Q91k}N0X|p*Z~+6-4a^sFgX$tS%}Vf3OAz;hPaMG z2IS;L+%dGCw?N7qg}^)+S*EI!2LX4YIm}qDa^%WoD7Lh@k(&;hp`ce zQ`b@d0MjLhkuz-|;FLXyrw$c(*$WLlY2mI%Feyu`+zF1>3n|TH`a^45W95Mo(VZ~d z0UQ{fVn_lit6Fh`?GcHgHe`3tw0Gx{Nu6W-z&9x%!GOFNPmIQ7GMtE1xILJ5IRq0q zwy_zNmB|b53)HpQy%C4qm{mbj$vkriTivi7VaW&fg}X2+({~#HnKdxn53!aF=MjLh zx<2z3p{N%)`%Gb%T&N?zh!kaV%NJ_~z$SUq8<_iJDa8lxndi@$OQ891y5vs!WJ3xzSyN6#`2Z+lvs@ZP{776y?5y>_2Mz`fdCj-y@(9&b~lKnUF+jK zgDe4YiKp>5di$BWwg(_)e$LRi{Y+vh-L#&vBZpQ2m5fkY?=L+V_z1g@EIxD_PVRR? zqdfp-1~KK7D~`AK6qG}h5iYH(vnotEQ~?6ZImaqufoq{w1Lxi_wQ6&U!TWMfAW&;u zr|ByJ0l<9y!c;Qkf(N9rn1O<0?P|tVp%xPOY;_f}r+uW8)F81;DvwB_%7MWREC(Yc zV8gQ(2ijJ)kbnaQYf@AKWq_bNgkrTC_YghfF|f8A9-=YHgs7~{g(=>9gm9|R??xNH zLmLMJ0GP#Se^6low1fm8eZpAE#E&R|7BA;Mu#;M-VK4^a82P&~vc4f11LhJ!w$dW7 zPY>+(F#gi6geMzvNi+Tvou?)b*=^cRdVzNa{h9t@2o_dDDfWrJf~qX{h4XcLMT7Wb zEoab^*!PY|72p#w<2L}0h|21Y8Sr|I<#ClTb5T7A05^GvBi1+VQqS4`ur}v0a(Cny zcB%6W{7&4JBt_^L>~oMkrERn(-o2n~DFl*w5rZyxgr^=+?qZ77&c>_U`@|tx_O5;5 zYTAQ?7i(dtK0&x%+pAw7r}dMA__Lyw*m~YoU3gB`$jdgHbi}{oPgaCFdc_NFczqQqZi?av^#*)09!pAnB>=C z@A-dOa2kALa2e;)E(??2x4fZg5*K&((0iY3sCCVFAha_KAUAfuTEHI3RRl z^5Yp3F1I$*5VDrwDS?jQFr;&tL2HzgxJ4jt!wIKm-Z99UXRMXvMnemf7hiKVgi47*(j{{S=a>&Z?VD>T+oh3(>o4i^M}5SH5F!@LAY4iUVk+)X9e z^liKuqkAf}?Hfm|EXwD7l%CdM3-p7tDo}>3I0L5U2H&-|FcVJZ#{gsxNvAHAS%*>H zA{r{G0nf}T=8rWY2Y)fJt#52T(=r(sk~$^_y8ZaDFyk>i%HqdRI*K?MWfM%~xbl!Y z#9s=~yKMyY)2mKgW3`kr=}<4~PpqgddREP(_C(WMYIfh`9RcqW+D)7xafzaKr$+@paJYo&m(O7P#LppurH5I)`yaezZ^^&{8fD7LmF zB77NDn4+stBCi~_V7M-!&ybE+p5|>$3x=z3{{RM6;eH=-D-gbndyEQcwA*X>X`&tq zzn(e=vHH(T5}8WYq%eG*voxt{Cqx;bRTc~e2Z1Q0qW5P0A=6#YNb&TFiODA3roTj5 zp@0(1%P4)F`R1=rU35M`-Q2rF7?OjP^^6|7N1*#+2DL|%F%aEYA%hOY3sr&gQ$5QG z2c!l&)wuRLm^9QCX*uJQh^dMWFidA~?ZT&_fFWkXD|(2^buG$RJ&&ZW%aLo?LJo{Z z4`Amb+EU2a`_xSy`$s6EY1rRL==;L^>mY&iH4Kg$Xak_Ki!KQJnB(GUY*Jecj393j zi8(%!pvhZc=hP2bQZ;oBB>>ukqu2D5ZM@h@Ps7iO%6B*&n49z3k<6erm@j$cKrE@) zI>? zEIC$UaWoXGj*d+HH%tb1Fbv(9qS2vYyCvHs$}~uQS8?VK!o^s_7h|944ug2$oyH9d zqV>fp#zz$BsV~(+chrr`eLyYc*g*w)7qIm zqRVxbhv_y6rM>v|PBAEYob-Vvk5WfN2|o?JU-{j5GfQQAhhR-5fd?+cPFp+yH0l+b zGK{xi4@p9wgEZh7MSG7-RwY~eT!;{&_6Kp4hCgYAL{vOQPl6-3!Qh}7pNVRd<6_Um zbxh~pwU=J)>NbvH)B?isJG?1k`Js^a;cor?7jU`o+{H2SEP-)={Xl z-A#x7b4PmQ;~pXZ0G!cV`m>&Y%+R*ampuOfnfPL}{JEcorAkx zJqJJYnhGCe;mB?W3dVjL zQ>RVuG$T)EvP#;9ySo#)QrJ;8?s%2Z>CJ^l-7nbQzcTk2G43PZB2xD&_8q$YAh(0= zCyGh;F>U0Ij~qv^fPG@yk}zcq6?y>5n4)zk${D3X6RD(3O)5<~O+9}k2~zVaU+5wM z{UA^3Az$qXg<}b*TvN;E_-3NFZ(w665!0Tds~0#JGTQO*WvPsN%TsT@Wvj{CFGvlc z`zz@+ElzveKNi%IeV9#trP~;XQ)6Ze>dEA0HN}TyG+P-*M8(Jhq1>Z#50l)|E^WuW z&<6m@YeVd1G+0}u6Y%N0RHpM|*hVOg46LR5P2W|jHrd=tddYI$EuxS9*k>rDI| z+i$%yLwGhfMvkZ92FJ$?Xfs7{$F&A%uY7g;EKL@xgVxES)R21xC*cWc*5mn))(3?tUXcGw~|S{7Dxkem3**rk{;jnfUGePsc9^ zC*t=!{8v*y5Y$RZY=11%fVk_!nn981Dw<3;pzx-j4e*k$H>OflcKZ2c866BwI|J?( zRbLpc` zc~w94g%rOEy@*ue7T)~?9YwcyWr7&Cayw))=2s$W-#-RgO?HnsJ+x*SeFel!pN0NXS1XUO+MKNYMf^c7FU>m_;ytcY}WKe(e3 zsyOcz%Bud0H1wZ>lTT0niA^KhDJrY_B(8?{@`w-Yr4266%yHfc zmZ>uIL)pof*YbBwRX^2))@et<_l7qH9YZePc~6>-uU; zqV~tV=4mef0Qbz&F|*sonkLEiwrOqtmKjC(_Iu3GJ10c%ngaM9ubKE_k)5D!pM|H$ zCVmxBQhFwS5m@+BKM719XP<)AKM9~u!u0=TW4GYjaRv*Jr+#RjqA;rqu%59$8oVhp@r&37?1^ov!>hxY__nipbHg5I;(Es)sS{VNwaCXV z*pH}f-Q~{_wJnZR3y9_iVbYHi{pAm1hVv0_IG=^sZT@$+srXvD=M@I$Z}p#r=|_ja z+@Sve?LQCDE`59jnjIMT#Va(_axe#mIGcOuFA<3SIK(W>ddZC0HSGg-Jz-&m^lZi? zuVA!h3?Fejqi)YaDq*=B;#0?dQ7Ee`?jlg7dE0?2pfAFM1uC8Lf&^pksXQ_8P)4W| z>$FR13Y;-39-Kp{*h)x@b%e&ae z8^DLkM$;X4o{2KR!6l;~CN_PDGS*Sh0LyIh`xy3be!S7`3J!eM8DsvN`7m3+?2{ex z5A#cG{Yy(<`^REEiHyV80~x=(Ehtv~Ow-mSbpHTh7J>Z)O+V^DhfV#2I&M9HkERXs zqBSSvD1|?;flvPcq(xo+!9>%)^jW8TO*`Tv0rW;Pt7TW?-)z&~!fCCP;=|TslI~-S zv}7#;ZpU#`3oQuJ{k|B$m*t4W)eWL+o@-c5V|U#AMbEs~+1I?+T1U%vCZ(8r7Mh!S z>v_b!&A97y-oW+dmO1Aibg{GU3@lqd@O3ffj=3k2OmN)fn56oXIbMj5n;J8D#z7)J zNazR|gek3-e|3{BbZt->n0LFj4>PHFf1E@3}^|&;b$f1c>*}&p&Tjsid)-g ziryd`EMwxgOA(4Xaq9yv=!Rqg1)d~Z17dGo-4Y|Jl^&cXo`zEH1fjd24Lfs`Br7?ITdV*Ril7XoC#)KF%f1|ozW;7qs7QbY_sF$s#q z9>5ZZnoBTSGfw;Foq_oxR&dc1YxW71SAo&YN;&moD${L=TH~@M^vzb4Rl6o?^tS&1 ze9cv9#@tKla-DMxe=&zWfF=U|lHrrsB3QvpYa0WgWvYqn##(`M*fUrP=g>`SVD=@> zTR4_H)CCGXOt@i3p^cRz-W4JaWqYQUwLbvLzp#}sZ$e^Mw?5FJW$a=O$5;}z%vCPK z1}cok0CYsuC1d1GZF@a9Ji}RUaR)hv1|B931UNI^9srC$Q5GgzcM1A0VrE$7OfFXu z$eM=FsWS7Hn#2n&-EzK7i#4y$SO!~Rm$-6ft<@pSN%k}0_Gj$2>k8D zvkwSu-I#(Z&WVC3+Y(d+K`WIkp>rrz$TY)joI;?9D8B={#827V+a zy$se6#%cq!YQP7%s#KqeDvWkS{APvt!JmuJ{{YatP{_XF zOx9ax^#1^)MZ)#ER5K}3K4zYPgZV`KJ5IyciTHgAy=)_ipwjSi0a>8ZujsQyr}^^A zbhV$9Ge@T&_Cn1K0DP?cKSppn*)+OxPeh27FR)mOOw!T)MAOlZx{8P~f)ssn8|X|X z9?Ur)#v$LK79#8Uc0lwn zy;Yux5crAMn?j+%P$it_fCRC6k5Yx`1dfTv@<6Vq)oPe7hp!6}OLGynTfiWC$5CUk zAeDs$Rg4z{vn@vb1bS5Wmr1F>VfUb#s~tNnH4a92-kF7%lgo;wwy5ZZS*yRUiNs*Z z?B+5B^uz(z`H76j*+G?Evl6S>Pe2S!E0K>j>7=Nm{rMeA&1czRx4y#1v*2|uvu=6w zLgeEICL+3%*%1^sV`!W(oQCK|_3IG*En1Wg7>vZm5BQd_){%y46KCOKGns`}J3;w~ypBv!^y_K;$G6wfev1@A0+y}Hu9#;s@Ggt=~Y-M9-2c{{VQEgSRW^Jwm33I9wiL+WhoPsIi)Gd6lo` z5Pd|@*=49Z=W7|JN)cUbbwA2T982Ed^<~jUKt7z!6H*g^vi zvVCGYuwDWmx@Zk_gOzegX;UB2O*Mpk38c4q=;CRg;Nod7D0l@#(&|-lk(HWTSec8{5Ze4Q*n2sZHW1*zcEvGFBtsa>OmcpNpWNp#Ht(wE=tv&(&_$gY{{RcQoy!g# ze&8aI$ubu{T$s$IP6-AxIXnj(f#fIB1n z{X8@UJm(W3d*2;dNx?qwDLe3_o}p(d;F4oELCN-oS$5%xkDbGT3EzpFpDPl25UdIs zSPy&&jK#={`T}BQhoCZs%(rb|br^;{l4BnQP74F+EP%GlfsO}LK~tC zwGn9xZ0FrDH)uw8C|j9E-)glkz5!9;7~R zc6nN&putofMT6;_s^pn%1#`5JafAJ3E3DTr-W`YhHJI_rV#W5ByNg+vli1IsXYm&* z06al%bJ#H4%tkQBffuL;?hIiZO?&BGUvXvi6Hu>H*S4htusuw67Ft<=PB5e1S!<2h zv25jLo|5+QkU3bcFn1tMi1sr@S`Tq6Adi76t!PdZI38)Hsn^hvG}Q=-Gu&G8pJ|Q* z4n$FE{+&lks!D?+vG*R*+Spn$N(ez%V`4U8fSF6eaqaoY$K(Q1tl)9;G#}W_AVv2* z%Jm!l(D5j}riGKB2{1Op*aA5^o*-?<$|ANzaDe%6L=A*I zK6;!3&5f{Cxf7&94 z$WbM}+Z=D=amGf`+Q?0<34AD5q@{Dk$ujmaIDPyHt1p2yyOvx3|M z2qj^`2aqGM!QwMwKSQD>c@XDd;0UCNTi!_FRL{WNufJ39HzB*mtwj6}P>O@U^{Qv# z_x}L<@MANwpRGbMz2Svi(VF#i^4pi0r3{NnKi3mV67;hyekTC|`f~vK zo=-#f8QEiPVn4hpEWJgD5B~r#9)JEKa;S(bKdc$9ga{9}ztBMweO3*u456vgQPHgK z%+)a#uIJuxM>2|Tu}132UPDX^*m=b3arzF7y~bh?g$r@-B~{33^mK+ z)ZWZ^EB&GUwyD>X=(D@5@8Et;3Fysr*FLGp2Emn5Vk%ztY;o!O%`k0V&TS|Bnacw^ zFoB8dJ*R(B0s63w3?m9*BO@6Q5Xg(c{wz)&-!+H%ej^eTU}9m-gKLHDgh2M9;1D>k z;t_&id{hFhe&T7ZP)6oH#(DBE?T+Wa)qwbmg*gF)upr3-)A1k0^KkKhcuaGT%go+| zdLmzg{H-krr?O>?<;ev4eoyN$-{kDU2SRg`z=C%bp26s`TviVyfQ!7a=tAiJptQBH zy^>|y)36B6CZRv{32l~%wDF&gr5Fp)+-ea zujZ=HQGR^8@23BEP z{4wfO4xl=00C(lYY}%CvuzM3T6#jf}9Ut5iohyeVe`(%~okp6$>_*&vkg{I&E(tx8 z+zQTAWS?)Kf+&CwF8EZ`XckiA^#d_*_NZSF_OVGQpct~TfM<}3^Dto>RxUxAB=?x2 zcL`>d7m84m(1frahAc^ye9HHl>%b;hc8+=eBOK#?7(fHL*sgzuI)%;@2;CSdwyT>B zQx4F@{{XOGUglH&(@Rx#gR~Rv0X}mpJkEqb#UhHG4pK3$q+GEbk~{wMAQs?$^CZM* zrCAQvcqB`my|XnABbGko#V*~D zCvjFPgO0#}VT@56;Yc7t6t+L1pR{!wMB?Q**dqoc26G1_%mux6p+1f86;+7K0Djm; z?D&i^5UU$GW<3neNLq{SJNd>Xdz=yCSP!JEeGnf2C8OhLFb5YJf`jd_MZ;=s!sq!w z{o0QV0kpyN<&y-EVa2S0iWAS!0rxpH3c@KHI>==Ih(U2R$Gefk<(>4q)aZ_-C{68)!WPEMiE2LG@gSAc81> zOqa62Rem4|XmMF1^^1ZOaAFozO~86)0`7-$)@FRq^iok9l4CIr!n%~7w=qZ+5THaE zh#_dWWiSHOF~~C@FMm0mXCK?YsDg92Kw!t@G0Mx>%h;^81aEwar>4Q`2%0nvDy>>3 zjhK4ul~K=8kr)gZ<(T$Q)DmTF6#Wsg0s0(He{s77N}PQf5rQZ1v_CQQs*NUa5gc~!QEPTKsSeo}Z+Kmsrqfs%)e56NYATH zQDvd)m8T?&E78 z_L<17h>96J5J)52xs-ica0uyr;)QLQB4cPAlQWQl#Te~CIfZ-#RkF;Fw}@1DkDN?F z6cH5?)lI;~$N^Z9*Kr>uh)@T#Teg?w#d*iP@!THERf$uwfy*e2>T}j32LSYEmjeT6 zm?O}UDN6^jnj}mN5f>kvkIK&pfua^Z(@(IUL+KGru@M{G&k2XNVACN3fIyo48U`e6 zEChWc=dv7RLA-kdG)lyGlPaRIDyHr^0)8BdJ`CKg=pa`8M660z61}9K$@o=e$l=RP zB}#Ff@q0Z8xSg?&AM%*nm& z-Vk&da>tHYr5=j(?g3N*@nWhso!jVL2lJgB`qaakqc+lg1!M z*h&%)WKJ@t=S;N9uimNBjz5H=+VHAC4d=fn8Gr~5uu7t zxB^pVKS-@Hl7)}y3%S>w;N#?o0J}R}k3}4az-0&k{LF1SONj^JqkhR8P=F7D)2Mg| zKm*=B9O%jg{%}Cu0WWis#2ca zoiLW1`f<#|?IaxfvGkX)d#qp>cF&CFZ_=`}GT5KTGT>=$EKgv1LW*3KAoe#L=6Vmw ztE*3|)Sb19Kac+arc&W)UB&4+!7}#Ri?sNJh5$`q8f!H>E-l0E2OLZFrEmg2yNPP1 zmbBWTyJq~2jR0VEP0;?a(#;90a=lH)aVW0cRrWIYuj+j<`bP2e1n%*@KS;%jfNGA(WwkGdekRCAFzY?|#q-a8Rh zeV>Wlm4^Ce2tZf|Jj3Ntm|R6;p2#LCM){n+dl3r)c@bDZ^Dr}!q|rA7J0$cYA0?`;0f2=|T`c)hNtHRPM%(EMI0OttaC&UV*uV!Lpza1C^p-Lo{WB)Z ztUJgbYLl3jx{<~Np}_~8!Yr-7q{sy#4lYo`)QF{g!3f8{LLe8S3HW7(!{yvh2576T zdjvuB25|xWgXz=|e&m?;A)33s0BLov>E>hm=3Tzo=jvr-9QB#doi9c^96~p7*!1Tx zDKu5(g;!ANy%VggRXG6zevv?&ojrpm{{W}fWmi@OZdcp5s-K5`8%`}FqW-aWoim-J zdMWBtTC3@|0tZ_}=`1F(>ATN?d+dGV3Sa`-DH z6Zf#1L`5SZiJ0B-^|*)8K2;R=HFsZDsYQV=IUlF%Gyybr*Wtdjk(9*Lis%jFRby69 zipQAgU^jubsjI4s>LHUzmA9YYuUtiBTe?^8=w&2ND=%8y%kHa_BoaU3uW~-br$QC5)JObRQ`a&U(OmUzvwtJ zfp(Qsd8xe&YVzYNK|>TKp$6Lr>l`kf-0m)Z#_T}W*yyOIJTICjG!2WMrCw=+XdPlx zmhK~au07%Ns&Wif3)#=8iiRyf4uO`};uC@a=#P1;sMw9SzKEBrh*lAtO@|H6))2Gb zO%?=TF}P-Gll@k;_t@R-QRy|+1w|(XvA~uq+i9lCK{mGIhgdj9}? zXZ4y>MHQS=p4fYt)7N7E0Ep_kofXJ|$6-!)PAN)N5x<$p2Q$z>ARkBW!5JBB(^l*V z&Q4;D_i7&N2p-2N3EX7{&u`Xg#kx`bz?wjTcpyzR!c@(kfiv*1Y*C3-btj-f^u+EX zMFeAj;wtU>ba==T#PFM}_Xgq*)qt1K0rX~`8=r;|YhP^GCZeD99+ie4?+%@|b{WS% z=4lmN9xSAc%~RT>d6D~5`|SQrV_2Yc6veRF*#%`*S4#B2LiaEmiBXQDv0#|B3FsM3 zH`K~9^^QlxbvlAJAnGbAq5z%@;Lth5sAID%~%7_^k*ug4TIa6s?}b^7Pvi}9FC$bAS0G>@;DilAbUw=Vm*%# z6Km$RQSYC+ZR;3l>G}Z(CTE_^ed47Lf!1@3OER{)5$>lv%0Sc9ItTA#C`Q)Og;M5T zP@aI6vkII&lpc}C852jRy~UWVn!KITrKq6875i88oa|hiBdTeRQ#j;__?y0gZ0AU= z%ugn*dSli(g!4~|>_=NhaRJ*xcy-|a08S>MlIBdgM&wIY`gHzUt?7{b`^yw)sXw=0 zM>AD*wN-@y4%MxG1hta3ATvFZ=UNd95XbJsyP7Q6C?_n#q0AQ1XAeV;fIl-x=JrhA zc{$ufX4`8E2_uHbmk~CqSV6~NVry@#S>`1H{{S+^7Ssh{2d~MRfXq$^A_ehJnEVfD zp?5WdAlz*i*8Sb4ULbuVlv9K2^7({h51P;W< zkEFl-#$^sQAL)&QPWPBcepNU_OLQKe)$pH00!n8LQ|&a5o3&xs?{0 zCa~j-HYSAu^d=&3ctR$cqUWQIga9sjioeiBua9vNcTFI&*B(~>SUW#O%&XV3A#J|m zYO(FQUYO_*X3_!guwpOj1Y)Fpq=?39LZ4!?#BYLe0{;L*`<}loirF%%&6mCvh~ZDP zWJIXpz=$hU?Q1-=wdrQN4PCwMB;))`(#;}(F>vhsMo$3X0;BEyCaIQ^o42v|^qRHG z4#WD(lDwg&!cX~?sIt8_+X|e3cOIbz=25VY>t98dj!9%+liczpRlXPxxSx1%w2kgh z`^$^hW}(Wqcnh`>;cFXd_*riAS!$32*FD7=g{1(fliT7kdkM+?WB6{z0a_db8Ah0A z#8xTSEvU$fPg$L4ZeX<@H;(3&o~0owZ=A*OnKa75Na*^)4evu%AKN1W6ewKy zg^vK{B|_C4>JR$}>ZQjD2P|Tm>))FQ?0kP&U8(qbd0jKiOPc!Abt(oyUipUl{Jt0t zye|_@+K1FL66`q!RQA*z)lr9;Vq?llVtS8_I%+}Or#KjdI%_P#gpaYEFscu?taJXd z_YI$A9p+huLBI!sVI&d56YB^i2PBWYpZQHf)*i#jAKq#ho#9qka)dPG>Ip(U#yOfr zT^*KXvFOZrB+WGzei@{ttfu0*JbFzc>8(Mtzr5$rd&RtHtZY4&b-x`(deWxdv3h@l zFq$_J?ucO053?OF-I;>!0h1t#|xT*2==iDe3JkfAy=W zx`qe&1_Y(wz~bZDe!r}}t!p}5`BUOtYW8|gCZf;8^sid8q2bdWqF9%mX#(U<(Z?MA zu-U5oM^Y5ns4_z1+I|IQo{V8x#t-(D;wc0}pMYYq{{U4^;yv7d(o8Co#M zL`@YZ;4UVd)Y8W*`HVlgQf;QttUcEq{zJ>5AQk(6SPEHNZVtn^R}KZYWb(PY8z=dimyFmx;%y93& za*XvHmDCO3A3}JHQz_?idohOHPMD+E$J+o$1<(~zCROTU;Yi@*5t(nEk{879b9&-y zZbRaR0XQ<26l@ijU-yb{6|iMOGq;Y+E4k{!7}=t-D<|B=Vu<@$N#mG^s8?thmf$Hs_+od95sW0rEX#Y^^KUGwMcpn@@#w#y2+LJvp2%b};^LS>D!S2gsNY zcpFLVA4#je<6+uJKAzAsCZYVSzrxa_I)<~x1b-a-I*U}+P~E3;N|~r?bzls;A2UZO z_-zll-xv)H{OD6$xrCVaW%%sQ&;-p-V6-Q_ao% z#%UVccJk@TS@>$|w1s$bPFiSRMf(P<{-jIARB1xrmp)Rx^Yaq>by|a;7jAa1^_O^n zb_Z~n*b`ZPi4%otTP(-iiK(*sA5r1a_>ewi@5C`7h4{%<2;ej)FDtX=XKaj>>I$(o6e;^a6Ir`MzI#IQV z9hjsauTe-C#{w}h#*TyaF?W23q<&T@UT|#3QO3D!Y}vD*n3bE55>?aM3=nWZA5Chj zmH;1RnuXch1MM7|={uO`vGW53Hg5!cMPX|V%1Pkn6&89}doz1!lBbeT3QXR^>QlO*HfY6!Z_l^*{9to^f* zmr>HhJ_SfDAbUq+byP8`p)3J)XL8h@xZ)*lDyup6&k)z++gj4V4t{^$UduuSY-6(- z)f|G3du(+vV$|3+pyfwAnE6WW3Y>Blc~r4dWsI7AJ%DlV0nMfYT8f7Q4T+Z$7HM?$s6s+w;Kg9}*3aQhld;Oyl&6Zl2;XwC+IAE&ebGIInl&?=kTSz0R zQ5tutmY4kp5QhS_QV+Q9GilUduG8x_+}2&4>E8p^C^rQxOL`1VJ6e_GPzS%H3`5f0 zjyc4Al{Ki#{RF|-_&_~H1ON;GJ25{F(;WW*26G;Z ze@UXc_Wo3#g6pe9?C@hB!t@t5{{WKXp&V*8`eaQ#A^R!}ZDn7Erwdk)3?FXi;5y`e z+n&PeB5YuJ07~0xjnhB822?B~uuRk6 zSktyPY5jQY=2A=Kkzwu=pIrS(fc{1zG5nd8C5vij4cecG#6N2VO^67WHM zgN`PpBHPPuAe{1Msj%bA%&-avm8>7d5ypkbhPED>9NG&8k{$S(HROtHu1?uJJ0%cv*LI%V*LS{{T#-OD=vQgIl>SLF_a5Ks7P}LNt3|rn7X9Ek4 zdH9>2`Yb@hA3VUdB9I6??#v5?ZpiF<#ahFUE1y#+FS50+v(UhlJ=Acv8k-&GG3@aX z4~ATGk7E|i*CAUSPndJeFQ(E{NT#HI0Xh4LpNDAms4EU`1RSY|^=b7bcUH&jBidN> zX}Sa+Oe0z}gt8+Hs;p3rUuZjchMRTjEOoPuo4Yeuu5CMj2MT@Vw=*csVH<&tF^Q{F zS|&!C*97C@S!K09qqp0iXp7?Hfne&g>U}=rXIn} z{4YgiBb*l*niu>s{YMCF=BNI>N25!u3!Bw?Gx05gu&P3JWF8rzH+(QK;v%i;a(9q4a5?@O4Rw*5zEQ0Y2}e9n8;$|`pWO1!a0E~+Q-UKRui6|Q^DOYHL7m9o z<~u%>oT_hbhrC4Eq^4B;*ny^^tLnWw?;oekrP8#1oPP||6IdIWEcBG--8l#Tu&`#r z8qj-iVFlf{ASZ}aG7X@UiM>jVz#;XO*yhvA*m1T19g`2Y&AGj%qb~i?Pw&rWcvr1(6~|!l0;ysOTS?%bLO_=9MHvK~?v)B2wDXWY^Pl-Z z%I{_=P(25%C72D_J+5Fo^)1iF-Xktl;fXw$P667)4iro99g8JIXZrsDSpNXC3U>zd zV;P7fj!Yzn;NZq$m4I%+;AR$JKyV4pBkikTVoAWvwNTu>vHN-MSk~#)h_Q*tBmV&V zHjoE3w;$SJP>coL+4PJp);VSgpR{IJRrcYCjy8nY+;uBfC~P#JPGv!v6kvZYJB~}T z_``6Jjdd6<8u&KnhhpSfM1Go*gCWBMrHq?6d;iC9f0sBCQa8vrlFQlf-J3kD$ z^+O%M5&RyL+dlgOe2(VV)0?uOFF(>cXj4sF1w-ASk56+y1=s5;ast>>IR=!fG649h5hULE|VG#MT z3_E}`IU^H1!_kZsJ7XpzqNSTd?Z9Y;^>xKW9PKbA1TGjq8N?)w+@H*+=n2n2Kz@o$ zHrDkJ)glkL{LMkO``3Ml7Xg1m4*InKI0g#^N<7F;>Ag@e!yiwG*=9K-=**f*hVnt` zFtJG6T4xHY{{T3xLo#9Zjv83WhTCp^M6FcgX(UAi0gz8oj_hv0f%Yq7a)`{O7X$&0 zy=A#Zv&)m~EN6b0JM?C^As2C6@M9>o7b*zv5g5~@;2&l()pR3aPRWW5mYf6!oJxVT z9vF4~;bt1J71>WJqEPB6<8V1*W|h1^dt=d-hX>2Y@ZwrfSJ<>;bPKVM_%gONT)m%0 zgbT->%Sii2w4~cb)$JAm_Mbx?oYV;K?uro*jf46{C0uen;lM+&7HVrt*Y=F3jo!in zE!~`tK{-L+>ksVi;E;MhFqXxnHwco^Bqc@s8bc{S0zDiMnnr{_RC|E1hg}gf(QFbhSGANP1UL{AyrmB zcE>05l|Jy;Q`BSrqq3O(@r8&G0;93-H0Ih!D`K$23`$LV9~Fif62;Th@0$u%IO1zx zP@0t73(A0dEetHj@WAO+DpilEGNu*X$s@Q{!Hf_OBnT3o7*4593omvGb!)l96sRN$l!jnR6Xt<~k*7&5Ya}{7rLjb>T|NLjfAvar}#!_?3PU>wgU{dmJ1EMD9^)du3vp ziu5i$nWfVoP~os)Q=0)Bc@tAZE53FHMg@HCipc8QJQrSp8I=ZN3y>GHG_H%#;#Bh^#PYR??JROo?ZG%^ zF&p+>SWl<4Mjm`Iipg5PXVw<6d&nIa7nB$$XnsqcH?IFGW<*I~?g*_28`PE=8U=9cnF!4ut;7!|6 zH=~2Xv>@KY4PhM#YA2VlJDh46jAA^15Fue=SCNl+gxv4A=g@o1I0GD>vFj=u%Is$S zePAQakmi2ZO3$>hA8DFv3MHFMk5!aZD0;vuerATt(u2IJ%{rqN@c?7?iA!d~$j1T% z2CP^df3&TVj>!3*YAhZLf&4N2MWOJdj)CGMcvbema!f6?h{q_$mw<7~~9cUhUsy+?OmOZ?=>w>pdOfVQYDW3Iy?7?s8^xRTC_Z@p~jID!2$bY-b~UK!t^~R zkegJ3Yy;A24Mp}B&!WrH^;QJEXSMZMntkm3Fo3nRqP3R;j4nEt04p1n0X&Il3L6Dj%~%GpypMD31Jab7xd)t>){3n= zx0B3veA$Y@KXka%$lWRGekF5S00~|JQ3~4XxC}VQ_Lj2g)vy8QbkwL89mF?g1aiE% z9>ywIRFPN%l+1OnP^p&(jmBoehmcR(Jb;`4ePyaxA#VMk4vW}P=8U^>(~hPYh~-m^ z38>$@s>y{sRDm}&n5-vkvc~a^n?NJb49s{U&)U*Y+wx_D^nr{*Mm_q8UeZdj^-~>7 z4#5$T>pYT7@a=4FO@>Rgr}9H<@qOO(`9KEc}J7Id=E!H@BAh)OaMS}6B3TU}+box>-Y_{fT{xcL~4 zAtzQ_Ep9%~fiBvNHtueLmWNAD?EC(aNBT-fe&#dsyMg)kkLAt*K9II5JBp87#sb>> z;a9n6YTO2Ng%OWo&jL{Tn)9)U9hjRa7H&TfT2*XNj-HJ?OKPa@9>mMdOs5D3q||M0 z*m{^==PVc!IS?q*ft!Knetjhs26or#a87(^fJJwIZ{VQ+As|EY!*1^PraN7 zR0Ll$8L@yoIe=Ojh(5p=q%Rl%%8f2KXCtsBg&x9Dan}<4tfLLznpI}mk#jual6UMc?o=2qjDKd)0ziinx41K65VcZzmWU-(Q2 znxgywI6O@)Ro$i}vjNXCv`V-7j!t`r2$=+_#!t-BEl#U~%6mTXoP_V5j0Kjlh9`}& z)duNZYeSzg&n9W^x`g0l^)!}ISMn#@EL%tbs6o`lBDH2NdnQ}r7xJ7Q@fF2r*{p-m z`HuN4HkUmgc-}i_mQ&2N{{Yn^0*>RZI+tnItY)wQ9LiK%SCeYua#%Nn(R_?iAGLeQy8FNn+cE+tr6ysk**#q^h&gPn|v*<8zzS8xk}JDwZ1 zp+HbiKy`_B%Fko1!fA~zm7FT{NQBmG7_PuLZ;83y$HNipDzc+f?G8_1ANGX{T$@M- zgNfx!e1%8xVrkhHobRY~PCJ!zjn49#Nf`mgTaQ_+DXCS>29t$iJ?62%Z!Mt& zy{)u1Rf+q4BUF~R4#(I{V6ni!Bpj@?ps0~!`|;ebFJta5dv9osL%6}g;2Ev5%KK0~ zrK%eqdfffd1BUF5m)>bhP*VZ&IhG=6n}$c^%TpQLs1I{Ytc5>lJqvq?0@ivD6j-RB zgzJ&(H3)}kQcTtO;MwLCpHFd^j{c_SJ*-sb%+^5X{{XWTuBa(21a)*nlwai#F+_7~ zWOK}R30UO6QvU#1LK>B_**xND_7ZR`A|-Eb;I+8!c`eZ(MF+N-3YWNXqvHl|geLY0wvDp%p87c#Vji5^!;df-5%SA|gN8(wFUBPlkAbdjRf&jd4?nM6pjH|lhdn_|OSSo|>GS@QTD3mK{-nMG<(8r{#*ja}p@UaDI7lvM- z&XTVyE_o;3QB$K0paB%CShzcn+9BU#u1jNy%Ug#m4?xE7^wb^-e;>5dZ@$*rEIzC0 znS1G!wl;yraRRlj*#(YEOW5kr?r={VWvrE2o0OC5`oyZ;Yc}FfY(H6ARc&X4Q7T*0 zehp4K2i7jrLEdgBK2y+|#j)F+dl3TAM%v?lV$WpmGsRR;-rDc0Y6q z!>^oZUQ9IK~e=4u^u)L2*Be74$GcJTHd8D*eVuoWxWGNFB>f(!f01unf2=^U~x zcyr$46ytd(BipH_Rb)8dkGRc0hp0}~dX=luoyq|2I+_(2BEM^qG@`Xt#^QJ?J)$o9 z)Vnz!JxYNAyr7;8sg!8Ph9AASm(_}fD%sr)xbJ1qy!2bXeu-b+ssPAkm zSZ4c(fR?duh9v|HsRz9kAZS3c)*AzG22#AECaq@uRcfw@?6#}N_ezRV2v zF%=nUV5@=Ds|C}O=tM<&hyijjfe{BmT@P8CQ7lg>_xX;9r?LlU;v?N^j3Hz1{{Sd_ zKNxNyM+e$I$~s~Uy^U?qWA>Q9KFl+P$joLIs_twa97Z?;3%K^4)2;siv-UC4on^<7 z5C=y)S$of+j*P~ zt$0(0$0lj3y%#DNr!5)i)$jeKeHDtg*n^VC5FhlV@pWMIB_Fk4C`^6J^C<=TIUN|M z6#~zL-Xk!gzuY2MVfkNbRE#m?W0{W-SyilmXF;#h|T~fzXINedaSY zmOo&{J8}z*%IQj+@t)$nwL0ed>Je%VrAmZ+lo*9=W5CaGM)xH_bDkpZ(i->-KGJ){ zTLoAJ0QAqS-f?EqTd*ZdQz~UZKYz@rwDr=zaqQ#PYT4{!*d%&pX#)|%-SaML!CpZ1 zGPQ1oNtdFV##J-GA}+&EmCE|fIPkabB|FFbrLHKkHg&)dy~^n#Q_3>sgC~u zSj=s;xdC`tm8}Oy+6J=6Y*}7-M;-qFh^o}0dBGoP_7OIOv;mW!DV2Yz)H86;&=Cb! z59B<7`at1nIW7+jK4Oms%C>~-%m;BYbmIoFae?m*PyD)8rvK4^QhTVAw2?8Ea?5jD4|jYTQcLJ0lXW^(s^~fzCF{fEJb@ zsLlk^_)EWO-g#s12yo+b`F_(21+8#djI}Kqp@0G9W1<#d5ghVy>l=OaFTUX&6i_qQ z+b=gTas~!}%%^xzI4hWOXzXm@M=s0du=Tt2i)cO{Ag|p6Zc;%L#k){DRjZK(YEgn4 z_*>#zvh_Huw`Mvm%78PEaqlh4;ISmia>Rn}Is@V`+_m75?GX4x<(W?;O)Ec`um{+C z%~y+Fp>oI$N_&Wf1)fmAbBLGeyhD?9slfj6mD!Lth(-@T6Gj;bBD>ehW%#nS+G?=k zJ5jLUFcQUQMmQkzE6aFzV--NpV0ueDWOK^aJj)3+VnzJ| z!!9_40+#j+vV*7F!k<`e9P|X!BI&IdQV-h0?o$|dfTOVy>}w7b5fZ92$iWvKu=kZU z$w&bK7|uJ4sbJ`=8<)iK8Y6Zx2gF9GYypc7W=%*BBlt|PcnG`jAlZZ2_LRMqpe2qo z6_%jH?Ue)_rIP(c=Fye*5y@|0V6v8BwV3+BXZoVJw6hbq{{UFKy;Y+*a=@q@^k8FG ziG^}L+{+2Ilq#8*)Y{#jX|JxmRVV>L+L>q?^iY*5^#1@eOv`$lR_ZR2&2^F=-)99ZTs{{T(~&;W>~_if2NiEhTm<=T17W)up_ z_xB%2>Mtj7Bek8N+Q1I~09Y%>Kp*ys?RXe^4?9o9Wfud2rfJ;N#aIwKiDh=_dqAJ$ z#iojUFu)PXIfPwa+>4itH?LF0(zvr~To~n}z1VInZu$3u&k-x%jD5sF{slJiQ+xZ( zQEeq?7%qAO66v=UgXu1+^|?0@>ZWQR%y6I#?EPYb_8b<^1bj>0uUg1ZLH_ejH8-=D zAx;#gem!D%P8S3N*BOi~&fpY}VE_R#T>=>o%Z!sZ>A}R2!AG8g}GVo1<%%k`~nJd^}IWY}2_q!aQ zh^%j{VU+Z|#!G5-7)R|)vbC{*z$4mhuz~zM5PzgDwsc3Kiryv22|k&Xv1=8)r{B_f z9V&G|1U?~Ak|VNO^@6Ae0Onb>(5?afV0EzylpTYJxY(FTNUUBn{{W^a54Uj71c_pm zP)-2sh=b3}$zzMD0QCJI@5DPDlLb#|V8}$;gos5ZOMTZg2 z_IwPUgjHn@RFBeEmn5@bbRj~w92Fud@sS7-xpp9uJ*CHBeWf7@W!7$E?U?O*AnH3Z zllwGLH0y0d@~h0C1aY}?IuQ`AHw}lmkl4Ubco3Sj$=mzQM%K86Wpl?Kzt%7;&%qw> zmrL#1H+oBIe{wzJ)XMe)S?J9=f2Lvqf91zhP*U;>j2~mvA#b$~VHcx6KzmHO^iT=i z2g-!Y9W`2!no$5bKQTNez1Fr-AV?xE<1<7>sWMEAB&z;^OO0 zF9dr^mY3*~al0_9FuN&(_K9Kf!UhEO+zQG^3ZDLvS&G@=klbSd+!oPs!L2K;U%c_e(sB&p5^q$9-u zt0$;4Shg}(fE@FK+_;jQVr8s%Wmtqh&pMf>0aW%5CCGq2A93>)_=W8_$YCF1(g&4B zWyK4qRs2Mz{ao%O)d!8#JlPVVKg6vw?(0j)W z8NqmQ3K%fnVOIp;5$_ReV9czbde0-9cyfDEVezbWRxSF7f9)jskF;h4 zpFNo33a(we*<_&=fZ!qQ8CVKq9X)Ttk~qwI)sU7hrz*?+C2Y*NU|WSIJ`Gj_ZGO-S z#`EU_QRX8I?a4B$bnSzSlpYvLi-)){x%l3KE3TEg2i|Uf1@?fy`@`XFIaEWP##vcw zFjy}oKUrffmOl3&@C2+rsayrY%+&w@+!2N{e_2z1sPRp8k^1BM!WTCyI)0N&b@zdS zP~}g@Qq-eEQSwrw(iAF`?oz&)mM0(!5HFah^%CR$qQn0H4bKWa=Dwh+Idj+PEmlNq z9P%cVKA=^xD_(*AX{2}6YR>cwe$@RXJ1wYrk;XhhGpB7R4`$={N`e$Si9BwM%*u9^ z_2vz(7jQ4sP_}1iv<^hM9qd&D`^GGo^Jl2Ixenre<9FN&;0!KDQ&UolTZJc>iC&<- zTGQ?DVo_~Db74W2A2D9mWb!EBXXa`AIy1Ezp~ik@lnqL_3veA`B2?%Cw-^Kwktk-U z9vyk&YD2T!h#9(2&55g5t4~rnKR&a>s_g7b046hAsIYlmeI-EY_U%HWE&9t@SUUA#Xz?`r-D8rT4)QFD%rzA*u8e0-!j_L ztl?1xOMbHOwN&9ye>Q!D3~H-rups3}r}v7A$UH;@XE^@=-c*d~nrsd+{j(LSd=X*+ z=_y3i6S-6{>*gZuahnKk1YA%(&Nk=b1{my-=?*H>9?0d1nx%bf9m(Ym`hw?cYhQiOP$Z3{`#7a2U&3~fIs`v|Qy6wO-ApqJ)`08V7013~$E-TxU#t4kcrN#l~F7v2T z3LjDb07+XiWMB?)3sFYp3;n5yorfB?_=iQv#OGmf(^{{Z;P!;OTJMsbmk z{pR7QTQXbU;$h8?xd(e=sk;OU%)qb+$%h#$?F0C4!zeJd*O9^z(D#_E1C?C;&>W)e zRT8uXA8=4|aUFKE?g%^PRaT*E`vDxUv}QWfSbT$y#5=CD?q?p50j9A-K2NS?1@x4z z_W*Z}rjoLjWsul$v)VEc=fn$H$i%R1PQyfJIN%e&h+fi826+C_z`56zL7ao>9NSqr zUys&RZcuKuLvYcPU@YN5>-7@AMQ^gT9_Ar!JEs6PHkopZE${hP<`f^Z-Mk)2_=sKY zeW0+xjxnAW+XvPbHr(Nbg!RO>rlN++J!^*M9BKam4mMu5o(~-0n53ZuM$pjk!{{V9dMyWEzxMT4Vky3}Q)y^_~4AfgzpF1u9_C6&AbhSV2a6HT> zIs!bXN1Hz}{48SzGZGO}whO=tG1TW(NXT{=C*$TZM%Jd(81EBHb=6}V&}4Ho?A4yp zkMNk~s9Ztz> zAqU8zy2P+O6};4tkL7eHu@c9irzy||US5ab(!G2@STVy?PbHZx!w_=<*L7&AVNYT2D?SJr3<7pkKKNCjmdI(cIezD8xE`6;{hwU*HnUCyAKk&!E zlrmqZTwdikW}3!LVLn4(!2Xil+ReiOkl^*7(opYOxo~#<%>k{E_XS~$g9}#v9@6A; zd6b3?l58iCJ)$So-8e0;`sjvFy~bmM0*8lOx98(;X_+7(X@?-7t5 z&L*KZ<9S2Z=^RsfSf$p(o!t6ON)5+7!c_P}sLh@6+k@{Jzv3(>@A?7M1O5HQXHUORA^Zj8zVSsjLejjm< zVsYi2`_6oVB9{(u#B&+3g9e=t6V2PjNq#Pvo5WARqAB zb>dFbdghlJxfB(b)AQ1op0s;a90RaF200000000330|WpO1riVw6d)D<+5iXv z0s#R60Q~Diz`^)9GB*xi4sU6T8C*H7YtLU;jbd0tdziAsM8TqhDpHBmXJIBH3_JT7Bj35@8H!exY&1%)r$ylJC2_Q<))byAXc;0Jy zzXSA7WFtBV{e1%U>#c9Oa^Q^X)2PnEPhgP9FZTY zAD!&s#~4QT4)@z_hsJ;dD%FO+f<_-8VK{sb1)6w{`scLE>_!jYcsu|C;5+Tuv3~u# zmfw6BJa1r=<3MVy6o)oRZTTOK0i%*MQI_nj46{h(qWw7?uk4 ze+Tjhf_4kZ?biG=nRXj0-iE;wQkEU~(x^_Peme(-2`em3A&1iqPmwAJL|q)TX%Jmz zwTJLLoB^b1f@4T#_xntT7yvV>J#Il=mTC(V$R@>z zBCdy%;O3QZ4#l2*s%G9!ex9+3=^dan_@&HkI834HR!1 zx|EF~s-yBe7Qg_)Os`}WQH7dQBQY{r+GkxHNtMyI8*K1ghT=4}CF6oa43)lkAb4Si zCut!_)wkM6^pi%B$N4@9*j}ZYc_xwi@7M`q#if_n`2;Q%H>bvdS_v6Mi!qc)l1Dsu z(%(s*D^ah@6gc=JC?oZR3F{R_L|@T8&If7SmF{NuE+S(}_6@@!%JcgWhB%`;thLrd z_D3;((X&b=7NN8Dtm0(8oR{?*k&fB2lJB~`nd#V$@vtUIdvQp>vyYWtIH!6r@&k`gL&a7H$Z%s! zggtgLcDD2)F+5V_gsnMj!vcRkh-z}h8cz*qgUMntxTx|g`@N|lNi03{aLm*FLRPmW zm~G#?9qFEHUwtdTZEiwtVlHYs@$*BRPEjp2xaWE7$y(6LlT3R0G3PQhUzsQ+2B{w! zIOzDr;=hu3QO5rOGx>vykB&4yoBYp$YJ$JV@eVyHOGr{RmY>XPrB{J-X{AAnFwLZ`|qeE$G1z#vEjKBF2Zq##hNjR1vV=l~r|KR==1L|B9-0|Ph9s8WI-ooI?JPCDxViYfz-YF|5|C`F9N>JfmI)~moPeBUq3 zYka>q&GY(9K9dMdYp+8aMguTuU1wWMc-i|Tbg zi{RkE%OXsV@Y$;-2kxO1`0SHf!z$V`POF-T!;&IJU@NVUYP7A1D6_oL8u6@Qpst>;SxFPu&_bgm zWCc-DW0XS?iZ?gfVh524O@mH5k;oUo$#F)@{sEDpBnOd~#IHmQ3$0-q z@vU#L8qr-~@)$IU3%uh7R~I85A|mg5(S;L>Q<~4&Da?w00us8KL^a-FfxEU>XeaI) z4iozyf;2q)Atr_B4AILZut?LX)Ql!J7Fw;zxSne~d}5iuc3RSc#c&vHOIg5aq^l#C z&xz%TgAKKpMGRea_||XnrSK<;%$&5A=9pT0A4<&xvfYxMn1s;CBrhpug3Vc7)_ScR ztkBLRhIizBnP({p1Vb3J!rmgD8NoTPEsPa4uf#AX8tFYUkQy}~fs+Fg2hc4qEj5tB zSf{52%y;(=MB8+Z%#wZo08BwGt%a2;y?82CGFP=%<`rzF^jRgVY@8>)HY3`THKB(X z)1U2;i^C%2K2Q61B~*ASE7Xn|5=%hSLC4i=FNYmC$K)*6g?M{>D(4%`K?-rOQKdpP z^U&8U!>);sU-G9a!J+R zNh`t3!5pt0C~wsXEaqzORwZ~Nvm2l>tgy!)%T7gCC6R$G79dehQ6u4o{Y6;vYBI+r zG?@jj|HJ?>5dZ@K0s;X80tEyE00IL5000330}&D-F$54nB2g0{Ffu|EKvH2Nk)b3| zQ-QJn+5iXv0s#X*0RF>BUy=JZ{{SansWarC;&r3!aP#i+zK$PN7*pTLITqkXjrHv5 zY@BPeCBD3WY|#GzHorxTWBi?THTgR~5p9h(_8x~-v}teT#+g#fvtC4wenl%w^dIZ5 zb?&{9A|#SY5h#=)2tuKIx6&8y$Z=XiMNsG2)9>3$`v?7#V;INzSjX)D04C8{9;A5E zr|0{fFaD0RR=x~)m(%$vztqw8DXrJOzg>GTW-^ED{{UH)lj^So$4mPb-$%tezLS)Z_CP6QK4bic9 zG`k&_Bi_yQS7{Gl?D%4(qVW8f@^r~-qHT6uKD>TLKgjIUk}wXV)R(3k3@N=MlhU9m51A7YQcv|^pJmZ^N3rkIlGOsswEitl1*N$i__ z8W-48`%98q?UQ~8zk$l!k9r+3=w>N@Q4!jmmHVGw&mzw;$;!HC1*ZL*@M&@zKH~OX%DW*7e13xVNY{fU{Ec~J zi(MB*KO*@OM5IT{B?;-B4x*pfPIhXB@^So+lR~U*FM(2RkCBrj;%>OHL;8$)cA((2 z#=H1FSAohVmy#0|5iFS@cF`YVUbIVnk)kWZHiX`ZdhGl<<0n1xA=eZ~+?Kg)nq3G) z&ygjvWKYMo{z?0jCD()L>GoEW4#q`%2AQ_#!a9la~Ui7A#4V z_;k?o?rC^9($P6DZFar4Mws7`=-j#2WZgfy9Ocs$J)2r%o$+I))=^8;ldTTp=_?kb zt@841sC^obr1;p}EwQ(`qm8EwyquA0TA}Y|S$tFI$>6!%+weQL-)Gd+mH3-QOI?-2 zMPtuc{^mub*_m`@Z|W_i_EYjC^vry?lD-H;^5TobH1)FbPvS~Bf5lI+ERPyq2anPt z@jXA(LY9d2A6s3R)2uRuGuh5`jMBI@(i2^ZCFn|>q-~~sZ`vZ7rYl=a<&9hNP0vVP zo|Atk{{SPS>s(LA-`r}rvSKjM7)GS#!KayKx{jA&CV&nBPRr8`3){J}FCmz`sJ8X{D%vY11$?~6q?)&gdTV^_y zszxNgaf5qwV980QVw&RFi(W-ezUaiKgCl~RPw7TAOVo1jUJ0sHyt5mHiTE(!mo51) z=7yxp={YYZy+g}0!j(ky#tvWEjS$A7oH1}Ko0HHO>Y{u7n z{{W*NxUG{i_@>#vGGD}*zr@Y{CTjRH{{V@dbfnI|iJSZk&%P+mzlt-j;*V3lr5>lw zm;D~6?2l0Vq-Ogg5g!DiNkq0tgd+F!vm<=D8DH`;rv9@k{zbp!Wd8soC4VC?`Iqx! z{{S+z)t3)WhyF(V*&jAX{{WCp{_;FJF!^*~UTE~Ge&f=wKW>O$EZueoqQR;#LK?qbo_fJ_3f{0e_}qu zzX(a|M&7i4uV!)_lx4pR^$YnPp?sO^%Q8O<$^J%fhG%~!UzT6_7xx)MHiU)tCcXzF zH|<0DUeD}D4$(gd*TBBR`ww0UU&Mc5uY;ld6jDY)_EAr?Uy`e>jaO_!Rv}Q4Dujuj z1afVX-o@|4b?vb+6QkgR8ThHW6s^$`LNUoZ@I&|~>_^yz@IrecpJ>Hj1}%6YR+1P0 z0Iy_8A|#SfgdqujL?LLC;cuVkLdN%CS#p$kHPmQf-aXCx)#b;E@R-T5t7JMQ@^;@-)tUAM9l#Cy6N;9Bme#)Q`k^ z8Ie5~FR{IQWZsf9CES+S((m)N@>ksK=3{oKoH-hm(WEh)j{V%B@+T~=MmbxN$ALNQ zL$%RZ=Wq3THTe*U`6u8b8*bw)LdlK43zO?&n<{h#J~_T3J8IW%?b_o2HR>tp>UzgOhp zMPIz#>WGxM`^u%rW;y!4W7W+5ge(U=e%R=SHKId(jgrbWOf;b5GxE+PoPm`Dmrz!4+Ro#yKwn%R58R>n8oyDQx-> z(C6u7*Ivp00A!zf6xw@H7aZCLe@qK8lFsjJBJhC}!YMzxF2Ue$8ZX*tSL~RJ@9wkvtn-PWk=EtuBe_ zQ%J0I_`RcB_R=EWnB4Te>lm$eC;7BhwZx>m{Pmi+p?p5a6y(KQcppgbVoZ-+mGd!9 z2lqJJk`(Bge^V88B;s6C?6+Kx_;^D4g?M;oUs5!Rl=zuBc1~#e>qvf|CZzdgB=n2M zl0{~GOt_OxbXC$RQx_D6$&coe(&-bQE49;q{{TjotI2<2W&K3L<-aGSN%Bm_ul_OJZTU8ZmnRBlD2k@cw|bS? zdU26{PoU{F85T#=MgHXQr$vQ3{j9`eh7hY|WDb zx$?_c`R~86g~!zXqM}nw{5;%tOOuwVlTVT=8-tdR;#VV=)IIVr+;1qBPAPpR3x^5! z@v}eSJe0ab+`TO{Ij+quqttrc-X6HKJ}h5}OvjBrbJ>F=aZ3Tz6)WmgR8p1MiDcr| z_K3w_@s;WQHsq|;JUnQm`7V*3Ju}9<9;Y<8r_=WT07dg!@LoHbPwB6NFQ&wz5$b(a zESQ#$Rf+D*nIrKj>qbS6n?h;qnYmQ=q20P)v{^o+k5B31al+X?y(QrOpA^hja(`25 z^`rXa)p#e<`hCZgYujcz$^QT&==7Ok@V@o`0H$cSE8xGve24H|t!&DxO_?%2DVgI3 z8GV`kJvB>z22Z8GI~`);*JR|rQbrWkN!aw?*xc=(R+-PG*^-myZ=>kqGi0T&lOpSV z4{pbilB0>~FyMN={>BWih5Uc%f^fgVpR3@E*rl)DU9NNF`ndA!hg9#hdTf{@Z^>9U zn;kACJWkG1lV@9E`5`^Dc4eqr_&LY?jLVDuIPhK0ogAOx*^dSfqIa+RCo)+gdZYS& zIi%I!;;xTLQt>H0E4p%L^tC*1q56cCk+hB&RyK^v9$x5g!N;fU<+RZ=lj-?1CtDU3xnsA#0H=;9e65} zhQ#sxCi`NPCzW;4QS~p8OD3mt;K`A?rKEl)N2FX=X!`d41&OOmf9Q;}s!0)t8_4MA zj=Sd1rQS;6fg!A|Jncu0RsU60s#64_{t_APyke@%o-F8 z1J-k$%L{kJ0HO>Cl;qTiM1vCn6In8psFHK>jDH-~pmn)qrz(W@5)#OemfP-FTPEy* zAR~$t=CVo|EL%j3=JN3EkMhUatn64D=vnLOxsa_y1TbqmZCaRV<`oEv9kuczqX`@X z={e^Bd`eq)oSM(T=+uQvymTW4g@|JqF)`3AKtMx54RzN9&fUi0f&ZHI9dP5SY{-f;18Om1A85V;I0kTmg&$@r(gk z&Ou}4K7azZGAHQBP^rvET9J!>@r`vc)JGTt;0%8p_Qw<6cQW{m8qRYVn$9o)>8tgH z*k|y@K1D~MM7zyre_vqT%-G}JbMc>oL^LD_fFi#TI%1^=(yk#s$ujiZORzCaWL_8{ zzU;aEGPn#a6965|_RhrShsfxiL_I1N@U{pF5ZAF%5=H}Kb?dmGG{A@$1E;@uM%{F3 za>CU#h!qHy8HwlXV?59TA$T*P1fW0+U;;j*rXa!$T=9;8?8&!Ol$FAM!Lx>diJ39k z=yWKW9T{&>fLK`+K!Vd0hyg>R{6$GpT%ikyT$-C8@i$HkY{e+8jBz4DP;8_`r#X+2 zMvqws%pqxrt#s5uYY>DrpgYILF+g=C8$yv#T$I@hsn0Q>V#!Z@=WjyeF7b?3Gzu2c zP^@EKuok81^?*NyI|m>bm>Wr1elcim;-)JBB}qe)QRCwzh+;4i2!*h>@$>Qs2=VbL z3Gjl1W8QPMWOOS6jCIB+8qPrg3{VHGV^bf`=i(RVrT~(H3Sy9f5&*^k0CkEZ6k-lZ zsn9v0@fc2ltaXh<1OU_xM__73xW)(()6Y#r3bfQj!$AO|u@5i^(^53hTazTw`Xf?=NC-kzbGZMQ{&Vq&wMivt6L zi%Ua&3w?bz6W`OvaL-82fWRP*w-X&29cOHn`1u42f6w{+BBG#? zZc*n8Z_ZKRV_NH_0xC-R5b=V-^wV4z!Fbzk!wW-0y+dU&FHrvga{mC(AM6|L>Fgix z?eF@(L3CUl=olaE>RM|6Rwz_N)x1hKe z0pZ^M{@&i9p`v-)Vs;V-J7+PD1aZ(7tDQ{z;;=!809OwFW<)H-Q;CLwLIhT+O_DiF z3%hWj1YoO_ipOGNVCSfa#4E@r%mD*S27*n!x}Lcs@)W5Mvz>`s1Yt0G0+B0|B_T-S zdAlf_bt(pyQ*f&<^;VWCyicbUV|&6@VtN!PP&6tA3==XEG6ytz5y~LKXep7E&85}< z03++R+iVDyZG*>FytgUItn@_WCAFwn9G54_aW($7IR5}J{!5fKiUf2z6f0hYw%ANC zGkvHyIW1}xCA9IJg{7n~B1StDAYpA!msU}{fQ)BYl8StI^<0}&UYl87xT}sFf=qFY zP@()YkaLkR&t9#?%%I3Ne52cMSFEVU7BjXm*M?6uYihR&#iZ_MSop=Dy=An_ZNs{- z9F+Ra3IqFMh}Oa!t6%{%i)+q4_p37wUJmBaCv9}gnEl!q&%~wSs3AAqpb)FjcB$6s7Uvjp%Aq1zSIiUoQ9E zb&LwPN*rC(5nk;t7-?aTu&bV0Q0vN z*QsN8=Nns&Db?zQxWbcl{{TYnsJ?QL)QOMzya zYw6lG?l)Gvlld6QrB@D7ze{(zxrO{@hF!C6J@+=Zmp2!jZJqxBAE%$4jimU-qQqUG zs6}hGL)+}GO6`{GTO2Lq=~#=&G0=Rj^|ZaZga{lx!>+F@lDb@8Y~qUx&N4R)pReeD zR@Za6vbdim$~f|~jjffk(NN;A?i+ImDb3`i+EGt7a-9T!$d#qLojDTOkihmc(A>uI zbj7J$pB^TM-Z4sTA%S-nJbV<}74j-v?gg_M7`>>8v6PC;=+gQoRJV(Z$%|XGNJcPAW64X^ z1|$E(04@;#0s;X71q1>D0s;d7000000RjUN5+MW-F+ouiAR;h8VIwjWfl!eJaiRa( z00;pC0Ruk({2l%HVt;de33A)nq;lC4YYm!SU$+LM27fnmA4>K!e3|y7@P#C9X+}pA zC{Zx>8!$OM{x&^~V;IR27|9YDB10J=jB)nk;*DJLxulK%0N{|2y|0oGh3-jZnzoO- zNuT&9_-YFypS`#BF63MI{xT4S_$oURmtST+=lxf*P#4~X_`R3l>SB)EpC`*bO}+(@ zdyBaVbo@m6eF#EgVu|DMB=pboa6Q^mHZM)bKd1hPsI% zBeEpPF^!H!mA5SY@{t&B`DAi2^r>|*x)NKOMUBMz59?7_Lu96f9=^oZ3envUl00>fNBJJ;dm*lw$PpH>MG44tzktnf} zXl7RCmasIkNSP!)QkOxJW9}gf-1(@B+`aqzw)$7K36OiS2uMN@g(gIXu7p=XFTZU4 z*k0x_kLg^P`94fz87~7HVHtCo^3RBZgk4HYXxv*(6AjB1DN2CUF+Q%`J(kX?;e9F^ppv z$MipAf@y(dRDlhv5akwx3}8gBraG+`8Oln+(TQTG1&6D3nbdqx(srAkii<(WQvm5gJoFi zM>$X1K8Uf$OM3`XwlQTo;*-koe~WvH=x^_8X`=Y=lB?7wYTTxk8!L_&=NBf4Q6ZP{ zKR6=#xOrP8(BJDwQ5Pleh`JHLt5_3}Vy&cTSupU4D^V+;;bJ5|a(uHK^4}v+(z=f7 z)pA?;GX46j6N_>zl%B5LKSi8eBTU~zhpU8weQ~*8@#y6Wcsxk1>L&*FH~W~!?^zma z1YK@&dyiYmDMwF|nZrzq+|;4CnjC$J^V4ocTpW=fO}QV= z@LM{yHcr;7mtm9BgvA>3_)Fb}YEdBy8^=M;Z1m!vg84&CRvBfOQ|gTmb1NLOPEAKi zC{4#5InwKttlXpgZE;v+o^*~iwD~ql5EP;GKE`CCg^f5A=FK%UW_+~PLyMRRYR$A za@X8&mcy~`WtQ6weGuw$gY0RG_S=l<=jocKmQ_?6p5zx0^mG!dEX(BMSm!Oxw&cGR zwvsAUMog3%Yo{j|q-G4a`o$JyuJ=V_y@8hF!?v?Qyc9O-uA>ksGHi zT@om+9;9c`sx|0KVyW8Y6@%mK#Ijj9s3nrw%5za3qjN06XUN-6JVhffk{Q1x_qeQ# zk|hfgWws=XXNbOnP~32fXi5(xVP{e@T9Bu1`=MtDeg|E^FoDrH%9te*n(|7 zqmT7MaoCkoOm8}tN3=%?vQ{+TJ-Ja$IbYaH%txc@S6o|L%OZrFyRqb|Uke@vuWB2j zSn1C_J((PShd4PjN~fQExZAWM60JosQ*5h!h^cF>?1hxlCESk_FPB1r#3~`ipa&L%DqI$rKT(Wk(F*U{>G?aQeu2rluoQd9ZAt@QI5>LZsKqf zf{dTb1$14azhY+F80PVwNwbFG=!#3RO_V}aKWim(*jx>gmvb{(w!p69C1iV%=-A_l z$7~M7dM`0Ag3J+fvCY6r&!1Asy;JBYZ5eDh)|@+>3yztrNQ@@o7q?;AZ|uS&b(&kj z3hQ!<-4@DAN;Jj7L@bK(C&WF-tN2%`8w7GZP-%5 zB~+}{(6anW5iFJIXBa&trU&^r()UI6R`fDe>enu!(xt|x z{{VDK*yc|JxLN2j#N)XJ`j}%HSmnN1!b^ovWFaK$dp>y_=vH?eDt1BcaO#Nb+CrRI zxMe7ga%_#MPq`-KhNea*sSK0!+`10ywb|H$d7kgbV>UUmiNVHCe#NRjs#^<2B)3D= zxrmo>8`N3D*1bc9tK%iP!d)MXcNeROzxp_O?QUxW%ITk2CDh0(1xw=8hOcxA4+Wo$u5 zQxdUF?u9w)$Ha=M=Fhen^j}tq#bg;CiypmN`>Q8`Zg8*iz_Fqx^CC70wH7-%?dcPCZMmo~N-}j&1Bv z>yOKJMuRlz+w}*n9cSQYG?2p9ZCl5|A>Q$lP?pwjN89(|J@Yvj(A&BgUWp23|jB>Wc zn3JvwSR0d+nB{W8l`M`@$nd{orpzL6SZs5eY?ei*KkJoJTaGETHu7b}agLahQ&|yft}?`41XOYQjR4b{v`~2&rRYpHEF|sbuA!(I)=@^g>$^tz#pvt0x%h zOt(fB#kRvvp~s3%jmsvvWQ7yd#cZ;P{gmQkyylo`LW6~od@jq5~?4|qMlWt=||tFgn~HC$fg z=()g_q~`W3lEXxE@eNv_N^eeB6jH0@VHf6kv&{*nfX)#k$ SXiW~hX=AbrBb{xtWB=K5W|cqy literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/assets/ai/ziran.jpg b/marketing-ui/admin-ui/src/assets/ai/ziran.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62907242aedecf69d5a1222b0cd5f1deafbdf2ff GIT binary patch literal 124202 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 SUv03z>x(~o`O)k@n*Rk2oT4EB literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/assets/audio/response.mp3 b/marketing-ui/admin-ui/src/assets/audio/response.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..51ea86ae5d470f6698cc81d1f9b3f9981b66eb14 GIT binary patch literal 3070838 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
L0|J>jh*Z=QmTG*T#S)@1=vsx z*ySIN$yS~p=)d&y(Iinz)DOh^n(}6JM$DBZ4q+4hFBpYj5wyxM8^UW+bQa|<>lDy^ ze(uc&WNc*=)ze~J8hb3zbM>`Mz47KzfX^QXD*^fQ=-jI}k3OgZ2|74bKhJ{nb2ViS zF~62VcEHC1!2re*sAui~+6s+bim`QF^8-(*@f|K>^$$*}-|0X*0XGL zd(ED0?k`F{KM+Iz8#rkNoPheS?NqI7Wh1b;Z|l-Kz-Y(!uP@yRIY5^LaAol$4c-uC zj0P~Q}Qo%SgyD{z~;M5u2%Jr;s<6M-0DR=4FSQ+F% zEPx^g)UP07ml;+d9pnVM`outv7bI&)z}x}?V!$?dEOpn|yjQ;sHIg%41o;LrLIBI9 zr{GLMG9)uIZdLayMv@aWKtD00R>LwDqkXqn$)j!A%N8qZc-+`4htXt!Cbk(LV6do2 zl)8|WcV7~9o(U-^VIpj0nuj6Oy-5O~*mrjgugwPeL7mixX@_3ER(1rz-pF+agBXoo z5Tl@-m^_;{-V=gx1#34e3k;a$93w9Nu8nEc#TBf0@c4_xs-HwcJ&OD6QHaI^&wTZK z5vOR31Z)P|-C#WKme{~~02VU+3WOzsIpAyA{`7oj9VZ3Um_utyMJ;u8;6+a_pD#<& z>zip}+OtXbYCm(r^JDqorF#D_zH#+ltvbPMAWyXHK#_Xd(aF7f!$7GGTe9BNDGGfk zVr%PcC(jnn_Y7r?R!-w9wVnb)_OSLT^odz!uk$G1b1*GCLE5*_`g(fL>skyB{ z*}mKf_~bT`;0(7Nt7jEd-QHHA%iNvIpSRJYbW7}cv-I!RxkW#>!?A9esimyO*P80f6-@rPuf zVpCTFYsBmg!3s6Npa6Mi&WTbiqIZ^AK-bmQf;EF)e;&;1D=&6qQosHRSgx;LUoHkC zpl#4B2v`B}Xh2Q7?qM4;<_Q>5fSI$Fc2))p+}{J_;0~7E`@f&P2eQF!1D-NZDn3)?+MU^rzxL^1dO|hmKaGo?f^a#AU zu{q_)Ezo6@i==~QxNWeUwV@pX4cJ%%a~B=FJ1KacO99&R>kYFgj@N$RR9gkTi>z2j z6zY1hM3qso2N~No8U|hY<7$4p#Jj%{fryfkdLtg_g(@GnA_+et0mS3arHhhV2Sfn-vS)47mIKP z$zlZ?VxG6;fb}P`1F1jg>D=$9Lj~pT%caobnH_+?2=JkSAwxHm2xu01l{s&~VJOq5 z_8iZ=!ZUZM^9RW0&;FFes!yd$fnDxpfD6LcIjnit?}>Kv!l2sD*j7n5dfS{Be_-N+ zZ!%^;0*FOqty>p^t~m8oS8hCwtOnMvmCIu5%-fkuy7l#63|S@&16Rbt3UHbnJV_-O z=0T1i?Vag2e&L+CiE$~{^ymA33@+eN99H95qy0LtP-kruyRsd8z|cN>F8rieVEynn zU^}w8lhYJ17iXC3`hYoa|1Ac^Nv_~^AVCa%-vq6^)v$zj4>(H|grkWG(f zb!�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

MWS;B#ddJdlZ+W^9`5&8&qM1M;yX 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

  • KtrwCr0kYk|#u&kv%y3my(>*(xFx>h& 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

    KKQhFmJLpgtu$e~{dv8K8``6vN=4oQo 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%0AO|AEYC77HUf5 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%0A2vefYJU!f0$l!<5BHY_VnXuLz^;ht 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

    nuWW=C>&f%5uW-Nh^9-FJ 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

    1_APyoh0 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�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�|;fdWP&DbPSx13Lax0H7R!+Jfi_*fejeh+ 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 literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/assets/imgs/avatar.gif b/marketing-ui/admin-ui/src/assets/imgs/avatar.gif new file mode 100644 index 0000000000000000000000000000000000000000..fdbd32c675f85af4ed57021ac0638a21a3c6cad3 GIT binary patch literal 6334 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 literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/assets/imgs/avatar.jpg b/marketing-ui/admin-ui/src/assets/imgs/avatar.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d46a70a46430e31744420865138cc7eedb8b77e1 GIT binary patch literal 6264 zcmbuDWmMGNx5t0O&^aUB-GkEIDM;r~(j~)yH1YsLHwXesHv>qAlqeFC(jYM)4I&{S zWpMHN-*xZ0ukYUH)p>E&=dAr*`<(r~UASEXAX@60>Hr7?0HC`BZkK^5fZ#3&2?&Xa z3CSR&5Hd=Nd-o_PS*U66l0}G_gZXX=!NmA^_{CtlauO19x)$0GwJnhL_Q-_DgqD_5 z(Es;<+g<>Q58MDZU=SOC1qFejpxb_c9ssbgz;}@U8z3wkFg7mU?Gk|h_X+@TAqs#X zia80nZ-z*uFcD zP)Y!!L(=9e+rcumPh+2YXE(J-QejRVpO0I!gpo~}BLMlcHz=;JP-D~&6C7Ho@}#Q6+@<03;Kb8wmX_-jgx(e>OVud(P*XF^Vl16sN3 zL9VSB`M_g%o1P)BrQX9$svj~GgHrVO^-|)7rKENg&rc-;oC!k)8e~5)HYqtZ2DASDJ8VEC2{_$OcaQB$S8L5D^GQ? z+s$*j6EqD70RKm}|D$LS78v_qHDf{U_Uv61dt8A`-ZyYSRaJk{$HGGBBjlXX+YC8V zKwC6zGPAqf`cyz$pIyrm(T+CDOVQ!GC`}aSwxBW1ad%G@#B25L_H>uJj_SdwyELe? z%Fe*gzZu@k_u1M3aj&S$SqNz`-S2$GASYKgNd~J_^|UX_DG1h-kMkwvwcS#nMa04V7ZUszQk&4N$!hAgCTqpAQhQTk8ON*f0ofdV2=AQy@IIWQN=Pws^DCr*gw;EVeJmQO)u{x?i}GaVh_sL#~;X+7GB*sV+YkAKOH z1g^{+L!LhAjVPHKFZ{%Zl7;fP!+=RU0=KZEB1ma_T2b`3fZ#yb9jF2X0D-ZvvGBpT z*tl5WJ1!7#2MWcx$0`I-!X;-DHZZh%$`YQ&E-0d0{DFeQJ6%-8$i8tZqKVR{uM@jzyiT0o z7c1-kPHi_&7&CHY^{doMimEv}v39dY#&Lgi=@(n{fNjE>B(JpcOwknSb2+tX++3cg z32t~n^3u%`AtMKa_^FzDw{tyaj}mT_SWwV&0ibLN*!>>|Owa%LbKvT4stf0)h_`1JuTz zwF(^utK=XF|Ct&@jJM8u8IOb7jQc*V9HTkqI4CC2!JgUU0{6MLFg9yAHpz3dDZx!@ z%o`8A+h+QIWx*?}R6xxZ68zM4BDx4){0`?SOX0o-f_=pGF+*6D2_s#3Xv5In#4PWP zm^HIklb(YU7j;~7_apAK8Th|gPZ1_+9E4lGMe)LS?_tSUeYcu}830qZ-I%ywSJLBQCSZ*o5 zCo0nC;jboG#KEqAdOUJ=+8r_QQkfjYgT#Y^(;!X6g@~ z_AifVbfl{4(J4zV*gr{36(ao(#RMe|fy1^js-iSUeI6-0np|F+Dw&E=9G_ecKU^vA zWN}f?U8B~?+h<|4H%<+0JW1%?Uve+}TEc~Fp?(8cl~Ve?ztZD{ z{~Twy!MMdpLAL%yl|zp!)gkn3(ZRQbSoH%#jIxSu*UBhKF_KY*!St}JmGuYDa}dV@ z_oh&%3MK5Gv1|}-V*SUam&DxL^F$R6P_Yf^%0k_9LI(d(DHl zPM&QTmtZpFK!M%pmuP3^N0zjRnhP%sU!^J~xher`D*M--%wWo?s)K_BH}(j((H1w? z7Z*GPd{)eY%@U4bUG2<~q*Uc((k`5%BAC@?DR(L0zLv)#<0>7~;bCt|0bO7%Ianpn zDn!%zLBCUU+O+z^aS_=Pt+MKzoWSkmc^{qLsu%`6;^r1aV{6ZqkAcYR77qj>|qEPS9${R0!P!M8cHKDuKPmO5kT`Ds^pNeal!XZCTLU=7b z{t^W-SpZzaE=Oecj8B7_iQm%=1)|lV(V(*nM^=yN!W*P~prKXZr*1bYLCYGHz^*?%h;PzP7OMlZ4Qx z{1%wAwuzq9MLM?!Mov+J?XDQ(a>oiy-+x zA5mNxTAM+pK^nSlVjC!DnfL{tR3swA>jL(F3!ReXLiLOu(mk)1Ad}H`k zDvyCLitK~}eGA+p|MqP!|JQHE(p$h(&Y~nosuYpdE>*XXA_t3$HF`8MP?;7g$AtFT z>28_cZ~Zc6)KBIYJ-A!6ezqZLJ0&`AJUW~N-q~jDs>2y!A+bVs>7Em=xlUaQHOtgA z)_5}rgeQT{prumS(l!aZ9s5J4+i-OWokXFjcY=$+q2NBgNtz7!HKOs$6>q+a$j}x8 z0|<95@%!M{&R^n|q_h5kYKUA9Y7M*SMm(G6<~Ls}3dg@m+*lS}DJj;lW>r*&VtU8t}8EzuB{!;QTLJr)#bnPeko9@_>%zJS|VkP zq(@GhDofDSCE1DSSyHNOve6_Tsc)O;jy!WK4{C5AfYY#(MCD_wj;l7OhwS&Owz;OQ z+Av;ow)s^N=-F9Ggp)!MI8FhVfZd9(Xa_%RD3J~3ahc1ri>JYDXehfQdP2SdhX6zX z06!G{F*%?|ff9Uo`jcl9VbGXN<*o?c9%Qcl!`HD!-*kV}U_C0F#y85{Nsrl#h%Ny0 zGhdHH-|}^l3G5c=HPMhdy0rPtsXd8UuT=QQhu-{%>ElrAU^o9n`5$7#;`4Lwj$|$k ze>h$|+(tcL=ESL?%JG zB%dfqN0c6Y{fo;V%L4S2J|Xw6vghC7DJdXikfoOoh5Z4nW!a5_)5XG&Jjql|qKKS|h#jfwPynLJ0 zBOycm3`flAZyQCqTfhJlF+<%mk4!n4g5%jj9OIo>Cr?ftGlPeo#N|c#7JhEmd z`*~xLs-WF2tr3RF9Z4y)J;@b>0iOk8DKtUaiRQ|+r4*)Ynp((I%| z6GaeKR9BXVY(8(q^c;0<6%VonVwDK@?IMeXA8xq@Gcn9G;@$#KYDGYlNZ?Z9+#(rJ z{`sQUY@6Y51Lq*;;-wYd(C_F0lm<*`M(e~&Octe=J*S6=E>mCK)cZ4l6~1}49`nAc zqVi>Keg?C8G^{SIKfT!5yNCo`Ap&)g_1B0rKJ7Focn>aKTVsHkx`_JMX{3tj$u>at zI0SBi$RkQF5%Pnj@VTx}*IL*ReCd#}IepcO#$zDEDdF=sdQab9>X{W|0q|qoCly&* zkrz3ljI^UWbrCq$Sal5;xgXQ{kL=wJWiAMvHHi4wlFVzedxwrHzxLmKU{l?0foUp! zxs?pYcFW}F(iw0GI%Y^X`%^z1YcYW+WS4A;aeK0y4$9x`n(=-AWoz<%9~9WzM3?tf zj8V%)_)lfghSRHxQx>3V&6H;~!$G~2k*)vyL+9h* zF6tK8_*R@WV+r44X30-hd~o-uDVBfaW4`imz^iwyWd5xC*;sP8E_^wJiksZA2vHjN z(CcFN<1gh-98!wbr?ZBtJBdz6GcqjloM9Rz&?okNLYl{Jqr7DcD~r*66j?E82c+Dv zRP0|fKL;#R`73fS-iECsC9$!Z+WMf)OGS(!6lwWBLZ5D;DR17`1pgDTscFN>6RZMW zIDEKJt(k8`A*6gX<>`7&e+#%B$D}~!7w)&!#?;>e4TY6BG8#Lqa1JL=OEVb(lY&hgHWmo}y^l9rQ@Ia0(-S;V1<%xVLlB}X8-sNxJojf$ zmiR_6G!Fs-?|u#=7(|?!Wprj1WZMv^t^#Mo{+YX41afAvNKDTy4qiJ#XO=Dwsu-*` z4Cq|_=(+NizBhTbH|&-)wGpvEpEMElu6=K6YU(XqYU(#nZ&KMM2{@=jDWN}zMHThr zGM5myaXMubt-3?=qw2uD`RkyMKOPa+ysoID^4sW=lUbRI15*91B2 zo6JX@O}Y1=6{<}TV}obhs!^(S1I1>71e{dFL_8$L8>!SV6_|+{nL|xI|rrLlSfjLJ4vr?#bx-ADLXnY zgilc@@O6GI!CNlI4s3moX%|TAUTsLKDDDg-)F{@VF+QmbF@Gg0^hGGjNuP~Jbxdt+ zd__@chTr1@HQmc4p09MYbO zez$-+ME&*W8Y&h_W&^6ePb80sWE(HDAh^ zi4~Lruc+lyf@zd+`#r0mg>i9E1YaGvm^(YcAKZ}u!yy2)i(^i{M->%1R<$YCVFrlXzFW1YXmrAb z)KGK^FX!mv^4#>o<|N&HW%_2uUyNKAuMMnSznr=&F${X=!u$>Fe=V55CBE}-!H_!> zMv2A14qNysIh$cP4!ekQ+J6kBzZGs_q2k1)JRjdyJZfZsyvu>XDZ}BE5g+WSz)jH! z{;YURbaD4rY^gw4mRqpF4Skk_XHWHujU|&Mcx!hSuHl)9T@*@G0!lNbZELl9Eukai zbh-8=6Z2KyBTXZ1-}`fraU%Ux)$%yF+9gRskBo9GIqpgGF<5AS>jg8XM;hx+BK&r! zE;rJg*Y;rabcZV?9Sw-Hcu8E@-LpjYEWy&GXL~VkR^a(MJgtdG{ojJ?4>5}t-j+P^+(<;A4L=tRZB~w^*Ys`;%i8B)xY+a}hH{7crjc+B=^6+Oo zH*Y&-{z2Uk)}URh-CaU3r=g>zo-K#=y=+}n#QG_*Ta{ap?J75@#D9$knHK|BvqUI^ z_46Fh)wAfUx!fAAsP2QLMmc}Qr)mFM_MdRY_n8)#DArG~RSr>3R@QnToH%m3_+J|q BLq7lj literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/assets/imgs/diy/app-nav-bar-mp.png b/marketing-ui/admin-ui/src/assets/imgs/diy/app-nav-bar-mp.png new file mode 100644 index 0000000000000000000000000000000000000000..c982804c7287c904468dad6252fd393c6cbd271f GIT binary patch literal 3595 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 Y)KD1lT9stKL4Yr5ae1*HB8Gwg2lSJ;0RR91 literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/assets/imgs/iot/device.png b/marketing-ui/admin-ui/src/assets/imgs/iot/device.png new file mode 100644 index 0000000000000000000000000000000000000000..79339cdf486e64bff9f5c3f89f16a7c20a8aadeb GIT binary patch literal 10007 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 NvOP|&09Jii_#cBOpN9Yd literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/assets/imgs/wechat.png b/marketing-ui/admin-ui/src/assets/imgs/wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..6afc5e41cfc29d258e0c6135981a7a09b7bcf126 GIT binary patch literal 1881 zcmV-f2d4OmP)Px+6G=otRA@uxT5F6HRTlovt)4-Yt`>DxqM{h1piEaoG!it+;>Ku9`iG12%)6qSb>G)jC#QP~(>XJx8!Ncf>R3nRXU>6!tR>8fLH z&-BPlcUM(+R|8q^kNH#I`M&erd#dK%bDQux7!;JpamncoOxXzv({Uli+0)aoy&Fxi zgW|7-ry`T%jKJPYsh*xLg z=_mZbD@VDSjI=d2u_EpTV{+vZ?vV_<2cWG_H(#rjMoE)uN^1inQ7hpBUdB=@VJ2&# zSJb3xM4tobrdkMkaJE{yxiV`Dvjn&heT6&y}!$;8dSkH)Ae?JF=Qm5e2{TXFM(B5|Eyoa>Qb zi=~@uyi9mKA2ex1-va0|S1@Cjl`zjd6m$He(YfOA2lTk($P%F!8(B{iu%3c|8#NUDitV7DNwa~y0EA>Nbu?!+#%Zpl`| zS!mMGWT{>nB&i=RX1p&z>&T{cvi!#-r=KUtUPy$~m@yH+X#h_IhzaOoa2J@m2-Ja) zvp%yVz0Z%1#K>~p3*cnG0Ri9!K=e0Rf?*>%ML^7F@KpdVER*{sfL|vCo4pKE#L#v# zaB7(X6~X03!V%dU_cx$N-CK7Lh*wlZbZ8J^7c=hf)6J(!aZw}{eTA9iOxAj=v~;sI zoQhpZoHI8gV8L}x2>16dHn$hNlaZu$7ZV-`Sa1{_zisL1%hhCb1&HpenHHmm34a}Z zHl?tk%_U${&4huEE#16GO=<}c+G?mXNX_VT$eG)(Z{L#FlJDf13 zwT=^8cR1@^18ig2*fT57iXNu0r3`tR}is!F3D zS-LqZVrT~#7+WP*wc$I8wj?7)>{&FwOswejRRN_jn0?GM7iE-*~8LJ*>%_n!r5g92N}TF>amg< z7w8c^%fQRTd_F)^0ge^BuM9CJW(o4j;mRO$E|-g#7nL+QE)|_6m_8UH&4TE8F+eMO zmv7ruN+{Q&tVcr#*}XmAJKu&+2whHunqA3x8Xmpl866NYqE9nuF2FB{tg_0@oST?x zXs;is)g8GVq5Zubcf0@iKm=5XK2^EU%QC`yjQdGD#%*)#Sn>+H(se%MS78C?tDhM*>{ z2+z+#h?%`D+hm7-cpO%fIisoQ3NXoT-I##Qerk*Cy!|bmvX4As9Cnj~MztAWNTY%M z50#sbQj>N>Oy-kOliFX1_$mg?uXksla(-wPS#Ojve@iP`2#b^O0DIsA?r(JL%Hz4@s4x|Xv_L12Fc30Q=P TM8y=K00000NkvXXu0mjf4<3N5 literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/assets/map/json/china.json b/marketing-ui/admin-ui/src/assets/map/json/china.json new file mode 100644 index 0000000..bbc0a83 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/map/json/china.json @@ -0,0 +1,856 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "id": "710000", + "properties": { + "id": "710000", + "cp": [121.509062, 24.044332], + "name": "台湾", + "childNum": 6 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@°Ü¯Û"], + [ + "@@ƛĴÕƊÉɼģºðʀ\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ" + ], + ["@@\\p|WoYG¿¥I†j@¢"], + ["@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I"], + ["@@ÆEE—„kWqë @œ"], + ["@@fced"], + ["@@„¯ɜÄèaì¯ØǓIġĽ"], + ["@@çûĖ롖hòř "] + ], + "encodeOffsets": [ + [[122886, 24033]], + [[123335, 22980]], + [[122375, 24193]], + [[122518, 24117]], + [[124427, 22618]], + [[124862, 26043]], + [[126259, 26318]], + [[127671, 26683]] + ] + } + }, + { + "type": "Feature", + "id": "130000", + "properties": { + "id": "130000", + "cp": [114.502461, 38.045474], + "name": "河北", + "childNum": 3 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e"], + ["@@U`Ts¿m‚"], + [ + "@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧˏfŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgƊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|ǰ…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃ͚¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\tŽa\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\mĆJfl@c̬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®Vйd^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qáµ§š™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚" + ] + ], + "encodeOffsets": [[[119712, 40641]], [[121616, 39981]], [[116462, 37237]]] + } + }, + { + "type": "Feature", + "id": "140000", + "properties": { + "id": "140000", + "cp": [111.849248, 36.857014], + "name": "山西", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz" + ], + "encodeOffsets": [[116874, 41716]] + } + }, + { + "type": "Feature", + "id": "150000", + "properties": { + "id": "150000", + "cp": [111.670801, 41.818311], + "name": "内蒙古", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–Rë¥_ŽsgÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉv¦wĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot×¶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ÈˆÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µsKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚǏĞGȖƴƀj`ĢçĶāàŃºē̃ĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTĞªŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFǜƌXƲąo½Ę‘\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ġu¦öČ^â£Ăh–šĖMÈÄw‚\\fŦ°W ¢¾luŸD„wŠ\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ" + ] + ], + "encodeOffsets": [[[129102, 52189]]] + } + }, + { + "type": "Feature", + "id": "210000", + "properties": { + "id": "210000", + "cp": [123.429096, 41.796767], + "name": "辽宁", + "childNum": 16 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@L–Ž@@s™a"], + ["@@MnNm"], + ["@@d‚c"], + ["@@eÀ‚C@b‚“‰"], + ["@@f‡…Xwkbr–Ä`qg"], + ["@@^jtW‘Q"], + ["@@~ Y]c"], + ["@@G`ĔN^_¿Z‚ÃM"], + ["@@iX¶B‹Y"], + ["@@„YƒZ"], + ["@@L_{Epf"], + ["@@^WqCT\\"], + ["@@\\[“‹§t|”¤_"], + ["@@m`n_"], + ["@@Ïxnj{q_×^Giip"], + [ + "@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\ÀøíDm¦ÎbŨab‰œaĘ\\ľã‚¸a˜tÎSƐ´©v\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA" + ] + ], + "encodeOffsets": [ + [[123686, 41445]], + [[126019, 40435]], + [[124393, 40128]], + [[126117, 39963]], + [[125322, 40140]], + [[126686, 40700]], + [[126041, 40374]], + [[125584, 40168]], + [[125453, 40165]], + [[125362, 40214]], + [[125280, 40291]], + [[125774, 39997]], + [[125976, 40496]], + [[125822, 39993]], + [[125509, 40217]], + [[122731, 40949]] + ] + } + }, + { + "type": "Feature", + "id": "220000", + "properties": { "id": "220000", "cp": [125.3245, 43.886841], "name": "吉林", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG" + ], + "encodeOffsets": [[130196, 42528]] + } + }, + { + "type": "Feature", + "id": "230000", + "properties": { + "id": "230000", + "cp": [128.642464, 46.756967], + "name": "黑龙江", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tޏĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\kzţ¦šnņäÔVĂîά|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]" + ] + ], + "encodeOffsets": [[[134456, 44547]]] + } + }, + { + "type": "Feature", + "id": "320000", + "properties": { + "id": "320000", + "cp": [119.767413, 33.041544], + "name": "江苏", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@cþÅPiŠ`ZŸRu¥É\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@ƹhågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ" + ], + "encodeOffsets": [[121740, 32276]] + } + }, + { + "type": "Feature", + "id": "330000", + "properties": { + "id": "330000", + "cp": [120.153576, 29.287459], + "name": "浙江", + "childNum": 45 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@E^dQ]K"], + ["@@jX^j‡"], + ["@@sfŠbU‡"], + ["@@qP\\xz[ck"], + ["@@‘Rƒ¢‚FX}°[s_"], + ["@@Cbœ\\—}"], + ["@@e|v\\la{u"], + ["@@v~u}"], + ["@@QxÂF¯}"], + ["@@¹nŒvÞs¯o"], + ["@@rSkUEj"], + ["@@bi­ZŒP"], + ["@@p[}INf"], + ["@@À¿€"], + ["@@¹dnbŒ…"], + ["@@rSŸBnR"], + ["@@g~h}"], + ["@@FlEk"], + ["@@OdPc"], + ["@@v[u\\"], + ["@@FjâL~wyoo~›sµL–\\"], + ["@@¬e¹aNˆ"], + ["@@\\nÔ¡q]L³ë\\ÿ®ŒQ֎"], + ["@@ÊA­©[¬"], + ["@@KxŒv­"], + ["@@@hlIk]"], + ["@@pW{o||j"], + ["@@Md|_mC"], + ["@@¢…X£ÏylD¼XˆtH"], + ["@@hlÜ[LykAvyfw^Ež›¤"], + ["@@fp¤Mus“R"], + ["@@®_ma~•LÁ¬šZ"], + ["@@iM„xZ"], + ["@@ZcYd"], + ["@@Z~dOSo|A¿qZv"], + ["@@@`”EN¡v"], + ["@@|–TY{"], + ["@@@n@m"], + ["@@XWkCT\\"], + ["@@ºwšZRkĕWO¢"], + ["@@™X®±Grƪ\\ÔáXq{‹"], + ["@@ůTG°ĄLHm°UC‹"], + [ + "@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВj碷ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈÚœĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst" + ], + ["@@o\\V’zRZ}y"], + ["@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™"] + ], + "encodeOffsets": [ + [[125592, 31553]], + [[125785, 31436]], + [[125729, 31431]], + [[125513, 31380]], + [[125223, 30438]], + [[125115, 30114]], + [[124815, 29155]], + [[124419, 28746]], + [[124095, 28635]], + [[124005, 28609]], + [[125000, 30713]], + [[125111, 30698]], + [[125078, 30682]], + [[125150, 30684]], + [[124014, 28103]], + [[125008, 31331]], + [[125411, 31468]], + [[125329, 31479]], + [[125626, 30916]], + [[125417, 30956]], + [[125254, 30976]], + [[125199, 30997]], + [[125095, 31058]], + [[125083, 30915]], + [[124885, 31015]], + [[125218, 30798]], + [[124867, 30838]], + [[124755, 30788]], + [[124802, 30809]], + [[125267, 30657]], + [[125218, 30578]], + [[125200, 30562]], + [[124968, 30474]], + [[125167, 30396]], + [[124955, 29879]], + [[124714, 29781]], + [[124762, 29462]], + [[124325, 28754]], + [[123990, 28459]], + [[125366, 31477]], + [[125115, 30363]], + [[125369, 31139]], + [[122495, 31878]], + [[125329, 30690]], + [[125192, 30787]] + ] + } + }, + { + "type": "Feature", + "id": "340000", + "properties": { "id": "340000", "cp": [117.283042, 31.26119], "name": "安徽", "childNum": 3 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@^iuLX^"], + ["@@‚e©Ehl"], + [ + "@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜÆ¶ĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆßŽF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴ˶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´" + ] + ], + "encodeOffsets": [[[121722, 32278]], [[119475, 30423]], [[119168, 35472]]] + } + }, + { + "type": "Feature", + "id": "350000", + "properties": { + "id": "350000", + "cp": [118.306239, 26.075302], + "name": "福建", + "childNum": 18 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@“zht´‡]"], + ["@@aj^~ĆG—©O"], + ["@@ed¨„C}}i"], + ["@@@vˆPGsQ"], + ["@@‰sBz‚ddW]Q"], + ["@@SލQ“{"], + ["@@NŽVucW"], + ["@@qptBAq"], + ["@@‰’¸[mu"], + ["@@Q\\pD]_"], + ["@@jSwUadpF"], + ["@@eXª~ƒ•"], + ["@@AjvFso"], + ["@@fT–›_Çí\\Ÿ™—v|ba¦jZÆy€°"], + ["@@IjJi"], + ["@@wJI€ˆxš«¼AoNe{M­"], + ["@@K‰±¡Óˆ”ČäeZ"], + [ + "@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\_" + ] + ], + "encodeOffsets": [ + [[123250, 27563]], + [[122541, 27268]], + [[123020, 27189]], + [[122916, 27125]], + [[122887, 26845]], + [[122808, 26762]], + [[122568, 25912]], + [[122778, 26197]], + [[122515, 26757]], + [[122816, 26587]], + [[123388, 27005]], + [[122450, 26243]], + [[122578, 25962]], + [[121255, 25103]], + [[120987, 24903]], + [[122339, 25802]], + [[121042, 25093]], + [[122439, 26024]] + ] + } + }, + { + "type": "Feature", + "id": "360000", + "properties": { + "id": "360000", + "cp": [115.592151, 27.676493], + "name": "江西", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@ĢĨƐgÂMD~ņªe^\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗ⼋mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\˜„L‚‘²" + ], + "encodeOffsets": [[116689, 26234]] + } + }, + { + "type": "Feature", + "id": "370000", + "properties": { + "id": "370000", + "cp": [118.000923, 36.275807], + "name": "山东", + "childNum": 13 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@Xjd]{K"], + ["@@itbFHy"], + ["@@HlGk"], + ["@@T‚ŒGŸy"], + ["@@K¬˜•‹U"], + ["@@WdXc"], + ["@@PtOs"], + ["@@•LnXhc"], + ["@@ppVƒu]Or"], + ["@@cdzAUa"], + ["@@udRhnCI‡"], + ["@@ˆoIƒpR„"], + [ + "@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞÆ„LĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌǜbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐ˹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~ݏY’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuٌg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ" + ] + ], + "encodeOffsets": [ + [[123806, 39303]], + [[123821, 39266]], + [[123742, 39256]], + [[123702, 39203]], + [[123649, 39066]], + [[123847, 38933]], + [[123580, 38839]], + [[123894, 37288]], + [[123043, 36624]], + [[123344, 38676]], + [[123522, 38857]], + [[123628, 38858]], + [[118260, 36742]] + ] + } + }, + { + "type": "Feature", + "id": "410000", + "properties": { + "id": "410000", + "cp": [113.665412, 33.757975], + "name": "河南", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\d\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\ÀœEhŽİgÞē X¼Pk–„|m" + ], + "encodeOffsets": [[118256, 37017]] + } + }, + { + "type": "Feature", + "id": "420000", + "properties": { + "id": "420000", + "cp": [113.298572, 30.684355], + "name": "湖北", + "childNum": 3 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@AB‚"], + ["@@lskt"], + [ + "@@¾«}{ra®pîÃ\\™›{øCŠËyyB±„b\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙæŠšŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYЧHK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆ̶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤" + ] + ], + "encodeOffsets": [[[113712, 34000]], [[115612, 30507]], [[113649, 34054]]] + } + }, + { + "type": "Feature", + "id": "430000", + "properties": { "id": "430000", "cp": [111.782279, 28.09409], "name": "湖南", "childNum": 3 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@—n„FTs"], + ["@@ßÅÆá‰½ÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–̾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M"], + [ + "@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJβSÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUоÅ‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPᜣEXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\Ĕ[N¥ˀmĎă’J\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎۃƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ" + ] + ], + "encodeOffsets": [[[115640, 30489]], [[112543, 27312]], [[116690, 26230]]] + } + }, + { + "type": "Feature", + "id": "440000", + "properties": { + "id": "440000", + "cp": [113.280637, 23.125178], + "name": "广东", + "childNum": 24 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@QdˆAua"], + ["@@ƒlxDLo"], + ["@@sbhNLo"], + ["@@Ă āŸ"], + ["@@WltO[["], + ["@@Krœ]S"], + ["@@e„„I]y"], + ["@@I|„Mym"], + ["@@ƒÛ³LSŒž¼Y"], + ["@@nvºB–ëui©`¾"], + ["@@zdšÛ›Jw®"], + ["@@†°…¯"], + ["@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o"], + ["@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh"], + ["@@‹¶Ý’Ì‚vmĞh­ı‡Q"], + ["@@HœŠdSjĒ¢D}war…“u«ZqadYM"], + ["@@elŒ\\LqqU"], + ["@@~rMo\\"], + ["@@f„^ƒC"], + ["@@øPªoj÷ÍÝħXČx”°Q¨ıXNv"], + ["@@gÇƳˆŽˆ”oˆŠˆ[~tly"], + ["@@E–ÆC¿‘"], + ["@@OŽP"], + [ + "@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéƌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i" + ] + ], + "encodeOffsets": [ + [[117381, 22988]], + [[116552, 22934]], + [[116790, 22617]], + [[116973, 22545]], + [[116444, 22536]], + [[116931, 22515]], + [[116496, 22490]], + [[116453, 22449]], + [[113301, 21439]], + [[118726, 21604]], + [[118709, 21486]], + [[113210, 20816]], + [[115482, 22082]], + [[113171, 21585]], + [[113199, 21590]], + [[115232, 22102]], + [[115739, 22373]], + [[115134, 22184]], + [[113056, 21175]], + [[119573, 21271]], + [[119957, 24020]], + [[115859, 22356]], + [[116561, 22649]], + [[116285, 22746]] + ] + } + }, + { + "type": "Feature", + "id": "450000", + "properties": { "id": "450000", "cp": [108.320004, 22.82402], "name": "广西", "childNum": 2 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@H– TQ§•A"], + [ + "@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloޤ™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆÌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FϼĹ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•E쉕E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢Jî¶²" + ] + ], + "encodeOffsets": [[[111707, 21520]], [[107619, 25527]]] + } + }, + { + "type": "Feature", + "id": "460000", + "properties": { "id": "460000", "cp": [109.83119, 19.031971], "name": "海南", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ " + ], + "encodeOffsets": [[112750, 20508]] + } + }, + { + "type": "Feature", + "id": "510000", + "properties": { + "id": "510000", + "cp": [104.065735, 30.659462], + "name": "四川", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@LqKr"], + [ + "@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iǰÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZްIä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºT£ڿœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`Šz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\Z{åû^›" + ] + ], + "encodeOffsets": [[[108815, 30935]], [[110617, 31811]]] + } + }, + { + "type": "Feature", + "id": "520000", + "properties": { + "id": "520000", + "cp": [106.713478, 26.578343], + "name": "贵州", + "childNum": 3 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@†G\\†lY£‘in"], + ["@@q‚|ˆ‚mc¯tχVSÎ"], + [ + "@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\}—ƒG®u\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒh޶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KгŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}ޱžGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝÆ€‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½" + ] + ], + "encodeOffsets": [[[112158, 27383]], [[112105, 27474]], [[112095, 27476]]] + } + }, + { + "type": "Feature", + "id": "530000", + "properties": { + "id": "530000", + "cp": [101.512251, 24.740609], + "name": "云南", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèÆ¶StǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyސ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSᝑ³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\μģUsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`" + ], + "encodeOffsets": [[104636, 22969]] + } + }, + { + "type": "Feature", + "id": "540000", + "properties": { "id": "540000", "cp": [89.132212, 30.860361], "name": "西藏", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@hžľxŽŖ‰xƒÒVކºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|٘¦Avަw`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdЉªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀݦ¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVе‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£à貋ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæÅ„hnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„ǰ¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûŠìÖT¬¸^}Ìsòd´_އKgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxжF”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\†qR›Ą©" + ], + "encodeOffsets": [[90849, 37210]] + } + }, + { + "type": "Feature", + "id": "610000", + "properties": { + "id": "610000", + "cp": [108.948024, 34.263161], + "name": "陕西", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OϹS|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cϰÂ[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~ЦUbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj" + ], + "encodeOffsets": [[110234, 38774]] + } + }, + { + "type": "Feature", + "id": "620000", + "properties": { + "id": "620000", + "cp": [103.823557, 36.058039], + "name": "甘肃", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@VuUv"], + [ + "@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBаaZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\a­‹Q\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aйcčecÇN•ĊãÁ\\蝗dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]A챝‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\h¹¶v†·À|\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮްƝ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK" + ] + ], + "encodeOffsets": [[[108619, 36299]], [[108589, 36341]]] + } + }, + { + "type": "Feature", + "id": "630000", + "properties": { "id": "630000", "cp": [96.778916, 35.623178], "name": "青海", "childNum": 2 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@InJm"], + [ + "@@CƒÆ½OŃĦsΰ~dz¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNΌĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoᣟÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Ó祖•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSò뚣˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\ijŬű”YÂÿ¬jĖqŽßbЏ•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňb̰ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\ªÚŒU\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\oäõ–F礻Ŷ×h¹]Clـ\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌζƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg" + ] + ], + "encodeOffsets": [[[105308, 37219]], [[95370, 40081]]] + } + }, + { + "type": "Feature", + "id": "640000", + "properties": { "id": "640000", "cp": [106.278179, 37.26637], "name": "宁夏", "childNum": 2 }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\âÙH\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßR͌X¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀ˾iİbjÕ" + ], + ["@@mfwěwMrŢªv@G‰"] + ], + "encodeOffsets": [[[109366, 40242]], [[108600, 36303]]] + } + }, + { + "type": "Feature", + "id": "650000", + "properties": { "id": "650000", "cp": [85.617733, 40.792818], "name": "新疆", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@QØĔ²X¨”~ǘBºjʐߨvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZ̓èH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYw獃{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~Ꝛf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\ªÑò˜Üìc\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆÂšońéŒGš\\”¼C°ÌƁn´nxšÊOĨ’ہƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FއRěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ" + ], + "encodeOffsets": [[88824, 50096]] + } + }, + { + "type": "Feature", + "id": "110000", + "properties": { + "id": "110000", + "cp": [116.405285, 39.904989], + "name": "北京", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`й­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwڍUd®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\‡¥A¨Ï‘Ѩj¯ŠX\\¯œMK‘pA³[H…īu}}" + ], + "encodeOffsets": [[120023, 41045]] + } + }, + { + "type": "Feature", + "id": "120000", + "properties": { + "id": "120000", + "cp": [117.190182, 39.125596], + "name": "天津", + "childNum": 1 + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + "@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~" + ], + "encodeOffsets": [[120237, 41215]] + } + }, + { + "type": "Feature", + "id": "310000", + "properties": { + "id": "310000", + "cp": [121.472644, 31.231706], + "name": "上海", + "childNum": 6 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@ɧư¬EpƸÁxc‡"], + ["@@©„ªƒ"], + ["@@”MA‹‘š"], + ["@@Qp݁E§ÉC¾"], + ["@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó"], + ["@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį"] + ], + "encodeOffsets": [ + [[124702, 32062]], + [[124547, 32200]], + [[124808, 31991]], + [[124726, 32110]], + [[124903, 32376]], + [[124438, 32149]] + ] + } + }, + { + "type": "Feature", + "id": "500000", + "properties": { + "id": "500000", + "cp": [107.304962, 29.533155], + "name": "重庆", + "childNum": 2 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + [ + "@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\ÂoVnŽÓØÍ™²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\¨\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBЦzG¸rHe‚„N\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN" + ], + ["@@ifjN@s"] + ], + "encodeOffsets": [[[109628, 30765]], [[111725, 31320]]] + } + }, + { + "type": "Feature", + "id": "810000", + "properties": { + "id": "810000", + "cp": [114.173355, 22.320048], + "name": "香港", + "childNum": 5 + }, + "geometry": { + "type": "MultiPolygon", + "coordinates": [ + ["@@AlBk"], + ["@@mŽn"], + ["@@EpFo"], + ["@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKްä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc"], + ["@@rMUw‡AS®€e"] + ], + "encodeOffsets": [ + [[117111, 23002]], + [[117072, 22876]], + [[117045, 22887]], + [[116975, 23082]], + [[116882, 22747]] + ] + } + }, + { + "type": "Feature", + "id": "820000", + "properties": { "id": "820000", "cp": [113.54909, 22.198951], "name": "澳门", "childNum": 1 }, + "geometry": { + "type": "Polygon", + "coordinates": ["@@kÊd°å§s"], + "encodeOffsets": [[116279, 22639]] + } + } + ], + "UTF8Encoding": true +} diff --git a/marketing-ui/admin-ui/src/assets/svgs/403.svg b/marketing-ui/admin-ui/src/assets/svgs/403.svg new file mode 100644 index 0000000..4500596 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/403.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/404.svg b/marketing-ui/admin-ui/src/assets/svgs/404.svg new file mode 100644 index 0000000..5244d8d --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/500.svg b/marketing-ui/admin-ui/src/assets/svgs/500.svg new file mode 100644 index 0000000..9c02092 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/500.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/add-user.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/add-user.svg new file mode 100644 index 0000000..bc7bdbf --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/add-user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/approve.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/approve.svg new file mode 100644 index 0000000..06aa09d --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/approve.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/auditor.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/auditor.svg new file mode 100644 index 0000000..66d2c2c --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/auditor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/cancel.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/cancel.svg new file mode 100644 index 0000000..ab9b155 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/cancel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/child-process.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/child-process.svg new file mode 100644 index 0000000..249723f --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/child-process.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/condition.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/condition.svg new file mode 100644 index 0000000..41ea85d --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/condition.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/copy.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/copy.svg new file mode 100644 index 0000000..8ff3bba --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/delay.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/delay.svg new file mode 100644 index 0000000..cbc31df --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/delay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/finish.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/finish.svg new file mode 100644 index 0000000..674c6df --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/finish.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/parallel.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/parallel.svg new file mode 100644 index 0000000..ba0ac67 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/parallel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/reject.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/reject.svg new file mode 100644 index 0000000..21fd5f6 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/reject.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/running.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/running.svg new file mode 100644 index 0000000..5908c13 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/running.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/simple-process-bg.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/simple-process-bg.svg new file mode 100644 index 0000000..eb23ab5 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/simple-process-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/starter.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/starter.svg new file mode 100644 index 0000000..c12c712 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/starter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/bpm/transactor.svg b/marketing-ui/admin-ui/src/assets/svgs/bpm/transactor.svg new file mode 100644 index 0000000..a9547a7 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/bpm/transactor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/icon.svg b/marketing-ui/admin-ui/src/assets/svgs/icon.svg new file mode 100644 index 0000000..7024bec --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/iot/card-fill.svg b/marketing-ui/admin-ui/src/assets/svgs/iot/card-fill.svg new file mode 100644 index 0000000..4c74ecd --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/iot/card-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/iot/cube.svg b/marketing-ui/admin-ui/src/assets/svgs/iot/cube.svg new file mode 100644 index 0000000..200ac1b --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/iot/cube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/login-bg.svg b/marketing-ui/admin-ui/src/assets/svgs/login-bg.svg new file mode 100644 index 0000000..bbe06c1 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/login-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/login-box-bg.svg b/marketing-ui/admin-ui/src/assets/svgs/login-box-bg.svg new file mode 100644 index 0000000..ab10040 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/login-box-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/member_balance.svg b/marketing-ui/admin-ui/src/assets/svgs/member_balance.svg new file mode 100644 index 0000000..5395b23 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/member_balance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/member_expenditure_balance.svg b/marketing-ui/admin-ui/src/assets/svgs/member_expenditure_balance.svg new file mode 100644 index 0000000..02d498c --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/member_expenditure_balance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/member_level.svg b/marketing-ui/admin-ui/src/assets/svgs/member_level.svg new file mode 100644 index 0000000..cbcc686 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/member_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/member_point.svg b/marketing-ui/admin-ui/src/assets/svgs/member_point.svg new file mode 100644 index 0000000..b849ddb --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/member_point.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/member_recharge_balance.svg b/marketing-ui/admin-ui/src/assets/svgs/member_recharge_balance.svg new file mode 100644 index 0000000..7519bb2 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/member_recharge_balance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/message.svg b/marketing-ui/admin-ui/src/assets/svgs/message.svg new file mode 100644 index 0000000..14ca817 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/money.svg b/marketing-ui/admin-ui/src/assets/svgs/money.svg new file mode 100644 index 0000000..c1580de --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_app.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_app.svg new file mode 100644 index 0000000..ebf1188 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_app.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_bar.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_bar.svg new file mode 100644 index 0000000..eb1e1e8 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_bar.svg @@ -0,0 +1,2 @@ + diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_pc.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_pc.svg new file mode 100644 index 0000000..2a75277 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_pc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_qr.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_qr.svg new file mode 100644 index 0000000..4833750 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_qr.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_wap.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_wap.svg new file mode 100644 index 0000000..87075db --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/alipay_wap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/mock.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/mock.svg new file mode 100644 index 0000000..27b09ea --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/mock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_app.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_app.svg new file mode 100644 index 0000000..ad40b2a --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_app.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_bar.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_bar.svg new file mode 100644 index 0000000..11292e6 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_bar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_lite.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_lite.svg new file mode 100644 index 0000000..0c925cf --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_lite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_native.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_native.svg new file mode 100644 index 0000000..bf3ba2b --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_native.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_pub.svg b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_pub.svg new file mode 100644 index 0000000..3a6d15b --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/pay/icon/wx_pub.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/peoples.svg b/marketing-ui/admin-ui/src/assets/svgs/peoples.svg new file mode 100644 index 0000000..aab852e --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/send.svg b/marketing-ui/admin-ui/src/assets/svgs/send.svg new file mode 100644 index 0000000..6fbc984 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/send.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/assets/svgs/shopping.svg b/marketing-ui/admin-ui/src/assets/svgs/shopping.svg new file mode 100644 index 0000000..f395bc7 --- /dev/null +++ b/marketing-ui/admin-ui/src/assets/svgs/shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/components/AppLinkInput/AppLinkSelectDialog.vue b/marketing-ui/admin-ui/src/components/AppLinkInput/AppLinkSelectDialog.vue new file mode 100644 index 0000000..63f1966 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/AppLinkInput/AppLinkSelectDialog.vue @@ -0,0 +1,207 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/AppLinkInput/data.ts b/marketing-ui/admin-ui/src/components/AppLinkInput/data.ts new file mode 100644 index 0000000..c9e3678 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/AppLinkInput/data.ts @@ -0,0 +1,236 @@ +// APP 链接分组 +export interface AppLinkGroup { + // 分组名称 + name: string + // 链接列表 + links: AppLink[] +} + +// APP 链接 +export interface AppLink { + // 链接名称 + name: string + // 链接地址 + path: string + // 链接的类型 + type?: APP_LINK_TYPE_ENUM +} + +// APP 链接类型(需要特殊处理,例如商品详情) +export const enum APP_LINK_TYPE_ENUM { + // 拼团活动 + ACTIVITY_COMBINATION, + // 秒杀活动 + ACTIVITY_SECKILL, + // 积分商城活动 + ACTIVITY_POINT, + // 文章详情 + ARTICLE_DETAIL, + // 优惠券详情 + COUPON_DETAIL, + // 自定义页面详情 + DIY_PAGE_DETAIL, + // 品类列表 + PRODUCT_CATEGORY_LIST, + // 商品列表 + PRODUCT_LIST, + // 商品详情 + PRODUCT_DETAIL_NORMAL, + // 拼团商品详情 + PRODUCT_DETAIL_COMBINATION, + // 秒杀商品详情 + PRODUCT_DETAIL_SECKILL +} + +// APP 链接列表(做一下持久化?) +export const APP_LINK_GROUP_LIST = [ + { + name: '商城', + links: [ + { + name: '首页', + path: '/pages/index/index' + }, + { + name: '商品分类', + path: '/pages/index/category', + type: APP_LINK_TYPE_ENUM.PRODUCT_CATEGORY_LIST + }, + { + name: '购物车', + path: '/pages/index/cart' + }, + { + name: '个人中心', + path: '/pages/index/user' + }, + { + name: '商品搜索', + path: '/pages/index/search' + }, + { + name: '自定义页面', + path: '/pages/index/page', + type: APP_LINK_TYPE_ENUM.DIY_PAGE_DETAIL + }, + { + name: '客服', + path: '/pages/chat/index' + }, + { + name: '系统设置', + path: '/pages/public/setting' + }, + { + name: '常见问题', + path: '/pages/public/faq' + } + ] + }, + { + name: '商品', + links: [ + { + name: '商品列表', + path: '/pages/goods/list', + type: APP_LINK_TYPE_ENUM.PRODUCT_LIST + }, + { + name: '商品详情', + path: '/pages/goods/index', + type: APP_LINK_TYPE_ENUM.PRODUCT_DETAIL_NORMAL + }, + { + name: '拼团商品详情', + path: '/pages/goods/groupon', + type: APP_LINK_TYPE_ENUM.PRODUCT_DETAIL_COMBINATION + }, + { + name: '秒杀商品详情', + path: '/pages/goods/seckill', + type: APP_LINK_TYPE_ENUM.PRODUCT_DETAIL_SECKILL + } + ] + }, + { + name: '营销活动', + links: [ + { + name: '拼团订单', + path: '/pages/activity/groupon/order' + }, + { + name: '营销商品', + path: '/pages/activity/index' + }, + { + name: '拼团活动', + path: '/pages/activity/groupon/list', + type: APP_LINK_TYPE_ENUM.ACTIVITY_COMBINATION + }, + { + name: '秒杀活动', + path: '/pages/activity/seckill/list', + type: APP_LINK_TYPE_ENUM.ACTIVITY_SECKILL + }, + { + name: '积分商城活动', + path: '/pages/activity/point/list', + type: APP_LINK_TYPE_ENUM.ACTIVITY_POINT + }, + { + name: '签到中心', + path: '/pages/app/sign' + }, + { + name: '优惠券中心', + path: '/pages/coupon/list' + }, + { + name: '优惠券详情', + path: '/pages/coupon/detail', + type: APP_LINK_TYPE_ENUM.COUPON_DETAIL + }, + { + name: '文章详情', + path: '/pages/public/richtext', + type: APP_LINK_TYPE_ENUM.ARTICLE_DETAIL + } + ] + }, + { + name: '分销商城', + links: [ + { + name: '分销中心', + path: '/pages/commission/index' + }, + { + name: '推广商品', + path: '/pages/commission/goods' + }, + { + name: '分销订单', + path: '/pages/commission/order' + }, + { + name: '我的团队', + path: '/pages/commission/team' + } + ] + }, + { + name: '支付', + links: [ + { + name: '充值余额', + path: '/pages/pay/recharge' + }, + { + name: '充值记录', + path: '/pages/pay/recharge-log' + } + ] + }, + { + name: '用户中心', + links: [ + { + name: '用户信息', + path: '/pages/user/info' + }, + { + name: '用户订单', + path: '/pages/order/list' + }, + { + name: '售后订单', + path: '/pages/order/aftersale/list' + }, + { + name: '商品收藏', + path: '/pages/user/goods-collect' + }, + { + name: '浏览记录', + path: '/pages/user/goods-log' + }, + { + name: '地址管理', + path: '/pages/user/address/list' + }, + { + name: '用户佣金', + path: '/pages/user/wallet/commission' + }, + { + name: '用户余额', + path: '/pages/user/wallet/money' + }, + { + name: '用户积分', + path: '/pages/user/wallet/score' + } + ] + } +] as AppLinkGroup[] diff --git a/marketing-ui/admin-ui/src/components/AppLinkInput/index.vue b/marketing-ui/admin-ui/src/components/AppLinkInput/index.vue new file mode 100644 index 0000000..ff71382 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/AppLinkInput/index.vue @@ -0,0 +1,43 @@ + + diff --git a/marketing-ui/admin-ui/src/components/Backtop/index.ts b/marketing-ui/admin-ui/src/components/Backtop/index.ts new file mode 100644 index 0000000..96de88d --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Backtop/index.ts @@ -0,0 +1,3 @@ +import Backtop from './src/Backtop.vue' + +export { Backtop } diff --git a/marketing-ui/admin-ui/src/components/Backtop/src/Backtop.vue b/marketing-ui/admin-ui/src/components/Backtop/src/Backtop.vue new file mode 100644 index 0000000..5d79f51 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Backtop/src/Backtop.vue @@ -0,0 +1,17 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Card/index.ts b/marketing-ui/admin-ui/src/components/Card/index.ts new file mode 100644 index 0000000..f4c0d86 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Card/index.ts @@ -0,0 +1,3 @@ +import CardTitle from './src/CardTitle.vue' + +export { CardTitle } diff --git a/marketing-ui/admin-ui/src/components/Card/src/CardTitle.vue b/marketing-ui/admin-ui/src/components/Card/src/CardTitle.vue new file mode 100644 index 0000000..76a8356 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Card/src/CardTitle.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/ColorInput/index.vue b/marketing-ui/admin-ui/src/components/ColorInput/index.vue new file mode 100644 index 0000000..63ff73c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ColorInput/index.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/ConfigGlobal/index.ts b/marketing-ui/admin-ui/src/components/ConfigGlobal/index.ts new file mode 100644 index 0000000..dda2462 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ConfigGlobal/index.ts @@ -0,0 +1,3 @@ +import ConfigGlobal from './src/ConfigGlobal.vue' + +export { ConfigGlobal } diff --git a/marketing-ui/admin-ui/src/components/ConfigGlobal/src/ConfigGlobal.vue b/marketing-ui/admin-ui/src/components/ConfigGlobal/src/ConfigGlobal.vue new file mode 100644 index 0000000..af543df --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ConfigGlobal/src/ConfigGlobal.vue @@ -0,0 +1,62 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/ContentDetailWrap/index.ts b/marketing-ui/admin-ui/src/components/ContentDetailWrap/index.ts new file mode 100644 index 0000000..1871cac --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ContentDetailWrap/index.ts @@ -0,0 +1,3 @@ +import ContentDetailWrap from './src/ContentDetailWrap.vue' + +export { ContentDetailWrap } diff --git a/marketing-ui/admin-ui/src/components/ContentDetailWrap/src/ContentDetailWrap.vue b/marketing-ui/admin-ui/src/components/ContentDetailWrap/src/ContentDetailWrap.vue new file mode 100644 index 0000000..a9eacc0 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ContentDetailWrap/src/ContentDetailWrap.vue @@ -0,0 +1,58 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/ContentWrap/index.ts b/marketing-ui/admin-ui/src/components/ContentWrap/index.ts new file mode 100644 index 0000000..8c22cc8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ContentWrap/index.ts @@ -0,0 +1,3 @@ +import ContentWrap from './src/ContentWrap.vue' + +export { ContentWrap } diff --git a/marketing-ui/admin-ui/src/components/ContentWrap/src/ContentWrap.vue b/marketing-ui/admin-ui/src/components/ContentWrap/src/ContentWrap.vue new file mode 100644 index 0000000..e603596 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ContentWrap/src/ContentWrap.vue @@ -0,0 +1,36 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/CountTo/index.ts b/marketing-ui/admin-ui/src/components/CountTo/index.ts new file mode 100644 index 0000000..2119f02 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/CountTo/index.ts @@ -0,0 +1,3 @@ +import CountTo from './src/CountTo.vue' + +export { CountTo } diff --git a/marketing-ui/admin-ui/src/components/CountTo/src/CountTo.vue b/marketing-ui/admin-ui/src/components/CountTo/src/CountTo.vue new file mode 100644 index 0000000..7a19bec --- /dev/null +++ b/marketing-ui/admin-ui/src/components/CountTo/src/CountTo.vue @@ -0,0 +1,182 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Crontab/index.ts b/marketing-ui/admin-ui/src/components/Crontab/index.ts new file mode 100644 index 0000000..6beeef8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Crontab/index.ts @@ -0,0 +1,2 @@ +import Crontab from './src/Crontab.vue' +export { Crontab } diff --git a/marketing-ui/admin-ui/src/components/Crontab/src/Crontab.vue b/marketing-ui/admin-ui/src/components/Crontab/src/Crontab.vue new file mode 100644 index 0000000..0914bb7 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Crontab/src/Crontab.vue @@ -0,0 +1,1015 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/Cropper/index.ts b/marketing-ui/admin-ui/src/components/Cropper/index.ts new file mode 100644 index 0000000..8fcc618 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Cropper/index.ts @@ -0,0 +1,4 @@ +import CropperImage from './src/Cropper.vue' +import CropperAvatar from './src/CropperAvatar.vue' + +export { CropperImage, CropperAvatar } diff --git a/marketing-ui/admin-ui/src/components/Cropper/src/CopperModal.vue b/marketing-ui/admin-ui/src/components/Cropper/src/CopperModal.vue new file mode 100644 index 0000000..27052b8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Cropper/src/CopperModal.vue @@ -0,0 +1,261 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Cropper/src/Cropper.vue b/marketing-ui/admin-ui/src/components/Cropper/src/Cropper.vue new file mode 100644 index 0000000..871aed8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Cropper/src/Cropper.vue @@ -0,0 +1,183 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Cropper/src/CropperAvatar.vue b/marketing-ui/admin-ui/src/components/Cropper/src/CropperAvatar.vue new file mode 100644 index 0000000..9464c2a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Cropper/src/CropperAvatar.vue @@ -0,0 +1,142 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Cropper/src/types.ts b/marketing-ui/admin-ui/src/components/Cropper/src/types.ts new file mode 100644 index 0000000..bcad3b4 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Cropper/src/types.ts @@ -0,0 +1,8 @@ +import type Cropper from 'cropperjs' + +export interface CropendResult { + imgBase64: string + imgInfo: Cropper.Data +} + +export type { Cropper } diff --git a/marketing-ui/admin-ui/src/components/DeptSelectForm/index.vue b/marketing-ui/admin-ui/src/components/DeptSelectForm/index.vue new file mode 100644 index 0000000..140f495 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DeptSelectForm/index.vue @@ -0,0 +1,122 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Descriptions/index.ts b/marketing-ui/admin-ui/src/components/Descriptions/index.ts new file mode 100644 index 0000000..243bc39 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Descriptions/index.ts @@ -0,0 +1,4 @@ +import Descriptions from './src/Descriptions.vue' +import DescriptionsItemLabel from './src/DescriptionsItemLabel.vue' + +export { Descriptions, DescriptionsItemLabel } diff --git a/marketing-ui/admin-ui/src/components/Descriptions/src/Descriptions.vue b/marketing-ui/admin-ui/src/components/Descriptions/src/Descriptions.vue new file mode 100644 index 0000000..184d95c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Descriptions/src/Descriptions.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/Descriptions/src/DescriptionsItemLabel.vue b/marketing-ui/admin-ui/src/components/Descriptions/src/DescriptionsItemLabel.vue new file mode 100644 index 0000000..4efb2fb --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Descriptions/src/DescriptionsItemLabel.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/Dialog/index.ts b/marketing-ui/admin-ui/src/components/Dialog/index.ts new file mode 100644 index 0000000..1655dad --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Dialog/index.ts @@ -0,0 +1,3 @@ +import Dialog from './src/Dialog.vue' + +export { Dialog } diff --git a/marketing-ui/admin-ui/src/components/Dialog/src/Dialog.vue b/marketing-ui/admin-ui/src/components/Dialog/src/Dialog.vue new file mode 100644 index 0000000..9bf5b7a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Dialog/src/Dialog.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DictTag/index.ts b/marketing-ui/admin-ui/src/components/DictTag/index.ts new file mode 100644 index 0000000..4db2742 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DictTag/index.ts @@ -0,0 +1,3 @@ +import DictTag from './src/DictTag.vue' + +export { DictTag } diff --git a/marketing-ui/admin-ui/src/components/DictTag/src/DictTag.vue b/marketing-ui/admin-ui/src/components/DictTag/src/DictTag.vue new file mode 100644 index 0000000..6414eaa --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DictTag/src/DictTag.vue @@ -0,0 +1,90 @@ + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentContainer.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentContainer.vue new file mode 100644 index 0000000..4856722 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentContainer.vue @@ -0,0 +1,239 @@ + + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentContainerProperty.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentContainerProperty.vue new file mode 100644 index 0000000..5d18785 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentContainerProperty.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentLibrary.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentLibrary.vue new file mode 100644 index 0000000..fdb0b1d --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/ComponentLibrary.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/config.ts new file mode 100644 index 0000000..3e74a51 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/config.ts @@ -0,0 +1,50 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 轮播图属性 */ +export interface CarouselProperty { + // 类型:默认 | 卡片 + type: 'default' | 'card' + // 指示器样式:点 | 数字 + indicator: 'dot' | 'number' + // 是否自动播放 + autoplay: boolean + // 播放间隔 + interval: number + // 轮播内容 + items: CarouselItemProperty[] + // 组件样式 + style: ComponentStyle +} +// 轮播内容属性 +export interface CarouselItemProperty { + // 类型:图片 | 视频 + type: 'img' | 'video' + // 图片链接 + imgUrl: string + // 视频链接 + videoUrl: string + // 跳转链接 + url: string +} + +// 定义组件 +export const component = { + id: 'Carousel', + name: '轮播图', + icon: 'system-uicons:carousel', + property: { + type: 'default', + indicator: 'dot', + autoplay: false, + interval: 3, + items: [ + { type: 'img', imgUrl: 'https://static.iocoder.cn/mall/banner-01.jpg', videoUrl: '' }, + { type: 'img', imgUrl: 'https://static.iocoder.cn/mall/banner-02.jpg', videoUrl: '' } + ] as CarouselItemProperty[], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/index.vue new file mode 100644 index 0000000..360b4a4 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/index.vue @@ -0,0 +1,43 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/property.vue new file mode 100644 index 0000000..06cfda4 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Carousel/property.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/component.tsx b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/component.tsx new file mode 100644 index 0000000..689690b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/component.tsx @@ -0,0 +1,73 @@ +import * as CouponTemplateApi from '@/api/mall/promotion/coupon/couponTemplate' +import { CouponTemplateValidityTypeEnum, PromotionDiscountTypeEnum } from '@/utils/constants' +import { floatToFixed2 } from '@/utils' +import { formatDate } from '@/utils/formatTime' +import { object } from 'vue-types' + +// 优惠值 +export const CouponDiscount = defineComponent({ + name: 'CouponDiscount', + props: { + coupon: object() + }, + setup(props) { + const coupon = props.coupon as CouponTemplateApi.CouponTemplateVO + // 折扣 + let value = coupon.discountPercent + '' + let suffix = ' 折' + // 满减 + if (coupon.discountType === PromotionDiscountTypeEnum.PRICE.type) { + value = floatToFixed2(coupon.discountPrice) + suffix = ' 元' + } + return () => ( +

    + ) + } +}) + +// 优惠描述 +export const CouponDiscountDesc = defineComponent({ + name: 'CouponDiscountDesc', + props: { + coupon: object() + }, + setup(props) { + const coupon = props.coupon as CouponTemplateApi.CouponTemplateVO + // 使用条件 + const useCondition = coupon.usePrice > 0 ? `满${floatToFixed2(coupon.usePrice)}元,` : '' + // 优惠描述 + const discountDesc = + coupon.discountType === PromotionDiscountTypeEnum.PRICE.type + ? `减${floatToFixed2(coupon.discountPrice)}元` + : `打${coupon.discountPercent}折` + return () => ( +
    + {useCondition} + {discountDesc} +
    + ) + } +}) + +// 有效期 +export const CouponValidTerm = defineComponent({ + name: 'CouponValidTerm', + props: { + coupon: object() + }, + setup(props) { + const coupon = props.coupon as CouponTemplateApi.CouponTemplateVO + const text = + coupon.validityType === CouponTemplateValidityTypeEnum.DATE.type + ? `有效期:${formatDate(coupon.validStartTime, 'YYYY-MM-DD')} 至 ${formatDate( + coupon.validEndTime, + 'YYYY-MM-DD' + )}` + : `领取后第 ${coupon.fixedStartTerm} - ${coupon.fixedEndTerm} 天内可用` + return () =>
    {text}
    + } +}) diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/config.ts new file mode 100644 index 0000000..304533d --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/config.ts @@ -0,0 +1,47 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 商品卡片属性 */ +export interface CouponCardProperty { + // 列数 + columns: number + // 背景图 + bgImg: string + // 文字颜色 + textColor: string + // 按钮样式 + button: { + // 颜色 + color: string + // 背景颜色 + bgColor: string + } + // 间距 + space: number + // 优惠券编号列表 + couponIds: number[] + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'CouponCard', + name: '优惠券', + icon: 'ep:ticket', + property: { + columns: 1, + bgImg: '', + textColor: '#E9B461', + button: { + color: '#434343', + bgColor: '' + }, + space: 0, + couponIds: [], + style: { + bgType: 'color', + bgColor: '', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/index.vue new file mode 100644 index 0000000..3e2302a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/index.vue @@ -0,0 +1,142 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/property.vue new file mode 100644 index 0000000..604afe9 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/CouponCard/property.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/config.ts new file mode 100644 index 0000000..9b55360 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/config.ts @@ -0,0 +1,29 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +/** 分割线属性 */ +export interface DividerProperty { + // 高度 + height: number + // 线宽 + lineWidth: number + // 边距类型 + paddingType: 'none' | 'horizontal' + // 颜色 + lineColor: string + // 类型 + borderType: 'solid' | 'dashed' | 'dotted' | 'none' +} + +// 定义组件 +export const component = { + id: 'Divider', + name: '分割线', + icon: 'tdesign:component-divider-vertical', + property: { + height: 30, + lineWidth: 1, + paddingType: 'none', + lineColor: '#dcdfe6', + borderType: 'solid' + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/index.vue new file mode 100644 index 0000000..f778504 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/index.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/property.vue new file mode 100644 index 0000000..dc2a4da --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Divider/property.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/config.ts new file mode 100644 index 0000000..fcf129f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/config.ts @@ -0,0 +1,36 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +// 悬浮按钮属性 +export interface FloatingActionButtonProperty { + // 展开方向 + direction: 'horizontal' | 'vertical' + // 是否显示文字 + showText: boolean + // 按钮列表 + list: FloatingActionButtonItemProperty[] +} + +// 悬浮按钮项属性 +export interface FloatingActionButtonItemProperty { + // 图片地址 + imgUrl: string + // 跳转连接 + url: string + // 文字 + text: string + // 文字颜色 + textColor: string +} + +// 定义组件 +export const component = { + id: 'FloatingActionButton', + name: '悬浮按钮', + icon: 'tabler:float-right', + position: 'fixed', + property: { + direction: 'vertical', + showText: true, + list: [{ textColor: '#fff' }] + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/index.vue new file mode 100644 index 0000000..c2b9926 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/index.vue @@ -0,0 +1,74 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/property.vue new file mode 100644 index 0000000..6eeb217 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/FloatingActionButton/property.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/controller.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/controller.ts new file mode 100644 index 0000000..a7bd762 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/controller.ts @@ -0,0 +1,143 @@ +import { HotZoneItemProperty } from '@/components/DiyEditor/components/mobile/HotZone/config' +import { StyleValue } from 'vue' + +// 热区的最小宽高 +export const HOT_ZONE_MIN_SIZE = 100 + +// 控制的类型 +export enum CONTROL_TYPE_ENUM { + LEFT, + TOP, + WIDTH, + HEIGHT +} + +// 定义热区的控制点 +export interface ControlDot { + position: string + types: CONTROL_TYPE_ENUM[] + style: StyleValue +} + +// 热区的8个控制点 +export const CONTROL_DOT_LIST = [ + { + position: '左上角', + types: [ + CONTROL_TYPE_ENUM.LEFT, + CONTROL_TYPE_ENUM.TOP, + CONTROL_TYPE_ENUM.WIDTH, + CONTROL_TYPE_ENUM.HEIGHT + ], + style: { left: '-5px', top: '-5px', cursor: 'nwse-resize' } + }, + { + position: '上方中间', + types: [CONTROL_TYPE_ENUM.TOP, CONTROL_TYPE_ENUM.HEIGHT], + style: { left: '50%', top: '-5px', cursor: 'n-resize', transform: 'translateX(-50%)' } + }, + { + position: '右上角', + types: [CONTROL_TYPE_ENUM.TOP, CONTROL_TYPE_ENUM.WIDTH, CONTROL_TYPE_ENUM.HEIGHT], + style: { right: '-5px', top: '-5px', cursor: 'nesw-resize' } + }, + { + position: '右侧中间', + types: [CONTROL_TYPE_ENUM.WIDTH], + style: { right: '-5px', top: '50%', cursor: 'e-resize', transform: 'translateX(-50%)' } + }, + { + position: '右下角', + types: [CONTROL_TYPE_ENUM.WIDTH, CONTROL_TYPE_ENUM.HEIGHT], + style: { right: '-5px', bottom: '-5px', cursor: 'nwse-resize' } + }, + { + position: '下方中间', + types: [CONTROL_TYPE_ENUM.HEIGHT], + style: { left: '50%', bottom: '-5px', cursor: 's-resize', transform: 'translateX(-50%)' } + }, + { + position: '左下角', + types: [CONTROL_TYPE_ENUM.LEFT, CONTROL_TYPE_ENUM.WIDTH, CONTROL_TYPE_ENUM.HEIGHT], + style: { left: '-5px', bottom: '-5px', cursor: 'nesw-resize' } + }, + { + position: '左侧中间', + types: [CONTROL_TYPE_ENUM.LEFT, CONTROL_TYPE_ENUM.WIDTH], + style: { left: '-5px', top: '50%', cursor: 'w-resize', transform: 'translateX(-50%)' } + } +] as ControlDot[] + +//region 热区的缩放 +// 热区的缩放比例 +export const HOT_ZONE_SCALE_RATE = 2 +// 缩小:缩回适合手机屏幕的大小 +export const zoomOut = (list?: HotZoneItemProperty[]) => { + return ( + list?.map((hotZone) => ({ + ...hotZone, + left: (hotZone.left /= HOT_ZONE_SCALE_RATE), + top: (hotZone.top /= HOT_ZONE_SCALE_RATE), + width: (hotZone.width /= HOT_ZONE_SCALE_RATE), + height: (hotZone.height /= HOT_ZONE_SCALE_RATE) + })) || [] + ) +} +// 放大:作用是为了方便在电脑屏幕上编辑 +export const zoomIn = (list?: HotZoneItemProperty[]) => { + return ( + list?.map((hotZone) => ({ + ...hotZone, + left: (hotZone.left *= HOT_ZONE_SCALE_RATE), + top: (hotZone.top *= HOT_ZONE_SCALE_RATE), + width: (hotZone.width *= HOT_ZONE_SCALE_RATE), + height: (hotZone.height *= HOT_ZONE_SCALE_RATE) + })) || [] + ) +} +//endregion + +/** + * 封装热区拖拽 + * + * 注:为什么不使用vueuse的useDraggable。在本场景下,其使用方式比较复杂 + * @param hotZone 热区 + * @param downEvent 鼠标按下事件 + * @param callback 回调函数 + */ +export const useDraggable = ( + hotZone: HotZoneItemProperty, + downEvent: MouseEvent, + callback: ( + left: number, + top: number, + width: number, + height: number, + moveWidth: number, + moveHeight: number + ) => void +) => { + // 阻止事件冒泡 + downEvent.stopPropagation() + + // 移动前的鼠标坐标 + const { clientX: startX, clientY: startY } = downEvent + // 移动前的热区坐标、大小 + const { left, top, width, height } = hotZone + + // 监听鼠标移动 + document.onmousemove = (e) => { + // 移动宽度 + const moveWidth = e.clientX - startX + // 移动高度 + const moveHeight = e.clientY - startY + // 移动回调 + callback(left, top, width, height, moveWidth, moveHeight) + } + + // 松开鼠标后,结束拖拽 + document.onmouseup = () => { + document.onmousemove = null + document.onmouseup = null + } +} diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/index.vue new file mode 100644 index 0000000..3925057 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/components/HotZoneEditDialog/index.vue @@ -0,0 +1,236 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/config.ts new file mode 100644 index 0000000..80ed855 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/config.ts @@ -0,0 +1,43 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 热区属性 */ +export interface HotZoneProperty { + // 图片地址 + imgUrl: string + // 导航菜单列表 + list: HotZoneItemProperty[] + // 组件样式 + style: ComponentStyle +} + +/** 热区项目属性 */ +export interface HotZoneItemProperty { + // 链接的名称 + name: string + // 链接 + url: string + // 宽 + width: number + // 高 + height: number + // 上 + top: number + // 左 + left: number +} + +// 定义组件 +export const component = { + id: 'HotZone', + name: '热区', + icon: 'tabler:hand-click', + property: { + imgUrl: '', + list: [] as HotZoneItemProperty[], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/index.vue new file mode 100644 index 0000000..3a9b842 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/index.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/property.vue new file mode 100644 index 0000000..65892f8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/HotZone/property.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/config.ts new file mode 100644 index 0000000..68edf72 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/config.ts @@ -0,0 +1,27 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 图片展示属性 */ +export interface ImageBarProperty { + // 图片链接 + imgUrl: string + // 跳转链接 + url: string + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'ImageBar', + name: '图片展示', + icon: 'ep:picture', + property: { + imgUrl: '', + url: '', + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/index.vue new file mode 100644 index 0000000..d9685b5 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/index.vue @@ -0,0 +1,24 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/property.vue new file mode 100644 index 0000000..fe08756 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ImageBar/property.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/config.ts new file mode 100644 index 0000000..5e10ab5 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/config.ts @@ -0,0 +1,49 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 广告魔方属性 */ +export interface MagicCubeProperty { + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间隔 + space: number + // 导航菜单列表 + list: MagicCubeItemProperty[] + // 组件样式 + style: ComponentStyle +} + +/** 广告魔方项目属性 */ +export interface MagicCubeItemProperty { + // 图标链接 + imgUrl: string + // 链接 + url: string + // 宽 + width: number + // 高 + height: number + // 上 + top: number + // 左 + left: number +} + +// 定义组件 +export const component = { + id: 'MagicCube', + name: '广告魔方', + icon: 'bi:columns', + property: { + borderRadiusTop: 0, + borderRadiusBottom: 0, + space: 0, + list: [], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/index.vue new file mode 100644 index 0000000..48fb6c7 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/index.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/property.vue new file mode 100644 index 0000000..dee3117 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MagicCube/property.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/config.ts new file mode 100644 index 0000000..9f91ceb --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/config.ts @@ -0,0 +1,79 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' +import { cloneDeep } from 'lodash-es' + +/** 宫格导航属性 */ +export interface MenuGridProperty { + // 列数 + column: number + // 导航菜单列表 + list: MenuGridItemProperty[] + // 组件样式 + style: ComponentStyle +} + +/** 宫格导航项目属性 */ +export interface MenuGridItemProperty { + // 图标链接 + iconUrl: string + // 标题 + title: string + // 标题颜色 + titleColor: string + // 副标题 + subtitle: string + // 副标题颜色 + subtitleColor: string + // 链接 + url: string + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标文字 + text: string + // 角标文字颜色 + textColor: string + // 角标背景颜色 + bgColor: string + } +} + +export const EMPTY_MENU_GRID_ITEM_PROPERTY = { + title: '标题', + titleColor: '#333', + subtitle: '副标题', + subtitleColor: '#bbb', + badge: { + show: false, + textColor: '#fff', + bgColor: '#FF6000' + } +} as MenuGridItemProperty + +// 定义组件 +export const component = { + id: 'MenuGrid', + name: '宫格导航', + icon: 'bi:grid-3x3-gap', + property: { + column: 3, + list: [cloneDeep(EMPTY_MENU_GRID_ITEM_PROPERTY)], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8, + marginLeft: 8, + marginRight: 8, + padding: 8, + paddingTop: 8, + paddingRight: 8, + paddingBottom: 8, + paddingLeft: 8, + borderRadius: 8, + borderTopLeftRadius: 8, + borderTopRightRadius: 8, + borderBottomRightRadius: 8, + borderBottomLeftRadius: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/index.vue new file mode 100644 index 0000000..1c5ef1d --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/index.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/property.vue new file mode 100644 index 0000000..e05988e --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuGrid/property.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/config.ts new file mode 100644 index 0000000..f96fd0a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/config.ts @@ -0,0 +1,48 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' +import { cloneDeep } from 'lodash-es' + +/** 列表导航属性 */ +export interface MenuListProperty { + // 导航菜单列表 + list: MenuListItemProperty[] + // 组件样式 + style: ComponentStyle +} + +/** 列表导航项目属性 */ +export interface MenuListItemProperty { + // 图标链接 + iconUrl: string + // 标题 + title: string + // 标题颜色 + titleColor: string + // 副标题 + subtitle: string + // 副标题颜色 + subtitleColor: string + // 链接 + url: string +} + +export const EMPTY_MENU_LIST_ITEM_PROPERTY = { + title: '标题', + titleColor: '#333', + subtitle: '副标题', + subtitleColor: '#bbb' +} + +// 定义组件 +export const component = { + id: 'MenuList', + name: '列表导航', + icon: 'fa-solid:list', + property: { + list: [cloneDeep(EMPTY_MENU_LIST_ITEM_PROPERTY)], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/index.vue new file mode 100644 index 0000000..9a56fd9 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/index.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/property.vue new file mode 100644 index 0000000..b665b32 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuList/property.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/config.ts new file mode 100644 index 0000000..fe5f4e8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/config.ts @@ -0,0 +1,66 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' +import { cloneDeep } from 'lodash-es' + +/** 菜单导航属性 */ +export interface MenuSwiperProperty { + // 布局: 图标+文字 | 图标 + layout: 'iconText' | 'icon' + // 行数 + row: number + // 列数 + column: number + // 导航菜单列表 + list: MenuSwiperItemProperty[] + // 组件样式 + style: ComponentStyle +} +/** 菜单导航项目属性 */ +export interface MenuSwiperItemProperty { + // 图标链接 + iconUrl: string + // 标题 + title: string + // 标题颜色 + titleColor: string + // 链接 + url: string + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标文字 + text: string + // 角标文字颜色 + textColor: string + // 角标背景颜色 + bgColor: string + } +} + +export const EMPTY_MENU_SWIPER_ITEM_PROPERTY = { + title: '标题', + titleColor: '#333', + badge: { + show: false, + textColor: '#fff', + bgColor: '#FF6000' + } +} as MenuSwiperItemProperty + +// 定义组件 +export const component = { + id: 'MenuSwiper', + name: '菜单导航', + icon: 'bi:grid-3x2-gap', + property: { + layout: 'iconText', + row: 1, + column: 3, + list: [cloneDeep(EMPTY_MENU_SWIPER_ITEM_PROPERTY)], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/index.vue new file mode 100644 index 0000000..f8e2bbc --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/index.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/property.vue new file mode 100644 index 0000000..3dd3f7c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/MenuSwiper/property.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue new file mode 100644 index 0000000..ea0e7ca --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/components/CellProperty.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/config.ts new file mode 100644 index 0000000..36612a3 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/config.ts @@ -0,0 +1,82 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +/** 顶部导航栏属性 */ +export interface NavigationBarProperty { + // 背景类型 + bgType: 'color' | 'img' + // 背景颜色 + bgColor: string + // 图片链接 + bgImg: string + // 样式类型:默认 | 沉浸式 + styleType: 'normal' | 'inner' + // 常驻显示 + alwaysShow: boolean + // 小程序单元格列表 + mpCells: NavigationBarCellProperty[] + // 其它平台单元格列表 + otherCells: NavigationBarCellProperty[] + // 本地变量 + _local: { + // 预览顶部导航(小程序) + previewMp: boolean + // 预览顶部导航(非小程序) + previewOther: boolean + } +} + +/** 顶部导航栏 - 单元格 属性 */ +export interface NavigationBarCellProperty { + // 类型:文字 | 图片 | 搜索框 + type: 'text' | 'image' | 'search' + // 宽度 + width: number + // 高度 + height: number + // 顶部位置 + top: number + // 左侧位置 + left: number + // 文字内容 + text: string + // 文字颜色 + textColor: string + // 图片地址 + imgUrl: string + // 图片链接 + url: string + // 搜索框:提示文字 + placeholder: string + // 搜索框:边框圆角半径 + borderRadius: number +} + +// 定义组件 +export const component = { + id: 'NavigationBar', + name: '顶部导航栏', + icon: 'tabler:layout-navbar', + property: { + bgType: 'color', + bgColor: '#fff', + bgImg: '', + styleType: 'normal', + alwaysShow: true, + mpCells: [ + { + type: 'text', + textColor: '#111111' + } + ], + otherCells: [ + { + type: 'text', + textColor: '#111111' + } + ], + _local: { + previewMp: true, + previewOther: false + } + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/index.vue new file mode 100644 index 0000000..c5a92b3 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/index.vue @@ -0,0 +1,90 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/property.vue new file mode 100644 index 0000000..17534cf --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NavigationBar/property.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/config.ts new file mode 100644 index 0000000..b6b0860 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/config.ts @@ -0,0 +1,46 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 公告栏属性 */ +export interface NoticeBarProperty { + // 图标地址 + iconUrl: string + // 公告内容列表 + contents: NoticeContentProperty[] + // 背景颜色 + backgroundColor: string + // 文字颜色 + textColor: string + // 组件样式 + style: ComponentStyle +} + +/** 内容属性 */ +export interface NoticeContentProperty { + // 内容文字 + text: string + // 链接地址 + url: string +} + +// 定义组件 +export const component = { + id: 'NoticeBar', + name: '公告栏', + icon: 'ep:bell', + property: { + iconUrl: 'http://mall.yudao.iocoder.cn/static/images/xinjian.png', + contents: [ + { + text: '', + url: '' + } + ], + backgroundColor: '#fff', + textColor: '#333', + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/index.vue new file mode 100644 index 0000000..fce1afb --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/index.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/property.vue new file mode 100644 index 0000000..99d04b0 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/NoticeBar/property.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PageConfig/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PageConfig/config.ts new file mode 100644 index 0000000..f8e45e4 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PageConfig/config.ts @@ -0,0 +1,23 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +/** 页面设置属性 */ +export interface PageConfigProperty { + // 页面描述 + description: string + // 页面背景颜色 + backgroundColor: string + // 页面背景图片 + backgroundImage: string +} + +// 定义页面组件 +export const component = { + id: 'PageConfig', + name: '页面设置', + icon: 'ep:document', + property: { + description: '', + backgroundColor: '#f5f5f5', + backgroundImage: '' + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PageConfig/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PageConfig/property.vue new file mode 100644 index 0000000..d8f51d2 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PageConfig/property.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/config.ts new file mode 100644 index 0000000..e814090 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/config.ts @@ -0,0 +1,26 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +/** 弹窗广告属性 */ +export interface PopoverProperty { + list: PopoverItemProperty[] +} + +export interface PopoverItemProperty { + // 图片地址 + imgUrl: string + // 跳转连接 + url: string + // 显示类型:仅显示一次、每次启动都会显示 + showType: 'once' | 'always' +} + +// 定义组件 +export const component = { + id: 'Popover', + name: '弹窗广告', + icon: 'carbon:popup', + position: 'fixed', + property: { + list: [{ showType: 'once' }] + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/index.vue new file mode 100644 index 0000000..347599b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/index.vue @@ -0,0 +1,38 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/property.vue new file mode 100644 index 0000000..21be46e --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/Popover/property.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/config.ts new file mode 100644 index 0000000..735b6ba --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/config.ts @@ -0,0 +1,97 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 商品卡片属性 */ +export interface ProductCardProperty { + // 布局类型:单列大图 | 单列小图 | 双列 + layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol' + // 商品字段 + fields: { + // 商品名称 + name: ProductCardFieldProperty + // 商品简介 + introduction: ProductCardFieldProperty + // 商品价格 + price: ProductCardFieldProperty + // 商品市场价 + marketPrice: ProductCardFieldProperty + // 商品销量 + salesCount: ProductCardFieldProperty + // 商品库存 + stock: ProductCardFieldProperty + } + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标图片 + imgUrl: string + } + // 按钮 + btnBuy: { + // 类型:文字 | 图片 + type: 'text' | 'img' + // 文字 + text: string + // 文字按钮:背景渐变起始颜色 + bgBeginColor: string + // 文字按钮:背景渐变结束颜色 + bgEndColor: string + // 图片按钮:图片地址 + imgUrl: string + } + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间距 + space: number + // 商品编号列表 + spuIds: number[] + // 组件样式 + style: ComponentStyle +} +// 商品字段 +export interface ProductCardFieldProperty { + // 是否显示 + show: boolean + // 颜色 + color: string +} + +// 定义组件 +export const component = { + id: 'ProductCard', + name: '商品卡片', + icon: 'fluent:text-column-two-left-24-filled', + property: { + layoutType: 'oneColBigImg', + fields: { + name: { show: true, color: '#000' }, + introduction: { show: true, color: '#999' }, + price: { show: true, color: '#ff3000' }, + marketPrice: { show: true, color: '#c4c4c4' }, + salesCount: { show: true, color: '#c4c4c4' }, + stock: { show: false, color: '#c4c4c4' } + }, + badge: { show: false, imgUrl: '' }, + btnBuy: { + type: 'text', + text: '立即购买', + // todo: @owen 根据主题色配置 + bgBeginColor: '#FF6000', + bgEndColor: '#FE832A', + imgUrl: '' + }, + borderRadiusTop: 8, + borderRadiusBottom: 8, + space: 8, + spuIds: [], + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/index.vue new file mode 100644 index 0000000..25f8cb8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/index.vue @@ -0,0 +1,167 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/property.vue new file mode 100644 index 0000000..91846e6 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductCard/property.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/config.ts new file mode 100644 index 0000000..1f16832 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/config.ts @@ -0,0 +1,64 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 商品栏属性 */ +export interface ProductListProperty { + // 布局类型:双列 | 三列 | 水平滑动 + layoutType: 'twoCol' | 'threeCol' | 'horizSwiper' + // 商品字段 + fields: { + // 商品名称 + name: ProductListFieldProperty + // 商品价格 + price: ProductListFieldProperty + } + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标图片 + imgUrl: string + } + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间距 + space: number + // 商品编号列表 + spuIds: number[] + // 组件样式 + style: ComponentStyle +} +// 商品字段 +export interface ProductListFieldProperty { + // 是否显示 + show: boolean + // 颜色 + color: string +} + +// 定义组件 +export const component = { + id: 'ProductList', + name: '商品栏', + icon: 'fluent:text-column-two-24-filled', + property: { + layoutType: 'twoCol', + fields: { + name: { show: true, color: '#000' }, + price: { show: true, color: '#ff3000' } + }, + badge: { show: false, imgUrl: '' }, + borderRadiusTop: 8, + borderRadiusBottom: 8, + space: 8, + spuIds: [], + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/index.vue new file mode 100644 index 0000000..a51fc07 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/index.vue @@ -0,0 +1,132 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/property.vue new file mode 100644 index 0000000..d7a5a7c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/ProductList/property.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/config.ts new file mode 100644 index 0000000..c6270c2 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/config.ts @@ -0,0 +1,25 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 营销文章属性 */ +export interface PromotionArticleProperty { + // 文章编号 + id: number + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'PromotionArticle', + name: '营销文章', + icon: 'ph:article-medium', + property: { + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/index.vue new file mode 100644 index 0000000..e003b08 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/index.vue @@ -0,0 +1,27 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/property.vue new file mode 100644 index 0000000..10c5840 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionArticle/property.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/config.ts new file mode 100644 index 0000000..f4fdf6e --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/config.ts @@ -0,0 +1,96 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 拼团属性 */ +export interface PromotionCombinationProperty { + // 布局类型:单列 | 三列 + layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol' + // 商品字段 + fields: { + // 商品名称 + name: PromotionCombinationFieldProperty + // 商品简介 + introduction: PromotionCombinationFieldProperty + // 商品价格 + price: PromotionCombinationFieldProperty + // 市场价 + marketPrice: PromotionCombinationFieldProperty + // 商品销量 + salesCount: PromotionCombinationFieldProperty + // 商品库存 + stock: PromotionCombinationFieldProperty + } + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标图片 + imgUrl: string + } + // 按钮 + btnBuy: { + // 类型:文字 | 图片 + type: 'text' | 'img' + // 文字 + text: string + // 文字按钮:背景渐变起始颜色 + bgBeginColor: string + // 文字按钮:背景渐变结束颜色 + bgEndColor: string + // 图片按钮:图片地址 + imgUrl: string + } + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间距 + space: number + // 拼团活动编号 + activityIds: number[] + // 组件样式 + style: ComponentStyle +} + +// 商品字段 +export interface PromotionCombinationFieldProperty { + // 是否显示 + show: boolean + // 颜色 + color: string +} + +// 定义组件 +export const component = { + id: 'PromotionCombination', + name: '拼团', + icon: 'mdi:account-group', + property: { + layoutType: 'oneColBigImg', + fields: { + name: { show: true, color: '#000' }, + introduction: { show: true, color: '#999' }, + price: { show: true, color: '#ff3000' }, + marketPrice: { show: true, color: '#c4c4c4' }, + salesCount: { show: true, color: '#c4c4c4' }, + stock: { show: false, color: '#c4c4c4' } + }, + badge: { show: false, imgUrl: '' }, + btnBuy: { + type: 'text', + text: '去拼团', + bgBeginColor: '#FF6000', + bgEndColor: '#FE832A', + imgUrl: '' + }, + borderRadiusTop: 8, + borderRadiusBottom: 8, + space: 8, + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue new file mode 100644 index 0000000..d41bf1c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue @@ -0,0 +1,201 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/property.vue new file mode 100644 index 0000000..b796e6a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionCombination/property.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/config.ts new file mode 100644 index 0000000..75aa0ff --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/config.ts @@ -0,0 +1,96 @@ +import {ComponentStyle, DiyComponent} from '@/components/DiyEditor/util' + +/** 积分商城属性 */ +export interface PromotionPointProperty { + // 布局类型:单列 | 三列 + layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol' + // 商品字段 + fields: { + // 商品名称 + name: PromotionPointFieldProperty + // 商品简介 + introduction: PromotionPointFieldProperty + // 商品价格 + price: PromotionPointFieldProperty + // 市场价 + marketPrice: PromotionPointFieldProperty + // 商品销量 + salesCount: PromotionPointFieldProperty + // 商品库存 + stock: PromotionPointFieldProperty + } + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标图片 + imgUrl: string + } + // 按钮 + btnBuy: { + // 类型:文字 | 图片 + type: 'text' | 'img' + // 文字 + text: string + // 文字按钮:背景渐变起始颜色 + bgBeginColor: string + // 文字按钮:背景渐变结束颜色 + bgEndColor: string + // 图片按钮:图片地址 + imgUrl: string + } + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间距 + space: number + // 秒杀活动编号 + activityIds: number[] + // 组件样式 + style: ComponentStyle +} + +// 商品字段 +export interface PromotionPointFieldProperty { + // 是否显示 + show: boolean + // 颜色 + color: string +} + +// 定义组件 +export const component = { + id: 'PromotionPoint', + name: '积分商城', + icon: 'ep:present', + property: { + layoutType: 'oneColBigImg', + fields: { + name: { show: true, color: '#000' }, + introduction: { show: true, color: '#999' }, + price: { show: true, color: '#ff3000' }, + marketPrice: { show: true, color: '#c4c4c4' }, + salesCount: { show: true, color: '#c4c4c4' }, + stock: { show: false, color: '#c4c4c4' } + }, + badge: { show: false, imgUrl: '' }, + btnBuy: { + type: 'text', + text: '立即兑换', + bgBeginColor: '#FF6000', + bgEndColor: '#FE832A', + imgUrl: '' + }, + borderRadiusTop: 8, + borderRadiusBottom: 8, + space: 8, + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/index.vue new file mode 100644 index 0000000..4acd93f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/index.vue @@ -0,0 +1,202 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/property.vue new file mode 100644 index 0000000..ea20776 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionPoint/property.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/config.ts new file mode 100644 index 0000000..022be92 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/config.ts @@ -0,0 +1,96 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 秒杀属性 */ +export interface PromotionSeckillProperty { + // 布局类型:单列 | 三列 + layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol' + // 商品字段 + fields: { + // 商品名称 + name: PromotionSeckillFieldProperty + // 商品简介 + introduction: PromotionSeckillFieldProperty + // 商品价格 + price: PromotionSeckillFieldProperty + // 市场价 + marketPrice: PromotionSeckillFieldProperty + // 商品销量 + salesCount: PromotionSeckillFieldProperty + // 商品库存 + stock: PromotionSeckillFieldProperty + } + // 角标 + badge: { + // 是否显示 + show: boolean + // 角标图片 + imgUrl: string + } + // 按钮 + btnBuy: { + // 类型:文字 | 图片 + type: 'text' | 'img' + // 文字 + text: string + // 文字按钮:背景渐变起始颜色 + bgBeginColor: string + // 文字按钮:背景渐变结束颜色 + bgEndColor: string + // 图片按钮:图片地址 + imgUrl: string + } + // 上圆角 + borderRadiusTop: number + // 下圆角 + borderRadiusBottom: number + // 间距 + space: number + // 秒杀活动编号 + activityIds: number[] + // 组件样式 + style: ComponentStyle +} + +// 商品字段 +export interface PromotionSeckillFieldProperty { + // 是否显示 + show: boolean + // 颜色 + color: string +} + +// 定义组件 +export const component = { + id: 'PromotionSeckill', + name: '秒杀', + icon: 'mdi:calendar-time', + property: { + layoutType: 'oneColBigImg', + fields: { + name: { show: true, color: '#000' }, + introduction: { show: true, color: '#999' }, + price: { show: true, color: '#ff3000' }, + marketPrice: { show: true, color: '#c4c4c4' }, + salesCount: { show: true, color: '#c4c4c4' }, + stock: { show: false, color: '#c4c4c4' } + }, + badge: { show: false, imgUrl: '' }, + btnBuy: { + type: 'text', + text: '立即秒杀', + bgBeginColor: '#FF6000', + bgEndColor: '#FE832A', + imgUrl: '' + }, + borderRadiusTop: 8, + borderRadiusBottom: 8, + space: 8, + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue new file mode 100644 index 0000000..3d34a3d --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue @@ -0,0 +1,201 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/property.vue new file mode 100644 index 0000000..594c10b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/PromotionSeckill/property.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/config.ts new file mode 100644 index 0000000..ef47b27 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/config.ts @@ -0,0 +1,43 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 搜索框属性 */ +export interface SearchProperty { + height: number // 搜索栏高度 + showScan: boolean // 显示扫一扫 + borderRadius: number // 框体样式 + placeholder: string // 占位文字 + placeholderPosition: PlaceholderPosition // 占位文字位置 + backgroundColor: string // 框体颜色 + textColor: string // 字体颜色 + hotKeywords: string[] // 热词 + style: ComponentStyle +} + +// 文字位置 +export type PlaceholderPosition = 'left' | 'center' + +// 定义组件 +export const component = { + id: 'SearchBar', + name: '搜索框', + icon: 'ep:search', + property: { + height: 28, + showScan: false, + borderRadius: 0, + placeholder: '搜索商品', + placeholderPosition: 'left', + backgroundColor: 'rgb(238, 238, 238)', + textColor: 'rgb(150, 151, 153)', + hotKeywords: [], + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8, + paddingTop: 8, + paddingRight: 8, + paddingBottom: 8, + paddingLeft: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/index.vue new file mode 100644 index 0000000..9de261a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/index.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/property.vue new file mode 100644 index 0000000..48441d0 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/SearchBar/property.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/config.ts new file mode 100644 index 0000000..88d706f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/config.ts @@ -0,0 +1,97 @@ +import { DiyComponent } from '@/components/DiyEditor/util' + +/** 底部导航菜单属性 */ +export interface TabBarProperty { + // 选项列表 + items: TabBarItemProperty[] + // 主题 + theme: string + // 样式 + style: TabBarStyle +} + +// 选项属性 +export interface TabBarItemProperty { + // 标签文字 + text: string + // 链接 + url: string + // 默认图标链接 + iconUrl: string + // 选中的图标链接 + activeIconUrl: string +} + +// 样式 +export interface TabBarStyle { + // 背景类型 + bgType: 'color' | 'img' + // 背景颜色 + bgColor: string + // 图片链接 + bgImg: string + // 默认颜色 + color: string + // 选中的颜色 + activeColor: string +} + +// 定义组件 +export const component = { + id: 'TabBar', + name: '底部导航', + icon: 'fluent:table-bottom-row-16-filled', + property: { + theme: 'red', + style: { + bgType: 'color', + bgColor: '#fff', + color: '#282828', + activeColor: '#fc4141' + }, + items: [ + { + text: '首页', + url: '/pages/index/index', + iconUrl: 'http://mall.yudao.iocoder.cn/static/images/1-001.png', + activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/1-002.png' + }, + { + text: '分类', + url: '/pages/index/category?id=3', + iconUrl: 'http://mall.yudao.iocoder.cn/static/images/2-001.png', + activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/2-002.png' + }, + { + text: '购物车', + url: '/pages/index/cart', + iconUrl: 'http://mall.yudao.iocoder.cn/static/images/3-001.png', + activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/3-002.png' + }, + { + text: '我的', + url: '/pages/index/user', + iconUrl: 'http://mall.yudao.iocoder.cn/static/images/4-001.png', + activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/4-002.png' + } + ] + } +} as DiyComponent + +export const THEME_LIST = [ + { id: 'red', name: '中国红', icon: 'icon-park-twotone:theme', color: '#d10019' }, + { id: 'orange', name: '桔橙', icon: 'icon-park-twotone:theme', color: '#f37b1d' }, + { id: 'gold', name: '明黄', icon: 'icon-park-twotone:theme', color: '#fbbd08' }, + { id: 'green', name: '橄榄绿', icon: 'icon-park-twotone:theme', color: '#8dc63f' }, + { id: 'cyan', name: '天青', icon: 'icon-park-twotone:theme', color: '#1cbbb4' }, + { id: 'blue', name: '海蓝', icon: 'icon-park-twotone:theme', color: '#0081ff' }, + { id: 'purple', name: '姹紫', icon: 'icon-park-twotone:theme', color: '#6739b6' }, + { id: 'brightRed', name: '嫣红', icon: 'icon-park-twotone:theme', color: '#e54d42' }, + { id: 'forestGreen', name: '森绿', icon: 'icon-park-twotone:theme', color: '#39b54a' }, + { id: 'mauve', name: '木槿', icon: 'icon-park-twotone:theme', color: '#9c26b0' }, + { id: 'pink', name: '桃粉', icon: 'icon-park-twotone:theme', color: '#e03997' }, + { id: 'brown', name: '棕褐', icon: 'icon-park-twotone:theme', color: '#a5673f' }, + { id: 'grey', name: '玄灰', icon: 'icon-park-twotone:theme', color: '#8799a3' }, + { id: 'gray', name: '草灰', icon: 'icon-park-twotone:theme', color: '#aaaaaa' }, + { id: 'black', name: '墨黑', icon: 'icon-park-twotone:theme', color: '#333333' } +] diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/index.vue new file mode 100644 index 0000000..44ba43c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/index.vue @@ -0,0 +1,66 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/property.vue new file mode 100644 index 0000000..e435012 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TabBar/property.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/config.ts new file mode 100644 index 0000000..0c104c9 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/config.ts @@ -0,0 +1,67 @@ +import {ComponentStyle, DiyComponent} from '@/components/DiyEditor/util' + +/** 标题栏属性 */ +export interface TitleBarProperty { + // 偏移 + marginLeft: number + // 显示位置 + textAlign: 'left' | 'center' + // 主标题 + title: string + // 副标题 + description: string + // 标题大小 + titleSize: number + // 描述大小 + descriptionSize: number + // 标题粗细 + titleWeight: number + // 描述粗细 + descriptionWeight: number + // 标题颜色 + titleColor: string + // 描述颜色 + descriptionColor: string + // 查看更多 + more: { + // 是否显示查看更多 + show: false + // 样式选择 + type: 'text' | 'icon' | 'all' + // 自定义文字 + text: string + // 链接 + url: string + } + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'TitleBar', + name: '标题栏', + icon: 'material-symbols:line-start', + property: { + title: '主标题', + description: '副标题', + titleSize: 16, + descriptionSize: 12, + titleWeight: 400, + textAlign: 'left', + descriptionWeight: 200, + titleColor: 'rgba(50, 50, 51, 10)', + descriptionColor: 'rgba(150, 151, 153, 10)', + more: { + //查看更多 + show: false, + type: 'icon', + text: '查看更多', + url: '' + }, + style: { + bgType: 'color', + bgColor: '#fff' + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/index.vue new file mode 100644 index 0000000..7b90729 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/index.vue @@ -0,0 +1,81 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/property.vue new file mode 100644 index 0000000..b31b1e2 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/TitleBar/property.vue @@ -0,0 +1,116 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/config.ts new file mode 100644 index 0000000..7b33776 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/config.ts @@ -0,0 +1,21 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 用户卡片属性 */ +export interface UserCardProperty { + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'UserCard', + name: '用户卡片', + icon: 'mdi:user-card-details', + property: { + style: { + bgType: 'color', + bgColor: '', + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/index.vue new file mode 100644 index 0000000..c61ea64 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/index.vue @@ -0,0 +1,29 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/property.vue new file mode 100644 index 0000000..50ecb55 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCard/property.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/config.ts new file mode 100644 index 0000000..92eba9b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/config.ts @@ -0,0 +1,23 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 用户卡券属性 */ +export interface UserCouponProperty { + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'UserCoupon', + name: '用户卡券', + icon: 'ep:ticket', + property: { + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/index.vue new file mode 100644 index 0000000..27ad310 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/index.vue @@ -0,0 +1,15 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/property.vue new file mode 100644 index 0000000..221cc90 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserCoupon/property.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/config.ts new file mode 100644 index 0000000..f9c5a6d --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/config.ts @@ -0,0 +1,23 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 用户订单属性 */ +export interface UserOrderProperty { + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'UserOrder', + name: '用户订单', + icon: 'ep:list', + property: { + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/index.vue new file mode 100644 index 0000000..450ae54 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/index.vue @@ -0,0 +1,13 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/property.vue new file mode 100644 index 0000000..d315db6 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserOrder/property.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/config.ts new file mode 100644 index 0000000..4e0955f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/config.ts @@ -0,0 +1,23 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 用户资产属性 */ +export interface UserWalletProperty { + // 组件样式 + style: ComponentStyle +} + +// 定义组件 +export const component = { + id: 'UserWallet', + name: '用户资产', + icon: 'ep:wallet-filled', + property: { + style: { + bgType: 'color', + bgColor: '', + marginLeft: 8, + marginRight: 8, + marginBottom: 8 + } as ComponentStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/index.vue new file mode 100644 index 0000000..0efc937 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/index.vue @@ -0,0 +1,15 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/property.vue new file mode 100644 index 0000000..e0ac83e --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/UserWallet/property.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/config.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/config.ts new file mode 100644 index 0000000..02f0374 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/config.ts @@ -0,0 +1,37 @@ +import { ComponentStyle, DiyComponent } from '@/components/DiyEditor/util' + +/** 视频播放属性 */ +export interface VideoPlayerProperty { + // 视频链接 + videoUrl: string + // 封面链接 + posterUrl: string + // 是否自动播放 + autoplay: boolean + // 组件样式 + style: VideoPlayerStyle +} + +// 视频播放样式 +export interface VideoPlayerStyle extends ComponentStyle { + // 视频高度 + height: number +} + +// 定义组件 +export const component = { + id: 'VideoPlayer', + name: '视频播放', + icon: 'ep:video-play', + property: { + videoUrl: '', + posterUrl: '', + autoplay: false, + style: { + bgType: 'color', + bgColor: '#fff', + marginBottom: 8, + height: 300 + } as VideoPlayerStyle + } +} as DiyComponent diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/index.vue new file mode 100644 index 0000000..fa9a914 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/index.vue @@ -0,0 +1,30 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/property.vue b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/property.vue new file mode 100644 index 0000000..1c3deec --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/VideoPlayer/property.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/index.ts b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/index.ts new file mode 100644 index 0000000..5dfbc6b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/components/mobile/index.ts @@ -0,0 +1,61 @@ +/* + * 组件注册 + * + * 组件规范: + * 1. 每个子目录就是一个独立的组件,每个目录包括以下三个文件: + * 2. config.ts:组件配置,必选,用于定义组件、组件默认的属性、定义属性的类型 + * 3. index2.vue:组件展示,用于展示组件的渲染效果。可以不提供,如 Page(页面设置),只需要属性配置表单即可 + * 4. property.vue:组件属性表单,用于配置组件,必选, + * + * 注: + * 组件ID以config.ts中配置的id为准,与组件目录的名称无关,但还是建议组件目录的名称与组件ID保持一致 + */ + +// 导入组件界面模块 +const viewModules: Record = import.meta.glob('./*/*.vue') +// 导入配置模块 +const configModules: Record = import.meta.glob('./*/config.ts', { eager: true }) + +// 界面模块 +const components = {} +// 组件配置模块 +const componentConfigs = {} + +// 组件界面的类型 +type ViewType = 'index' | 'property' + +/** + * 注册组件的界面模块 + * + * @param componentId 组件ID + * @param configPath 配置模块的文件路径 + * @param viewType 组件界面的类型 + */ +const registerComponentViewModule = ( + componentId: string, + configPath: string, + viewType: ViewType +) => { + const viewPath = configPath.replace('config.ts', `${viewType}.vue`) + const viewModule = viewModules[viewPath] + if (viewModule) { + // 定义异步组件 + components[componentId] = defineAsyncComponent(viewModule) + } +} + +// 注册 +Object.keys(configModules).forEach((modulePath: string) => { + const component = configModules[modulePath].component + const componentId = component?.id + if (componentId) { + // 注册组件 + componentConfigs[componentId] = component + // 注册预览界面 + registerComponentViewModule(componentId, modulePath, 'index') + // 注册属性配置表单 + registerComponentViewModule(`${componentId}Property`, modulePath, 'property') + } +}) + +export { components, componentConfigs } diff --git a/marketing-ui/admin-ui/src/components/DiyEditor/index.vue b/marketing-ui/admin-ui/src/components/DiyEditor/index.vue new file mode 100644 index 0000000..27d3fc1 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/DiyEditor/index.vue @@ -0,0 +1,599 @@ + diff --git a/marketing-ui/admin-ui/src/components/Icon/index.ts b/marketing-ui/admin-ui/src/components/Icon/index.ts new file mode 100644 index 0000000..33d1de3 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Icon/index.ts @@ -0,0 +1,4 @@ +import Icon from './src/Icon.vue' +import IconSelect from './src/IconSelect.vue' + +export { Icon, IconSelect } diff --git a/marketing-ui/admin-ui/src/components/Icon/src/Icon.vue b/marketing-ui/admin-ui/src/components/Icon/src/Icon.vue new file mode 100644 index 0000000..7e2ec94 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Icon/src/Icon.vue @@ -0,0 +1,86 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Icon/src/IconSelect.vue b/marketing-ui/admin-ui/src/components/Icon/src/IconSelect.vue new file mode 100644 index 0000000..76cc6d5 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Icon/src/IconSelect.vue @@ -0,0 +1,239 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/Icon/src/data.ts b/marketing-ui/admin-ui/src/components/Icon/src/data.ts new file mode 100644 index 0000000..2a4ed5a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Icon/src/data.ts @@ -0,0 +1,1961 @@ +export const IconJson = { + 'ep:': [ + 'add-location', + 'aim', + 'alarm-clock', + 'apple', + 'arrow-down', + 'arrow-down-bold', + 'arrow-left', + 'arrow-left-bold', + 'arrow-right', + 'arrow-right-bold', + 'arrow-up', + 'arrow-up-bold', + 'avatar', + 'back', + 'baseball', + 'basketball', + 'bell', + 'bell-filled', + 'bicycle', + 'bottom', + 'bottom-left', + 'bottom-right', + 'bowl', + 'box', + 'briefcase', + 'brush', + 'brush-filled', + 'burger', + 'calendar', + 'camera', + 'camera-filled', + 'caret-bottom', + 'caret-left', + 'caret-right', + 'caret-top', + 'cellphone', + 'chat-dot-round', + 'chat-dot-square', + 'chat-line-round', + 'chat-line-square', + 'chat-round', + 'chat-square', + 'check', + 'checked', + 'cherry', + 'chicken', + 'circle-check', + 'circle-check-filled', + 'circle-close', + 'circle-close-filled', + 'circle-plus', + 'circle-plus-filled', + 'clock', + 'close', + 'close-bold', + 'cloudy', + 'coffee', + 'coffee-cup', + 'coin', + 'cold-drink', + 'collection', + 'collection-tag', + 'comment', + 'compass', + 'connection', + 'coordinate', + 'copy-document', + 'cpu', + 'credit-card', + 'crop', + 'd-arrow-left', + 'd-arrow-right', + 'd-caret', + 'data-analysis', + 'data-board', + 'data-line', + 'delete', + 'delete-filled', + 'delete-location', + 'dessert', + 'discount', + 'dish', + 'dish-dot', + 'document', + 'document-add', + 'document-checked', + 'document-copy', + 'document-delete', + 'document-remove', + 'download', + 'drizzling', + 'edit', + 'edit-pen', + 'eleme', + 'eleme-filled', + 'expand', + 'failed', + 'female', + 'files', + 'film', + 'filter', + 'finished', + 'first-aid-kit', + 'flag', + 'fold', + 'folder', + 'folder-add', + 'folder-checked', + 'folder-delete', + 'folder-opened', + 'folder-remove', + 'food', + 'football', + 'fork-spoon', + 'fries', + 'full-screen', + 'goblet', + 'goblet-full', + 'goblet-square', + 'goblet-square-full', + 'goods', + 'goods-filled', + 'grape', + 'grid', + 'guide', + 'headset', + 'help', + 'help-filled', + 'histogram', + 'home-filled', + 'hot-water', + 'house', + 'ice-cream', + 'ice-cream-round', + 'ice-cream-square', + 'ice-drink', + 'ice-tea', + 'info-filled', + 'iphone', + 'key', + 'knife-fork', + 'lightning', + 'link', + 'list', + 'loading', + 'location', + 'location-filled', + 'location-information', + 'lock', + 'lollipop', + 'magic-stick', + 'magnet', + 'male', + 'management', + 'map-location', + 'medal', + 'menu', + 'message', + 'message-box', + 'mic', + 'microphone', + 'milk-tea', + 'minus', + 'money', + 'monitor', + 'moon', + 'moon-night', + 'more', + 'more-filled', + 'mostly-cloudy', + 'mouse', + 'mug', + 'mute', + 'mute-notification', + 'no-smoking', + 'notebook', + 'notification', + 'odometer', + 'office-building', + 'open', + 'operation', + 'opportunity', + 'orange', + 'paperclip', + 'partly-cloudy', + 'pear', + 'phone', + 'phone-filled', + 'picture', + 'picture-filled', + 'picture-rounded', + 'pie-chart', + 'place', + 'platform', + 'plus', + 'pointer', + 'position', + 'postcard', + 'pouring', + 'present', + 'price-tag', + 'printer', + 'promotion', + 'question-filled', + 'rank', + 'reading', + 'reading-lamp', + 'refresh', + 'refresh-left', + 'refresh-right', + 'refrigerator', + 'remove', + 'remove-filled', + 'right', + 'scale-to-original', + 'school', + 'scissor', + 'search', + 'select', + 'sell', + 'semi-select', + 'service', + 'set-up', + 'setting', + 'share', + 'ship', + 'shop', + 'shopping-bag', + 'shopping-cart', + 'shopping-cart-full', + 'smoking', + 'soccer', + 'sold-out', + 'sort', + 'sort-down', + 'sort-up', + 'stamp', + 'star', + 'star-filled', + 'stopwatch', + 'success-filled', + 'sugar', + 'suitcase', + 'sunny', + 'sunrise', + 'sunset', + 'switch', + 'switch-button', + 'takeaway-box', + 'ticket', + 'tickets', + 'timer', + 'toilet-paper', + 'tools', + 'top', + 'top-left', + 'top-right', + 'trend-charts', + 'trophy', + 'turn-off', + 'umbrella', + 'unlock', + 'upload', + 'upload-filled', + 'user', + 'user-filled', + 'van', + 'video-camera', + 'video-camera-filled', + 'video-pause', + 'video-play', + 'view', + 'wallet', + 'wallet-filled', + 'warning', + 'warning-filled', + 'watch', + 'watermelon', + 'wind-power', + 'zoom-in', + 'zoom-out' + ], + 'fa:': [ + '500px', + 'address-book', + 'address-book-o', + 'address-card', + 'address-card-o', + 'adjust', + 'adn', + 'align-center', + 'align-justify', + 'align-left', + 'amazon', + 'ambulance', + 'american-sign-language-interpreting', + 'anchor', + 'android', + 'angellist', + 'angle-double-left', + 'angle-double-up', + 'angle-down', + 'angle-left', + 'angle-up', + 'apple', + 'archive', + 'area-chart', + 'arrow-circle-left', + 'arrow-circle-o-left', + 'arrow-circle-o-up', + 'arrow-circle-up', + 'arrow-left', + 'arrow-up', + 'arrows', + 'arrows-alt', + 'arrows-h', + 'arrows-v', + 'assistive-listening-systems', + 'asterisk', + 'at', + 'audio-description', + 'automobile', + 'backward', + 'balance-scale', + 'ban', + 'bandcamp', + 'bank', + 'bar-chart', + 'barcode', + 'bars', + 'bath', + 'battery', + 'battery-0', + 'battery-1', + 'battery-2', + 'battery-3', + 'bed', + 'beer', + 'behance', + 'behance-square', + 'bell', + 'bell-o', + 'bell-slash', + 'bell-slash-o', + 'bicycle', + 'binoculars', + 'birthday-cake', + 'bitbucket', + 'bitbucket-square', + 'bitcoin', + 'black-tie', + 'blind', + 'bluetooth', + 'bluetooth-b', + 'bold', + 'bolt', + 'bomb', + 'book', + 'bookmark', + 'bookmark-o', + 'braille', + 'briefcase', + 'bug', + 'building', + 'building-o', + 'bullhorn', + 'bullseye', + 'bus', + 'buysellads', + 'cab', + 'calculator', + 'calendar', + 'calendar-check-o', + 'calendar-minus-o', + 'calendar-o', + 'calendar-plus-o', + 'calendar-times-o', + 'camera', + 'camera-retro', + 'caret-down', + 'caret-left', + 'caret-square-o-left', + 'caret-square-o-up', + 'caret-up', + 'cart-arrow-down', + 'cart-plus', + 'cc', + 'cc-amex', + 'cc-diners-club', + 'cc-discover', + 'cc-jcb', + 'cc-mastercard', + 'cc-paypal', + 'cc-stripe', + 'cc-visa', + 'certificate', + 'chain', + 'chain-broken', + 'check', + 'check-circle', + 'check-circle-o', + 'check-square', + 'check-square-o', + 'chevron-circle-left', + 'chevron-circle-up', + 'chevron-down', + 'chevron-left', + 'chevron-up', + 'child', + 'chrome', + 'circle', + 'circle-o', + 'circle-o-notch', + 'circle-thin', + 'clipboard', + 'clock-o', + 'clone', + 'close', + 'cloud', + 'cloud-download', + 'cloud-upload', + 'cny', + 'code', + 'code-fork', + 'codepen', + 'codiepie', + 'coffee', + 'cog', + 'cogs', + 'columns', + 'comment', + 'comment-o', + 'commenting', + 'commenting-o', + 'comments', + 'comments-o', + 'compass', + 'compress', + 'connectdevelop', + 'contao', + 'copy', + 'copyright', + 'creative-commons', + 'credit-card', + 'credit-card-alt', + 'crop', + 'crosshairs', + 'css3', + 'cube', + 'cubes', + 'cut', + 'cutlery', + 'dashboard', + 'dashcube', + 'database', + 'deaf', + 'dedent', + 'delicious', + 'desktop', + 'deviantart', + 'diamond', + 'digg', + 'dollar', + 'dot-circle-o', + 'download', + 'dribbble', + 'drivers-license', + 'drivers-license-o', + 'dropbox', + 'drupal', + 'edge', + 'edit', + 'eercast', + 'eject', + 'ellipsis-h', + 'ellipsis-v', + 'empire', + 'envelope', + 'envelope-o', + 'envelope-open', + 'envelope-open-o', + 'envelope-square', + 'envira', + 'eraser', + 'etsy', + 'eur', + 'exchange', + 'exclamation', + 'exclamation-circle', + 'exclamation-triangle', + 'expand', + 'expeditedssl', + 'external-link', + 'external-link-square', + 'eye', + 'eye-slash', + 'eyedropper', + 'fa', + 'facebook', + 'facebook-official', + 'facebook-square', + 'fast-backward', + 'fax', + 'feed', + 'female', + 'fighter-jet', + 'file', + 'file-archive-o', + 'file-audio-o', + 'file-code-o', + 'file-excel-o', + 'file-image-o', + 'file-movie-o', + 'file-o', + 'file-pdf-o', + 'file-powerpoint-o', + 'file-text', + 'file-text-o', + 'file-word-o', + 'film', + 'filter', + 'fire', + 'fire-extinguisher', + 'firefox', + 'first-order', + 'flag', + 'flag-checkered', + 'flag-o', + 'flask', + 'flickr', + 'floppy-o', + 'folder', + 'folder-o', + 'folder-open', + 'folder-open-o', + 'font', + 'fonticons', + 'fort-awesome', + 'forumbee', + 'foursquare', + 'free-code-camp', + 'frown-o', + 'futbol-o', + 'gamepad', + 'gavel', + 'gbp', + 'genderless', + 'get-pocket', + 'gg', + 'gg-circle', + 'gift', + 'git', + 'git-square', + 'github', + 'github-alt', + 'github-square', + 'gitlab', + 'gittip', + 'glass', + 'glide', + 'glide-g', + 'globe', + 'google', + 'google-plus', + 'google-plus-circle', + 'google-plus-square', + 'google-wallet', + 'graduation-cap', + 'grav', + 'group', + 'h-square', + 'hacker-news', + 'hand-grab-o', + 'hand-lizard-o', + 'hand-o-left', + 'hand-o-up', + 'hand-paper-o', + 'hand-peace-o', + 'hand-pointer-o', + 'hand-scissors-o', + 'hand-spock-o', + 'handshake-o', + 'hashtag', + 'hdd-o', + 'header', + 'headphones', + 'heart', + 'heart-o', + 'heartbeat', + 'history', + 'home', + 'hospital-o', + 'hourglass', + 'hourglass-1', + 'hourglass-2', + 'hourglass-3', + 'hourglass-o', + 'houzz', + 'html5', + 'i-cursor', + 'id-badge', + 'ils', + 'image', + 'imdb', + 'inbox', + 'indent', + 'industry', + 'info', + 'info-circle', + 'inr', + 'instagram', + 'internet-explorer', + 'intersex', + 'ioxhost', + 'italic', + 'joomla', + 'jsfiddle', + 'key', + 'keyboard-o', + 'krw', + 'language', + 'laptop', + 'lastfm', + 'lastfm-square', + 'leaf', + 'leanpub', + 'lemon-o', + 'level-up', + 'life-bouy', + 'lightbulb-o', + 'line-chart', + 'linkedin', + 'linkedin-square', + 'linode', + 'linux', + 'list', + 'list-alt', + 'list-ol', + 'list-ul', + 'location-arrow', + 'lock', + 'long-arrow-left', + 'long-arrow-up', + 'low-vision', + 'magic', + 'magnet', + 'mail-forward', + 'mail-reply', + 'mail-reply-all', + 'male', + 'map', + 'map-marker', + 'map-o', + 'map-pin', + 'map-signs', + 'mars', + 'mars-double', + 'mars-stroke', + 'mars-stroke-h', + 'mars-stroke-v', + 'maxcdn', + 'meanpath', + 'medium', + 'medkit', + 'meetup', + 'meh-o', + 'mercury', + 'microchip', + 'microphone', + 'microphone-slash', + 'minus', + 'minus-circle', + 'minus-square', + 'minus-square-o', + 'mixcloud', + 'mobile', + 'modx', + 'money', + 'moon-o', + 'motorcycle', + 'mouse-pointer', + 'music', + 'neuter', + 'newspaper-o', + 'object-group', + 'object-ungroup', + 'odnoklassniki', + 'odnoklassniki-square', + 'opencart', + 'openid', + 'opera', + 'optin-monster', + 'pagelines', + 'paint-brush', + 'paper-plane', + 'paper-plane-o', + 'paperclip', + 'paragraph', + 'pause', + 'pause-circle', + 'pause-circle-o', + 'paw', + 'paypal', + 'pencil', + 'pencil-square', + 'percent', + 'phone', + 'phone-square', + 'pie-chart', + 'pied-piper', + 'pied-piper-alt', + 'pied-piper-pp', + 'pinterest', + 'pinterest-p', + 'pinterest-square', + 'plane', + 'play', + 'play-circle', + 'play-circle-o', + 'plug', + 'plus', + 'plus-circle', + 'plus-square', + 'plus-square-o', + 'podcast', + 'power-off', + 'print', + 'product-hunt', + 'puzzle-piece', + 'qq', + 'qrcode', + 'question', + 'question-circle', + 'question-circle-o', + 'quora', + 'quote-left', + 'quote-right', + 'ra', + 'random', + 'ravelry', + 'recycle', + 'reddit', + 'reddit-alien', + 'reddit-square', + 'refresh', + 'registered', + 'renren', + 'repeat', + 'retweet', + 'road', + 'rocket', + 'rotate-left', + 'rouble', + 'rss-square', + 'safari', + 'scribd', + 'search', + 'search-minus', + 'search-plus', + 'sellsy', + 'server', + 'share-alt', + 'share-alt-square', + 'share-square', + 'share-square-o', + 'shield', + 'ship', + 'shirtsinbulk', + 'shopping-bag', + 'shopping-basket', + 'shopping-cart', + 'shower', + 'sign-in', + 'sign-language', + 'sign-out', + 'signal', + 'simplybuilt', + 'sitemap', + 'skyatlas', + 'skype', + 'slack', + 'sliders', + 'slideshare', + 'smile-o', + 'snapchat', + 'snapchat-ghost', + 'snapchat-square', + 'snowflake-o', + 'sort', + 'sort-alpha-asc', + 'sort-alpha-desc', + 'sort-amount-asc', + 'sort-amount-desc', + 'sort-asc', + 'sort-numeric-asc', + 'sort-numeric-desc', + 'soundcloud', + 'space-shuttle', + 'spinner', + 'spoon', + 'spotify', + 'square', + 'square-o', + 'stack-exchange', + 'stack-overflow', + 'star', + 'star-half', + 'star-half-empty', + 'star-o', + 'steam', + 'steam-square', + 'step-backward', + 'stethoscope', + 'sticky-note', + 'sticky-note-o', + 'stop', + 'stop-circle', + 'stop-circle-o', + 'street-view', + 'strikethrough', + 'stumbleupon', + 'stumbleupon-circle', + 'subscript', + 'subway', + 'suitcase', + 'sun-o', + 'superpowers', + 'superscript', + 'table', + 'tablet', + 'tag', + 'tags', + 'tasks', + 'telegram', + 'television', + 'tencent-weibo', + 'terminal', + 'text-height', + 'text-width', + 'th', + 'th-large', + 'th-list', + 'themeisle', + 'thermometer', + 'thermometer-0', + 'thermometer-1', + 'thermometer-2', + 'thermometer-3', + 'thumb-tack', + 'thumbs-down', + 'thumbs-o-up', + 'thumbs-up', + 'ticket', + 'times-circle', + 'times-circle-o', + 'times-rectangle', + 'times-rectangle-o', + 'tint', + 'toggle-off', + 'toggle-on', + 'trademark', + 'train', + 'transgender-alt', + 'trash', + 'trash-o', + 'tree', + 'trello', + 'tripadvisor', + 'trophy', + 'truck', + 'try', + 'tty', + 'tumblr', + 'tumblr-square', + 'twitch', + 'twitter', + 'twitter-square', + 'umbrella', + 'underline', + 'universal-access', + 'unlock', + 'unlock-alt', + 'upload', + 'usb', + 'user', + 'user-circle', + 'user-circle-o', + 'user-md', + 'user-o', + 'user-plus', + 'user-secret', + 'user-times', + 'venus', + 'venus-double', + 'venus-mars', + 'viacoin', + 'viadeo', + 'viadeo-square', + 'video-camera', + 'vimeo', + 'vimeo-square', + 'vine', + 'vk', + 'volume-control-phone', + 'volume-down', + 'volume-off', + 'volume-up', + 'wechat', + 'weibo', + 'whatsapp', + 'wheelchair', + 'wheelchair-alt', + 'wifi', + 'wikipedia-w', + 'window-maximize', + 'window-minimize', + 'window-restore', + 'windows', + 'wordpress', + 'wpbeginner', + 'wpexplorer', + 'wpforms', + 'wrench', + 'xing', + 'xing-square', + 'y-combinator', + 'yahoo', + 'yelp', + 'yoast', + 'youtube', + 'youtube-play', + 'youtube-square' + ], + 'fa-solid:': [ + 'abacus', + 'ad', + 'address-book', + 'address-card', + 'adjust', + 'air-freshener', + 'align-center', + 'align-justify', + 'align-left', + 'align-right', + 'allergies', + 'ambulance', + 'american-sign-language-interpreting', + 'anchor', + 'angle-double-down', + 'angle-double-left', + 'angle-double-right', + 'angle-double-up', + 'angle-down', + 'angle-left', + 'angle-right', + 'angle-up', + 'angry', + 'ankh', + 'apple-alt', + 'archive', + 'archway', + 'arrow-alt-circle-down', + 'arrow-alt-circle-left', + 'arrow-alt-circle-right', + 'arrow-alt-circle-up', + 'arrow-circle-down', + 'arrow-circle-left', + 'arrow-circle-right', + 'arrow-circle-up', + 'arrow-down', + 'arrow-left', + 'arrow-right', + 'arrow-up', + 'arrows-alt', + 'arrows-alt-h', + 'arrows-alt-v', + 'assistive-listening-systems', + 'asterisk', + 'at', + 'atlas', + 'atom', + 'audio-description', + 'award', + 'baby', + 'baby-carriage', + 'backspace', + 'backward', + 'bacon', + 'bacteria', + 'bacterium', + 'bahai', + 'balance-scale', + 'balance-scale-left', + 'balance-scale-right', + 'ban', + 'band-aid', + 'barcode', + 'bars', + 'baseball-ball', + 'basketball-ball', + 'bath', + 'battery-empty', + 'battery-full', + 'battery-half', + 'battery-quarter', + 'battery-three-quarters', + 'bed', + 'beer', + 'bell', + 'bell-slash', + 'bezier-curve', + 'bible', + 'bicycle', + 'biking', + 'binoculars', + 'biohazard', + 'birthday-cake', + 'blender', + 'blender-phone', + 'blind', + 'blog', + 'bold', + 'bolt', + 'bomb', + 'bone', + 'bong', + 'book', + 'book-dead', + 'book-medical', + 'book-open', + 'book-reader', + 'bookmark', + 'border-all', + 'border-none', + 'border-style', + 'bowling-ball', + 'box', + 'box-open', + 'box-tissue', + 'boxes', + 'braille', + 'brain', + 'bread-slice', + 'briefcase', + 'briefcase-medical', + 'broadcast-tower', + 'broom', + 'brush', + 'bug', + 'building', + 'bullhorn', + 'bullseye', + 'burn', + 'bus', + 'bus-alt', + 'business-time', + 'calculator', + 'calculator-alt', + 'calendar', + 'calendar-alt', + 'calendar-check', + 'calendar-day', + 'calendar-minus', + 'calendar-plus', + 'calendar-times', + 'calendar-week', + 'camera', + 'camera-retro', + 'campground', + 'candy-cane', + 'cannabis', + 'capsules', + 'car', + 'car-alt', + 'car-battery', + 'car-crash', + 'car-side', + 'caravan', + 'caret-down', + 'caret-left', + 'caret-right', + 'caret-square-down', + 'caret-square-left', + 'caret-square-right', + 'caret-square-up', + 'caret-up', + 'carrot', + 'cart-arrow-down', + 'cart-plus', + 'cash-register', + 'cat', + 'certificate', + 'chair', + 'chalkboard', + 'chalkboard-teacher', + 'charging-station', + 'chart-area', + 'chart-bar', + 'chart-line', + 'chart-pie', + 'check', + 'check-circle', + 'check-double', + 'check-square', + 'cheese', + 'chess', + 'chess-bishop', + 'chess-board', + 'chess-king', + 'chess-knight', + 'chess-pawn', + 'chess-queen', + 'chess-rook', + 'chevron-circle-down', + 'chevron-circle-left', + 'chevron-circle-right', + 'chevron-circle-up', + 'chevron-down', + 'chevron-left', + 'chevron-right', + 'chevron-up', + 'child', + 'church', + 'circle', + 'circle-notch', + 'city', + 'clinic-medical', + 'clipboard', + 'clipboard-check', + 'clipboard-list', + 'clock', + 'clone', + 'closed-captioning', + 'cloud', + 'cloud-download-alt', + 'cloud-meatball', + 'cloud-moon', + 'cloud-moon-rain', + 'cloud-rain', + 'cloud-showers-heavy', + 'cloud-sun', + 'cloud-sun-rain', + 'cloud-upload-alt', + 'cocktail', + 'code', + 'code-branch', + 'coffee', + 'cog', + 'cogs', + 'coins', + 'columns', + 'comment', + 'comment-alt', + 'comment-dollar', + 'comment-dots', + 'comment-medical', + 'comment-slash', + 'comments', + 'comments-dollar', + 'compact-disc', + 'compass', + 'compress', + 'compress-alt', + 'compress-arrows-alt', + 'concierge-bell', + 'cookie', + 'cookie-bite', + 'copy', + 'copyright', + 'couch', + 'credit-card', + 'crop', + 'crop-alt', + 'cross', + 'crosshairs', + 'crow', + 'crown', + 'crutch', + 'cube', + 'cubes', + 'cut', + 'database', + 'deaf', + 'democrat', + 'desktop', + 'dharmachakra', + 'diagnoses', + 'dice', + 'dice-d20', + 'dice-d6', + 'dice-five', + 'dice-four', + 'dice-one', + 'dice-six', + 'dice-three', + 'dice-two', + 'digital-tachograph', + 'directions', + 'disease', + 'divide', + 'dizzy', + 'dna', + 'dog', + 'dollar-sign', + 'dolly', + 'dolly-flatbed', + 'donate', + 'door-closed', + 'door-open', + 'dot-circle', + 'dove', + 'download', + 'drafting-compass', + 'dragon', + 'draw-polygon', + 'drum', + 'drum-steelpan', + 'drumstick-bite', + 'dumbbell', + 'dumpster', + 'dumpster-fire', + 'dungeon', + 'edit', + 'egg', + 'eject', + 'ellipsis-h', + 'ellipsis-v', + 'empty-set', + 'envelope', + 'envelope-open', + 'envelope-open-text', + 'envelope-square', + 'equals', + 'eraser', + 'ethernet', + 'euro-sign', + 'exchange-alt', + 'exclamation', + 'exclamation-circle', + 'exclamation-triangle', + 'expand', + 'expand-alt', + 'expand-arrows-alt', + 'external-link-alt', + 'external-link-square-alt', + 'eye', + 'eye-dropper', + 'eye-slash', + 'fan', + 'fast-backward', + 'fast-forward', + 'faucet', + 'fax', + 'feather', + 'feather-alt', + 'female', + 'fighter-jet', + 'file', + 'file-alt', + 'file-archive', + 'file-audio', + 'file-code', + 'file-contract', + 'file-csv', + 'file-download', + 'file-excel', + 'file-export', + 'file-image', + 'file-import', + 'file-invoice', + 'file-invoice-dollar', + 'file-medical', + 'file-medical-alt', + 'file-pdf', + 'file-powerpoint', + 'file-prescription', + 'file-signature', + 'file-upload', + 'file-video', + 'file-word', + 'fill', + 'fill-drip', + 'film', + 'filter', + 'fingerprint', + 'fire', + 'fire-alt', + 'fire-extinguisher', + 'first-aid', + 'fish', + 'fist-raised', + 'flag', + 'flag-checkered', + 'flag-usa', + 'flask', + 'flushed', + 'folder', + 'folder-minus', + 'folder-open', + 'folder-plus', + 'font', + 'football-ball', + 'forward', + 'frog', + 'frown', + 'frown-open', + 'function', + 'funnel-dollar', + 'futbol', + 'gamepad', + 'gas-pump', + 'gavel', + 'gem', + 'genderless', + 'ghost', + 'gift', + 'gifts', + 'glass-cheers', + 'glass-martini', + 'glass-martini-alt', + 'glass-whiskey', + 'glasses', + 'globe', + 'globe-africa', + 'globe-americas', + 'globe-asia', + 'globe-europe', + 'golf-ball', + 'gopuram', + 'graduation-cap', + 'greater-than', + 'greater-than-equal', + 'grimace', + 'grin', + 'grin-alt', + 'grin-beam', + 'grin-beam-sweat', + 'grin-hearts', + 'grin-squint', + 'grin-squint-tears', + 'grin-stars', + 'grin-tears', + 'grin-tongue', + 'grin-tongue-squint', + 'grin-tongue-wink', + 'grin-wink', + 'grip-horizontal', + 'grip-lines', + 'grip-lines-vertical', + 'grip-vertical', + 'guitar', + 'h-square', + 'hamburger', + 'hammer', + 'hamsa', + 'hand-holding', + 'hand-holding-heart', + 'hand-holding-medical', + 'hand-holding-usd', + 'hand-holding-water', + 'hand-lizard', + 'hand-middle-finger', + 'hand-paper', + 'hand-peace', + 'hand-point-down', + 'hand-point-left', + 'hand-point-right', + 'hand-point-up', + 'hand-pointer', + 'hand-rock', + 'hand-scissors', + 'hand-sparkles', + 'hand-spock', + 'hands', + 'hands-helping', + 'hands-wash', + 'handshake', + 'handshake-alt-slash', + 'handshake-slash', + 'hanukiah', + 'hard-hat', + 'hashtag', + 'hat-cowboy', + 'hat-cowboy-side', + 'hat-wizard', + 'hdd', + 'head-side-cough', + 'head-side-cough-slash', + 'head-side-mask', + 'head-side-virus', + 'heading', + 'headphones', + 'headphones-alt', + 'headset', + 'heart', + 'heart-broken', + 'heartbeat', + 'helicopter', + 'highlighter', + 'hiking', + 'hippo', + 'history', + 'hockey-puck', + 'holly-berry', + 'home', + 'horse', + 'horse-head', + 'hospital', + 'hospital-alt', + 'hospital-symbol', + 'hospital-user', + 'hot-tub', + 'hotdog', + 'hotel', + 'hourglass', + 'hourglass-end', + 'hourglass-half', + 'hourglass-start', + 'house-damage', + 'house-user', + 'hryvnia', + 'i-cursor', + 'ice-cream', + 'icicles', + 'icons', + 'id-badge', + 'id-card', + 'id-card-alt', + 'igloo', + 'image', + 'images', + 'inbox', + 'indent', + 'industry', + 'infinity', + 'info', + 'info-circle', + 'integral', + 'intersection', + 'italic', + 'jedi', + 'joint', + 'journal-whills', + 'kaaba', + 'key', + 'keyboard', + 'khanda', + 'kiss', + 'kiss-beam', + 'kiss-wink-heart', + 'kiwi-bird', + 'lambda', + 'landmark', + 'language', + 'laptop', + 'laptop-code', + 'laptop-house', + 'laptop-medical', + 'laugh', + 'laugh-beam', + 'laugh-squint', + 'laugh-wink', + 'layer-group', + 'leaf', + 'lemon', + 'less-than', + 'less-than-equal', + 'level-down-alt', + 'level-up-alt', + 'life-ring', + 'lightbulb', + 'link', + 'lira-sign', + 'list', + 'list-alt', + 'list-ol', + 'list-ul', + 'location-arrow', + 'lock', + 'lock-open', + 'long-arrow-alt-down', + 'long-arrow-alt-left', + 'long-arrow-alt-right', + 'long-arrow-alt-up', + 'low-vision', + 'luggage-cart', + 'lungs', + 'lungs-virus', + 'magic', + 'magnet', + 'mail-bulk', + 'male', + 'map', + 'map-marked', + 'map-marked-alt', + 'map-marker', + 'map-marker-alt', + 'map-pin', + 'map-signs', + 'marker', + 'mars', + 'mars-double', + 'mars-stroke', + 'mars-stroke-h', + 'mars-stroke-v', + 'mask', + 'medal', + 'medkit', + 'meh', + 'meh-blank', + 'meh-rolling-eyes', + 'memory', + 'menorah', + 'mercury', + 'meteor', + 'microchip', + 'microphone', + 'microphone-alt', + 'microphone-alt-slash', + 'microphone-slash', + 'microscope', + 'minus', + 'minus-circle', + 'minus-square', + 'mitten', + 'mobile', + 'mobile-alt', + 'money-bill', + 'money-bill-alt', + 'money-bill-wave', + 'money-bill-wave-alt', + 'money-check', + 'money-check-alt', + 'monument', + 'moon', + 'mortar-pestle', + 'mosque', + 'motorcycle', + 'mountain', + 'mouse', + 'mouse-pointer', + 'mug-hot', + 'music', + 'network-wired', + 'neuter', + 'newspaper', + 'not-equal', + 'notes-medical', + 'object-group', + 'object-ungroup', + 'oil-can', + 'om', + 'omega', + 'otter', + 'outdent', + 'pager', + 'paint-brush', + 'paint-roller', + 'palette', + 'pallet', + 'paper-plane', + 'paperclip', + 'parachute-box', + 'paragraph', + 'parking', + 'passport', + 'pastafarianism', + 'paste', + 'pause', + 'pause-circle', + 'paw', + 'peace', + 'pen', + 'pen-alt', + 'pen-fancy', + 'pen-nib', + 'pen-square', + 'pencil-alt', + 'pencil-ruler', + 'people-arrows', + 'people-carry', + 'pepper-hot', + 'percent', + 'percentage', + 'person-booth', + 'phone', + 'phone-alt', + 'phone-slash', + 'phone-square', + 'phone-square-alt', + 'phone-volume', + 'photo-video', + 'pi', + 'piggy-bank', + 'pills', + 'pizza-slice', + 'place-of-worship', + 'plane', + 'plane-arrival', + 'plane-departure', + 'plane-slash', + 'play', + 'play-circle', + 'plug', + 'plus', + 'plus-circle', + 'plus-square', + 'podcast', + 'poll', + 'poll-h', + 'poo', + 'poo-storm', + 'poop', + 'portrait', + 'pound-sign', + 'power-off', + 'pray', + 'praying-hands', + 'prescription', + 'prescription-bottle', + 'prescription-bottle-alt', + 'print', + 'procedures', + 'project-diagram', + 'pump-medical', + 'pump-soap', + 'puzzle-piece', + 'qrcode', + 'question', + 'question-circle', + 'quidditch', + 'quote-left', + 'quote-right', + 'quran', + 'radiation', + 'radiation-alt', + 'rainbow', + 'random', + 'receipt', + 'record-vinyl', + 'recycle', + 'redo', + 'redo-alt', + 'registered', + 'remove-format', + 'reply', + 'reply-all', + 'republican', + 'restroom', + 'retweet', + 'ribbon', + 'ring', + 'road', + 'robot', + 'rocket', + 'route', + 'rss', + 'rss-square', + 'ruble-sign', + 'ruler', + 'ruler-combined', + 'ruler-horizontal', + 'ruler-vertical', + 'running', + 'rupee-sign', + 'sad-cry', + 'sad-tear', + 'satellite', + 'satellite-dish', + 'save', + 'school', + 'screwdriver', + 'scroll', + 'sd-card', + 'search', + 'search-dollar', + 'search-location', + 'search-minus', + 'search-plus', + 'seedling', + 'server', + 'shapes', + 'share', + 'share-alt', + 'share-alt-square', + 'share-square', + 'shekel-sign', + 'shield-alt', + 'shield-virus', + 'ship', + 'shipping-fast', + 'shoe-prints', + 'shopping-bag', + 'shopping-basket', + 'shopping-cart', + 'shower', + 'shuttle-van', + 'sigma', + 'sign', + 'sign-in-alt', + 'sign-language', + 'sign-out-alt', + 'signal', + 'signal-alt', + 'signal-alt-slash', + 'signal-slash', + 'signature', + 'sim-card', + 'sink', + 'sitemap', + 'skating', + 'skiing', + 'skiing-nordic', + 'skull', + 'skull-crossbones', + 'slash', + 'sleigh', + 'sliders-h', + 'smile', + 'smile-beam', + 'smile-wink', + 'smog', + 'smoking', + 'smoking-ban', + 'sms', + 'snowboarding', + 'snowflake', + 'snowman', + 'snowplow', + 'soap', + 'socks', + 'solar-panel', + 'sort', + 'sort-alpha-down', + 'sort-alpha-down-alt', + 'sort-alpha-up', + 'sort-alpha-up-alt', + 'sort-amount-down', + 'sort-amount-down-alt', + 'sort-amount-up', + 'sort-amount-up-alt', + 'sort-down', + 'sort-numeric-down', + 'sort-numeric-down-alt', + 'sort-numeric-up', + 'sort-numeric-up-alt', + 'sort-up', + 'spa', + 'space-shuttle', + 'spell-check', + 'spider', + 'spinner', + 'splotch', + 'spray-can', + 'square', + 'square-full', + 'square-root', + 'square-root-alt', + 'stamp', + 'star', + 'star-and-crescent', + 'star-half', + 'star-half-alt', + 'star-of-david', + 'star-of-life', + 'step-backward', + 'step-forward', + 'stethoscope', + 'sticky-note', + 'stop', + 'stop-circle', + 'stopwatch', + 'stopwatch-20', + 'store', + 'store-alt', + 'store-alt-slash', + 'store-slash', + 'stream', + 'street-view', + 'strikethrough', + 'stroopwafel', + 'subscript', + 'subway', + 'suitcase', + 'suitcase-rolling', + 'sun', + 'superscript', + 'surprise', + 'swatchbook', + 'swimmer', + 'swimming-pool', + 'synagogue', + 'sync', + 'sync-alt', + 'syringe', + 'table', + 'table-tennis', + 'tablet', + 'tablet-alt', + 'tablets', + 'tachometer-alt', + 'tag', + 'tags', + 'tally', + 'tape', + 'tasks', + 'taxi', + 'teeth', + 'teeth-open', + 'temperature-high', + 'temperature-low', + 'tenge', + 'terminal', + 'text-height', + 'text-width', + 'th', + 'th-large', + 'th-list', + 'theater-masks', + 'thermometer', + 'thermometer-empty', + 'thermometer-full', + 'thermometer-half', + 'thermometer-quarter', + 'thermometer-three-quarters', + 'theta', + 'thumbs-down', + 'thumbs-up', + 'thumbtack', + 'ticket-alt', + 'tilde', + 'times', + 'times-circle', + 'tint', + 'tint-slash', + 'tired', + 'toggle-off', + 'toggle-on', + 'toilet', + 'toilet-paper', + 'toilet-paper-slash', + 'toolbox', + 'tools', + 'tooth', + 'torah', + 'torii-gate', + 'tractor', + 'trademark', + 'traffic-light', + 'trailer', + 'train', + 'tram', + 'transgender', + 'transgender-alt', + 'trash', + 'trash-alt', + 'trash-restore', + 'trash-restore-alt', + 'tree', + 'trophy', + 'truck', + 'truck-loading', + 'truck-monster', + 'truck-moving', + 'truck-pickup', + 'tshirt', + 'tty', + 'tv', + 'umbrella', + 'umbrella-beach', + 'underline', + 'undo', + 'undo-alt', + 'union', + 'universal-access', + 'university', + 'unlink', + 'unlock', + 'unlock-alt', + 'upload', + 'user', + 'user-alt', + 'user-alt-slash', + 'user-astronaut', + 'user-check', + 'user-circle', + 'user-clock', + 'user-cog', + 'user-edit', + 'user-friends', + 'user-graduate', + 'user-injured', + 'user-lock', + 'user-md', + 'user-minus', + 'user-ninja', + 'user-nurse', + 'user-plus', + 'user-secret', + 'user-shield', + 'user-slash', + 'user-tag', + 'user-tie', + 'user-times', + 'users', + 'users-cog', + 'users-slash', + 'utensil-spoon', + 'utensils', + 'value-absolute', + 'vector-square', + 'venus', + 'venus-double', + 'venus-mars', + 'vest', + 'vest-patches', + 'vial', + 'vials', + 'video', + 'video-slash', + 'vihara', + 'virus', + 'virus-slash', + 'viruses', + 'voicemail', + 'volleyball-ball', + 'volume', + 'volume-down', + 'volume-mute', + 'volume-off', + 'volume-slash', + 'volume-up', + 'vote-yea', + 'vr-cardboard', + 'walking', + 'wallet', + 'warehouse', + 'water', + 'wave-square', + 'weight', + 'weight-hanging', + 'wheelchair', + 'wifi', + 'wifi-slash', + 'wind', + 'window-close', + 'window-maximize', + 'window-minimize', + 'window-restore', + 'wine-bottle', + 'wine-glass', + 'wine-glass-alt', + 'won-sign', + 'wrench', + 'x-ray', + 'yen-sign', + 'yin-yang' + ] +} diff --git a/marketing-ui/admin-ui/src/components/ImageViewer/index.ts b/marketing-ui/admin-ui/src/components/ImageViewer/index.ts new file mode 100644 index 0000000..35764d6 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ImageViewer/index.ts @@ -0,0 +1,33 @@ +import ImageViewer from './src/ImageViewer.vue' +import { isClient } from '@/utils/is' +import { createVNode, render, VNode } from 'vue' +import { ImageViewerProps } from './src/types' + +let instance: Nullable = null + +export function createImageViewer(options: ImageViewerProps) { + if (!isClient) return + const { + urlList, + initialIndex = 0, + infinite = true, + hideOnClickModal = false, + teleported = false, + zIndex = 2000, + show = true + } = options + + const propsData: Partial = {} + const container = document.createElement('div') + propsData.urlList = urlList + propsData.initialIndex = initialIndex + propsData.infinite = infinite + propsData.hideOnClickModal = hideOnClickModal + propsData.teleported = teleported + propsData.zIndex = zIndex + propsData.show = show + + document.body.appendChild(container) + instance = createVNode(ImageViewer, propsData) + render(instance, container) +} diff --git a/marketing-ui/admin-ui/src/components/ImageViewer/src/ImageViewer.vue b/marketing-ui/admin-ui/src/components/ImageViewer/src/ImageViewer.vue new file mode 100644 index 0000000..c84d06b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ImageViewer/src/ImageViewer.vue @@ -0,0 +1,35 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/ImageViewer/src/types.ts b/marketing-ui/admin-ui/src/components/ImageViewer/src/types.ts new file mode 100644 index 0000000..2fff4c0 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ImageViewer/src/types.ts @@ -0,0 +1,9 @@ +export interface ImageViewerProps { + urlList?: string[] + zIndex?: number + initialIndex?: number + infinite?: boolean + hideOnClickModal?: boolean + teleported?: boolean + show?: boolean +} diff --git a/marketing-ui/admin-ui/src/components/Infotip/index.ts b/marketing-ui/admin-ui/src/components/Infotip/index.ts new file mode 100644 index 0000000..413fa5f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Infotip/index.ts @@ -0,0 +1,3 @@ +import Infotip from './src/Infotip.vue' + +export { Infotip } diff --git a/marketing-ui/admin-ui/src/components/Infotip/src/Infotip.vue b/marketing-ui/admin-ui/src/components/Infotip/src/Infotip.vue new file mode 100644 index 0000000..0afd692 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Infotip/src/Infotip.vue @@ -0,0 +1,54 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/InputPassword/index.ts b/marketing-ui/admin-ui/src/components/InputPassword/index.ts new file mode 100644 index 0000000..1dcc38e --- /dev/null +++ b/marketing-ui/admin-ui/src/components/InputPassword/index.ts @@ -0,0 +1,3 @@ +import InputPassword from './src/InputPassword.vue' + +export { InputPassword } diff --git a/marketing-ui/admin-ui/src/components/InputPassword/src/InputPassword.vue b/marketing-ui/admin-ui/src/components/InputPassword/src/InputPassword.vue new file mode 100644 index 0000000..b8c93e7 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/InputPassword/src/InputPassword.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/InputWithColor/index.vue b/marketing-ui/admin-ui/src/components/InputWithColor/index.vue new file mode 100644 index 0000000..1311a55 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/InputWithColor/index.vue @@ -0,0 +1,35 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/MagicCubeEditor/index.vue b/marketing-ui/admin-ui/src/components/MagicCubeEditor/index.vue new file mode 100644 index 0000000..9b9a43c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/MagicCubeEditor/index.vue @@ -0,0 +1,270 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/MagicCubeEditor/util.ts b/marketing-ui/admin-ui/src/components/MagicCubeEditor/util.ts new file mode 100644 index 0000000..e7c6465 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/MagicCubeEditor/util.ts @@ -0,0 +1,72 @@ +// 坐标点 +export interface Point { + x: number + y: number +} + +// 矩形 +export interface Rect { + // 左上角 X 轴坐标 + left: number + // 左上角 Y 轴坐标 + top: number + // 右下角 X 轴坐标 + right: number + // 右下角 Y 轴坐标 + bottom: number + // 矩形宽度 + width: number + // 矩形高度 + height: number +} + +/** + * 判断两个矩形是否重叠 + * @param a 矩形 A + * @param b 矩形 B + */ +export const isOverlap = (a: Rect, b: Rect): boolean => { + return ( + a.left < b.left + b.width && + a.left + a.width > b.left && + a.top < b.top + b.height && + a.height + a.top > b.top + ) +} +/** + * 检查坐标点是否在矩形内 + * @param hotArea 矩形 + * @param point 坐标 + */ +export const isContains = (hotArea: Rect, point: Point): boolean => { + return ( + point.x >= hotArea.left && + point.x < hotArea.right && + point.y >= hotArea.top && + point.y < hotArea.bottom + ) +} + +/** + * 在两个坐标点中间,创建一个矩形 + * + * 存在以下情况: + * 1. 两个坐标点是同一个位置,只占一个位置的正方形,宽高都为 1 + * 2. X 轴坐标相同,只占一行的矩形,高度为 1 + * 3. Y 轴坐标相同,只占一列的矩形,宽度为 1 + * 4. 多行多列的矩形 + * + * @param a 坐标点一 + * @param b 坐标点二 + */ +export const createRect = (a: Point, b: Point): Rect => { + // 计算矩形的范围 + const [left, left2] = [a.x, b.x].sort() + const [top, top2] = [a.y, b.y].sort() + const right = left2 + 1 + const bottom = top2 + 1 + const height = bottom - top + const width = right - left + + return { left, right, top, bottom, height, width } +} diff --git a/marketing-ui/admin-ui/src/components/MarkdownView/index.vue b/marketing-ui/admin-ui/src/components/MarkdownView/index.vue new file mode 100644 index 0000000..74764d5 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/MarkdownView/index.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/OperateLogV2/index.ts b/marketing-ui/admin-ui/src/components/OperateLogV2/index.ts new file mode 100644 index 0000000..f69c222 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/OperateLogV2/index.ts @@ -0,0 +1,3 @@ +import OperateLogV2 from './src/OperateLogV2.vue' + +export { OperateLogV2 } diff --git a/marketing-ui/admin-ui/src/components/OperateLogV2/src/OperateLogV2.vue b/marketing-ui/admin-ui/src/components/OperateLogV2/src/OperateLogV2.vue new file mode 100644 index 0000000..6acc1cc --- /dev/null +++ b/marketing-ui/admin-ui/src/components/OperateLogV2/src/OperateLogV2.vue @@ -0,0 +1,105 @@ + + + + + + diff --git a/marketing-ui/admin-ui/src/components/Pagination/index.vue b/marketing-ui/admin-ui/src/components/Pagination/index.vue new file mode 100644 index 0000000..6bb00b3 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Pagination/index.vue @@ -0,0 +1,87 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Qrcode/index.ts b/marketing-ui/admin-ui/src/components/Qrcode/index.ts new file mode 100644 index 0000000..ce46161 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Qrcode/index.ts @@ -0,0 +1,3 @@ +import Qrcode from './src/Qrcode.vue' + +export { Qrcode } diff --git a/marketing-ui/admin-ui/src/components/Qrcode/src/Qrcode.vue b/marketing-ui/admin-ui/src/components/Qrcode/src/Qrcode.vue new file mode 100644 index 0000000..f0ce7b7 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Qrcode/src/Qrcode.vue @@ -0,0 +1,253 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/RouterSearch/index.vue b/marketing-ui/admin-ui/src/components/RouterSearch/index.vue new file mode 100644 index 0000000..42a4174 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/RouterSearch/index.vue @@ -0,0 +1,119 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Search/index.ts b/marketing-ui/admin-ui/src/components/Search/index.ts new file mode 100644 index 0000000..fcc6f16 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Search/index.ts @@ -0,0 +1,3 @@ +import Search from './src/Search.vue' + +export { Search } diff --git a/marketing-ui/admin-ui/src/components/Search/src/Search.vue b/marketing-ui/admin-ui/src/components/Search/src/Search.vue new file mode 100644 index 0000000..3218a63 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Search/src/Search.vue @@ -0,0 +1,157 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/ShortcutDateRangePicker/index.vue b/marketing-ui/admin-ui/src/components/ShortcutDateRangePicker/index.vue new file mode 100644 index 0000000..78c5130 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/ShortcutDateRangePicker/index.vue @@ -0,0 +1,84 @@ + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue new file mode 100644 index 0000000..439ea98 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue @@ -0,0 +1,321 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue new file mode 100644 index 0000000..dddeda6 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue @@ -0,0 +1,150 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue new file mode 100644 index 0000000..7823c2f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue @@ -0,0 +1,208 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessModel.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessModel.vue new file mode 100644 index 0000000..a8a0ac6 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessModel.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessViewer.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessViewer.vue new file mode 100644 index 0000000..26cd43f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/SimpleProcessViewer.vue @@ -0,0 +1,47 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/consts.ts b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/consts.ts new file mode 100644 index 0000000..8cdc996 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/consts.ts @@ -0,0 +1,900 @@ +// @ts-ignore +import { DictDataVO } from '@/api/system/dict/types' +import { TaskStatusEnum } from '@/api/bpm/task' +/** + * 节点类型 + */ +export enum NodeType { + /** + * 结束节点 + */ + END_EVENT_NODE = 1, + /** + * 发起人节点 + */ + START_USER_NODE = 10, + /** + * 审批人节点 + */ + USER_TASK_NODE = 11, + + /** + * 抄送人节点 + */ + COPY_TASK_NODE = 12, + + /** + * 办理人节点 + */ + TRANSACTOR_NODE = 13, + + /** + * 延迟器节点 + */ + DELAY_TIMER_NODE = 14, + + /** + * 触发器节点 + */ + TRIGGER_NODE = 15, + + /** + * 子流程节点 + */ + CHILD_PROCESS_NODE = 20, + + /** + * 条件节点 + */ + CONDITION_NODE = 50, + /** + * 条件分支节点 (对应排他网关) + */ + CONDITION_BRANCH_NODE = 51, + /** + * 并行分支节点 (对应并行网关) + */ + PARALLEL_BRANCH_NODE = 52, + + /** + * 包容分支节点 (对应包容网关) + */ + INCLUSIVE_BRANCH_NODE = 53, + /** + * 路由分支节点 + */ + ROUTER_BRANCH_NODE = 54 +} + +export enum NodeId { + /** + * 发起人节点 Id + */ + START_USER_NODE_ID = 'StartUserNode', + + /** + * 发起人节点 Id + */ + END_EVENT_NODE_ID = 'EndEvent' +} + +/** + * 节点结构定义 + */ +export interface SimpleFlowNode { + id: string + type: NodeType + name: string + showText?: string + // 孩子节点 + childNode?: SimpleFlowNode + // 条件节点 + conditionNodes?: SimpleFlowNode[] + // 审批类型 + approveType?: ApproveType + // 候选人策略 + candidateStrategy?: number + // 候选人参数 + candidateParam?: string + // 多人审批方式 + approveMethod?: ApproveMethodType + //通过比例 + approveRatio?: number + // 审批按钮设置 + buttonsSetting?: any[] + // 表单权限 + fieldsPermission?: Array> + // 审批任务超时处理 + timeoutHandler?: TimeoutHandler + // 审批任务拒绝处理 + rejectHandler?: RejectHandler + // 审批人为空的处理 + assignEmptyHandler?: AssignEmptyHandler + // 审批节点的审批人与发起人相同时,对应的处理类型 + assignStartUserHandlerType?: number + // 创建任务监听器 + taskCreateListener?: ListenerHandler + // 创建任务监听器 + taskAssignListener?: ListenerHandler + // 创建任务监听器 + taskCompleteListener?: ListenerHandler + // 条件设置 + conditionSetting?: ConditionSetting + // 活动的状态,用于前端节点状态展示 + activityStatus?: TaskStatusEnum + // 延迟设置 + delaySetting?: DelaySetting + // 路由分支 + routerGroups?: RouterSetting[] + defaultFlowId?: string + // 签名 + signEnable?: boolean + // 审批意见 + reasonRequire?: boolean + // 触发器设置 + triggerSetting?: TriggerSetting + // 子流程 + childProcessSetting?: ChildProcessSetting +} +// 候选人策略枚举 ( 用于审批节点。抄送节点 ) +export enum CandidateStrategy { + /** + * 指定角色 + */ + ROLE = 10, + /** + * 部门成员 + */ + DEPT_MEMBER = 20, + /** + * 部门的负责人 + */ + DEPT_LEADER = 21, + /** + * 连续多级部门的负责人 + */ + MULTI_LEVEL_DEPT_LEADER = 23, + /** + * 指定岗位 + */ + POST = 22, + /** + * 指定用户 + */ + USER = 30, + /** + * 审批人自选 + */ + APPROVE_USER_SELECT = 34, + /** + * 发起人自选 + */ + START_USER_SELECT = 35, + /** + * 发起人自己 + */ + START_USER = 36, + /** + * 发起人部门负责人 + */ + START_USER_DEPT_LEADER = 37, + /** + * 发起人连续多级部门的负责人 + */ + START_USER_MULTI_LEVEL_DEPT_LEADER = 38, + /** + * 指定用户组 + */ + USER_GROUP = 40, + /** + * 表单内用户字段 + */ + FORM_USER = 50, + /** + * 表单内部门负责人 + */ + FORM_DEPT_LEADER = 51, + /** + * 流程表达式 + */ + EXPRESSION = 60 +} + +// 多人审批方式类型枚举 ( 用于审批节点 ) +export enum ApproveMethodType { + /** + * 随机挑选一人审批 + */ + RANDOM_SELECT_ONE_APPROVE = 1, + + /** + * 多人会签(按通过比例) + */ + APPROVE_BY_RATIO = 2, + + /** + * 多人或签(通过只需一人,拒绝只需一人) + */ + ANY_APPROVE = 3, + /** + * 多人依次审批 + */ + SEQUENTIAL_APPROVE = 4 +} + +/** + * 审批拒绝结构定义 + */ +export type RejectHandler = { + // 审批拒绝类型 + type: RejectHandlerType + // 退回节点 Id + returnNodeId?: string +} + +/** + * 审批超时结构定义 + */ +export type TimeoutHandler = { + // 是否开启超时处理 + enable: boolean + // 超时执行的动作 + type?: number + // 超时时间设置 + timeDuration?: string + // 执行动作是自动提醒, 最大提醒次数 + maxRemindCount?: number +} + +/** + * 审批人为空的结构定义 + */ +export type AssignEmptyHandler = { + // 审批人为空的处理类型 + type: AssignEmptyHandlerType + // 指定用户的编号数组 + userIds?: number[] +} + +/** + * 监听器的结构定义 + */ +export type ListenerHandler = { + enable: boolean + path?: string + header?: HttpRequestParam[] + body?: HttpRequestParam[] +} +export type HttpRequestParam = { + key: string + type: number + value: string +} +export enum BpmHttpRequestParamTypeEnum { + /** + * 固定值 + */ + FIXED_VALUE = 1, + /** + * 表单 + */ + FROM_FORM = 2 +} +export const BPM_HTTP_REQUEST_PARAM_TYPES = [ + { + value: 1, + label: '固定值' + }, + { + value: 2, + label: '表单' + } +] + +// 审批拒绝类型枚举 +export enum RejectHandlerType { + /** + * 结束流程 + */ + FINISH_PROCESS = 1, + /** + * 驳回到指定节点 + */ + RETURN_USER_TASK = 2 +} +// 用户任务超时处理类型枚举 +export enum TimeoutHandlerType { + /** + * 自动提醒 + */ + REMINDER = 1, + /** + * 自动同意 + */ + APPROVE = 2, + /** + * 自动拒绝 + */ + REJECT = 3 +} +// 用户任务的审批人为空时,处理类型枚举 +export enum AssignEmptyHandlerType { + /** + * 自动通过 + */ + APPROVE = 1, + /** + * 自动拒绝 + */ + REJECT = 2, + /** + * 指定人员审批 + */ + ASSIGN_USER, + /** + * 转交给流程管理员 + */ + ASSIGN_ADMIN = 4 +} +// 用户任务的审批人与发起人相同时,处理类型枚举 +export enum AssignStartUserHandlerType { + /** + * 由发起人对自己审批 + */ + START_USER_AUDIT = 1, + /** + * 自动跳过【参考飞书】:1)如果当前节点还有其他审批人,则交由其他审批人进行审批;2)如果当前节点没有其他审批人,则该节点自动通过 + */ + SKIP = 2, + /** + * 转交给部门负责人审批 + */ + ASSIGN_DEPT_LEADER = 3 +} + +// 用户任务的审批类型。 【参考飞书】 +export enum ApproveType { + /** + * 人工审批 + */ + USER = 1, + /** + * 自动通过 + */ + AUTO_APPROVE = 2, + /** + * 自动拒绝 + */ + AUTO_REJECT = 3 +} + +// 时间单位枚举 +export enum TimeUnitType { + /** + * 分钟 + */ + MINUTE = 1, + /** + * 小时 + */ + HOUR = 2, + /** + * 天 + */ + DAY = 3 +} + +/** + * 条件节点设置结构定义,用于条件节点 + */ +export type ConditionSetting = { + // 条件类型 + conditionType?: ConditionType + // 条件表达式 + conditionExpression?: string + // 条件组 + conditionGroups?: ConditionGroup + // 是否默认的条件 + defaultFlow?: boolean +} + +// 条件配置类型 ( 用于条件节点配置 ) +export enum ConditionType { + /** + * 条件表达式 + */ + EXPRESSION = 1, + + /** + * 条件规则 + */ + RULE = 2 +} +/** + * 表单权限的枚举 + */ +export enum FieldPermissionType { + /** + * 只读 + */ + READ = '1', + /** + * 编辑 + */ + WRITE = '2', + /** + * 隐藏 + */ + NONE = '3' +} +/** + * 操作按钮权限结构定义 + */ +export type ButtonSetting = { + id: OperationButtonType + displayName: string + enable: boolean +} + +// 操作按钮类型枚举 (用于审批节点) +export enum OperationButtonType { + /** + * 通过 + */ + APPROVE = 1, + /** + * 拒绝 + */ + REJECT = 2, + /** + * 转办 + */ + TRANSFER = 3, + /** + * 委派 + */ + DELEGATE = 4, + /** + * 加签 + */ + ADD_SIGN = 5, + /** + * 退回 + */ + RETURN = 6, + /** + * 抄送 + */ + COPY = 7 +} + +/** + * 条件规则结构定义 + */ +export type ConditionRule = { + opCode: string + leftSide: string + rightSide: string +} + +/** + * 条件组结构定义 + */ +export type ConditionGroup = { + // 条件组的逻辑关系是否为且 + and: boolean + // 条件数组 + conditions: Condition[] +} +/** + * 条件组默认值 + */ +export const DEFAULT_CONDITION_GROUP_VALUE = { + and: true, + conditions: [ + { + and: true, + rules: [ + { + opCode: '==', + leftSide: '', + rightSide: '' + } + ] + } + ] +} + +/** + * 条件结构定义 + */ +export type Condition = { + // 条件规则的逻辑关系是否为且 + and: boolean + rules: ConditionRule[] +} + +export const NODE_DEFAULT_TEXT = new Map() +NODE_DEFAULT_TEXT.set(NodeType.USER_TASK_NODE, '请配置审批人') +NODE_DEFAULT_TEXT.set(NodeType.COPY_TASK_NODE, '请配置抄送人') +NODE_DEFAULT_TEXT.set(NodeType.CONDITION_NODE, '请设置条件') +NODE_DEFAULT_TEXT.set(NodeType.START_USER_NODE, '请设置发起人') +NODE_DEFAULT_TEXT.set(NodeType.DELAY_TIMER_NODE, '请设置延迟器') +NODE_DEFAULT_TEXT.set(NodeType.ROUTER_BRANCH_NODE, '请设置路由节点') +NODE_DEFAULT_TEXT.set(NodeType.TRIGGER_NODE, '请设置触发器') +NODE_DEFAULT_TEXT.set(NodeType.TRANSACTOR_NODE, '请设置办理人') +NODE_DEFAULT_TEXT.set(NodeType.CHILD_PROCESS_NODE, '请设置子流程') + +export const NODE_DEFAULT_NAME = new Map() +NODE_DEFAULT_NAME.set(NodeType.USER_TASK_NODE, '审批人') +NODE_DEFAULT_NAME.set(NodeType.COPY_TASK_NODE, '抄送人') +NODE_DEFAULT_NAME.set(NodeType.CONDITION_NODE, '条件') +NODE_DEFAULT_NAME.set(NodeType.START_USER_NODE, '发起人') +NODE_DEFAULT_NAME.set(NodeType.DELAY_TIMER_NODE, '延迟器') +NODE_DEFAULT_NAME.set(NodeType.ROUTER_BRANCH_NODE, '路由分支') +NODE_DEFAULT_NAME.set(NodeType.TRIGGER_NODE, '触发器') +NODE_DEFAULT_NAME.set(NodeType.TRANSACTOR_NODE, '办理人') +NODE_DEFAULT_NAME.set(NodeType.CHILD_PROCESS_NODE, '子流程') + +// 候选人策略。暂时不从字典中取。 后续可能调整。控制显示顺序 +export const CANDIDATE_STRATEGY: DictDataVO[] = [ + { label: '指定成员', value: CandidateStrategy.USER }, + { label: '指定角色', value: CandidateStrategy.ROLE }, + { label: '指定岗位', value: CandidateStrategy.POST }, + { label: '部门成员', value: CandidateStrategy.DEPT_MEMBER }, + { label: '部门负责人', value: CandidateStrategy.DEPT_LEADER }, + { label: '连续多级部门负责人', value: CandidateStrategy.MULTI_LEVEL_DEPT_LEADER }, + { label: '发起人自选', value: CandidateStrategy.START_USER_SELECT }, + { label: '审批人自选', value: CandidateStrategy.APPROVE_USER_SELECT }, + { label: '发起人本人', value: CandidateStrategy.START_USER }, + { label: '发起人部门负责人', value: CandidateStrategy.START_USER_DEPT_LEADER }, + { label: '发起人连续部门负责人', value: CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER }, + { label: '用户组', value: CandidateStrategy.USER_GROUP }, + { label: '表单内用户字段', value: CandidateStrategy.FORM_USER }, + { label: '表单内部门负责人', value: CandidateStrategy.FORM_DEPT_LEADER }, + { label: '流程表达式', value: CandidateStrategy.EXPRESSION } +] +// 审批节点 的审批类型 +export const APPROVE_TYPE: DictDataVO[] = [ + { label: '人工审批', value: ApproveType.USER }, + { label: '自动通过', value: ApproveType.AUTO_APPROVE }, + { label: '自动拒绝', value: ApproveType.AUTO_REJECT } +] + +export const APPROVE_METHODS: DictDataVO[] = [ + { label: '按顺序依次审批', value: ApproveMethodType.SEQUENTIAL_APPROVE }, + { label: '会签(可同时审批,至少 % 人必须审批通过)', value: ApproveMethodType.APPROVE_BY_RATIO }, + { label: '或签(可同时审批,有一人通过即可)', value: ApproveMethodType.ANY_APPROVE }, + { label: '随机挑选一人审批', value: ApproveMethodType.RANDOM_SELECT_ONE_APPROVE } +] + +export const CONDITION_CONFIG_TYPES: DictDataVO[] = [ + { label: '条件规则', value: ConditionType.RULE }, + { label: '条件表达式', value: ConditionType.EXPRESSION } +] + +// 时间单位类型 +export const TIME_UNIT_TYPES: DictDataVO[] = [ + { label: '分钟', value: TimeUnitType.MINUTE }, + { label: '小时', value: TimeUnitType.HOUR }, + { label: '天', value: TimeUnitType.DAY } +] +// 超时处理执行动作类型 +export const TIMEOUT_HANDLER_TYPES: DictDataVO[] = [ + { label: '自动提醒', value: 1 }, + { label: '自动同意', value: 2 }, + { label: '自动拒绝', value: 3 } +] +export const REJECT_HANDLER_TYPES: DictDataVO[] = [ + { label: '终止流程', value: RejectHandlerType.FINISH_PROCESS }, + { label: '驳回到指定节点', value: RejectHandlerType.RETURN_USER_TASK } + // { label: '结束任务', value: RejectHandlerType.FINISH_TASK } +] +export const ASSIGN_EMPTY_HANDLER_TYPES: DictDataVO[] = [ + { label: '自动通过', value: 1 }, + { label: '自动拒绝', value: 2 }, + { label: '指定成员审批', value: 3 }, + { label: '转交给流程管理员', value: 4 } +] +export const ASSIGN_START_USER_HANDLER_TYPES: DictDataVO[] = [ + { label: '由发起人对自己审批', value: 1 }, + { label: '自动跳过', value: 2 }, + { label: '转交给部门负责人审批', value: 3 } +] + +// 比较运算符 +export const COMPARISON_OPERATORS: DictDataVO = [ + { + value: '==', + label: '等于' + }, + { + value: '!=', + label: '不等于' + }, + { + value: '>', + label: '大于' + }, + { + value: '>=', + label: '大于等于' + }, + { + value: '<', + label: '小于' + }, + { + value: '<=', + label: '小于等于' + } +] +// 审批操作按钮名称 +export const OPERATION_BUTTON_NAME = new Map() +OPERATION_BUTTON_NAME.set(OperationButtonType.APPROVE, '通过') +OPERATION_BUTTON_NAME.set(OperationButtonType.REJECT, '拒绝') +OPERATION_BUTTON_NAME.set(OperationButtonType.TRANSFER, '转办') +OPERATION_BUTTON_NAME.set(OperationButtonType.DELEGATE, '委派') +OPERATION_BUTTON_NAME.set(OperationButtonType.ADD_SIGN, '加签') +OPERATION_BUTTON_NAME.set(OperationButtonType.RETURN, '退回') +OPERATION_BUTTON_NAME.set(OperationButtonType.COPY, '抄送') + +// 默认的按钮权限设置 +export const DEFAULT_BUTTON_SETTING: ButtonSetting[] = [ + { id: OperationButtonType.APPROVE, displayName: '通过', enable: true }, + { id: OperationButtonType.REJECT, displayName: '拒绝', enable: true }, + { id: OperationButtonType.TRANSFER, displayName: '转办', enable: true }, + { id: OperationButtonType.DELEGATE, displayName: '委派', enable: true }, + { id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: true }, + { id: OperationButtonType.RETURN, displayName: '退回', enable: true } +] + +// 办理人默认的按钮权限设置 +export const TRANSACTOR_DEFAULT_BUTTON_SETTING: ButtonSetting[] = [ + { id: OperationButtonType.APPROVE, displayName: '办理', enable: true }, + { id: OperationButtonType.REJECT, displayName: '拒绝', enable: false }, + { id: OperationButtonType.TRANSFER, displayName: '转办', enable: false }, + { id: OperationButtonType.DELEGATE, displayName: '委派', enable: false }, + { id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: false }, + { id: OperationButtonType.RETURN, displayName: '退回', enable: false } +] + +// 发起人的按钮权限。暂时定死,不可以编辑 +export const START_USER_BUTTON_SETTING: ButtonSetting[] = [ + { id: OperationButtonType.APPROVE, displayName: '提交', enable: true }, + { id: OperationButtonType.REJECT, displayName: '拒绝', enable: false }, + { id: OperationButtonType.TRANSFER, displayName: '转办', enable: false }, + { id: OperationButtonType.DELEGATE, displayName: '委派', enable: false }, + { id: OperationButtonType.ADD_SIGN, displayName: '加签', enable: false }, + { id: OperationButtonType.RETURN, displayName: '退回', enable: false } +] + +export const MULTI_LEVEL_DEPT: DictDataVO = [ + { label: '第 1 级部门', value: 1 }, + { label: '第 2 级部门', value: 2 }, + { label: '第 3 级部门', value: 3 }, + { label: '第 4 级部门', value: 4 }, + { label: '第 5 级部门', value: 5 }, + { label: '第 6 级部门', value: 6 }, + { label: '第 7 级部门', value: 7 }, + { label: '第 8 级部门', value: 8 }, + { label: '第 9 级部门', value: 9 }, + { label: '第 10 级部门', value: 10 }, + { label: '第 11 级部门', value: 11 }, + { label: '第 12 级部门', value: 12 }, + { label: '第 13 级部门', value: 13 }, + { label: '第 14 级部门', value: 14 }, + { label: '第 15 级部门', value: 15 } +] + +/** + * 流程实例的变量枚举 + */ +export enum ProcessVariableEnum { + /** + * 发起用户 ID + */ + START_USER_ID = 'PROCESS_START_USER_ID', + /** + * 发起时间 + */ + START_TIME = 'PROCESS_START_TIME', + /** + * 流程定义名称 + */ + PROCESS_DEFINITION_NAME = 'PROCESS_DEFINITION_NAME' +} + +/** + * 延迟设置 + */ +export type DelaySetting = { + // 延迟类型 + delayType: number + // 延迟时间表达式 + delayTime: string +} +/** + * 延迟类型 + */ +export enum DelayTypeEnum { + /** + * 固定时长 + */ + FIXED_TIME_DURATION = 1, + /** + * 固定日期时间 + */ + FIXED_DATE_TIME = 2 +} +export const DELAY_TYPE = [ + { label: '固定时长', value: DelayTypeEnum.FIXED_TIME_DURATION }, + { label: '固定日期', value: DelayTypeEnum.FIXED_DATE_TIME } +] + +/** + * 路由分支结构定义 + */ +export type RouterSetting = { + nodeId: string + conditionType: ConditionType + conditionExpression: string + conditionGroups: ConditionGroup +} + +// ==================== 触发器相关定义 ==================== +/** + * 触发器节点结构定义 + */ +export type TriggerSetting = { + type: TriggerTypeEnum + httpRequestSetting?: HttpRequestTriggerSetting + formSettings?: FormTriggerSetting[] +} + +/** + * 触发器类型枚举 + */ +export enum TriggerTypeEnum { + /** + * 发送 HTTP 请求触发器 + */ + HTTP_REQUEST = 1, + /** + * 接收 HTTP 回调请求触发器 + */ + HTTP_CALLBACK = 2, + /** + * 表单数据更新触发器 + */ + FORM_UPDATE = 10, + /** + * 表单数据删除触发器 + */ + FORM_DELETE = 11 +} + +/** + * HTTP 请求触发器结构定义 + */ +export type HttpRequestTriggerSetting = { + // 请求 URL + url: string + // 请求头参数设置 + header?: HttpRequestParam[] + // 请求体参数设置 + body?: HttpRequestParam[] + // 请求响应设置 + response?: Record[] +} + +/** + * 流程表单触发器配置结构定义 + */ +export type FormTriggerSetting = { + // 条件类型 + conditionType?: ConditionType + // 条件表达式 + conditionExpression?: string + // 条件组 + conditionGroups?: ConditionGroup + // 更新表单字段配置 + updateFormFields?: Record + // 删除表单字段配置 + deleteFields?: string[] +} + +export const TRIGGER_TYPES: DictDataVO[] = [ + { label: '发送 HTTP 请求', value: TriggerTypeEnum.HTTP_REQUEST }, + { label: '接收 HTTP 回调', value: TriggerTypeEnum.HTTP_CALLBACK }, + { label: '修改表单数据', value: TriggerTypeEnum.FORM_UPDATE }, + { label: '删除表单数据', value: TriggerTypeEnum.FORM_DELETE } +] + +/** + * 子流程节点结构定义 + */ +export type ChildProcessSetting = { + calledProcessDefinitionKey: string + calledProcessDefinitionName: string + async: boolean + inVariables?: IOParameter[] + outVariables?: IOParameter[] + skipStartUserNode: boolean + startUserSetting: StartUserSetting + timeoutSetting: TimeoutSetting + multiInstanceSetting: MultiInstanceSetting +} +export type IOParameter = { + source: string + target: string +} +export type StartUserSetting = { + type: ChildProcessStartUserTypeEnum + formField?: string + emptyType?: ChildProcessStartUserEmptyTypeEnum +} +export type TimeoutSetting = { + enable: boolean + type?: DelayTypeEnum + timeExpression?: string +} +export type MultiInstanceSetting = { + enable: boolean + sequential?: boolean + approveRatio?: number + sourceType?: ChildProcessMultiInstanceSourceTypeEnum + source?: string +} +export enum ChildProcessStartUserTypeEnum { + /** + * 同主流程发起人 + */ + MAIN_PROCESS_START_USER = 1, + /** + * 表单 + */ + FROM_FORM = 2 +} +export const CHILD_PROCESS_START_USER_TYPE = [ + { label: '同主流程发起人', value: ChildProcessStartUserTypeEnum.MAIN_PROCESS_START_USER }, + { label: '表单', value: ChildProcessStartUserTypeEnum.FROM_FORM } +] +export enum ChildProcessStartUserEmptyTypeEnum { + /** + * 同主流程发起人 + */ + MAIN_PROCESS_START_USER = 1, + /** + * 子流程管理员 + */ + CHILD_PROCESS_ADMIN = 2, + /** + * 主流程管理员 + */ + MAIN_PROCESS_ADMIN = 3 +} +export const CHILD_PROCESS_START_USER_EMPTY_TYPE = [ + { label: '同主流程发起人', value: ChildProcessStartUserEmptyTypeEnum.MAIN_PROCESS_START_USER }, + { label: '子流程管理员', value: ChildProcessStartUserEmptyTypeEnum.CHILD_PROCESS_ADMIN }, + { label: '主流程管理员', value: ChildProcessStartUserEmptyTypeEnum.MAIN_PROCESS_ADMIN } +] +export enum ChildProcessMultiInstanceSourceTypeEnum { + /** + * 固定数量 + */ + FIXED_QUANTITY = 1, + /** + * 数字表单 + */ + NUMBER_FORM = 2, + /** + * 多选表单 + */ + MULTIPLE_FORM = 3 +} +export const CHILD_PROCESS_MULTI_INSTANCE_SOURCE_TYPE = [ + { label: '固定数量', value: ChildProcessMultiInstanceSourceTypeEnum.FIXED_QUANTITY }, + { label: '数字表单', value: ChildProcessMultiInstanceSourceTypeEnum.NUMBER_FORM }, + { label: '多选表单', value: ChildProcessMultiInstanceSourceTypeEnum.MULTIPLE_FORM } +] diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/index.ts b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/index.ts new file mode 100644 index 0000000..88de07f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/index.ts @@ -0,0 +1,5 @@ +import SimpleProcessDesigner from './SimpleProcessDesigner.vue' +import SimpleProcessViewer from './SimpleProcessViewer.vue' +import '../theme/simple-process-designer.scss' + +export { SimpleProcessDesigner, SimpleProcessViewer} diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/node.ts b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/node.ts new file mode 100644 index 0000000..5b754bf --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/node.ts @@ -0,0 +1,616 @@ +import { TaskStatusEnum } from '@/api/bpm/task' +import * as RoleApi from '@/api/system/role' +import * as DeptApi from '@/api/system/dept' +import * as PostApi from '@/api/system/post' +import * as UserApi from '@/api/system/user' +import * as UserGroupApi from '@/api/bpm/userGroup' +import { + SimpleFlowNode, + CandidateStrategy, + NodeType, + ApproveMethodType, + RejectHandlerType, + NODE_DEFAULT_NAME, + AssignStartUserHandlerType, + AssignEmptyHandlerType, + FieldPermissionType, + HttpRequestParam, + ProcessVariableEnum, + ConditionType, + ConditionGroup, + COMPARISON_OPERATORS +} from './consts' +import { parseFormFields } from '@/components/FormCreate/src/utils' + +export function useWatchNode(props: { flowNode: SimpleFlowNode }): Ref { + const node = ref(props.flowNode) + watch( + () => props.flowNode, + (newValue) => { + node.value = newValue + } + ) + return node +} + +// 解析 formCreate 所有表单字段, 并返回 +const parseFormCreateFields = (formFields?: string[]) => { + const result: Array> = [] + if (formFields) { + formFields.forEach((fieldStr: string) => { + parseFormFields(JSON.parse(fieldStr), result) + }) + } + return result +} + +/** + * @description 表单数据权限配置,用于发起人节点 、审批节点、抄送节点 + */ +export function useFormFieldsPermission(defaultPermission: FieldPermissionType) { + // 字段权限配置. 需要有 field, title, permissioin 属性 + const fieldsPermissionConfig = ref>>([]) + + const formType = inject>('formType', ref()) // 表单类型 + + const formFields = inject>('formFields', ref([])) // 流程表单字段 + + const getNodeConfigFormFields = (nodeFormFields?: Array>) => { + nodeFormFields = toRaw(nodeFormFields) + if (!nodeFormFields || nodeFormFields.length === 0) { + fieldsPermissionConfig.value = getDefaultFieldsPermission(unref(formFields)) + } else { + fieldsPermissionConfig.value = mergeFieldsPermission(nodeFormFields, unref(formFields)) + } + } + // 合并已经设置的表单字段权限,当前流程表单字段 (可能新增,或删除了字段) + const mergeFieldsPermission = ( + formFieldsPermisson: Array>, + formFields?: string[] + ) => { + let mergedFieldsPermission: Array> = [] + if (formFields) { + mergedFieldsPermission = parseFormCreateFields(formFields).map((item) => { + const found = formFieldsPermisson.find( + (fieldPermission) => fieldPermission.field == item.field + ) + return { + field: item.field, + title: item.title, + permission: found ? found.permission : defaultPermission + } + }) + } + return mergedFieldsPermission + } + + // 默认的表单权限: 获取表单的所有字段,设置字段默认权限为只读 + const getDefaultFieldsPermission = (formFields?: string[]) => { + let defaultFieldsPermission: Array> = [] + if (formFields) { + defaultFieldsPermission = parseFormCreateFields(formFields).map((item) => { + return { + field: item.field, + title: item.title, + permission: defaultPermission + } + }) + } + return defaultFieldsPermission + } + + // 获取表单的所有字段,作为下拉框选项 + const formFieldOptions = parseFormCreateFields(unref(formFields)) + + return { + formType, + fieldsPermissionConfig, + formFieldOptions, + getNodeConfigFormFields + } +} + +/** + * @description 获取流程表单的字段 + */ +export function useFormFields() { + const formFields = inject>('formFields', ref([])) // 流程表单字段 + return parseFormCreateFields(unref(formFields)) +} + +// TODO @芋艿:后续需要把各种类似 useFormFieldsPermission 的逻辑,抽成一个通用方法。 +/** + * @description 获取流程表单的字段和发起人字段 + */ +export function useFormFieldsAndStartUser() { + const injectFormFields = inject>('formFields', ref([])) // 流程表单字段 + const formFields = parseFormCreateFields(unref(injectFormFields)) + // 添加发起人 + formFields.unshift({ + field: ProcessVariableEnum.START_USER_ID, + title: '发起人', + required: true + }) + return formFields +} + +export type UserTaskFormType = { + candidateStrategy: CandidateStrategy + approveMethod: ApproveMethodType + roleIds?: number[] // 角色 + deptIds?: number[] // 部门 + deptLevel?: number // 部门层级 + userIds?: number[] // 用户 + userGroups?: number[] // 用户组 + postIds?: number[] // 岗位 + expression?: string // 流程表达式 + formUser?: string // 表单内用户字段 + formDept?: string // 表单内部门字段 + approveRatio?: number + rejectHandlerType?: RejectHandlerType + returnNodeId?: string + timeoutHandlerEnable?: boolean + timeoutHandlerType?: number + assignEmptyHandlerType?: AssignEmptyHandlerType + assignEmptyHandlerUserIds?: number[] + assignStartUserHandlerType?: AssignStartUserHandlerType + timeDuration?: number + maxRemindCount?: number + buttonsSetting: any[] + taskCreateListenerEnable?: boolean + taskCreateListenerPath?: string + taskCreateListener?: { + header: HttpRequestParam[] + body: HttpRequestParam[] + } + taskAssignListenerEnable?: boolean + taskAssignListenerPath?: string + taskAssignListener?: { + header: HttpRequestParam[] + body: HttpRequestParam[] + } + taskCompleteListenerEnable?: boolean + taskCompleteListenerPath?: string + taskCompleteListener?: { + header: HttpRequestParam[] + body: HttpRequestParam[] + } + signEnable: boolean + reasonRequire: boolean +} + +export type CopyTaskFormType = { + candidateStrategy: CandidateStrategy + roleIds?: number[] // 角色 + deptIds?: number[] // 部门 + deptLevel?: number // 部门层级 + userIds?: number[] // 用户 + userGroups?: number[] // 用户组 + postIds?: number[] // 岗位 + formUser?: string // 表单内用户字段 + formDept?: string // 表单内部门字段 + expression?: string // 流程表达式 +} + +/** + * @description 节点表单数据。 用于审批节点、抄送节点 + */ +export function useNodeForm(nodeType: NodeType) { + const roleOptions = inject>('roleList', ref([])) // 角色列表 + const postOptions = inject>('postList', ref([])) // 岗位列表 + const userOptions = inject>('userList', ref([])) // 用户列表 + const deptOptions = inject>('deptList', ref([])) // 部门列表 + const userGroupOptions = inject>('userGroupList', ref([])) // 用户组列表 + const deptTreeOptions = inject('deptTree', ref()) // 部门树 + const formFields = inject>('formFields', ref([])) // 流程表单字段 + const configForm = ref() + if (nodeType === NodeType.USER_TASK_NODE || nodeType === NodeType.TRANSACTOR_NODE) { + configForm.value = { + candidateStrategy: CandidateStrategy.USER, + approveMethod: ApproveMethodType.SEQUENTIAL_APPROVE, + approveRatio: 100, + rejectHandlerType: RejectHandlerType.FINISH_PROCESS, + assignStartUserHandlerType: AssignStartUserHandlerType.START_USER_AUDIT, + returnNodeId: '', + timeoutHandlerEnable: false, + timeoutHandlerType: 1, + timeDuration: 6, // 默认 6小时 + maxRemindCount: 1, // 默认 提醒 1次 + buttonsSetting: [] + } + } else { + configForm.value = { + candidateStrategy: CandidateStrategy.USER + } + } + + const getShowText = (): string => { + let showText = '' + // 指定成员 + if (configForm.value?.candidateStrategy === CandidateStrategy.USER) { + if (configForm.value?.userIds!.length > 0) { + const candidateNames: string[] = [] + userOptions?.value.forEach((item) => { + if (configForm.value?.userIds!.includes(item.id)) { + candidateNames.push(item.nickname) + } + }) + showText = `指定成员:${candidateNames.join(',')}` + } + } + // 指定角色 + if (configForm.value?.candidateStrategy === CandidateStrategy.ROLE) { + if (configForm.value.roleIds!.length > 0) { + const candidateNames: string[] = [] + roleOptions?.value.forEach((item) => { + if (configForm.value?.roleIds!.includes(item.id)) { + candidateNames.push(item.name) + } + }) + showText = `指定角色:${candidateNames.join(',')}` + } + } + // 指定部门 + if ( + configForm.value?.candidateStrategy === CandidateStrategy.DEPT_MEMBER || + configForm.value?.candidateStrategy === CandidateStrategy.DEPT_LEADER || + configForm.value?.candidateStrategy === CandidateStrategy.MULTI_LEVEL_DEPT_LEADER + ) { + if (configForm.value?.deptIds!.length > 0) { + const candidateNames: string[] = [] + deptOptions?.value.forEach((item) => { + if (configForm.value?.deptIds!.includes(item.id!)) { + candidateNames.push(item.name) + } + }) + if (configForm.value.candidateStrategy === CandidateStrategy.DEPT_MEMBER) { + showText = `部门成员:${candidateNames.join(',')}` + } else if (configForm.value.candidateStrategy === CandidateStrategy.DEPT_LEADER) { + showText = `部门的负责人:${candidateNames.join(',')}` + } else { + showText = `多级部门的负责人:${candidateNames.join(',')}` + } + } + } + + // 指定岗位 + if (configForm.value?.candidateStrategy === CandidateStrategy.POST) { + if (configForm.value.postIds!.length > 0) { + const candidateNames: string[] = [] + postOptions?.value.forEach((item) => { + if (configForm.value?.postIds!.includes(item.id!)) { + candidateNames.push(item.name) + } + }) + showText = `指定岗位: ${candidateNames.join(',')}` + } + } + // 指定用户组 + if (configForm.value?.candidateStrategy === CandidateStrategy.USER_GROUP) { + if (configForm.value?.userGroups!.length > 0) { + const candidateNames: string[] = [] + userGroupOptions?.value.forEach((item) => { + if (configForm.value?.userGroups!.includes(item.id)) { + candidateNames.push(item.name) + } + }) + showText = `指定用户组: ${candidateNames.join(',')}` + } + } + + // 表单内用户字段 + if (configForm.value?.candidateStrategy === CandidateStrategy.FORM_USER) { + const formFieldOptions = parseFormCreateFields(unref(formFields)) + const item = formFieldOptions.find((item) => item.field === configForm.value?.formUser) + showText = `表单用户:${item?.title}` + } + + // 表单内部门负责人 + if (configForm.value?.candidateStrategy === CandidateStrategy.FORM_DEPT_LEADER) { + showText = `表单内部门负责人` + } + + // 审批人自选 + if (configForm.value?.candidateStrategy === CandidateStrategy.APPROVE_USER_SELECT) { + showText = `审批人自选` + } + + // 发起人自选 + if (configForm.value?.candidateStrategy === CandidateStrategy.START_USER_SELECT) { + showText = `发起人自选` + } + // 发起人自己 + if (configForm.value?.candidateStrategy === CandidateStrategy.START_USER) { + showText = `发起人自己` + } + // 发起人的部门负责人 + if (configForm.value?.candidateStrategy === CandidateStrategy.START_USER_DEPT_LEADER) { + showText = `发起人的部门负责人` + } + // 发起人的部门负责人 + if ( + configForm.value?.candidateStrategy === CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER + ) { + showText = `发起人连续部门负责人` + } + // 流程表达式 + if (configForm.value?.candidateStrategy === CandidateStrategy.EXPRESSION) { + showText = `流程表达式:${configForm.value.expression}` + } + return showText + } + + /** + * 处理候选人参数的赋值 + */ + const handleCandidateParam = () => { + let candidateParam: undefined | string = undefined + if (!configForm.value) { + return candidateParam + } + switch (configForm.value.candidateStrategy) { + case CandidateStrategy.USER: + candidateParam = configForm.value.userIds!.join(',') + break + case CandidateStrategy.ROLE: + candidateParam = configForm.value.roleIds!.join(',') + break + case CandidateStrategy.POST: + candidateParam = configForm.value.postIds!.join(',') + break + case CandidateStrategy.USER_GROUP: + candidateParam = configForm.value.userGroups!.join(',') + break + case CandidateStrategy.FORM_USER: + candidateParam = configForm.value.formUser! + break + case CandidateStrategy.EXPRESSION: + candidateParam = configForm.value.expression! + break + case CandidateStrategy.DEPT_MEMBER: + case CandidateStrategy.DEPT_LEADER: + candidateParam = configForm.value.deptIds!.join(',') + break + // 发起人部门负责人 + case CandidateStrategy.START_USER_DEPT_LEADER: + case CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER: + candidateParam = configForm.value.deptLevel + '' + break + // 指定连续多级部门的负责人 + case CandidateStrategy.MULTI_LEVEL_DEPT_LEADER: { + // 候选人参数格式: | 分隔 。左边为部门(多个部门用 , 分隔)。 右边为部门层级 + const deptIds = configForm.value.deptIds!.join(',') + candidateParam = deptIds.concat('|' + configForm.value.deptLevel + '') + break + } + // 表单内部门的负责人 + case CandidateStrategy.FORM_DEPT_LEADER: { + // 候选人参数格式: | 分隔 。左边为表单内部门字段。 右边为部门层级 + const deptFieldOnForm = configForm.value.formDept! + candidateParam = deptFieldOnForm.concat('|' + configForm.value.deptLevel + '') + break + } + default: + break + } + return candidateParam + } + /** + * 解析候选人参数 + */ + const parseCandidateParam = ( + candidateStrategy: CandidateStrategy, + candidateParam: string | undefined + ) => { + if (!configForm.value || !candidateParam) { + return + } + switch (candidateStrategy) { + case CandidateStrategy.USER: { + configForm.value.userIds = candidateParam.split(',').map((item) => +item) + break + } + case CandidateStrategy.ROLE: + configForm.value.roleIds = candidateParam.split(',').map((item) => +item) + break + case CandidateStrategy.POST: + configForm.value.postIds = candidateParam.split(',').map((item) => +item) + break + case CandidateStrategy.USER_GROUP: + configForm.value.userGroups = candidateParam.split(',').map((item) => +item) + break + case CandidateStrategy.FORM_USER: + configForm.value.formUser = candidateParam + break + case CandidateStrategy.EXPRESSION: + configForm.value.expression = candidateParam + break + case CandidateStrategy.DEPT_MEMBER: + case CandidateStrategy.DEPT_LEADER: + configForm.value.deptIds = candidateParam.split(',').map((item) => +item) + break + // 发起人部门负责人 + case CandidateStrategy.START_USER_DEPT_LEADER: + case CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER: + configForm.value.deptLevel = +candidateParam + break + // 指定连续多级部门的负责人 + case CandidateStrategy.MULTI_LEVEL_DEPT_LEADER: { + // 候选人参数格式: | 分隔 。左边为部门(多个部门用 , 分隔)。 右边为部门层级 + const paramArray = candidateParam.split('|') + configForm.value.deptIds = paramArray[0].split(',').map((item) => +item) + configForm.value.deptLevel = +paramArray[1] + break + } + // 表单内的部门负责人 + case CandidateStrategy.FORM_DEPT_LEADER: { + // 候选人参数格式: | 分隔 。左边为表单内的部门字段。 右边为部门层级 + const paramArray = candidateParam.split('|') + configForm.value.formDept = paramArray[0] + configForm.value.deptLevel = +paramArray[1] + break + } + default: + break + } + } + return { + configForm, + roleOptions, + postOptions, + userOptions, + userGroupOptions, + deptTreeOptions, + handleCandidateParam, + parseCandidateParam, + getShowText + } +} + +/** + * @description 抽屉配置 + */ +export function useDrawer() { + // 抽屉配置是否可见 + const settingVisible = ref(false) + // 关闭配置抽屉 + const closeDrawer = () => { + settingVisible.value = false + } + // 打开配置抽屉 + const openDrawer = () => { + settingVisible.value = true + } + return { + settingVisible, + closeDrawer, + openDrawer + } +} + +/** + * @description 节点名称配置 + */ +export function useNodeName(nodeType: NodeType) { + // 节点名称 + const nodeName = ref() + // 节点名称输入框 + const showInput = ref(false) + // 点击节点名称编辑图标 + const clickIcon = () => { + showInput.value = true + } + // 节点名称输入框失去焦点 + const blurEvent = () => { + showInput.value = false + nodeName.value = nodeName.value || (NODE_DEFAULT_NAME.get(nodeType) as string) + } + return { + nodeName, + showInput, + clickIcon, + blurEvent + } +} + +export function useNodeName2(node: Ref, nodeType: NodeType) { + // 显示节点名称输入框 + const showInput = ref(false) + // 节点名称输入框失去焦点 + const blurEvent = () => { + showInput.value = false + node.value.name = node.value.name || (NODE_DEFAULT_NAME.get(nodeType) as string) + } + // 点击节点标题进行输入 + const clickTitle = () => { + showInput.value = true + } + return { + showInput, + clickTitle, + blurEvent + } +} + +/** + * @description 根据节点任务状态,获取节点任务状态样式 + */ +export function useTaskStatusClass(taskStatus: TaskStatusEnum | undefined): string { + if (!taskStatus) { + return '' + } + if (taskStatus === TaskStatusEnum.APPROVE) { + return 'status-pass' + } + if (taskStatus === TaskStatusEnum.RUNNING) { + return 'status-running' + } + if (taskStatus === TaskStatusEnum.REJECT) { + return 'status-reject' + } + if (taskStatus === TaskStatusEnum.CANCEL) { + return 'status-cancel' + } + return '' +} + +/** 条件组件文字展示 */ +export function getConditionShowText( + conditionType: ConditionType | undefined, + conditionExpression: string | undefined, + conditionGroups: ConditionGroup | undefined, + fieldOptions: Array> +) { + let showText = '' + if (conditionType === ConditionType.EXPRESSION) { + if (conditionExpression) { + showText = `表达式:${conditionExpression}` + } + } + if (conditionType === ConditionType.RULE) { + // 条件组是否为与关系 + const groupAnd = conditionGroups?.and + let warningMessage: undefined | string = undefined + const conditionGroup = conditionGroups?.conditions.map((item) => { + return ( + '(' + + item.rules + .map((rule) => { + if (rule.leftSide && rule.rightSide) { + return ( + getFormFieldTitle(fieldOptions, rule.leftSide) + + ' ' + + getOpName(rule.opCode) + + ' ' + + rule.rightSide + ) + } else { + // 有一条规则不完善。提示错误 + warningMessage = '请完善条件规则' + return '' + } + }) + .join(item.and ? ' 且 ' : ' 或 ') + + ' ) ' + ) + }) + if (warningMessage) { + showText = '' + } else { + showText = conditionGroup!.join(groupAnd ? ' 且 ' : ' 或 ') + } + } + return showText +} + +/** 获取表单字段名称*/ +const getFormFieldTitle = (fieldOptions: Array>, field: string) => { + const item = fieldOptions.find((item) => item.field === field) + return item?.title +} + +/** 获取操作符名称 */ +const getOpName = (opCode: string): string => { + const opName = COMPARISON_OPERATORS.find((item: any) => item.value === opCode) + return opName?.label +} diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue new file mode 100644 index 0000000..7ec382f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue @@ -0,0 +1,610 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue new file mode 100644 index 0000000..9020d65 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue @@ -0,0 +1,222 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue new file mode 100644 index 0000000..aec32da --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue @@ -0,0 +1,392 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/DelayTimerNodeConfig.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/DelayTimerNodeConfig.vue new file mode 100644 index 0000000..741796d --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/DelayTimerNodeConfig.vue @@ -0,0 +1,190 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue new file mode 100644 index 0000000..4cf6a84 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue @@ -0,0 +1,201 @@ + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue new file mode 100644 index 0000000..9975d9b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue @@ -0,0 +1,224 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue new file mode 100644 index 0000000..2baac8d --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue @@ -0,0 +1,525 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue new file mode 100644 index 0000000..433864b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue @@ -0,0 +1,1058 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue new file mode 100644 index 0000000..7ef092d --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue @@ -0,0 +1,277 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/ConditionDialog.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/ConditionDialog.vue new file mode 100644 index 0000000..79816c6 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/ConditionDialog.vue @@ -0,0 +1,309 @@ + + + + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestParamSetting.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestParamSetting.vue new file mode 100644 index 0000000..9a0a9fe --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestParamSetting.vue @@ -0,0 +1,188 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestSetting.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestSetting.vue new file mode 100644 index 0000000..13efe39 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestSetting.vue @@ -0,0 +1,127 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/UserTaskListener.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/UserTaskListener.vue new file mode 100644 index 0000000..728f568 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes-config/components/UserTaskListener.vue @@ -0,0 +1,88 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ChildProcessNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ChildProcessNode.vue new file mode 100644 index 0000000..0b36244 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ChildProcessNode.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/CopyTaskNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/CopyTaskNode.vue new file mode 100644 index 0000000..8b97ee5 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/CopyTaskNode.vue @@ -0,0 +1,97 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/DelayTimerNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/DelayTimerNode.vue new file mode 100644 index 0000000..ad6795a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/DelayTimerNode.vue @@ -0,0 +1,97 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/EndEventNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/EndEventNode.vue new file mode 100644 index 0000000..0af0310 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/EndEventNode.vue @@ -0,0 +1,102 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue new file mode 100644 index 0000000..09b32ed --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue @@ -0,0 +1,240 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue new file mode 100644 index 0000000..51c44d4 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue new file mode 100644 index 0000000..7aa6793 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue @@ -0,0 +1,184 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/RouterNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/RouterNode.vue new file mode 100644 index 0000000..3997c09 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/RouterNode.vue @@ -0,0 +1,97 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/StartUserNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/StartUserNode.vue new file mode 100644 index 0000000..4abe38f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/StartUserNode.vue @@ -0,0 +1,154 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/TriggerNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/TriggerNode.vue new file mode 100644 index 0000000..00f1c82 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/TriggerNode.vue @@ -0,0 +1,97 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue new file mode 100644 index 0000000..ae1af6c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue @@ -0,0 +1,181 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/utils.ts b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/utils.ts new file mode 100644 index 0000000..8e715b4 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/src/utils.ts @@ -0,0 +1,41 @@ +import { TimeUnitType, ApproveType, APPROVE_TYPE } from './consts' + +// 获取条件节点默认的名称 +export const getDefaultConditionNodeName = (index: number, defaultFlow: boolean | undefined): string => { + if (defaultFlow) { + return '其它情况' + } + return '条件' + (index + 1) +} + +// 获取包容分支条件节点默认的名称 +export const getDefaultInclusiveConditionNodeName = (index: number, defaultFlow: boolean | undefined): string => { + if (defaultFlow) { + return '其它情况' + } + return '包容条件' + (index + 1) +} + +export const convertTimeUnit = (strTimeUnit: string) => { + if (strTimeUnit === 'M') { + return TimeUnitType.MINUTE + } + if (strTimeUnit === 'H') { + return TimeUnitType.HOUR + } + if (strTimeUnit === 'D') { + return TimeUnitType.DAY + } + return TimeUnitType.HOUR +} + +export const getApproveTypeText = (approveType: ApproveType): string => { + let approveTypeText = '' + APPROVE_TYPE.forEach((item) => { + if (item.value === approveType) { + approveTypeText = item.label + return + } + }) + return approveTypeText +} diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/theme/iconfont.ttf b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/theme/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..06f4e31c4b4ce9868cd39b25f6beb1fd5884ff9c GIT binary patch literal 4808 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 literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/theme/iconfont.woff b/marketing-ui/admin-ui/src/components/SimpleProcessDesignerV2/theme/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..0724e75054dc761f7cec794944cc140f3056bebf GIT binary patch literal 3176 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 +import { propTypes } from '@/utils/propTypes' +import { isClient, useEventListener, useWindowSize } from '@vueuse/core' +import type { CSSProperties } from 'vue' + +defineOptions({ name: 'Sticky' }) + +const props = defineProps({ + // 距离顶部或者底部的距离(单位px) + offset: propTypes.number.def(0), + // 设置元素的堆叠顺序 + zIndex: propTypes.number.def(999), + // 设置指定的class + className: propTypes.string.def(''), + // 定位方式,默认为(top),表示距离顶部位置,可以设置为top或者bottom + position: { + type: String, + validator: function (value: string) { + return ['top', 'bottom'].indexOf(value) !== -1 + }, + default: 'top' + } +}) +const width = ref('auto' as string) +const height = ref('auto' as string) +const isSticky = ref(false) +const refSticky = shallowRef() +const scrollContainer = shallowRef() +const { height: windowHeight } = useWindowSize() +onMounted(() => { + height.value = refSticky.value?.getBoundingClientRect().height + 'px' + + scrollContainer.value = getScrollContainer(refSticky.value!, true) + useEventListener(scrollContainer, 'scroll', handleScroll) + useEventListener('resize', handleResize) + handleScroll() +}) +onActivated(() => { + handleScroll() +}) + +const camelize = (str: string): string => { + return str.replace(/-(\w)/g, (_, c) => (c ? c.toUpperCase() : '')) +} + +const getStyle = (element: HTMLElement, styleName: keyof CSSProperties): string => { + if (!isClient || !element || !styleName) return '' + + let key = camelize(styleName) + if (key === 'float') key = 'cssFloat' + try { + const style = element.style[styleName] + if (style) return style + const computed = document.defaultView?.getComputedStyle(element, '') + return computed ? computed[styleName] : '' + } catch { + return element.style[styleName] + } +} +const isScroll = (el: HTMLElement, isVertical?: boolean): boolean => { + if (!isClient) return false + const key = ( + { + undefined: 'overflow', + true: 'overflow-y', + false: 'overflow-x' + } as const + )[String(isVertical)]! + const overflow = getStyle(el, key) + return ['scroll', 'auto', 'overlay'].some((s) => overflow.includes(s)) +} + +const getScrollContainer = ( + el: HTMLElement, + isVertical: boolean +): Window | HTMLElement | undefined => { + if (!isClient) return + let parent = el + while (parent) { + if ([window, document, document.documentElement].includes(parent)) return window + if (isScroll(parent, isVertical)) return parent + parent = parent.parentNode as HTMLElement + } + return parent +} + +const handleScroll = () => { + width.value = refSticky.value!.getBoundingClientRect().width! + 'px' + if (props.position === 'top') { + const offsetTop = refSticky.value?.getBoundingClientRect().top + if (offsetTop !== undefined && offsetTop < props.offset) { + sticky() + return + } + reset() + } else { + const offsetBottom = refSticky.value?.getBoundingClientRect().bottom + + if (offsetBottom !== undefined && offsetBottom > windowHeight.value - props.offset) { + sticky() + return + } + reset() + } +} +const handleResize = () => { + if (isSticky.value && refSticky.value) { + width.value = refSticky.value.getBoundingClientRect().width + 'px' + } +} +const sticky = () => { + if (isSticky.value) { + return + } + isSticky.value = true +} +const reset = () => { + if (!isSticky.value) { + return + } + width.value = 'auto' + isSticky.value = false +} + + diff --git a/marketing-ui/admin-ui/src/components/SummaryCard/index.vue b/marketing-ui/admin-ui/src/components/SummaryCard/index.vue new file mode 100644 index 0000000..52da6da --- /dev/null +++ b/marketing-ui/admin-ui/src/components/SummaryCard/index.vue @@ -0,0 +1,52 @@ + + diff --git a/marketing-ui/admin-ui/src/components/Table/index.ts b/marketing-ui/admin-ui/src/components/Table/index.ts new file mode 100644 index 0000000..9f89317 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Table/index.ts @@ -0,0 +1,13 @@ +import Table from './src/Table.vue' +import { ElTable } from 'element-plus' +import { TableSetPropsType } from '@/types/table' +import TableSelectForm from './src/TableSelectForm.vue' + +export interface TableExpose { + setProps: (props: Recordable) => void + setColumn: (columnProps: TableSetPropsType[]) => void + selections: Recordable[] + elTableRef: ComponentRef +} + +export { Table, TableSelectForm } diff --git a/marketing-ui/admin-ui/src/components/Table/src/Table.vue b/marketing-ui/admin-ui/src/components/Table/src/Table.vue new file mode 100644 index 0000000..e9e50af --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Table/src/Table.vue @@ -0,0 +1,311 @@ + + diff --git a/marketing-ui/admin-ui/src/components/Table/src/TableSelectForm.vue b/marketing-ui/admin-ui/src/components/Table/src/TableSelectForm.vue new file mode 100644 index 0000000..5378a1b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Table/src/TableSelectForm.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/Table/src/helper.ts b/marketing-ui/admin-ui/src/components/Table/src/helper.ts new file mode 100644 index 0000000..d8b34a8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Table/src/helper.ts @@ -0,0 +1,8 @@ +export const setIndex = (reserveIndex: boolean, index: number, size: number, current: number) => { + const newIndex = index + 1 + if (reserveIndex) { + return size * (current - 1) + newIndex + } else { + return newIndex + } +} diff --git a/marketing-ui/admin-ui/src/components/Table/src/types.ts b/marketing-ui/admin-ui/src/components/Table/src/types.ts new file mode 100644 index 0000000..1c7ff76 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Table/src/types.ts @@ -0,0 +1,26 @@ +import { Pagination, TableColumn } from '@/types/table' + +export type TableProps = { + pageSize?: number + currentPage?: number + // 是否多选 + selection?: boolean + // 是否所有的超出隐藏,优先级低于schema中的showOverflowTooltip, + showOverflowTooltip?: boolean + // 表头 + columns?: TableColumn[] + // 是否展示分页 + pagination?: Pagination | undefined + // 仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key) + reserveSelection?: boolean + // 加载状态 + loading?: boolean + // 是否叠加索引 + reserveIndex?: boolean + // 对齐方式 + align?: 'left' | 'center' | 'right' + // 表头对齐方式 + headerAlign?: 'left' | 'center' | 'right' + data?: Recordable + expand?: boolean +} & Recordable diff --git a/marketing-ui/admin-ui/src/components/Tinyflow/Tinyflow.vue b/marketing-ui/admin-ui/src/components/Tinyflow/Tinyflow.vue new file mode 100644 index 0000000..6c4f21c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Tinyflow/Tinyflow.vue @@ -0,0 +1,63 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.css b/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.css new file mode 100644 index 0000000..8fa10c2 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.css @@ -0,0 +1 @@ +.svelte-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgb(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.svelte-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgb(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.svelte-flow__background{background-color:var(--xy-background-color, var(--xy-background-color-props, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.svelte-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.svelte-flow__pane{z-index:1}.svelte-flow__pane.draggable{cursor:grab}.svelte-flow__pane.dragging{cursor:grabbing}.svelte-flow__pane.selection{cursor:pointer}.svelte-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.svelte-flow__renderer{z-index:4}.svelte-flow__selection{z-index:6}.svelte-flow__nodesselection-rect:focus,.svelte-flow__nodesselection-rect:focus-visible{outline:none}.svelte-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.svelte-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.svelte-flow .svelte-flow__edges{position:absolute}.svelte-flow .svelte-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.svelte-flow__edge{pointer-events:visibleStroke}.svelte-flow__edge.selectable{cursor:pointer}.svelte-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.svelte-flow__edge.animated path.svelte-flow__edge-interaction{stroke-dasharray:none;animation:none}.svelte-flow__edge.inactive{pointer-events:none}.svelte-flow__edge.selected,.svelte-flow__edge:focus,.svelte-flow__edge:focus-visible{outline:none}.svelte-flow__edge.selected .svelte-flow__edge-path,.svelte-flow__edge.selectable:focus .svelte-flow__edge-path,.svelte-flow__edge.selectable:focus-visible .svelte-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.svelte-flow__edge-textwrapper{pointer-events:all}.svelte-flow__edge .svelte-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.svelte-flow__connection{pointer-events:none}.svelte-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.svelte-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.svelte-flow__nodes{pointer-events:none;transform-origin:0 0}.svelte-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.svelte-flow__node.selectable{cursor:pointer}.svelte-flow__node.draggable{cursor:grab;pointer-events:all}.svelte-flow__node.draggable.dragging{cursor:grabbing}.svelte-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.svelte-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.svelte-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.svelte-flow__handle.connectingfrom{pointer-events:all}.svelte-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.svelte-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.svelte-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.svelte-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.svelte-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.svelte-flow__edgeupdater{cursor:move;pointer-events:all}.svelte-flow__panel{position:absolute;z-index:5;margin:15px}.svelte-flow__panel.top{top:0}.svelte-flow__panel.bottom{bottom:0}.svelte-flow__panel.left{left:0}.svelte-flow__panel.right{right:0}.svelte-flow__panel.center{left:50%;transform:translate(-50%)}.svelte-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.svelte-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.svelte-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.svelte-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.svelte-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.svelte-flow__minimap-svg{display:block}.svelte-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.svelte-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.svelte-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.svelte-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.svelte-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.svelte-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.svelte-flow__controls.horizontal{flex-direction:row}.svelte-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.svelte-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.svelte-flow__edge.updating .svelte-flow__edge-path{stroke:#777}.svelte-flow__edge-text{font-size:10px}.svelte-flow__node.selectable:focus,.svelte-flow__node.selectable:focus-visible{outline:none}.svelte-flow__node-input,.svelte-flow__node-default,.svelte-flow__node-output,.svelte-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.svelte-flow__node-input.selectable:hover,.svelte-flow__node-default.selectable:hover,.svelte-flow__node-output.selectable:hover,.svelte-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.svelte-flow__node-input.selectable.selected,.svelte-flow__node-input.selectable:focus,.svelte-flow__node-input.selectable:focus-visible,.svelte-flow__node-default.selectable.selected,.svelte-flow__node-default.selectable:focus,.svelte-flow__node-default.selectable:focus-visible,.svelte-flow__node-output.selectable.selected,.svelte-flow__node-output.selectable:focus,.svelte-flow__node-output.selectable:focus-visible,.svelte-flow__node-group.selectable.selected,.svelte-flow__node-group.selectable:focus,.svelte-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.svelte-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.svelte-flow__nodesselection-rect,.svelte-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.svelte-flow__nodesselection-rect:focus,.svelte-flow__nodesselection-rect:focus-visible,.svelte-flow__selection:focus,.svelte-flow__selection:focus-visible{outline:none}.svelte-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.svelte-flow__controls-button:disabled{pointer-events:none}.svelte-flow__controls-button:disabled svg{fill-opacity:.4}.svelte-flow__controls-button:last-child{border-bottom:none}.svelte-flow__resize-control{position:absolute}.svelte-flow__resize-control.left,.svelte-flow__resize-control.right{cursor:ew-resize}.svelte-flow__resize-control.top,.svelte-flow__resize-control.bottom{cursor:ns-resize}.svelte-flow__resize-control.top.left,.svelte-flow__resize-control.bottom.right{cursor:nwse-resize}.svelte-flow__resize-control.bottom.left,.svelte-flow__resize-control.top.right{cursor:nesw-resize}.svelte-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));transform:translate(-50%,-50%)}.svelte-flow__resize-control.handle.left{left:0;top:50%}.svelte-flow__resize-control.handle.right{left:100%;top:50%}.svelte-flow__resize-control.handle.top{left:50%;top:0}.svelte-flow__resize-control.handle.bottom{left:50%;top:100%}.svelte-flow__resize-control.handle.top.left,.svelte-flow__resize-control.handle.bottom.left{left:0}.svelte-flow__resize-control.handle.top.right,.svelte-flow__resize-control.handle.bottom.right{left:100%}.svelte-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.svelte-flow__resize-control.line.left,.svelte-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.svelte-flow__resize-control.line.left{left:0;border-left-width:1px}.svelte-flow__resize-control.line.right{left:100%;border-right-width:1px}.svelte-flow__resize-control.line.top,.svelte-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.svelte-flow__resize-control.line.top{top:0;border-top-width:1px}.svelte-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.svelte-flow__edge-label{text-align:center;position:absolute;padding:2px;font-size:10px;cursor:pointer;color:var(--xy-edge-label-color, var(--xy-edge-label-color-default));background:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.svelte-flow__nodes,.svelte-flow__edgelabel-renderer{z-index:0}:root,:root .tf-theme-light{--tf-primary-color: #2563EB;--xy-node-boxshadow-selected: 0 0 0 1px var(--tf-primary-color);--xy-handle-background-color: var(--tf-primary-color)}.tf-btn{display:flex;align-items:center;justify-content:center;gap:2px;background:#fff;border:1px solid #ccc;cursor:pointer;border-radius:5px;padding:5px;margin:0;height:fit-content;width:fit-content}.tf-btn svg{fill:currentColor;width:16px;height:16px}.tf-btn:hover{border:1px solid var(--tf-primary-color)}.tf-input,.tf-textarea{display:flex;border-radius:5px;border:1px solid #ccc;padding:5px 10px;box-sizing:border-box;resize:vertical;outline:none}.tf-input::placeholder,.tf-textarea::placeholder{color:#ccc}.tf-input:focus,.tf-textarea:focus{border-color:var(--tf-primary-color);box-shadow:0 0 5px #51cbee33}.tf-input[disabled],.tf-textarea[disabled]{background-color:#f0f0f0;cursor:not-allowed;color:#aaa}.tf-select-input{display:flex;border:1px solid #ccc;padding:3px 10px;border-radius:5px;font-size:14px;justify-content:space-between;align-items:center;cursor:pointer;background:#fff;height:27px}.tf-select-input:focus{border-color:var(--tf-primary-color);box-shadow:0 0 5px #51cbee33}.tf-select-input-value{height:21px;min-width:10px;font-size:12px;display:flex;align-items:center}.tf-select-input-arrow{display:block;width:16px;height:16px;color:#666}.tf-select-input-placeholder{color:#ccc}.tf-select-content{display:flex;flex-direction:column;background:#fff;margin-top:5px;border:1px solid #ccc;border-radius:5px;padding:5px;width:max-content;min-width:100%;z-index:9999;box-sizing:border-box}.tf-select-content-item{display:flex;align-items:center;padding:5px 10px;border:none;background:#fff;border-radius:5px;cursor:pointer;line-height:100%;gap:2px}.tf-select-content-item span{width:16px;display:flex}.tf-select-content-item svg{width:16px;height:16px;margin:auto}.tf-select-content-item:hover{background:#f0f0f0}.tf-select-content-children{padding-left:14px}.tf-checkbox{width:14px;height:14px}.tf-tabs{display:flex;align-items:center;justify-content:center;gap:5px;padding:5px;border-radius:5px;border:none;background:#f4f4f5}.tf-tabs .tf-tabs-item{flex-grow:1;padding:5px 10px;cursor:pointer;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:14px;color:#808088}.tf-tabs .tf-tabs-item.active{background:#fff;color:#333;font-weight:500;box-shadow:0 0 5px #00000026}h3.tf-heading{font-weight:700;font-size:14px;margin-top:2px;margin-bottom:3px;color:#333}.tf-collapse{border:none;border-radius:5px}.tf-collapse-item-title{display:flex;align-items:center;cursor:pointer;font-size:14px}.tf-collapse-item-title-icon{display:flex;width:26px;height:26px;color:#2563eb;background:#cedafb;border-radius:5px;padding:3px;justify-content:center;align-items:center;margin-right:10px}.tf-collapse-item-title-icon svg{width:22px;height:22px;color:#3474ff}.tf-collapse-item-title-arrow{display:block;width:16px;height:16px;margin-left:auto}.tf-collapse-item-description{font-size:12px;margin:10px 0;color:#999}.svelte-flow__nodes .svelte-flow__node{border:3px solid transparent;border-radius:5px;box-sizing:border-box}.svelte-flow__nodes .svelte-flow__node .svelte-flow__handle{width:16px;height:16px;background:transparent;display:flex;justify-content:center;align-items:center;border:none}.svelte-flow__nodes .svelte-flow__node .svelte-flow__handle:after{content:" ";background:#2563eb;width:8px;height:8px;border-radius:100%;transition:width .1s,height .1s}.svelte-flow__nodes .svelte-flow__node .svelte-flow__handle:hover:after{width:16px;height:16px}.svelte-flow__nodes .svelte-flow__node div.loop_handle_wrapper:after{content:"循环体";background:#2563eb;width:100px;height:20px;border-radius:0;display:flex;color:#fff;justify-content:center;align-items:center}.svelte-flow__nodes .svelte-flow__node div.loop_handle_wrapper:hover:after{width:100px;height:20px}.svelte-flow__nodes .svelte-flow__node:after{content:" ";position:absolute;border-radius:5px;top:-2px;left:-2px;border:1px solid #ccc;height:calc(100% + 2px);width:calc(100% + 2px)}.svelte-flow__nodes .svelte-flow__node:hover{border:3px solid #bacaef7d}.svelte-flow__nodes .svelte-flow__node.selectable.selected{border:3px solid #bacaef7d;box-shadow:var(--xy-node-boxshadow-selected)}.svelte-flow__nodes .svelte-flow__node:hover:after{display:none}.svelte-flow__nodes .svelte-flow__node.selectable.selected:after{display:none}.tf-node-wrapper{border-radius:5px;min-width:300px;background:#fff}.tf-node-wrapper-title{height:30px;background:#eff1f5;color:#bcbcbc;font-size:12px;display:flex;align-items:center;padding-left:5px;border-bottom:1px solid #ccc;font-weight:300;letter-spacing:1px}.tf-node-wrapper-body{padding:10px}.svelte-flow__attribution a{display:none}.tf-toolbar{position:absolute;top:10px;left:10px;z-index:9999;display:flex;gap:5px;transition:transform .5s ease,opacity .5s ease;transform:translate(-220px)}.tf-toolbar.show{transform:translate(0)}.tf-toolbar-container{background:#fff;border:1px solid #eee;border-radius:5px;box-shadow:0 0 5px #0000001a;padding:10px;width:180px}.tf-toolbar-container-header{display:flex}.tf-toolbar-container-body{display:flex;margin-top:20px}.tf-toolbar-container-body .tf-toolbar-container-base,.tf-toolbar-container-body .tf-toolbar-container-tools{display:flex;flex-direction:column;gap:4px;flex-grow:1}.tf-toolbar-container-body .tf-toolbar-container-base .tf-btn,.tf-toolbar-container-body .tf-toolbar-container-tools .tf-btn{border:none;width:100%;justify-content:flex-start;height:40px;gap:10px;cursor:grabbing;border-radius:5px}.tf-toolbar-container-body .tf-toolbar-container-base .tf-btn svg,.tf-toolbar-container-body .tf-toolbar-container-tools .tf-btn svg{width:20px;height:20px;fill:#2563eb}.tf-toolbar-container-body .tf-toolbar-container-base .tf-btn:hover,.tf-toolbar-container-body .tf-toolbar-container-tools .tf-btn:hover{background:#f1f1f1}.tinyflow-logo:after{content:"Tinyflow.ai";font-size:145px;display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-weight:800;color:#03153b54;text-shadow:1px 3px 6px #cedafb,0 0 0 #000,1px 3px 6px #fff;opacity:.1} diff --git a/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.d.ts b/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.d.ts new file mode 100644 index 0000000..38a3132 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.d.ts @@ -0,0 +1,41 @@ +import { Edge } from '@xyflow/svelte'; +import { Node as Node_2 } from '@xyflow/svelte'; +import { useSvelteFlow } from '@xyflow/svelte'; +import { Viewport } from '@xyflow/svelte'; + +export declare type Item = { + value: number | string; + label: string; + children?: Item[]; +}; + +export declare class Tinyflow { + private options; + private rootEl; + private svelteFlowInstance; + constructor(options: TinyflowOptions); + private _init; + private _setOptions; + getOptions(): TinyflowOptions; + getData(): { + nodes: Node_2[]; + edges: Edge[]; + viewport: Viewport; + }; + setData(data: TinyflowData): void; + destroy(): void; +} + +export declare type TinyflowData = Partial['toObject']>>; + +export declare type TinyflowOptions = { + element: string | Element; + data?: TinyflowData; + provider?: { + llm?: () => Item[] | Promise; + knowledge?: () => Item[] | Promise; + internal?: () => Item[] | Promise; + }; +}; + +export { } diff --git a/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.js b/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.js new file mode 100644 index 0000000..80e77b5 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.js @@ -0,0 +1,16984 @@ +var tf = Object.defineProperty; +var Pa = (e) => { + throw TypeError(e); +}; +var nf = (e, t, n) => t in e ? tf(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n; +var wt = (e, t, n) => nf(e, typeof t != "symbol" ? t + "" : t, n), Ji = (e, t, n) => t.has(e) || Pa("Cannot " + n); +var it = (e, t, n) => (Ji(e, t, "read from private field"), n ? n.call(e) : t.get(e)), rr = (e, t, n) => t.has(e) ? Pa("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, n), Gr = (e, t, n, r) => (Ji(e, t, "write to private field"), r ? r.call(e, n) : t.set(e, n), n), Na = (e, t, n) => (Ji(e, t, "access private method"), n); +const rf = "5"; +var Ll; +typeof window < "u" && ((Ll = window.__svelte ?? (window.__svelte = {})).v ?? (Ll.v = /* @__PURE__ */ new Set())).add(rf); +let Br = !1, of = !1; +function sf() { + Br = !0; +} +sf(); +const Os = 1, Is = 2, Ol = 4, af = 8, lf = 16, uf = 1, cf = 2, Il = 4, df = 8, ff = 16, zl = 1, gf = 2, zs = "[", Rs = "[!", Bs = "]", _r = {}, Pt = Symbol(), Rl = "http://www.w3.org/2000/svg", Ma = !1, nn = 2, Bl = 4, Si = 8, Ys = 16, On = 32, Yr = 64, ti = 128, qt = 256, ni = 512, mt = 1024, In = 2048, gr = 4096, Mn = 8192, Pi = 16384, hf = 32768, Zr = 65536, vf = 1 << 17, pf = 1 << 19, Yl = 1 << 20, Wn = Symbol("$state"), Zs = Symbol("legacy props"), mf = Symbol(""); +var Co = Array.isArray, yf = Array.prototype.indexOf, Xs = Array.from, ri = Object.keys, so = Object.defineProperty, Tn = Object.getOwnPropertyDescriptor, Zl = Object.getOwnPropertyDescriptors, wf = Object.prototype, _f = Array.prototype, Fs = Object.getPrototypeOf; +function Ur(e) { + return typeof e == "function"; +} +const dt = () => { +}; +function xf(e) { + return e(); +} +function ao(e) { + for (var t = 0; t < e.length; t++) + e[t](); +} +const bf = typeof requestIdleCallback > "u" ? (e) => setTimeout(e, 1) : requestIdleCallback; +let lo = [], uo = []; +function Xl() { + var e = lo; + lo = [], ao(e); +} +function Fl() { + var e = uo; + uo = [], ao(e); +} +function ko(e) { + lo.length === 0 && queueMicrotask(Xl), lo.push(e); +} +function Cf(e) { + uo.length === 0 && bf(Fl), uo.push(e); +} +function Ta() { + lo.length > 0 && Xl(), uo.length > 0 && Fl(); +} +function Wl(e) { + return e === this.v; +} +function Ws(e, t) { + return e != e ? t == t : e !== t || e !== null && typeof e == "object" || typeof e == "function"; +} +function Ks(e) { + return !Ws(e, this.v); +} +function kf(e) { + throw new Error("https://svelte.dev/e/effect_in_teardown"); +} +function $f() { + throw new Error("https://svelte.dev/e/effect_in_unowned_derived"); +} +function Ef(e) { + throw new Error("https://svelte.dev/e/effect_orphan"); +} +function Sf() { + throw new Error("https://svelte.dev/e/effect_update_depth_exceeded"); +} +function Pf() { + throw new Error("https://svelte.dev/e/hydration_failed"); +} +function Nf(e) { + throw new Error("https://svelte.dev/e/props_invalid_value"); +} +function Mf() { + throw new Error("https://svelte.dev/e/state_descriptors_fixed"); +} +function Tf() { + throw new Error("https://svelte.dev/e/state_prototype_fixed"); +} +function Hf() { + throw new Error("https://svelte.dev/e/state_unsafe_local_read"); +} +function Vf() { + throw new Error("https://svelte.dev/e/state_unsafe_mutation"); +} +function Mt(e, t) { + var n = { + f: 0, + // TODO ideally we could skip this altogether, but it causes type errors + v: e, + reactions: null, + equals: Wl, + rv: 0, + wv: 0 + }; + return n; +} +function Un(e) { + return /* @__PURE__ */ Kl(Mt(e)); +} +// @__NO_SIDE_EFFECTS__ +function $o(e, t = !1) { + var r; + const n = Mt(e); + return t || (n.equals = Ks), Br && Ze !== null && Ze.l !== null && ((r = Ze.l).s ?? (r.s = [])).push(n), n; +} +function re(e, t = !1) { + return /* @__PURE__ */ Kl(/* @__PURE__ */ $o(e, t)); +} +// @__NO_SIDE_EFFECTS__ +function Kl(e) { + return je !== null && !en && je.f & nn && (vn === null ? Lf([e]) : vn.push(e)), e; +} +function U(e, t) { + return je !== null && !en && Di() && je.f & (nn | Ys) && // If the source was created locally within the current derived, then + // we allow the mutation. + (vn === null || !vn.includes(e)) && Vf(), gs(e, t); +} +function gs(e, t) { + return e.equals(t) || (e.v, e.v = t, e.wv = tu(), ql(e, In), Di() && qe !== null && qe.f & mt && !(qe.f & (On | Yr)) && (En === null ? Of([e]) : En.push(e))), t; +} +function Ha(e, t = 1) { + var n = h(e), r = t === 1 ? n++ : n--; + return U(e, n), r; +} +function ql(e, t) { + var n = e.reactions; + if (n !== null) + for (var r = Di(), o = n.length, i = 0; i < o; i++) { + var s = n[i], a = s.f; + a & In || !r && s === qe || (rn(s, t), a & (mt | qt) && (a & nn ? ql( + /** @type {Derived} */ + s, + gr + ) : Hi( + /** @type {Effect} */ + s + ))); + } +} +// @__NO_SIDE_EFFECTS__ +function Me(e) { + var t = nn | In, n = je !== null && je.f & nn ? ( + /** @type {Derived} */ + je + ) : null; + return qe === null || n !== null && n.f & qt ? t |= qt : qe.f |= Yl, { + ctx: Ze, + deps: null, + effects: null, + equals: Wl, + f: t, + fn: e, + reactions: null, + rv: 0, + v: ( + /** @type {V} */ + null + ), + wv: 0, + parent: n ?? qe + }; +} +// @__NO_SIDE_EFFECTS__ +function pe(e) { + const t = /* @__PURE__ */ Me(e); + return t.equals = Ks, t; +} +function Gl(e) { + var t = e.effects; + if (t !== null) { + e.effects = null; + for (var n = 0; n < t.length; n += 1) + Gt( + /** @type {Effect} */ + t[n] + ); + } +} +function Df(e) { + for (var t = e.parent; t !== null; ) { + if (!(t.f & nn)) + return ( + /** @type {Effect} */ + t + ); + t = t.parent; + } + return null; +} +function Af(e) { + var t, n = qe; + Jn(Df(e)); + try { + Gl(e), t = ru(e); + } finally { + Jn(n); + } + return t; +} +function Ul(e) { + var t = Af(e), n = (Xn || e.f & qt) && e.deps !== null ? gr : mt; + rn(e, n), e.equals(t) || (e.v = t, e.wv = tu()); +} +function Ni(e) { + console.warn("https://svelte.dev/e/hydration_mismatch"); +} +let Pe = !1; +function It(e) { + Pe = e; +} +let De; +function Ct(e) { + if (e === null) + throw Ni(), _r; + return De = e; +} +function yn() { + return Ct( + /** @type {TemplateNode} */ + /* @__PURE__ */ xn(De) + ); +} +function Z(e) { + if (Pe) { + if (/* @__PURE__ */ xn(De) !== null) + throw Ni(), _r; + De = e; + } +} +function Se(e = 1) { + if (Pe) { + for (var t = e, n = De; t--; ) + n = /** @type {TemplateNode} */ + /* @__PURE__ */ xn(n); + De = n; + } +} +function hs() { + for (var e = 0, t = De; ; ) { + if (t.nodeType === 8) { + var n = ( + /** @type {Comment} */ + t.data + ); + if (n === Bs) { + if (e === 0) return t; + e -= 1; + } else (n === zs || n === Rs) && (e += 1); + } + var r = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ xn(t) + ); + t.remove(), t = r; + } +} +function Tt(e, t = null, n) { + if (typeof e != "object" || e === null || Wn in e) + return e; + const r = Fs(e); + if (r !== wf && r !== _f) + return e; + var o = /* @__PURE__ */ new Map(), i = Co(e), s = Mt(0); + i && o.set("length", Mt( + /** @type {any[]} */ + e.length + )); + var a; + return new Proxy( + /** @type {any} */ + e, + { + defineProperty(l, u, c) { + (!("value" in c) || c.configurable === !1 || c.enumerable === !1 || c.writable === !1) && Mf(); + var f = o.get(u); + return f === void 0 ? (f = Mt(c.value), o.set(u, f)) : U(f, Tt(c.value, a)), !0; + }, + deleteProperty(l, u) { + var c = o.get(u); + if (c === void 0) + u in l && o.set(u, Mt(Pt)); + else { + if (i && typeof u == "string") { + var f = ( + /** @type {Source} */ + o.get("length") + ), d = Number(u); + Number.isInteger(d) && d < f.v && U(f, d); + } + U(c, Pt), Va(s); + } + return !0; + }, + get(l, u, c) { + var p; + if (u === Wn) + return e; + var f = o.get(u), d = u in l; + if (f === void 0 && (!d || (p = Tn(l, u)) != null && p.writable) && (f = Mt(Tt(d ? l[u] : Pt, a)), o.set(u, f)), f !== void 0) { + var g = h(f); + return g === Pt ? void 0 : g; + } + return Reflect.get(l, u, c); + }, + getOwnPropertyDescriptor(l, u) { + var c = Reflect.getOwnPropertyDescriptor(l, u); + if (c && "value" in c) { + var f = o.get(u); + f && (c.value = h(f)); + } else if (c === void 0) { + var d = o.get(u), g = d == null ? void 0 : d.v; + if (d !== void 0 && g !== Pt) + return { + enumerable: !0, + configurable: !0, + value: g, + writable: !0 + }; + } + return c; + }, + has(l, u) { + var g; + if (u === Wn) + return !0; + var c = o.get(u), f = c !== void 0 && c.v !== Pt || Reflect.has(l, u); + if (c !== void 0 || qe !== null && (!f || (g = Tn(l, u)) != null && g.writable)) { + c === void 0 && (c = Mt(f ? Tt(l[u], a) : Pt), o.set(u, c)); + var d = h(c); + if (d === Pt) + return !1; + } + return f; + }, + set(l, u, c, f) { + var _; + var d = o.get(u), g = u in l; + if (i && u === "length") + for (var p = c; p < /** @type {Source} */ + d.v; p += 1) { + var x = o.get(p + ""); + x !== void 0 ? U(x, Pt) : p in l && (x = Mt(Pt), o.set(p + "", x)); + } + d === void 0 ? (!g || (_ = Tn(l, u)) != null && _.writable) && (d = Mt(void 0), U(d, Tt(c, a)), o.set(u, d)) : (g = d.v !== Pt, U(d, Tt(c, a))); + var C = Reflect.getOwnPropertyDescriptor(l, u); + if (C != null && C.set && C.set.call(f, c), !g) { + if (i && typeof u == "string") { + var $ = ( + /** @type {Source} */ + o.get("length") + ), m = Number(u); + Number.isInteger(m) && m >= $.v && U($, m + 1); + } + Va(s); + } + return !0; + }, + ownKeys(l) { + h(s); + var u = Reflect.ownKeys(l).filter((d) => { + var g = o.get(d); + return g === void 0 || g.v !== Pt; + }); + for (var [c, f] of o) + f.v !== Pt && !(c in l) && u.push(c); + return u; + }, + setPrototypeOf() { + Tf(); + } + } + ); +} +function Va(e, t = 1) { + U(e, e.v + t); +} +var Nt, jl, Jl, Ql; +function vs() { + if (Nt === void 0) { + Nt = window, jl = /Firefox/.test(navigator.userAgent); + var e = Element.prototype, t = Node.prototype; + Jl = Tn(t, "firstChild").get, Ql = Tn(t, "nextSibling").get, e.__click = void 0, e.__className = void 0, e.__attributes = null, e.__styles = null, e.__e = void 0, Text.prototype.__t = void 0; + } +} +function Vn(e = "") { + return document.createTextNode(e); +} +// @__NO_SIDE_EFFECTS__ +function bt(e) { + return Jl.call(e); +} +// @__NO_SIDE_EFFECTS__ +function xn(e) { + return Ql.call(e); +} +function X(e, t) { + if (!Pe) + return /* @__PURE__ */ bt(e); + var n = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ bt(De) + ); + if (n === null) + n = De.appendChild(Vn()); + else if (t && n.nodeType !== 3) { + var r = Vn(); + return n == null || n.before(r), Ct(r), r; + } + return Ct(n), n; +} +function be(e, t) { + if (!Pe) { + var n = ( + /** @type {DocumentFragment} */ + /* @__PURE__ */ bt( + /** @type {Node} */ + e + ) + ); + return n instanceof Comment && n.data === "" ? /* @__PURE__ */ xn(n) : n; + } + return De; +} +function z(e, t = 1, n = !1) { + let r = Pe ? De : e; + for (var o; t--; ) + o = r, r = /** @type {TemplateNode} */ + /* @__PURE__ */ xn(r); + if (!Pe) + return r; + var i = r == null ? void 0 : r.nodeType; + if (n && i !== 3) { + var s = Vn(); + return r === null ? o == null || o.after(s) : r.before(s), Ct(s), s; + } + return Ct(r), /** @type {TemplateNode} */ + r; +} +function qs(e) { + e.textContent = ""; +} +let qo = !1, oi = !1, ii = null, ir = !1, Gs = !1; +function Da(e) { + Gs = e; +} +let oo = []; +let je = null, en = !1; +function jn(e) { + je = e; +} +let qe = null; +function Jn(e) { + qe = e; +} +let vn = null; +function Lf(e) { + vn = e; +} +let _t = null, Lt = 0, En = null; +function Of(e) { + En = e; +} +let eu = 1, si = 0, Xn = !1; +function tu() { + return ++eu; +} +function Xr(e) { + var f; + var t = e.f; + if (t & In) + return !0; + if (t & gr) { + var n = e.deps, r = (t & qt) !== 0; + if (n !== null) { + var o, i, s = (t & ni) !== 0, a = r && qe !== null && !Xn, l = n.length; + if (s || a) { + var u = ( + /** @type {Derived} */ + e + ), c = u.parent; + for (o = 0; o < l; o++) + i = n[o], (s || !((f = i == null ? void 0 : i.reactions) != null && f.includes(u))) && (i.reactions ?? (i.reactions = [])).push(u); + s && (u.f ^= ni), a && c !== null && !(c.f & qt) && (u.f ^= qt); + } + for (o = 0; o < l; o++) + if (i = n[o], Xr( + /** @type {Derived} */ + i + ) && Ul( + /** @type {Derived} */ + i + ), i.wv > e.wv) + return !0; + } + (!r || qe !== null && !Xn) && rn(e, mt); + } + return !1; +} +function If(e, t) { + for (var n = t; n !== null; ) { + if (n.f & ti) + try { + n.fn(e); + return; + } catch { + n.f ^= ti; + } + n = n.parent; + } + throw qo = !1, e; +} +function zf(e) { + return (e.f & Pi) === 0 && (e.parent === null || (e.parent.f & ti) === 0); +} +function Mi(e, t, n, r) { + if (qo) { + if (n === null && (qo = !1), zf(t)) + throw e; + return; + } + n !== null && (qo = !0); + { + If(e, t); + return; + } +} +function nu(e, t, n = !0) { + var r = e.reactions; + if (r !== null) + for (var o = 0; o < r.length; o++) { + var i = r[o]; + i.f & nn ? nu( + /** @type {Derived} */ + i, + t, + !1 + ) : t === i && (n ? rn(i, In) : i.f & mt && rn(i, gr), Hi( + /** @type {Effect} */ + i + )); + } +} +function ru(e) { + var g; + var t = _t, n = Lt, r = En, o = je, i = Xn, s = vn, a = Ze, l = en, u = e.f; + _t = /** @type {null | Value[]} */ + null, Lt = 0, En = null, Xn = (u & qt) !== 0 && (en || !ir || je === null), je = u & (On | Yr) ? null : e, vn = null, Aa(e.ctx), en = !1, si++; + try { + var c = ( + /** @type {Function} */ + (0, e.fn)() + ), f = e.deps; + if (_t !== null) { + var d; + if (ai(e, Lt), f !== null && Lt > 0) + for (f.length = Lt + _t.length, d = 0; d < _t.length; d++) + f[Lt + d] = _t[d]; + else + e.deps = f = _t; + if (!Xn) + for (d = Lt; d < f.length; d++) + ((g = f[d]).reactions ?? (g.reactions = [])).push(e); + } else f !== null && Lt < f.length && (ai(e, Lt), f.length = Lt); + if (Di() && En !== null && !en && f !== null && !(e.f & (nn | gr | In))) + for (d = 0; d < /** @type {Source[]} */ + En.length; d++) + nu( + En[d], + /** @type {Effect} */ + e + ); + return o !== null && si++, c; + } finally { + _t = t, Lt = n, En = r, je = o, Xn = i, vn = s, Aa(a), en = l; + } +} +function Rf(e, t) { + let n = t.reactions; + if (n !== null) { + var r = yf.call(n, e); + if (r !== -1) { + var o = n.length - 1; + o === 0 ? n = t.reactions = null : (n[r] = n[o], n.pop()); + } + } + n === null && t.f & nn && // Destroying a child effect while updating a parent effect can cause a dependency to appear + // to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps` + // allows us to skip the expensive work of disconnecting and immediately reconnecting it + (_t === null || !_t.includes(t)) && (rn(t, gr), t.f & (qt | ni) || (t.f ^= ni), Gl( + /** @type {Derived} **/ + t + ), ai( + /** @type {Derived} **/ + t, + 0 + )); +} +function ai(e, t) { + var n = e.deps; + if (n !== null) + for (var r = t; r < n.length; r++) + Rf(e, n[r]); +} +function Ti(e) { + var t = e.f; + if (!(t & Pi)) { + rn(e, mt); + var n = qe, r = Ze, o = ir; + qe = e, ir = !0; + try { + t & Ys ? Gf(e) : lu(e), au(e); + var i = ru(e); + e.teardown = typeof i == "function" ? i : null, e.wv = eu; + var s = e.deps, a; + Ma && of && e.f & In; + } catch (l) { + Mi(l, e, n, r || e.ctx); + } finally { + ir = o, qe = n; + } + } +} +function Bf() { + try { + Sf(); + } catch (e) { + if (ii !== null) + Mi(e, ii, null); + else + throw e; + } +} +function ou() { + var e = ir; + try { + var t = 0; + for (ir = !0; oo.length > 0; ) { + t++ > 1e3 && Bf(); + var n = oo, r = n.length; + oo = []; + for (var o = 0; o < r; o++) { + var i = n[o]; + i.f & mt || (i.f ^= mt); + var s = Zf(i); + Yf(s); + } + } + } finally { + oi = !1, ir = e, ii = null; + } +} +function Yf(e) { + var t = e.length; + if (t !== 0) + for (var n = 0; n < t; n++) { + var r = e[n]; + if (!(r.f & (Pi | Mn))) + try { + Xr(r) && (Ti(r), r.deps === null && r.first === null && r.nodes_start === null && (r.teardown === null ? uu(r) : r.fn = null)); + } catch (o) { + Mi(o, r, null, r.ctx); + } + } +} +function Hi(e) { + oi || (oi = !0, queueMicrotask(ou)); + for (var t = ii = e; t.parent !== null; ) { + t = t.parent; + var n = t.f; + if (n & (Yr | On)) { + if (!(n & mt)) return; + t.f ^= mt; + } + } + oo.push(t); +} +function Zf(e) { + for (var t = [], n = e.first; n !== null; ) { + var r = n.f, o = (r & On) !== 0, i = o && (r & mt) !== 0; + if (!i && !(r & Mn)) { + if (r & Bl) + t.push(n); + else if (o) + n.f ^= mt; + else { + var s = je; + try { + je = n, Xr(n) && Ti(n); + } catch (u) { + Mi(u, n, null, n.ctx); + } finally { + je = s; + } + } + var a = n.first; + if (a !== null) { + n = a; + continue; + } + } + var l = n.parent; + for (n = n.next; n === null && l !== null; ) + n = l.next, l = l.parent; + } + return t; +} +function y(e) { + var t; + for (Ta(); oo.length > 0; ) + oi = !0, ou(), Ta(); + return ( + /** @type {T} */ + t + ); +} +function h(e) { + var t = e.f, n = (t & nn) !== 0; + if (je !== null && !en) { + vn !== null && vn.includes(e) && Hf(); + var r = je.deps; + e.rv < si && (e.rv = si, _t === null && r !== null && r[Lt] === e ? Lt++ : _t === null ? _t = [e] : (!Xn || !_t.includes(e)) && _t.push(e)); + } else if (n && /** @type {Derived} */ + e.deps === null && /** @type {Derived} */ + e.effects === null) { + var o = ( + /** @type {Derived} */ + e + ), i = o.parent; + i !== null && !(i.f & qt) && (o.f ^= qt); + } + return n && (o = /** @type {Derived} */ + e, Xr(o) && Ul(o)), e.v; +} +function wn(e) { + var t = en; + try { + return en = !0, e(); + } finally { + en = t; + } +} +const Xf = -7169; +function rn(e, t) { + e.f = e.f & Xf | t; +} +function j(e) { + if (!(typeof e != "object" || !e || e instanceof EventTarget)) { + if (Wn in e) + ps(e); + else if (!Array.isArray(e)) + for (let t in e) { + const n = e[t]; + typeof n == "object" && n && Wn in n && ps(n); + } + } +} +function ps(e, t = /* @__PURE__ */ new Set()) { + if (typeof e == "object" && e !== null && // We don't want to traverse DOM elements + !(e instanceof EventTarget) && !t.has(e)) { + t.add(e), e instanceof Date && e.getTime(); + for (let r in e) + try { + ps(e[r], t); + } catch { + } + const n = Fs(e); + if (n !== Object.prototype && n !== Array.prototype && n !== Map.prototype && n !== Set.prototype && n !== Date.prototype) { + const r = Zl(n); + for (let o in r) { + const i = r[o].get; + if (i) + try { + i.call(e); + } catch { + } + } + } + } +} +function iu(e) { + qe === null && je === null && Ef(), je !== null && je.f & qt && qe === null && $f(), Gs && kf(); +} +function Ff(e, t) { + var n = t.last; + n === null ? t.last = t.first = e : (n.next = e, e.prev = n, t.last = e); +} +function hr(e, t, n, r = !0) { + var o = (e & Yr) !== 0, i = qe, s = { + ctx: Ze, + deps: null, + nodes_start: null, + nodes_end: null, + f: e | In, + first: null, + fn: t, + last: null, + next: null, + parent: o ? null : i, + prev: null, + teardown: null, + transitions: null, + wv: 0 + }; + if (n) + try { + Ti(s), s.f |= hf; + } catch (u) { + throw Gt(s), u; + } + else t !== null && Hi(s); + var a = n && s.deps === null && s.first === null && s.nodes_start === null && s.teardown === null && (s.f & (Yl | ti)) === 0; + if (!a && !o && r && (i !== null && Ff(s, i), je !== null && je.f & nn)) { + var l = ( + /** @type {Derived} */ + je + ); + (l.effects ?? (l.effects = [])).push(s); + } + return s; +} +function su(e) { + const t = hr(Si, null, !1); + return rn(t, mt), t.teardown = e, t; +} +function Nr(e) { + iu(); + var t = qe !== null && (qe.f & On) !== 0 && Ze !== null && !Ze.m; + if (t) { + var n = ( + /** @type {ComponentContext} */ + Ze + ); + (n.e ?? (n.e = [])).push({ + fn: e, + effect: qe, + reaction: je + }); + } else { + var r = Ot(e); + return r; + } +} +function Wf(e) { + return iu(), Fr(e); +} +function Kf(e) { + const t = hr(Yr, e, !0); + return () => { + Gt(t); + }; +} +function qf(e) { + const t = hr(Yr, e, !0); + return (n = {}) => new Promise((r) => { + n.outro ? Mr(t, () => { + Gt(t), r(void 0); + }) : (Gt(t), r(void 0)); + }); +} +function Ot(e) { + return hr(Bl, e, !1); +} +function he(e, t) { + var n = ( + /** @type {ComponentContextLegacy} */ + Ze + ), r = { effect: null, ran: !1 }; + n.l.r1.push(r), r.effect = Fr(() => { + e(), !r.ran && (r.ran = !0, U(n.l.r2, !0), wn(t)); + }); +} +function gt() { + var e = ( + /** @type {ComponentContextLegacy} */ + Ze + ); + Fr(() => { + if (h(e.l.r2)) { + for (var t of e.l.r1) { + var n = t.effect; + n.f & mt && rn(n, gr), Xr(n) && Ti(n), t.ran = !1; + } + e.l.r2.v = !1; + } + }); +} +function Fr(e) { + return hr(Si, e, !0); +} +function Ee(e, t = [], n = Me) { + const r = t.map(n); + return vr(() => e(...r.map(h))); +} +function vr(e, t = 0) { + return hr(Si | Ys | t, e, !0); +} +function Dn(e, t = !0) { + return hr(Si | On, e, !0, t); +} +function au(e) { + var t = e.teardown; + if (t !== null) { + const n = Gs, r = je; + Da(!0), jn(null); + try { + t.call(null); + } finally { + Da(n), jn(r); + } + } +} +function lu(e, t = !1) { + var n = e.first; + for (e.first = e.last = null; n !== null; ) { + var r = n.next; + Gt(n, t), n = r; + } +} +function Gf(e) { + for (var t = e.first; t !== null; ) { + var n = t.next; + t.f & On || Gt(t), t = n; + } +} +function Gt(e, t = !0) { + var n = !1; + if ((t || e.f & pf) && e.nodes_start !== null) { + for (var r = e.nodes_start, o = e.nodes_end; r !== null; ) { + var i = r === o ? null : ( + /** @type {TemplateNode} */ + /* @__PURE__ */ xn(r) + ); + r.remove(), r = i; + } + n = !0; + } + lu(e, t && !n), ai(e, 0), rn(e, Pi); + var s = e.transitions; + if (s !== null) + for (const l of s) + l.stop(); + au(e); + var a = e.parent; + a !== null && a.first !== null && uu(e), e.next = e.prev = e.teardown = e.ctx = e.deps = e.fn = e.nodes_start = e.nodes_end = null; +} +function uu(e) { + var t = e.parent, n = e.prev, r = e.next; + n !== null && (n.next = r), r !== null && (r.prev = n), t !== null && (t.first === e && (t.first = r), t.last === e && (t.last = n)); +} +function Mr(e, t) { + var n = []; + Us(e, n, !0), cu(n, () => { + Gt(e), t && t(); + }); +} +function cu(e, t) { + var n = e.length; + if (n > 0) { + var r = () => --n || t(); + for (var o of e) + o.out(r); + } else + t(); +} +function Us(e, t, n) { + if (!(e.f & Mn)) { + if (e.f ^= Mn, e.transitions !== null) + for (const s of e.transitions) + (s.is_global || n) && t.push(s); + for (var r = e.first; r !== null; ) { + var o = r.next, i = (r.f & Zr) !== 0 || (r.f & On) !== 0; + Us(r, t, i ? n : !1), r = o; + } + } +} +function co(e) { + du(e, !0); +} +function du(e, t) { + if (e.f & Mn) { + e.f ^= Mn, e.f & mt || (e.f ^= mt), Xr(e) && (rn(e, In), Hi(e)); + for (var n = e.first; n !== null; ) { + var r = n.next, o = (n.f & Zr) !== 0 || (n.f & On) !== 0; + du(n, o ? t : !1), n = r; + } + if (e.transitions !== null) + for (const i of e.transitions) + (i.is_global || t) && i.in(); + } +} +function Vi(e) { + throw new Error("https://svelte.dev/e/lifecycle_outside_component"); +} +let Ze = null; +function Aa(e) { + Ze = e; +} +function ar(e) { + return ( + /** @type {T} */ + js().get(e) + ); +} +function Tr(e, t) { + return js().set(e, t), t; +} +function Uf(e) { + return js().has(e); +} +function de(e, t = !1, n) { + Ze = { + p: Ze, + c: null, + e: null, + m: !1, + s: e, + x: null, + l: null + }, Br && !t && (Ze.l = { + s: null, + u: null, + r1: [], + r2: Mt(!1) + }); +} +function fe(e) { + const t = Ze; + if (t !== null) { + e !== void 0 && (t.x = e); + const s = t.e; + if (s !== null) { + var n = qe, r = je; + t.e = null; + try { + for (var o = 0; o < s.length; o++) { + var i = s[o]; + Jn(i.effect), jn(i.reaction), Ot(i.fn); + } + } finally { + Jn(n), jn(r); + } + } + Ze = t.p, t.m = !0; + } + return e || /** @type {T} */ + {}; +} +function Di() { + return !Br || Ze !== null && Ze.l === null; +} +function js(e) { + return Ze === null && Vi(), Ze.c ?? (Ze.c = new Map(jf(Ze) || void 0)); +} +function jf(e) { + let t = e.p; + for (; t !== null; ) { + const n = t.c; + if (n !== null) + return n; + t = t.p; + } + return null; +} +function Jf(e) { + return e.endsWith("capture") && e !== "gotpointercapture" && e !== "lostpointercapture"; +} +const Qf = [ + "beforeinput", + "click", + "change", + "dblclick", + "contextmenu", + "focusin", + "focusout", + "input", + "keydown", + "keyup", + "mousedown", + "mousemove", + "mouseout", + "mouseover", + "mouseup", + "pointerdown", + "pointermove", + "pointerout", + "pointerover", + "pointerup", + "touchend", + "touchmove", + "touchstart" +]; +function e1(e) { + return Qf.includes(e); +} +const t1 = { + // no `class: 'className'` because we handle that separately + formnovalidate: "formNoValidate", + ismap: "isMap", + nomodule: "noModule", + playsinline: "playsInline", + readonly: "readOnly", + defaultvalue: "defaultValue", + defaultchecked: "defaultChecked", + srcobject: "srcObject", + novalidate: "noValidate", + allowfullscreen: "allowFullscreen", + disablepictureinpicture: "disablePictureInPicture", + disableremoteplayback: "disableRemotePlayback" +}; +function n1(e) { + return e = e.toLowerCase(), t1[e] ?? e; +} +const r1 = ["touchstart", "touchmove"]; +function o1(e) { + return r1.includes(e); +} +const i1 = ( + /** @type {const} */ + ["textarea", "script", "style", "title"] +); +function s1(e) { + return i1.includes( + /** @type {RAW_TEXT_ELEMENTS[number]} */ + e + ); +} +function a1(e, t) { + if (t) { + const n = document.body; + e.autofocus = !0, ko(() => { + document.activeElement === n && e.focus(); + }); + } +} +function l1(e) { + Pe && /* @__PURE__ */ bt(e) !== null && qs(e); +} +let La = !1; +function u1() { + La || (La = !0, document.addEventListener( + "reset", + (e) => { + Promise.resolve().then(() => { + var t; + if (!e.defaultPrevented) + for ( + const n of + /**@type {HTMLFormElement} */ + e.target.elements + ) + (t = n.__on_r) == null || t.call(n); + }); + }, + // In the capture phase to guarantee we get noticed of it (no possiblity of stopPropagation) + { capture: !0 } + )); +} +function c1(e) { + var t = je, n = qe; + jn(null), Jn(null); + try { + return e(); + } finally { + jn(t), Jn(n); + } +} +const fu = /* @__PURE__ */ new Set(), ms = /* @__PURE__ */ new Set(); +function gu(e, t, n, r = {}) { + function o(i) { + if (r.capture || eo.call(t, i), !i.cancelBubble) + return c1(() => n == null ? void 0 : n.call(this, i)); + } + return e.startsWith("pointer") || e.startsWith("touch") || e === "wheel" ? ko(() => { + t.addEventListener(e, o, r); + }) : t.addEventListener(e, o, r), o; +} +function Ye(e, t, n, r, o) { + var i = { capture: r, passive: o }, s = gu(e, t, n, i); + (t === document.body || t === window || t === document) && su(() => { + t.removeEventListener(e, s, i); + }); +} +function Ai(e) { + for (var t = 0; t < e.length; t++) + fu.add(e[t]); + for (var n of ms) + n(e); +} +function eo(e) { + var m; + var t = this, n = ( + /** @type {Node} */ + t.ownerDocument + ), r = e.type, o = ((m = e.composedPath) == null ? void 0 : m.call(e)) || [], i = ( + /** @type {null | Element} */ + o[0] || e.target + ), s = 0, a = e.__root; + if (a) { + var l = o.indexOf(a); + if (l !== -1 && (t === document || t === /** @type {any} */ + window)) { + e.__root = t; + return; + } + var u = o.indexOf(t); + if (u === -1) + return; + l <= u && (s = l); + } + if (i = /** @type {Element} */ + o[s] || e.target, i !== t) { + so(e, "currentTarget", { + configurable: !0, + get() { + return i || n; + } + }); + var c = je, f = qe; + jn(null), Jn(null); + try { + for (var d, g = []; i !== null; ) { + var p = i.assignedSlot || i.parentNode || /** @type {any} */ + i.host || null; + try { + var x = i["__" + r]; + if (x !== void 0 && (!/** @type {any} */ + i.disabled || // DOM could've been updated already by the time this is reached, so we check this as well + // -> the target could not have been disabled because it emits the event in the first place + e.target === i)) + if (Co(x)) { + var [C, ...$] = x; + C.apply(i, [e, ...$]); + } else + x.call(i, e); + } catch (_) { + d ? g.push(_) : d = _; + } + if (e.cancelBubble || p === t || p === null) + break; + i = p; + } + if (d) { + for (let _ of g) + queueMicrotask(() => { + throw _; + }); + throw d; + } + } finally { + e.__root = t, delete e.currentTarget, jn(c), Jn(f); + } + } +} +function Js(e) { + var t = document.createElement("template"); + return t.innerHTML = e, t.content; +} +function Vt(e, t) { + var n = ( + /** @type {Effect} */ + qe + ); + n.nodes_start === null && (n.nodes_start = e, n.nodes_end = t); +} +// @__NO_SIDE_EFFECTS__ +function ne(e, t) { + var n = (t & zl) !== 0, r = (t & gf) !== 0, o, i = !e.startsWith(""); + return () => { + if (Pe) + return Vt(De, null), De; + o === void 0 && (o = Js(i ? e : "" + e), n || (o = /** @type {Node} */ + /* @__PURE__ */ bt(o))); + var s = ( + /** @type {TemplateNode} */ + r || jl ? document.importNode(o, !0) : o.cloneNode(!0) + ); + if (n) { + var a = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ bt(s) + ), l = ( + /** @type {TemplateNode} */ + s.lastChild + ); + Vt(a, l); + } else + Vt(s, s); + return s; + }; +} +// @__NO_SIDE_EFFECTS__ +function _e(e, t, n = "svg") { + var r = !e.startsWith(""), o = (t & zl) !== 0, i = `<${n}>${r ? e : "" + e}`, s; + return () => { + if (Pe) + return Vt(De, null), De; + if (!s) { + var a = ( + /** @type {DocumentFragment} */ + Js(i) + ), l = ( + /** @type {Element} */ + /* @__PURE__ */ bt(a) + ); + if (o) + for (s = document.createDocumentFragment(); /* @__PURE__ */ bt(l); ) + s.appendChild( + /** @type {Node} */ + /* @__PURE__ */ bt(l) + ); + else + s = /** @type {Element} */ + /* @__PURE__ */ bt(l); + } + var u = ( + /** @type {TemplateNode} */ + s.cloneNode(!0) + ); + if (o) { + var c = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ bt(u) + ), f = ( + /** @type {TemplateNode} */ + u.lastChild + ); + Vt(c, f); + } else + Vt(u, u); + return u; + }; +} +function Ie(e = "") { + if (!Pe) { + var t = Vn(e + ""); + return Vt(t, t), t; + } + var n = De; + return n.nodeType !== 3 && (n.before(n = Vn()), Ct(n)), Vt(n, n), n; +} +function et() { + if (Pe) + return Vt(De, null), De; + var e = document.createDocumentFragment(), t = document.createComment(""), n = Vn(); + return e.append(t, n), Vt(t, n), e; +} +function L(e, t) { + if (Pe) { + qe.nodes_end = De, yn(); + return; + } + e !== null && e.before( + /** @type {Node} */ + t + ); +} +function Rt(e, t) { + var n = t == null ? "" : typeof t == "object" ? t + "" : t; + n !== (e.__t ?? (e.__t = e.nodeValue)) && (e.__t = n, e.nodeValue = n + ""); +} +function hu(e, t) { + return vu(e, t); +} +function d1(e, t) { + vs(), t.intro = t.intro ?? !1; + const n = t.target, r = Pe, o = De; + try { + for (var i = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ bt(n) + ); i && (i.nodeType !== 8 || /** @type {Comment} */ + i.data !== zs); ) + i = /** @type {TemplateNode} */ + /* @__PURE__ */ xn(i); + if (!i) + throw _r; + It(!0), Ct( + /** @type {Comment} */ + i + ), yn(); + const s = vu(e, { ...t, anchor: i }); + if (De === null || De.nodeType !== 8 || /** @type {Comment} */ + De.data !== Bs) + throw Ni(), _r; + return It(!1), /** @type {Exports} */ + s; + } catch (s) { + if (s === _r) + return t.recover === !1 && Pf(), vs(), qs(n), It(!1), hu(e, t); + throw s; + } finally { + It(r), Ct(o); + } +} +const mr = /* @__PURE__ */ new Map(); +function vu(e, { target: t, anchor: n, props: r = {}, events: o, context: i, intro: s = !0 }) { + vs(); + var a = /* @__PURE__ */ new Set(), l = (f) => { + for (var d = 0; d < f.length; d++) { + var g = f[d]; + if (!a.has(g)) { + a.add(g); + var p = o1(g); + t.addEventListener(g, eo, { passive: p }); + var x = mr.get(g); + x === void 0 ? (document.addEventListener(g, eo, { passive: p }), mr.set(g, 1)) : mr.set(g, x + 1); + } + } + }; + l(Xs(fu)), ms.add(l); + var u = void 0, c = qf(() => { + var f = n ?? t.appendChild(Vn()); + return Dn(() => { + if (i) { + de({}); + var d = ( + /** @type {ComponentContext} */ + Ze + ); + d.c = i; + } + o && (r.$$events = o), Pe && Vt( + /** @type {TemplateNode} */ + f, + null + ), u = e(f, r) || {}, Pe && (qe.nodes_end = De), i && fe(); + }), () => { + var p; + for (var d of a) { + t.removeEventListener(d, eo); + var g = ( + /** @type {number} */ + mr.get(d) + ); + --g === 0 ? (document.removeEventListener(d, eo), mr.delete(d)) : mr.set(d, g); + } + ms.delete(l), f !== n && ((p = f.parentNode) == null || p.removeChild(f)); + }; + }); + return ys.set(u, c), u; +} +let ys = /* @__PURE__ */ new WeakMap(); +function f1(e, t) { + const n = ys.get(e); + return n ? (ys.delete(e), n(t)) : Promise.resolve(); +} +function ke(e, t, [n, r] = [0, 0]) { + Pe && n === 0 && yn(); + var o = e, i = null, s = null, a = Pt, l = n > 0 ? Zr : 0, u = !1; + const c = (d, g = !0) => { + u = !0, f(g, d); + }, f = (d, g) => { + if (a === (a = d)) return; + let p = !1; + if (Pe && r !== -1) { + if (n === 0) { + const C = ( + /** @type {Comment} */ + o.data + ); + C === zs ? r = 0 : C === Rs ? r = 1 / 0 : (r = parseInt(C.substring(1)), r !== r && (r = a ? 1 / 0 : -1)); + } + const x = r > n; + !!a === x && (o = hs(), Ct(o), It(!1), p = !0, r = -1); + } + a ? (i ? co(i) : g && (i = Dn(() => g(o))), s && Mr(s, () => { + s = null; + })) : (s ? co(s) : g && (s = Dn(() => g(o, [n + 1, r]))), i && Mr(i, () => { + i = null; + })), p && It(!0); + }; + vr(() => { + u = !1, t(c), u || f(null, null); + }, l), Pe && (o = De); +} +function Li(e, t) { + return t; +} +function g1(e, t, n, r) { + for (var o = [], i = t.length, s = 0; s < i; s++) + Us(t[s].e, o, !0); + var a = i > 0 && o.length === 0 && n !== null; + if (a) { + var l = ( + /** @type {Element} */ + /** @type {Element} */ + n.parentNode + ); + qs(l), l.append( + /** @type {Element} */ + n + ), r.clear(), Bn(e, t[0].prev, t[i - 1].next); + } + cu(o, () => { + for (var u = 0; u < i; u++) { + var c = t[u]; + a || (r.delete(c.k), Bn(e, c.prev, c.next)), Gt(c.e, !a); + } + }); +} +function Yt(e, t, n, r, o, i = null) { + var s = e, a = { flags: t, items: /* @__PURE__ */ new Map(), first: null }, l = (t & Ol) !== 0; + if (l) { + var u = ( + /** @type {Element} */ + e + ); + s = Pe ? Ct( + /** @type {Comment | Text} */ + /* @__PURE__ */ bt(u) + ) : u.appendChild(Vn()); + } + Pe && yn(); + var c = null, f = !1, d = /* @__PURE__ */ pe(() => { + var g = n(); + return Co(g) ? g : g == null ? [] : Xs(g); + }); + vr(() => { + var g = h(d), p = g.length; + if (f && p === 0) + return; + f = p === 0; + let x = !1; + if (Pe) { + var C = ( + /** @type {Comment} */ + s.data === Rs + ); + C !== (p === 0) && (s = hs(), Ct(s), It(!1), x = !0); + } + if (Pe) { + for (var $ = null, m, _ = 0; _ < p; _++) { + if (De.nodeType === 8 && /** @type {Comment} */ + De.data === Bs) { + s = /** @type {Comment} */ + De, x = !0, It(!1); + break; + } + var v = g[_], b = r(v, _); + m = pu( + De, + a, + $, + null, + v, + b, + _, + o, + t, + n + ), a.items.set(b, m), $ = m; + } + p > 0 && Ct(hs()); + } + Pe || h1(g, a, s, o, t, r, n), i !== null && (p === 0 ? c ? co(c) : c = Dn(() => i(s)) : c !== null && Mr(c, () => { + c = null; + })), x && It(!0), h(d); + }), Pe && (s = De); +} +function h1(e, t, n, r, o, i, s) { + var S, T, k, P; + var a = (o & af) !== 0, l = (o & (Os | Is)) !== 0, u = e.length, c = t.items, f = t.first, d = f, g, p = null, x, C = [], $ = [], m, _, v, b; + if (a) + for (b = 0; b < u; b += 1) + m = e[b], _ = i(m, b), v = c.get(_), v !== void 0 && ((S = v.a) == null || S.measure(), (x ?? (x = /* @__PURE__ */ new Set())).add(v)); + for (b = 0; b < u; b += 1) { + if (m = e[b], _ = i(m, b), v = c.get(_), v === void 0) { + var N = d ? ( + /** @type {TemplateNode} */ + d.e.nodes_start + ) : n; + p = pu( + N, + t, + p, + p === null ? t.first : p.next, + m, + _, + b, + r, + o, + s + ), c.set(_, p), C = [], $ = [], d = p.next; + continue; + } + if (l && v1(v, m, b, o), v.e.f & Mn && (co(v.e), a && ((T = v.a) == null || T.unfix(), (x ?? (x = /* @__PURE__ */ new Set())).delete(v))), v !== d) { + if (g !== void 0 && g.has(v)) { + if (C.length < $.length) { + var E = $[0], M; + p = E.prev; + var D = C[0], V = C[C.length - 1]; + for (M = 0; M < C.length; M += 1) + Oa(C[M], E, n); + for (M = 0; M < $.length; M += 1) + g.delete($[M]); + Bn(t, D.prev, V.next), Bn(t, p, D), Bn(t, V, E), d = E, p = V, b -= 1, C = [], $ = []; + } else + g.delete(v), Oa(v, d, n), Bn(t, v.prev, v.next), Bn(t, v, p === null ? t.first : p.next), Bn(t, p, v), p = v; + continue; + } + for (C = [], $ = []; d !== null && d.k !== _; ) + d.e.f & Mn || (g ?? (g = /* @__PURE__ */ new Set())).add(d), $.push(d), d = d.next; + if (d === null) + continue; + v = d; + } + C.push(v), p = v, d = v.next; + } + if (d !== null || g !== void 0) { + for (var A = g === void 0 ? [] : Xs(g); d !== null; ) + d.e.f & Mn || A.push(d), d = d.next; + var O = A.length; + if (O > 0) { + var R = o & Ol && u === 0 ? n : null; + if (a) { + for (b = 0; b < O; b += 1) + (k = A[b].a) == null || k.measure(); + for (b = 0; b < O; b += 1) + (P = A[b].a) == null || P.fix(); + } + g1(t, A, R, c); + } + } + a && ko(() => { + var H; + if (x !== void 0) + for (v of x) + (H = v.a) == null || H.apply(); + }), qe.first = t.first && t.first.e, qe.last = p && p.e; +} +function v1(e, t, n, r) { + r & Os && gs(e.v, t), r & Is ? gs( + /** @type {Value} */ + e.i, + n + ) : e.i = n; +} +function pu(e, t, n, r, o, i, s, a, l, u) { + var c = (l & Os) !== 0, f = (l & lf) === 0, d = c ? f ? /* @__PURE__ */ $o(o) : Mt(o) : o, g = l & Is ? Mt(s) : s, p = { + i: g, + v: d, + k: i, + a: null, + // @ts-expect-error + e: null, + prev: n, + next: r + }; + try { + return p.e = Dn(() => a(e, d, g, u), Pe), p.e.prev = n && n.e, p.e.next = r && r.e, n === null ? t.first = p : (n.next = p, n.e.next = p.e), r !== null && (r.prev = p, r.e.prev = p.e), p; + } finally { + } +} +function Oa(e, t, n) { + for (var r = e.next ? ( + /** @type {TemplateNode} */ + e.next.e.nodes_start + ) : n, o = t ? ( + /** @type {TemplateNode} */ + t.e.nodes_start + ) : n, i = ( + /** @type {TemplateNode} */ + e.e.nodes_start + ); i !== r; ) { + var s = ( + /** @type {TemplateNode} */ + /* @__PURE__ */ xn(i) + ); + o.before(i), i = s; + } +} +function Bn(e, t, n) { + t === null ? e.first = n : (t.next = n, t.e.next = n && n.e), n !== null && (n.prev = t, n.e.prev = t && t.e); +} +function mu(e, t, n, r, o) { + var i = e, s = "", a; + vr(() => { + if (s === (s = t() ?? "")) { + Pe && yn(); + return; + } + a !== void 0 && (Gt(a), a = void 0), s !== "" && (a = Dn(() => { + if (Pe) { + De.data; + for (var l = yn(), u = l; l !== null && (l.nodeType !== 8 || /** @type {Comment} */ + l.data !== ""); ) + u = l, l = /** @type {TemplateNode} */ + /* @__PURE__ */ xn(l); + if (l === null) + throw Ni(), _r; + Vt(De, u), i = Ct(l); + return; + } + var c = s + "", f = Js(c); + Vt( + /** @type {TemplateNode} */ + /* @__PURE__ */ bt(f), + /** @type {TemplateNode} */ + f.lastChild + ), i.before(f); + })); + }); +} +function pt(e, t, n, r, o) { + var a; + Pe && yn(); + var i = (a = t.$$slots) == null ? void 0 : a[n], s = !1; + i === !0 && (i = t[n === "default" ? "children" : n], s = !0), i === void 0 || i(e, s ? () => r : r); +} +function p1(e) { + const t = {}; + e.children && (t.default = !0); + for (const n in e.$$slots) + t[n] = !0; + return t; +} +function lr(e, t, ...n) { + var r = e, o = dt, i; + vr(() => { + o !== (o = t()) && (i && (Gt(i), i = null), i = Dn(() => ( + /** @type {SnippetFn} */ + o(r, ...n) + ))); + }, Zr), Pe && (r = De); +} +function yu(e, t, n) { + Pe && yn(); + var r = e, o, i; + vr(() => { + o !== (o = t()) && (i && (Mr(i), i = null), o && (i = Dn(() => n(r, o)))); + }, Zr), Pe && (r = De); +} +function m1(e, t, n, r, o, i) { + let s = Pe; + Pe && yn(); + var a, l, u = null; + Pe && De.nodeType === 1 && (u = /** @type {Element} */ + De, yn()); + var c = ( + /** @type {TemplateNode} */ + Pe ? De : e + ), f; + vr(() => { + const d = t() || null; + var g = d === "svg" ? Rl : null; + d !== a && (f && (d === null ? Mr(f, () => { + f = null, l = null; + }) : d === l ? co(f) : Gt(f)), d && d !== l && (f = Dn(() => { + if (u = Pe ? ( + /** @type {Element} */ + u + ) : g ? document.createElementNS(g, d) : document.createElement(d), Vt(u, u), r) { + Pe && s1(d) && u.append(document.createComment("")); + var p = ( + /** @type {TemplateNode} */ + Pe ? /* @__PURE__ */ bt(u) : u.appendChild(Vn()) + ); + Pe && (p === null ? It(!1) : Ct(p)), r(u, p); + } + qe.nodes_end = u, c.before(u); + })), a = d, a && (l = a)); + }, Zr), s && (It(!0), Ct(c)); +} +function Je(e, t) { + ko(() => { + var n = e.getRootNode(), r = ( + /** @type {ShadowRoot} */ + n.host ? ( + /** @type {ShadowRoot} */ + n + ) : ( + /** @type {Document} */ + n.head ?? /** @type {Document} */ + n.ownerDocument.head + ) + ); + if (!r.querySelector("#" + t.hash)) { + const o = document.createElement("style"); + o.id = t.hash, o.textContent = t.code, r.appendChild(o); + } + }); +} +function vt(e, t, n) { + Ot(() => { + var r = wn(() => t(e, n == null ? void 0 : n()) || {}); + if (n && (r != null && r.update)) { + var o = !1, i = ( + /** @type {any} */ + {} + ); + Fr(() => { + var s = n(); + j(s), o && Ws(i, s) && (i = s, r.update(s)); + }), o = !0; + } + if (r != null && r.destroy) + return () => ( + /** @type {Function} */ + r.destroy() + ); + }); +} +function wu(e) { + var t, n, r = ""; + if (typeof e == "string" || typeof e == "number") r += e; + else if (typeof e == "object") if (Array.isArray(e)) { + var o = e.length; + for (t = 0; t < o; t++) e[t] && (n = wu(e[t])) && (r && (r += " "), r += n); + } else for (n in e) e[n] && (r && (r += " "), r += n); + return r; +} +function y1() { + for (var e, t, n = 0, r = "", o = arguments.length; n < o; n++) (e = arguments[n]) && (t = wu(e)) && (r && (r += " "), r += t); + return r; +} +function bn(e) { + return typeof e == "object" ? y1(e) : e ?? ""; +} +const Ia = [...` +\r\f \v\uFEFF`]; +function w1(e, t, n) { + var r = e == null ? "" : "" + e; + if (t && (r = r ? r + " " + t : t), n) { + for (var o in n) + if (n[o]) + r = r ? r + " " + o : o; + else if (r.length) + for (var i = o.length, s = 0; (s = r.indexOf(o, s)) >= 0; ) { + var a = s + i; + (s === 0 || Ia.includes(r[s - 1])) && (a === r.length || Ia.includes(r[a])) ? r = (s === 0 ? "" : r.substring(0, s)) + r.substring(a + 1) : s = a; + } + } + return r === "" ? null : r; +} +function kt(e, t, n, r, o, i) { + var s = e.__className; + if (Pe || s !== n) { + var a = w1(n, r, i); + (!Pe || a !== e.getAttribute("class")) && (a == null ? e.removeAttribute("class") : t ? e.className = a : e.setAttribute("class", a)), e.__className = n; + } else if (i) + for (var l in i) { + var u = !!i[l]; + (o == null || u !== !!o[l]) && e.classList.toggle(l, u); + } + return i; +} +const jr = Symbol("class"); +function io(e) { + if (Pe) { + var t = !1, n = () => { + if (!t) { + if (t = !0, e.hasAttribute("value")) { + var r = e.value; + ce(e, "value", null), e.value = r; + } + if (e.hasAttribute("checked")) { + var o = e.checked; + ce(e, "checked", null), e.checked = o; + } + } + }; + e.__on_r = n, Cf(n), u1(); + } +} +function Qi(e, t) { + var n = e.__attributes ?? (e.__attributes = {}); + n.value === (n.value = // treat null and undefined the same for the initial value + t ?? void 0) || // @ts-expect-error + // `progress` elements always need their value set when it's `0` + e.value === t && (t !== 0 || e.nodeName !== "PROGRESS") || (e.value = t ?? ""); +} +function _1(e, t) { + t ? e.hasAttribute("selected") || e.setAttribute("selected", "") : e.removeAttribute("selected"); +} +function ce(e, t, n, r) { + var o = e.__attributes ?? (e.__attributes = {}); + Pe && (o[t] = e.getAttribute(t), t === "src" || t === "srcset" || t === "href" && e.nodeName === "LINK") || o[t] !== (o[t] = n) && (t === "style" && "__styles" in e && (e.__styles = {}), t === "loading" && (e[mf] = n), n == null ? e.removeAttribute(t) : typeof n != "string" && _u(e).includes(t) ? e[t] = n : e.setAttribute(t, n)); +} +function on(e, t, n, r, o = !1, i = !1, s = !1) { + let a = Pe && i; + a && It(!1); + var l = t || {}, u = e.tagName === "OPTION"; + for (var c in t) + c in n || (n[c] = null); + n.class ? n.class = bn(n.class) : (r || n[jr]) && (n.class = null); + var f = _u(e), d = ( + /** @type {Record} **/ + e.__attributes ?? (e.__attributes = {}) + ); + for (const _ in n) { + let v = n[_]; + if (u && _ === "value" && v == null) { + e.value = e.__value = "", l[_] = v; + continue; + } + if (_ === "class") { + var g = e.namespaceURI === "http://www.w3.org/1999/xhtml"; + kt(e, g, v, r, t == null ? void 0 : t[jr], n[jr]), l[_] = v, l[jr] = n[jr]; + continue; + } + var p = l[_]; + if (v !== p) { + l[_] = v; + var x = _[0] + _[1]; + if (x !== "$$") { + if (x === "on") { + const b = {}, N = "$$" + _; + let E = _.slice(2); + var C = e1(E); + if (Jf(E) && (E = E.slice(0, -7), b.capture = !0), !C && p) { + if (v != null) continue; + e.removeEventListener(E, l[N], b), l[N] = null; + } + if (v != null) + if (C) + e[`__${E}`] = v, Ai([E]); + else { + let M = function(D) { + l[_].call(this, D); + }; + l[N] = gu(E, e, M, b); + } + else C && (e[`__${E}`] = void 0); + } else if (_ === "style" && v != null) + e.style.cssText = v + ""; + else if (_ === "autofocus") + a1( + /** @type {HTMLElement} */ + e, + !!v + ); + else if (!i && (_ === "__value" || _ === "value" && v != null)) + e.value = e.__value = v; + else if (_ === "selected" && u) + _1( + /** @type {HTMLOptionElement} */ + e, + v + ); + else { + var $ = _; + o || ($ = n1($)); + var m = $ === "defaultValue" || $ === "defaultChecked"; + if (v == null && !i && !m) + if (d[_] = null, $ === "value" || $ === "checked") { + let b = ( + /** @type {HTMLInputElement} */ + e + ); + const N = t === void 0; + if ($ === "value") { + let E = b.defaultValue; + b.removeAttribute($), b.defaultValue = E, b.value = b.__value = N ? E : null; + } else { + let E = b.defaultChecked; + b.removeAttribute($), b.defaultChecked = E, b.checked = N ? E : !1; + } + } else + e.removeAttribute(_); + else m || f.includes($) && (i || typeof v != "string") ? e[$] = v : typeof v != "function" && ce(e, $, v); + } + _ === "style" && "__styles" in e && (e.__styles = {}); + } + } + } + return a && It(!0), l; +} +var za = /* @__PURE__ */ new Map(); +function _u(e) { + var t = za.get(e.nodeName); + if (t) return t; + za.set(e.nodeName, t = []); + for (var n, r = e, o = Element.prototype; o !== r; ) { + n = Zl(r); + for (var i in n) + n[i].set && t.push(i); + r = Fs(r); + } + return t; +} +function st(e, t, n, r) { + var o = e.__styles ?? (e.__styles = {}); + o[t] !== n && (o[t] = n, n == null ? e.style.removeProperty(t) : e.style.setProperty(t, n, "")); +} +var Zn, Pr, bo, $i, xu; +const Ei = class Ei { + /** @param {ResizeObserverOptions} options */ + constructor(t) { + rr(this, $i); + /** */ + rr(this, Zn, /* @__PURE__ */ new WeakMap()); + /** @type {ResizeObserver | undefined} */ + rr(this, Pr); + /** @type {ResizeObserverOptions} */ + rr(this, bo); + Gr(this, bo, t); + } + /** + * @param {Element} element + * @param {(entry: ResizeObserverEntry) => any} listener + */ + observe(t, n) { + var r = it(this, Zn).get(t) || /* @__PURE__ */ new Set(); + return r.add(n), it(this, Zn).set(t, r), Na(this, $i, xu).call(this).observe(t, it(this, bo)), () => { + var o = it(this, Zn).get(t); + o.delete(n), o.size === 0 && (it(this, Zn).delete(t), it(this, Pr).unobserve(t)); + }; + } +}; +Zn = new WeakMap(), Pr = new WeakMap(), bo = new WeakMap(), $i = new WeakSet(), xu = function() { + return it(this, Pr) ?? Gr(this, Pr, new ResizeObserver( + /** @param {any} entries */ + (t) => { + for (var n of t) { + Ei.entries.set(n.target, n); + for (var r of it(this, Zn).get(n.target) || []) + r(n); + } + } + )); +}, /** @static */ +wt(Ei, "entries", /* @__PURE__ */ new WeakMap()); +let ws = Ei; +var x1 = /* @__PURE__ */ new ws({ + box: "border-box" +}); +function Ra(e, t, n) { + var r = x1.observe(e, () => n(e[t])); + Ot(() => (wn(() => n(e[t])), r)); +} +function Ba(e, t) { + return e === t || (e == null ? void 0 : e[Wn]) === t; +} +function An(e = {}, t, n, r) { + return Ot(() => { + var o, i; + return Fr(() => { + o = i, i = [], wn(() => { + e !== n(...i) && (t(e, ...i), o && Ba(n(...o), e) && t(null, ...o)); + }); + }), () => { + ko(() => { + i && Ba(n(...i), e) && t(null, ...i); + }); + }; + }), e; +} +function es(e) { + return function(...t) { + var n = ( + /** @type {Event} */ + t[0] + ); + return n.stopPropagation(), e == null ? void 0 : e.apply(this, t); + }; +} +function He(e = !1) { + const t = ( + /** @type {ComponentContextLegacy} */ + Ze + ), n = t.l.u; + if (!n) return; + let r = () => j(t.s); + if (e) { + let o = 0, i = ( + /** @type {Record} */ + {} + ); + const s = /* @__PURE__ */ Me(() => { + let a = !1; + const l = t.s; + for (const u in l) + l[u] !== i[u] && (i[u] = l[u], a = !0); + return a && o++, o; + }); + r = () => h(s); + } + n.b.length && Wf(() => { + Ya(t, r), ao(n.b); + }), Nr(() => { + const o = wn(() => n.m.map(xf)); + return () => { + for (const i of o) + typeof i == "function" && i(); + }; + }), n.a.length && Nr(() => { + Ya(t, r), ao(n.a); + }); +} +function Ya(e, t) { + if (e.l.s) + for (const n of e.l.s) h(n); + t(); +} +function Ve(e, t) { + var i; + var n = ( + /** @type {Record} */ + (i = e.$$events) == null ? void 0 : i[t.type] + ), r = Co(n) ? n.slice() : n == null ? [] : [n]; + for (var o of r) + o.call(this, t); +} +function un(e) { + Ze === null && Vi(), Br && Ze.l !== null ? C1(Ze).m.push(e) : Nr(() => { + const t = wn(e); + if (typeof t == "function") return ( + /** @type {() => void} */ + t + ); + }); +} +function Qs(e) { + Ze === null && Vi(), un(() => () => wn(e)); +} +function b1(e, t, { bubbles: n = !1, cancelable: r = !1 } = {}) { + return new CustomEvent(e, { detail: t, bubbles: n, cancelable: r }); +} +function Oi() { + const e = Ze; + return e === null && Vi(), (t, n, r) => { + var i; + const o = ( + /** @type {Record} */ + (i = e.s.$$events) == null ? void 0 : i[ + /** @type {any} */ + t + ] + ); + if (o) { + const s = Co(o) ? o.slice() : [o], a = b1( + /** @type {string} */ + t, + n, + r + ); + for (const l of s) + l.call(e.x, a); + return !a.defaultPrevented; + } + return !0; + }; +} +function C1(e) { + var t = ( + /** @type {ComponentContextLegacy} */ + e.l + ); + return t.u ?? (t.u = { a: [], b: [], m: [] }); +} +function ea(e, t, n) { + if (e == null) + return t(void 0), n && n(void 0), dt; + const r = wn( + () => e.subscribe( + t, + // @ts-expect-error + n + ) + ); + return r.unsubscribe ? () => r.unsubscribe() : r; +} +const yr = []; +function Ft(e, t) { + return { + subscribe: we(e, t).subscribe + }; +} +function we(e, t = dt) { + let n = null; + const r = /* @__PURE__ */ new Set(); + function o(a) { + if (Ws(e, a) && (e = a, n)) { + const l = !yr.length; + for (const u of r) + u[1](), yr.push(u, e); + if (l) { + for (let u = 0; u < yr.length; u += 2) + yr[u][0](yr[u + 1]); + yr.length = 0; + } + } + } + function i(a) { + o(a( + /** @type {T} */ + e + )); + } + function s(a, l = dt) { + const u = [a, l]; + return r.add(u), r.size === 1 && (n = t(o, i) || dt), a( + /** @type {T} */ + e + ), () => { + r.delete(u), r.size === 0 && n && (n(), n = null); + }; + } + return { set: o, update: i, subscribe: s }; +} +function Kn(e, t, n) { + const r = !Array.isArray(e), o = r ? [e] : e; + if (!o.every(Boolean)) + throw new Error("derived() expects stores as input, got a falsy value"); + const i = t.length < 2; + return Ft(n, (s, a) => { + let l = !1; + const u = []; + let c = 0, f = dt; + const d = () => { + if (c) + return; + f(); + const p = t(r ? u[0] : u, s, a); + i ? s(p) : f = typeof p == "function" ? p : dt; + }, g = o.map( + (p, x) => ea( + p, + (C) => { + u[x] = C, c &= ~(1 << x), l && d(); + }, + () => { + c |= 1 << x; + } + ) + ); + return l = !0, d(), function() { + ao(g), f(), l = !1; + }; + }); +} +function q(e) { + let t; + return ea(e, (n) => t = n)(), t; +} +let Bo = !1, _s = Symbol(); +function Q(e, t, n) { + const r = n[t] ?? (n[t] = { + store: null, + source: /* @__PURE__ */ $o(void 0), + unsubscribe: dt + }); + if (r.store !== e && !(_s in n)) + if (r.unsubscribe(), r.store = e ?? null, e == null) + r.source.v = void 0, r.unsubscribe = dt; + else { + var o = !0; + r.unsubscribe = ea(e, (i) => { + o ? r.source.v = i : U(r.source, i); + }), o = !1; + } + return e && _s in n ? q(e) : h(r.source); +} +function k1(e, t, n) { + let r = n[t]; + return r && r.store !== e && (r.unsubscribe(), r.unsubscribe = dt), e; +} +function li(e, t) { + return e.set(t), t; +} +function tt() { + const e = {}; + function t() { + su(() => { + for (var n in e) + e[n].unsubscribe(); + so(e, _s, { + enumerable: !1, + value: !0 + }); + }); + } + return [e, t]; +} +function $1(e) { + var t = Bo; + try { + return Bo = !1, [e(), Bo]; + } finally { + Bo = t; + } +} +const E1 = { + get(e, t) { + if (!e.exclude.includes(t)) + return e.props[t]; + }, + set(e, t) { + return !1; + }, + getOwnPropertyDescriptor(e, t) { + if (!e.exclude.includes(t) && t in e.props) + return { + enumerable: !0, + configurable: !0, + value: e.props[t] + }; + }, + has(e, t) { + return e.exclude.includes(t) ? !1 : t in e.props; + }, + ownKeys(e) { + return Reflect.ownKeys(e.props).filter((t) => !e.exclude.includes(t)); + } +}; +// @__NO_SIDE_EFFECTS__ +function yt(e, t, n) { + return new Proxy( + { props: e, exclude: t }, + E1 + ); +} +const S1 = { + get(e, t) { + if (!e.exclude.includes(t)) + return h(e.version), t in e.special ? e.special[t]() : e.props[t]; + }, + set(e, t, n) { + return t in e.special || (e.special[t] = w( + { + get [t]() { + return e.props[t]; + } + }, + /** @type {string} */ + t, + Il + )), e.special[t](n), Ha(e.version), !0; + }, + getOwnPropertyDescriptor(e, t) { + if (!e.exclude.includes(t) && t in e.props) + return { + enumerable: !0, + configurable: !0, + value: e.props[t] + }; + }, + deleteProperty(e, t) { + return e.exclude.includes(t) || (e.exclude.push(t), Ha(e.version)), !0; + }, + has(e, t) { + return e.exclude.includes(t) ? !1 : t in e.props; + }, + ownKeys(e) { + return Reflect.ownKeys(e.props).filter((t) => !e.exclude.includes(t)); + } +}; +function nt(e, t) { + return new Proxy({ props: e, exclude: t, special: {}, version: Mt(0) }, S1); +} +const P1 = { + get(e, t) { + let n = e.props.length; + for (; n--; ) { + let r = e.props[n]; + if (Ur(r) && (r = r()), typeof r == "object" && r !== null && t in r) return r[t]; + } + }, + set(e, t, n) { + let r = e.props.length; + for (; r--; ) { + let o = e.props[r]; + Ur(o) && (o = o()); + const i = Tn(o, t); + if (i && i.set) + return i.set(n), !0; + } + return !1; + }, + getOwnPropertyDescriptor(e, t) { + let n = e.props.length; + for (; n--; ) { + let r = e.props[n]; + if (Ur(r) && (r = r()), typeof r == "object" && r !== null && t in r) { + const o = Tn(r, t); + return o && !o.configurable && (o.configurable = !0), o; + } + } + }, + has(e, t) { + if (t === Wn || t === Zs) return !1; + for (let n of e.props) + if (Ur(n) && (n = n()), n != null && t in n) return !0; + return !1; + }, + ownKeys(e) { + const t = []; + for (let n of e.props) { + Ur(n) && (n = n()); + for (const r in n) + t.includes(r) || t.push(r); + } + return t; + } +}; +function ut(...e) { + return new Proxy({ props: e }, P1); +} +function w(e, t, n, r) { + var N; + var o = (n & uf) !== 0, i = !Br || (n & cf) !== 0, s = (n & df) !== 0, a = (n & ff) !== 0, l = !1, u; + s ? [u, l] = $1(() => ( + /** @type {V} */ + e[t] + )) : u = /** @type {V} */ + e[t]; + var c = Wn in e || Zs in e, f = s && (((N = Tn(e, t)) == null ? void 0 : N.set) ?? (c && t in e && ((E) => e[t] = E))) || void 0, d = ( + /** @type {V} */ + r + ), g = !0, p = !1, x = () => (p = !0, g && (g = !1, a ? d = wn( + /** @type {() => V} */ + r + ) : d = /** @type {V} */ + r), d); + u === void 0 && r !== void 0 && (f && i && Nf(), u = x(), f && f(u)); + var C; + if (i) + C = () => { + var E = ( + /** @type {V} */ + e[t] + ); + return E === void 0 ? x() : (g = !0, p = !1, E); + }; + else { + var $ = (o ? Me : pe)( + () => ( + /** @type {V} */ + e[t] + ) + ); + $.f |= vf, C = () => { + var E = h($); + return E !== void 0 && (d = /** @type {V} */ + void 0), E === void 0 ? d : E; + }; + } + if (!(n & Il)) + return C; + if (f) { + var m = e.$$legacy; + return function(E, M) { + return arguments.length > 0 ? ((!i || !M || m || l) && f(M ? C() : E), E) : C(); + }; + } + var _ = !1, v = /* @__PURE__ */ $o(u), b = /* @__PURE__ */ Me(() => { + var E = C(), M = h(v); + return _ ? (_ = !1, M) : v.v = E; + }); + return o || (b.equals = Ks), function(E, M) { + if (arguments.length > 0) { + const D = M ? h(b) : i && s ? Tt(E) : E; + return b.equals(D) || (_ = !0, U(v, D), p && d !== void 0 && (d = D), wn(() => h(b))), E; + } + return h(b); + }; +} +function N1(e) { + return new M1(e); +} +var Sn, Wt; +class M1 { + /** + * @param {ComponentConstructorOptions & { + * component: any; + * }} options + */ + constructor(t) { + /** @type {any} */ + rr(this, Sn); + /** @type {Record} */ + rr(this, Wt); + var i; + var n = /* @__PURE__ */ new Map(), r = (s, a) => { + var l = /* @__PURE__ */ $o(a); + return n.set(s, l), l; + }; + const o = new Proxy( + { ...t.props || {}, $$events: {} }, + { + get(s, a) { + return h(n.get(a) ?? r(a, Reflect.get(s, a))); + }, + has(s, a) { + return a === Zs ? !0 : (h(n.get(a) ?? r(a, Reflect.get(s, a))), Reflect.has(s, a)); + }, + set(s, a, l) { + return U(n.get(a) ?? r(a, l), l), Reflect.set(s, a, l); + } + } + ); + Gr(this, Wt, (t.hydrate ? d1 : hu)(t.component, { + target: t.target, + anchor: t.anchor, + props: o, + context: t.context, + intro: t.intro ?? !1, + recover: t.recover + })), (!((i = t == null ? void 0 : t.props) != null && i.$$host) || t.sync === !1) && y(), Gr(this, Sn, o.$$events); + for (const s of Object.keys(it(this, Wt))) + s === "$set" || s === "$destroy" || s === "$on" || so(this, s, { + get() { + return it(this, Wt)[s]; + }, + /** @param {any} value */ + set(a) { + it(this, Wt)[s] = a; + }, + enumerable: !0 + }); + it(this, Wt).$set = /** @param {Record} next */ + (s) => { + Object.assign(o, s); + }, it(this, Wt).$destroy = () => { + f1(it(this, Wt)); + }; + } + /** @param {Record} props */ + $set(t) { + it(this, Wt).$set(t); + } + /** + * @param {string} event + * @param {(...args: any[]) => any} callback + * @returns {any} + */ + $on(t, n) { + it(this, Sn)[t] = it(this, Sn)[t] || []; + const r = (...o) => n.call(this, ...o); + return it(this, Sn)[t].push(r), () => { + it(this, Sn)[t] = it(this, Sn)[t].filter( + /** @param {any} fn */ + (o) => o !== r + ); + }; + } + $destroy() { + it(this, Wt).$destroy(); + } +} +Sn = new WeakMap(), Wt = new WeakMap(); +let bu; +typeof HTMLElement == "function" && (bu = class extends HTMLElement { + /** + * @param {*} $$componentCtor + * @param {*} $$slots + * @param {*} use_shadow_dom + */ + constructor(t, n, r) { + super(); + /** The Svelte component constructor */ + wt(this, "$$ctor"); + /** Slots */ + wt(this, "$$s"); + /** @type {any} The Svelte component instance */ + wt(this, "$$c"); + /** Whether or not the custom element is connected */ + wt(this, "$$cn", !1); + /** @type {Record} Component props data */ + wt(this, "$$d", {}); + /** `true` if currently in the process of reflecting component props back to attributes */ + wt(this, "$$r", !1); + /** @type {Record} Props definition (name, reflected, type etc) */ + wt(this, "$$p_d", {}); + /** @type {Record} Event listeners */ + wt(this, "$$l", {}); + /** @type {Map} Event listener unsubscribe functions */ + wt(this, "$$l_u", /* @__PURE__ */ new Map()); + /** @type {any} The managed render effect for reflecting attributes */ + wt(this, "$$me"); + this.$$ctor = t, this.$$s = n, r && this.attachShadow({ mode: "open" }); + } + /** + * @param {string} type + * @param {EventListenerOrEventListenerObject} listener + * @param {boolean | AddEventListenerOptions} [options] + */ + addEventListener(t, n, r) { + if (this.$$l[t] = this.$$l[t] || [], this.$$l[t].push(n), this.$$c) { + const o = this.$$c.$on(t, n); + this.$$l_u.set(n, o); + } + super.addEventListener(t, n, r); + } + /** + * @param {string} type + * @param {EventListenerOrEventListenerObject} listener + * @param {boolean | AddEventListenerOptions} [options] + */ + removeEventListener(t, n, r) { + if (super.removeEventListener(t, n, r), this.$$c) { + const o = this.$$l_u.get(n); + o && (o(), this.$$l_u.delete(n)); + } + } + async connectedCallback() { + if (this.$$cn = !0, !this.$$c) { + let t = function(o) { + return (i) => { + const s = document.createElement("slot"); + o !== "default" && (s.name = o), L(i, s); + }; + }; + if (await Promise.resolve(), !this.$$cn || this.$$c) + return; + const n = {}, r = T1(this); + for (const o of this.$$s) + o in r && (o === "default" && !this.$$d.children ? (this.$$d.children = t(o), n.default = !0) : n[o] = t(o)); + for (const o of this.attributes) { + const i = this.$$g_p(o.name); + i in this.$$d || (this.$$d[i] = Go(i, o.value, this.$$p_d, "toProp")); + } + for (const o in this.$$p_d) + !(o in this.$$d) && this[o] !== void 0 && (this.$$d[o] = this[o], delete this[o]); + this.$$c = N1({ + component: this.$$ctor, + target: this.shadowRoot || this, + props: { + ...this.$$d, + $$slots: n, + $$host: this + } + }), this.$$me = Kf(() => { + Fr(() => { + var o; + this.$$r = !0; + for (const i of ri(this.$$c)) { + if (!((o = this.$$p_d[i]) != null && o.reflect)) continue; + this.$$d[i] = this.$$c[i]; + const s = Go( + i, + this.$$d[i], + this.$$p_d, + "toAttribute" + ); + s == null ? this.removeAttribute(this.$$p_d[i].attribute || i) : this.setAttribute(this.$$p_d[i].attribute || i, s); + } + this.$$r = !1; + }); + }); + for (const o in this.$$l) + for (const i of this.$$l[o]) { + const s = this.$$c.$on(o, i); + this.$$l_u.set(i, s); + } + this.$$l = {}; + } + } + // We don't need this when working within Svelte code, but for compatibility of people using this outside of Svelte + // and setting attributes through setAttribute etc, this is helpful + /** + * @param {string} attr + * @param {string} _oldValue + * @param {string} newValue + */ + attributeChangedCallback(t, n, r) { + var o; + this.$$r || (t = this.$$g_p(t), this.$$d[t] = Go(t, r, this.$$p_d, "toProp"), (o = this.$$c) == null || o.$set({ [t]: this.$$d[t] })); + } + disconnectedCallback() { + this.$$cn = !1, Promise.resolve().then(() => { + !this.$$cn && this.$$c && (this.$$c.$destroy(), this.$$me(), this.$$c = void 0); + }); + } + /** + * @param {string} attribute_name + */ + $$g_p(t) { + return ri(this.$$p_d).find( + (n) => this.$$p_d[n].attribute === t || !this.$$p_d[n].attribute && n.toLowerCase() === t + ) || t; + } +}); +function Go(e, t, n, r) { + var i; + const o = (i = n[e]) == null ? void 0 : i.type; + if (t = o === "Boolean" && typeof t != "boolean" ? t != null : t, !r || !n[e]) + return t; + if (r === "toAttribute") + switch (o) { + case "Object": + case "Array": + return t == null ? null : JSON.stringify(t); + case "Boolean": + return t ? "" : null; + case "Number": + return t ?? null; + default: + return t; + } + else + switch (o) { + case "Object": + case "Array": + return t && JSON.parse(t); + case "Boolean": + return t; + // conversion already handled above + case "Number": + return t != null ? +t : t; + default: + return t; + } +} +function T1(e) { + const t = {}; + return e.childNodes.forEach((n) => { + t[ + /** @type {Element} node */ + n.slot || "default" + ] = !0; + }), t; +} +function ae(e, t, n, r, o, i) { + let s = class extends bu { + constructor() { + super(e, n, o), this.$$p_d = t; + } + static get observedAttributes() { + return ri(t).map( + (a) => (t[a].attribute || a).toLowerCase() + ); + } + }; + return ri(t).forEach((a) => { + so(s.prototype, a, { + get() { + return this.$$c && a in this.$$c ? this.$$c[a] : this.$$d[a]; + }, + set(l) { + var f; + l = Go(a, l, t), this.$$d[a] = l; + var u = this.$$c; + if (u) { + var c = (f = Tn(u, a)) == null ? void 0 : f.get; + c ? u[a] = l : u.$set({ [a]: l }); + } + } + }); + }), r.forEach((a) => { + so(s.prototype, a, { + get() { + var l; + return (l = this.$$c) == null ? void 0 : l[a]; + } + }); + }), e.element = /** @type {any} */ + s, s; +} +function Et(e) { + if (typeof e == "string" || typeof e == "number") return "" + e; + let t = ""; + if (Array.isArray(e)) + for (let n = 0, r; n < e.length; n++) + (r = Et(e[n])) !== "" && (t += (t && " ") + r); + else + for (let n in e) + e[n] && (t += (t && " ") + n); + return t; +} +var H1 = { value: () => { +} }; +function Ii() { + for (var e = 0, t = arguments.length, n = {}, r; e < t; ++e) { + if (!(r = arguments[e] + "") || r in n || /[\s.]/.test(r)) throw new Error("illegal type: " + r); + n[r] = []; + } + return new Uo(n); +} +function Uo(e) { + this._ = e; +} +function V1(e, t) { + return e.trim().split(/^|\s+/).map(function(n) { + var r = "", o = n.indexOf("."); + if (o >= 0 && (r = n.slice(o + 1), n = n.slice(0, o)), n && !t.hasOwnProperty(n)) throw new Error("unknown type: " + n); + return { type: n, name: r }; + }); +} +Uo.prototype = Ii.prototype = { + constructor: Uo, + on: function(e, t) { + var n = this._, r = V1(e + "", n), o, i = -1, s = r.length; + if (arguments.length < 2) { + for (; ++i < s; ) if ((o = (e = r[i]).type) && (o = D1(n[o], e.name))) return o; + return; + } + if (t != null && typeof t != "function") throw new Error("invalid callback: " + t); + for (; ++i < s; ) + if (o = (e = r[i]).type) n[o] = Za(n[o], e.name, t); + else if (t == null) for (o in n) n[o] = Za(n[o], e.name, null); + return this; + }, + copy: function() { + var e = {}, t = this._; + for (var n in t) e[n] = t[n].slice(); + return new Uo(e); + }, + call: function(e, t) { + if ((o = arguments.length - 2) > 0) for (var n = new Array(o), r = 0, o, i; r < o; ++r) n[r] = arguments[r + 2]; + if (!this._.hasOwnProperty(e)) throw new Error("unknown type: " + e); + for (i = this._[e], r = 0, o = i.length; r < o; ++r) i[r].value.apply(t, n); + }, + apply: function(e, t, n) { + if (!this._.hasOwnProperty(e)) throw new Error("unknown type: " + e); + for (var r = this._[e], o = 0, i = r.length; o < i; ++o) r[o].value.apply(t, n); + } +}; +function D1(e, t) { + for (var n = 0, r = e.length, o; n < r; ++n) + if ((o = e[n]).name === t) + return o.value; +} +function Za(e, t, n) { + for (var r = 0, o = e.length; r < o; ++r) + if (e[r].name === t) { + e[r] = H1, e = e.slice(0, r).concat(e.slice(r + 1)); + break; + } + return n != null && e.push({ name: t, value: n }), e; +} +var xs = "http://www.w3.org/1999/xhtml"; +const Xa = { + svg: "http://www.w3.org/2000/svg", + xhtml: xs, + xlink: "http://www.w3.org/1999/xlink", + xml: "http://www.w3.org/XML/1998/namespace", + xmlns: "http://www.w3.org/2000/xmlns/" +}; +function zi(e) { + var t = e += "", n = t.indexOf(":"); + return n >= 0 && (t = e.slice(0, n)) !== "xmlns" && (e = e.slice(n + 1)), Xa.hasOwnProperty(t) ? { space: Xa[t], local: e } : e; +} +function A1(e) { + return function() { + var t = this.ownerDocument, n = this.namespaceURI; + return n === xs && t.documentElement.namespaceURI === xs ? t.createElement(e) : t.createElementNS(n, e); + }; +} +function L1(e) { + return function() { + return this.ownerDocument.createElementNS(e.space, e.local); + }; +} +function Cu(e) { + var t = zi(e); + return (t.local ? L1 : A1)(t); +} +function O1() { +} +function ta(e) { + return e == null ? O1 : function() { + return this.querySelector(e); + }; +} +function I1(e) { + typeof e != "function" && (e = ta(e)); + for (var t = this._groups, n = t.length, r = new Array(n), o = 0; o < n; ++o) + for (var i = t[o], s = i.length, a = r[o] = new Array(s), l, u, c = 0; c < s; ++c) + (l = i[c]) && (u = e.call(l, l.__data__, c, i)) && ("__data__" in l && (u.__data__ = l.__data__), a[c] = u); + return new Zt(r, this._parents); +} +function z1(e) { + return e == null ? [] : Array.isArray(e) ? e : Array.from(e); +} +function R1() { + return []; +} +function ku(e) { + return e == null ? R1 : function() { + return this.querySelectorAll(e); + }; +} +function B1(e) { + return function() { + return z1(e.apply(this, arguments)); + }; +} +function Y1(e) { + typeof e == "function" ? e = B1(e) : e = ku(e); + for (var t = this._groups, n = t.length, r = [], o = [], i = 0; i < n; ++i) + for (var s = t[i], a = s.length, l, u = 0; u < a; ++u) + (l = s[u]) && (r.push(e.call(l, l.__data__, u, s)), o.push(l)); + return new Zt(r, o); +} +function $u(e) { + return function() { + return this.matches(e); + }; +} +function Eu(e) { + return function(t) { + return t.matches(e); + }; +} +var Z1 = Array.prototype.find; +function X1(e) { + return function() { + return Z1.call(this.children, e); + }; +} +function F1() { + return this.firstElementChild; +} +function W1(e) { + return this.select(e == null ? F1 : X1(typeof e == "function" ? e : Eu(e))); +} +var K1 = Array.prototype.filter; +function q1() { + return Array.from(this.children); +} +function G1(e) { + return function() { + return K1.call(this.children, e); + }; +} +function U1(e) { + return this.selectAll(e == null ? q1 : G1(typeof e == "function" ? e : Eu(e))); +} +function j1(e) { + typeof e != "function" && (e = $u(e)); + for (var t = this._groups, n = t.length, r = new Array(n), o = 0; o < n; ++o) + for (var i = t[o], s = i.length, a = r[o] = [], l, u = 0; u < s; ++u) + (l = i[u]) && e.call(l, l.__data__, u, i) && a.push(l); + return new Zt(r, this._parents); +} +function Su(e) { + return new Array(e.length); +} +function J1() { + return new Zt(this._enter || this._groups.map(Su), this._parents); +} +function ui(e, t) { + this.ownerDocument = e.ownerDocument, this.namespaceURI = e.namespaceURI, this._next = null, this._parent = e, this.__data__ = t; +} +ui.prototype = { + constructor: ui, + appendChild: function(e) { + return this._parent.insertBefore(e, this._next); + }, + insertBefore: function(e, t) { + return this._parent.insertBefore(e, t); + }, + querySelector: function(e) { + return this._parent.querySelector(e); + }, + querySelectorAll: function(e) { + return this._parent.querySelectorAll(e); + } +}; +function Q1(e) { + return function() { + return e; + }; +} +function eg(e, t, n, r, o, i) { + for (var s = 0, a, l = t.length, u = i.length; s < u; ++s) + (a = t[s]) ? (a.__data__ = i[s], r[s] = a) : n[s] = new ui(e, i[s]); + for (; s < l; ++s) + (a = t[s]) && (o[s] = a); +} +function tg(e, t, n, r, o, i, s) { + var a, l, u = /* @__PURE__ */ new Map(), c = t.length, f = i.length, d = new Array(c), g; + for (a = 0; a < c; ++a) + (l = t[a]) && (d[a] = g = s.call(l, l.__data__, a, t) + "", u.has(g) ? o[a] = l : u.set(g, l)); + for (a = 0; a < f; ++a) + g = s.call(e, i[a], a, i) + "", (l = u.get(g)) ? (r[a] = l, l.__data__ = i[a], u.delete(g)) : n[a] = new ui(e, i[a]); + for (a = 0; a < c; ++a) + (l = t[a]) && u.get(d[a]) === l && (o[a] = l); +} +function ng(e) { + return e.__data__; +} +function rg(e, t) { + if (!arguments.length) return Array.from(this, ng); + var n = t ? tg : eg, r = this._parents, o = this._groups; + typeof e != "function" && (e = Q1(e)); + for (var i = o.length, s = new Array(i), a = new Array(i), l = new Array(i), u = 0; u < i; ++u) { + var c = r[u], f = o[u], d = f.length, g = og(e.call(c, c && c.__data__, u, r)), p = g.length, x = a[u] = new Array(p), C = s[u] = new Array(p), $ = l[u] = new Array(d); + n(c, f, x, C, $, g, t); + for (var m = 0, _ = 0, v, b; m < p; ++m) + if (v = x[m]) { + for (m >= _ && (_ = m + 1); !(b = C[_]) && ++_ < p; ) ; + v._next = b || null; + } + } + return s = new Zt(s, r), s._enter = a, s._exit = l, s; +} +function og(e) { + return typeof e == "object" && "length" in e ? e : Array.from(e); +} +function ig() { + return new Zt(this._exit || this._groups.map(Su), this._parents); +} +function sg(e, t, n) { + var r = this.enter(), o = this, i = this.exit(); + return typeof e == "function" ? (r = e(r), r && (r = r.selection())) : r = r.append(e + ""), t != null && (o = t(o), o && (o = o.selection())), n == null ? i.remove() : n(i), r && o ? r.merge(o).order() : o; +} +function ag(e) { + for (var t = e.selection ? e.selection() : e, n = this._groups, r = t._groups, o = n.length, i = r.length, s = Math.min(o, i), a = new Array(o), l = 0; l < s; ++l) + for (var u = n[l], c = r[l], f = u.length, d = a[l] = new Array(f), g, p = 0; p < f; ++p) + (g = u[p] || c[p]) && (d[p] = g); + for (; l < o; ++l) + a[l] = n[l]; + return new Zt(a, this._parents); +} +function lg() { + for (var e = this._groups, t = -1, n = e.length; ++t < n; ) + for (var r = e[t], o = r.length - 1, i = r[o], s; --o >= 0; ) + (s = r[o]) && (i && s.compareDocumentPosition(i) ^ 4 && i.parentNode.insertBefore(s, i), i = s); + return this; +} +function ug(e) { + e || (e = cg); + function t(f, d) { + return f && d ? e(f.__data__, d.__data__) : !f - !d; + } + for (var n = this._groups, r = n.length, o = new Array(r), i = 0; i < r; ++i) { + for (var s = n[i], a = s.length, l = o[i] = new Array(a), u, c = 0; c < a; ++c) + (u = s[c]) && (l[c] = u); + l.sort(t); + } + return new Zt(o, this._parents).order(); +} +function cg(e, t) { + return e < t ? -1 : e > t ? 1 : e >= t ? 0 : NaN; +} +function dg() { + var e = arguments[0]; + return arguments[0] = this, e.apply(null, arguments), this; +} +function fg() { + return Array.from(this); +} +function gg() { + for (var e = this._groups, t = 0, n = e.length; t < n; ++t) + for (var r = e[t], o = 0, i = r.length; o < i; ++o) { + var s = r[o]; + if (s) return s; + } + return null; +} +function hg() { + let e = 0; + for (const t of this) ++e; + return e; +} +function vg() { + return !this.node(); +} +function pg(e) { + for (var t = this._groups, n = 0, r = t.length; n < r; ++n) + for (var o = t[n], i = 0, s = o.length, a; i < s; ++i) + (a = o[i]) && e.call(a, a.__data__, i, o); + return this; +} +function mg(e) { + return function() { + this.removeAttribute(e); + }; +} +function yg(e) { + return function() { + this.removeAttributeNS(e.space, e.local); + }; +} +function wg(e, t) { + return function() { + this.setAttribute(e, t); + }; +} +function _g(e, t) { + return function() { + this.setAttributeNS(e.space, e.local, t); + }; +} +function xg(e, t) { + return function() { + var n = t.apply(this, arguments); + n == null ? this.removeAttribute(e) : this.setAttribute(e, n); + }; +} +function bg(e, t) { + return function() { + var n = t.apply(this, arguments); + n == null ? this.removeAttributeNS(e.space, e.local) : this.setAttributeNS(e.space, e.local, n); + }; +} +function Cg(e, t) { + var n = zi(e); + if (arguments.length < 2) { + var r = this.node(); + return n.local ? r.getAttributeNS(n.space, n.local) : r.getAttribute(n); + } + return this.each((t == null ? n.local ? yg : mg : typeof t == "function" ? n.local ? bg : xg : n.local ? _g : wg)(n, t)); +} +function Pu(e) { + return e.ownerDocument && e.ownerDocument.defaultView || e.document && e || e.defaultView; +} +function kg(e) { + return function() { + this.style.removeProperty(e); + }; +} +function $g(e, t, n) { + return function() { + this.style.setProperty(e, t, n); + }; +} +function Eg(e, t, n) { + return function() { + var r = t.apply(this, arguments); + r == null ? this.style.removeProperty(e) : this.style.setProperty(e, r, n); + }; +} +function Sg(e, t, n) { + return arguments.length > 1 ? this.each((t == null ? kg : typeof t == "function" ? Eg : $g)(e, t, n ?? "")) : Hr(this.node(), e); +} +function Hr(e, t) { + return e.style.getPropertyValue(t) || Pu(e).getComputedStyle(e, null).getPropertyValue(t); +} +function Pg(e) { + return function() { + delete this[e]; + }; +} +function Ng(e, t) { + return function() { + this[e] = t; + }; +} +function Mg(e, t) { + return function() { + var n = t.apply(this, arguments); + n == null ? delete this[e] : this[e] = n; + }; +} +function Tg(e, t) { + return arguments.length > 1 ? this.each((t == null ? Pg : typeof t == "function" ? Mg : Ng)(e, t)) : this.node()[e]; +} +function Nu(e) { + return e.trim().split(/^|\s+/); +} +function na(e) { + return e.classList || new Mu(e); +} +function Mu(e) { + this._node = e, this._names = Nu(e.getAttribute("class") || ""); +} +Mu.prototype = { + add: function(e) { + var t = this._names.indexOf(e); + t < 0 && (this._names.push(e), this._node.setAttribute("class", this._names.join(" "))); + }, + remove: function(e) { + var t = this._names.indexOf(e); + t >= 0 && (this._names.splice(t, 1), this._node.setAttribute("class", this._names.join(" "))); + }, + contains: function(e) { + return this._names.indexOf(e) >= 0; + } +}; +function Tu(e, t) { + for (var n = na(e), r = -1, o = t.length; ++r < o; ) n.add(t[r]); +} +function Hu(e, t) { + for (var n = na(e), r = -1, o = t.length; ++r < o; ) n.remove(t[r]); +} +function Hg(e) { + return function() { + Tu(this, e); + }; +} +function Vg(e) { + return function() { + Hu(this, e); + }; +} +function Dg(e, t) { + return function() { + (t.apply(this, arguments) ? Tu : Hu)(this, e); + }; +} +function Ag(e, t) { + var n = Nu(e + ""); + if (arguments.length < 2) { + for (var r = na(this.node()), o = -1, i = n.length; ++o < i; ) if (!r.contains(n[o])) return !1; + return !0; + } + return this.each((typeof t == "function" ? Dg : t ? Hg : Vg)(n, t)); +} +function Lg() { + this.textContent = ""; +} +function Og(e) { + return function() { + this.textContent = e; + }; +} +function Ig(e) { + return function() { + var t = e.apply(this, arguments); + this.textContent = t ?? ""; + }; +} +function zg(e) { + return arguments.length ? this.each(e == null ? Lg : (typeof e == "function" ? Ig : Og)(e)) : this.node().textContent; +} +function Rg() { + this.innerHTML = ""; +} +function Bg(e) { + return function() { + this.innerHTML = e; + }; +} +function Yg(e) { + return function() { + var t = e.apply(this, arguments); + this.innerHTML = t ?? ""; + }; +} +function Zg(e) { + return arguments.length ? this.each(e == null ? Rg : (typeof e == "function" ? Yg : Bg)(e)) : this.node().innerHTML; +} +function Xg() { + this.nextSibling && this.parentNode.appendChild(this); +} +function Fg() { + return this.each(Xg); +} +function Wg() { + this.previousSibling && this.parentNode.insertBefore(this, this.parentNode.firstChild); +} +function Kg() { + return this.each(Wg); +} +function qg(e) { + var t = typeof e == "function" ? e : Cu(e); + return this.select(function() { + return this.appendChild(t.apply(this, arguments)); + }); +} +function Gg() { + return null; +} +function Ug(e, t) { + var n = typeof e == "function" ? e : Cu(e), r = t == null ? Gg : typeof t == "function" ? t : ta(t); + return this.select(function() { + return this.insertBefore(n.apply(this, arguments), r.apply(this, arguments) || null); + }); +} +function jg() { + var e = this.parentNode; + e && e.removeChild(this); +} +function Jg() { + return this.each(jg); +} +function Qg() { + var e = this.cloneNode(!1), t = this.parentNode; + return t ? t.insertBefore(e, this.nextSibling) : e; +} +function eh() { + var e = this.cloneNode(!0), t = this.parentNode; + return t ? t.insertBefore(e, this.nextSibling) : e; +} +function th(e) { + return this.select(e ? eh : Qg); +} +function nh(e) { + return arguments.length ? this.property("__data__", e) : this.node().__data__; +} +function rh(e) { + return function(t) { + e.call(this, t, this.__data__); + }; +} +function oh(e) { + return e.trim().split(/^|\s+/).map(function(t) { + var n = "", r = t.indexOf("."); + return r >= 0 && (n = t.slice(r + 1), t = t.slice(0, r)), { type: t, name: n }; + }); +} +function ih(e) { + return function() { + var t = this.__on; + if (t) { + for (var n = 0, r = -1, o = t.length, i; n < o; ++n) + i = t[n], (!e.type || i.type === e.type) && i.name === e.name ? this.removeEventListener(i.type, i.listener, i.options) : t[++r] = i; + ++r ? t.length = r : delete this.__on; + } + }; +} +function sh(e, t, n) { + return function() { + var r = this.__on, o, i = rh(t); + if (r) { + for (var s = 0, a = r.length; s < a; ++s) + if ((o = r[s]).type === e.type && o.name === e.name) { + this.removeEventListener(o.type, o.listener, o.options), this.addEventListener(o.type, o.listener = i, o.options = n), o.value = t; + return; + } + } + this.addEventListener(e.type, i, n), o = { type: e.type, name: e.name, value: t, listener: i, options: n }, r ? r.push(o) : this.__on = [o]; + }; +} +function ah(e, t, n) { + var r = oh(e + ""), o, i = r.length, s; + if (arguments.length < 2) { + var a = this.node().__on; + if (a) { + for (var l = 0, u = a.length, c; l < u; ++l) + for (o = 0, c = a[l]; o < i; ++o) + if ((s = r[o]).type === c.type && s.name === c.name) + return c.value; + } + return; + } + for (a = t ? sh : ih, o = 0; o < i; ++o) this.each(a(r[o], t, n)); + return this; +} +function Vu(e, t, n) { + var r = Pu(e), o = r.CustomEvent; + typeof o == "function" ? o = new o(t, n) : (o = r.document.createEvent("Event"), n ? (o.initEvent(t, n.bubbles, n.cancelable), o.detail = n.detail) : o.initEvent(t, !1, !1)), e.dispatchEvent(o); +} +function lh(e, t) { + return function() { + return Vu(this, e, t); + }; +} +function uh(e, t) { + return function() { + return Vu(this, e, t.apply(this, arguments)); + }; +} +function ch(e, t) { + return this.each((typeof t == "function" ? uh : lh)(e, t)); +} +function* dh() { + for (var e = this._groups, t = 0, n = e.length; t < n; ++t) + for (var r = e[t], o = 0, i = r.length, s; o < i; ++o) + (s = r[o]) && (yield s); +} +var Du = [null]; +function Zt(e, t) { + this._groups = e, this._parents = t; +} +function Eo() { + return new Zt([[document.documentElement]], Du); +} +function fh() { + return this; +} +Zt.prototype = Eo.prototype = { + constructor: Zt, + select: I1, + selectAll: Y1, + selectChild: W1, + selectChildren: U1, + filter: j1, + data: rg, + enter: J1, + exit: ig, + join: sg, + merge: ag, + selection: fh, + order: lg, + sort: ug, + call: dg, + nodes: fg, + node: gg, + size: hg, + empty: vg, + each: pg, + attr: Cg, + style: Sg, + property: Tg, + classed: Ag, + text: zg, + html: Zg, + raise: Fg, + lower: Kg, + append: qg, + insert: Ug, + remove: Jg, + clone: th, + datum: nh, + on: ah, + dispatch: ch, + [Symbol.iterator]: dh +}; +function Kt(e) { + return typeof e == "string" ? new Zt([[document.querySelector(e)]], [document.documentElement]) : new Zt([[e]], Du); +} +function gh(e) { + let t; + for (; t = e.sourceEvent; ) e = t; + return e; +} +function Qt(e, t) { + if (e = gh(e), t === void 0 && (t = e.currentTarget), t) { + var n = t.ownerSVGElement || t; + if (n.createSVGPoint) { + var r = n.createSVGPoint(); + return r.x = e.clientX, r.y = e.clientY, r = r.matrixTransform(t.getScreenCTM().inverse()), [r.x, r.y]; + } + if (t.getBoundingClientRect) { + var o = t.getBoundingClientRect(); + return [e.clientX - o.left - t.clientLeft, e.clientY - o.top - t.clientTop]; + } + } + return [e.pageX, e.pageY]; +} +const hh = { passive: !1 }, fo = { capture: !0, passive: !1 }; +function ts(e) { + e.stopImmediatePropagation(); +} +function xr(e) { + e.preventDefault(), e.stopImmediatePropagation(); +} +function Au(e) { + var t = e.document.documentElement, n = Kt(e).on("dragstart.drag", xr, fo); + "onselectstart" in t ? n.on("selectstart.drag", xr, fo) : (t.__noselect = t.style.MozUserSelect, t.style.MozUserSelect = "none"); +} +function Lu(e, t) { + var n = e.document.documentElement, r = Kt(e).on("dragstart.drag", null); + t && (r.on("click.drag", xr, fo), setTimeout(function() { + r.on("click.drag", null); + }, 0)), "onselectstart" in n ? r.on("selectstart.drag", null) : (n.style.MozUserSelect = n.__noselect, delete n.__noselect); +} +const Yo = (e) => () => e; +function bs(e, { + sourceEvent: t, + subject: n, + target: r, + identifier: o, + active: i, + x: s, + y: a, + dx: l, + dy: u, + dispatch: c +}) { + Object.defineProperties(this, { + type: { value: e, enumerable: !0, configurable: !0 }, + sourceEvent: { value: t, enumerable: !0, configurable: !0 }, + subject: { value: n, enumerable: !0, configurable: !0 }, + target: { value: r, enumerable: !0, configurable: !0 }, + identifier: { value: o, enumerable: !0, configurable: !0 }, + active: { value: i, enumerable: !0, configurable: !0 }, + x: { value: s, enumerable: !0, configurable: !0 }, + y: { value: a, enumerable: !0, configurable: !0 }, + dx: { value: l, enumerable: !0, configurable: !0 }, + dy: { value: u, enumerable: !0, configurable: !0 }, + _: { value: c } + }); +} +bs.prototype.on = function() { + var e = this._.on.apply(this._, arguments); + return e === this._ ? this : e; +}; +function vh(e) { + return !e.ctrlKey && !e.button; +} +function ph() { + return this.parentNode; +} +function mh(e, t) { + return t ?? { x: e.x, y: e.y }; +} +function yh() { + return navigator.maxTouchPoints || "ontouchstart" in this; +} +function wh() { + var e = vh, t = ph, n = mh, r = yh, o = {}, i = Ii("start", "drag", "end"), s = 0, a, l, u, c, f = 0; + function d(v) { + v.on("mousedown.drag", g).filter(r).on("touchstart.drag", C).on("touchmove.drag", $, hh).on("touchend.drag touchcancel.drag", m).style("touch-action", "none").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); + } + function g(v, b) { + if (!(c || !e.call(this, v, b))) { + var N = _(this, t.call(this, v, b), v, b, "mouse"); + N && (Kt(v.view).on("mousemove.drag", p, fo).on("mouseup.drag", x, fo), Au(v.view), ts(v), u = !1, a = v.clientX, l = v.clientY, N("start", v)); + } + } + function p(v) { + if (xr(v), !u) { + var b = v.clientX - a, N = v.clientY - l; + u = b * b + N * N > f; + } + o.mouse("drag", v); + } + function x(v) { + Kt(v.view).on("mousemove.drag mouseup.drag", null), Lu(v.view, u), xr(v), o.mouse("end", v); + } + function C(v, b) { + if (e.call(this, v, b)) { + var N = v.changedTouches, E = t.call(this, v, b), M = N.length, D, V; + for (D = 0; D < M; ++D) + (V = _(this, E, v, b, N[D].identifier, N[D])) && (ts(v), V("start", v, N[D])); + } + } + function $(v) { + var b = v.changedTouches, N = b.length, E, M; + for (E = 0; E < N; ++E) + (M = o[b[E].identifier]) && (xr(v), M("drag", v, b[E])); + } + function m(v) { + var b = v.changedTouches, N = b.length, E, M; + for (c && clearTimeout(c), c = setTimeout(function() { + c = null; + }, 500), E = 0; E < N; ++E) + (M = o[b[E].identifier]) && (ts(v), M("end", v, b[E])); + } + function _(v, b, N, E, M, D) { + var V = i.copy(), A = Qt(D || N, b), O, R, S; + if ((S = n.call(v, new bs("beforestart", { + sourceEvent: N, + target: d, + identifier: M, + active: s, + x: A[0], + y: A[1], + dx: 0, + dy: 0, + dispatch: V + }), E)) != null) + return O = S.x - A[0] || 0, R = S.y - A[1] || 0, function T(k, P, H) { + var I = A, B; + switch (k) { + case "start": + o[M] = T, B = s++; + break; + case "end": + delete o[M], --s; + // falls through + case "drag": + A = Qt(H || P, b), B = s; + break; + } + V.call( + k, + v, + new bs(k, { + sourceEvent: P, + subject: S, + target: d, + identifier: M, + active: B, + x: A[0] + O, + y: A[1] + R, + dx: A[0] - I[0], + dy: A[1] - I[1], + dispatch: V + }), + E + ); + }; + } + return d.filter = function(v) { + return arguments.length ? (e = typeof v == "function" ? v : Yo(!!v), d) : e; + }, d.container = function(v) { + return arguments.length ? (t = typeof v == "function" ? v : Yo(v), d) : t; + }, d.subject = function(v) { + return arguments.length ? (n = typeof v == "function" ? v : Yo(v), d) : n; + }, d.touchable = function(v) { + return arguments.length ? (r = typeof v == "function" ? v : Yo(!!v), d) : r; + }, d.on = function() { + var v = i.on.apply(i, arguments); + return v === i ? d : v; + }, d.clickDistance = function(v) { + return arguments.length ? (f = (v = +v) * v, d) : Math.sqrt(f); + }, d; +} +function ra(e, t, n) { + e.prototype = t.prototype = n, n.constructor = e; +} +function Ou(e, t) { + var n = Object.create(e.prototype); + for (var r in t) n[r] = t[r]; + return n; +} +function So() { +} +var go = 0.7, ci = 1 / go, br = "\\s*([+-]?\\d+)\\s*", ho = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*", pn = "\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*", _h = /^#([0-9a-f]{3,8})$/, xh = new RegExp(`^rgb\\(${br},${br},${br}\\)$`), bh = new RegExp(`^rgb\\(${pn},${pn},${pn}\\)$`), Ch = new RegExp(`^rgba\\(${br},${br},${br},${ho}\\)$`), kh = new RegExp(`^rgba\\(${pn},${pn},${pn},${ho}\\)$`), $h = new RegExp(`^hsl\\(${ho},${pn},${pn}\\)$`), Eh = new RegExp(`^hsla\\(${ho},${pn},${pn},${ho}\\)$`), Fa = { + aliceblue: 15792383, + antiquewhite: 16444375, + aqua: 65535, + aquamarine: 8388564, + azure: 15794175, + beige: 16119260, + bisque: 16770244, + black: 0, + blanchedalmond: 16772045, + blue: 255, + blueviolet: 9055202, + brown: 10824234, + burlywood: 14596231, + cadetblue: 6266528, + chartreuse: 8388352, + chocolate: 13789470, + coral: 16744272, + cornflowerblue: 6591981, + cornsilk: 16775388, + crimson: 14423100, + cyan: 65535, + darkblue: 139, + darkcyan: 35723, + darkgoldenrod: 12092939, + darkgray: 11119017, + darkgreen: 25600, + darkgrey: 11119017, + darkkhaki: 12433259, + darkmagenta: 9109643, + darkolivegreen: 5597999, + darkorange: 16747520, + darkorchid: 10040012, + darkred: 9109504, + darksalmon: 15308410, + darkseagreen: 9419919, + darkslateblue: 4734347, + darkslategray: 3100495, + darkslategrey: 3100495, + darkturquoise: 52945, + darkviolet: 9699539, + deeppink: 16716947, + deepskyblue: 49151, + dimgray: 6908265, + dimgrey: 6908265, + dodgerblue: 2003199, + firebrick: 11674146, + floralwhite: 16775920, + forestgreen: 2263842, + fuchsia: 16711935, + gainsboro: 14474460, + ghostwhite: 16316671, + gold: 16766720, + goldenrod: 14329120, + gray: 8421504, + green: 32768, + greenyellow: 11403055, + grey: 8421504, + honeydew: 15794160, + hotpink: 16738740, + indianred: 13458524, + indigo: 4915330, + ivory: 16777200, + khaki: 15787660, + lavender: 15132410, + lavenderblush: 16773365, + lawngreen: 8190976, + lemonchiffon: 16775885, + lightblue: 11393254, + lightcoral: 15761536, + lightcyan: 14745599, + lightgoldenrodyellow: 16448210, + lightgray: 13882323, + lightgreen: 9498256, + lightgrey: 13882323, + lightpink: 16758465, + lightsalmon: 16752762, + lightseagreen: 2142890, + lightskyblue: 8900346, + lightslategray: 7833753, + lightslategrey: 7833753, + lightsteelblue: 11584734, + lightyellow: 16777184, + lime: 65280, + limegreen: 3329330, + linen: 16445670, + magenta: 16711935, + maroon: 8388608, + mediumaquamarine: 6737322, + mediumblue: 205, + mediumorchid: 12211667, + mediumpurple: 9662683, + mediumseagreen: 3978097, + mediumslateblue: 8087790, + mediumspringgreen: 64154, + mediumturquoise: 4772300, + mediumvioletred: 13047173, + midnightblue: 1644912, + mintcream: 16121850, + mistyrose: 16770273, + moccasin: 16770229, + navajowhite: 16768685, + navy: 128, + oldlace: 16643558, + olive: 8421376, + olivedrab: 7048739, + orange: 16753920, + orangered: 16729344, + orchid: 14315734, + palegoldenrod: 15657130, + palegreen: 10025880, + paleturquoise: 11529966, + palevioletred: 14381203, + papayawhip: 16773077, + peachpuff: 16767673, + peru: 13468991, + pink: 16761035, + plum: 14524637, + powderblue: 11591910, + purple: 8388736, + rebeccapurple: 6697881, + red: 16711680, + rosybrown: 12357519, + royalblue: 4286945, + saddlebrown: 9127187, + salmon: 16416882, + sandybrown: 16032864, + seagreen: 3050327, + seashell: 16774638, + sienna: 10506797, + silver: 12632256, + skyblue: 8900331, + slateblue: 6970061, + slategray: 7372944, + slategrey: 7372944, + snow: 16775930, + springgreen: 65407, + steelblue: 4620980, + tan: 13808780, + teal: 32896, + thistle: 14204888, + tomato: 16737095, + turquoise: 4251856, + violet: 15631086, + wheat: 16113331, + white: 16777215, + whitesmoke: 16119285, + yellow: 16776960, + yellowgreen: 10145074 +}; +ra(So, vo, { + copy(e) { + return Object.assign(new this.constructor(), this, e); + }, + displayable() { + return this.rgb().displayable(); + }, + hex: Wa, + // Deprecated! Use color.formatHex. + formatHex: Wa, + formatHex8: Sh, + formatHsl: Ph, + formatRgb: Ka, + toString: Ka +}); +function Wa() { + return this.rgb().formatHex(); +} +function Sh() { + return this.rgb().formatHex8(); +} +function Ph() { + return Iu(this).formatHsl(); +} +function Ka() { + return this.rgb().formatRgb(); +} +function vo(e) { + var t, n; + return e = (e + "").trim().toLowerCase(), (t = _h.exec(e)) ? (n = t[1].length, t = parseInt(t[1], 16), n === 6 ? qa(t) : n === 3 ? new Ht(t >> 8 & 15 | t >> 4 & 240, t >> 4 & 15 | t & 240, (t & 15) << 4 | t & 15, 1) : n === 8 ? Zo(t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, (t & 255) / 255) : n === 4 ? Zo(t >> 12 & 15 | t >> 8 & 240, t >> 8 & 15 | t >> 4 & 240, t >> 4 & 15 | t & 240, ((t & 15) << 4 | t & 15) / 255) : null) : (t = xh.exec(e)) ? new Ht(t[1], t[2], t[3], 1) : (t = bh.exec(e)) ? new Ht(t[1] * 255 / 100, t[2] * 255 / 100, t[3] * 255 / 100, 1) : (t = Ch.exec(e)) ? Zo(t[1], t[2], t[3], t[4]) : (t = kh.exec(e)) ? Zo(t[1] * 255 / 100, t[2] * 255 / 100, t[3] * 255 / 100, t[4]) : (t = $h.exec(e)) ? ja(t[1], t[2] / 100, t[3] / 100, 1) : (t = Eh.exec(e)) ? ja(t[1], t[2] / 100, t[3] / 100, t[4]) : Fa.hasOwnProperty(e) ? qa(Fa[e]) : e === "transparent" ? new Ht(NaN, NaN, NaN, 0) : null; +} +function qa(e) { + return new Ht(e >> 16 & 255, e >> 8 & 255, e & 255, 1); +} +function Zo(e, t, n, r) { + return r <= 0 && (e = t = n = NaN), new Ht(e, t, n, r); +} +function Nh(e) { + return e instanceof So || (e = vo(e)), e ? (e = e.rgb(), new Ht(e.r, e.g, e.b, e.opacity)) : new Ht(); +} +function Cs(e, t, n, r) { + return arguments.length === 1 ? Nh(e) : new Ht(e, t, n, r ?? 1); +} +function Ht(e, t, n, r) { + this.r = +e, this.g = +t, this.b = +n, this.opacity = +r; +} +ra(Ht, Cs, Ou(So, { + brighter(e) { + return e = e == null ? ci : Math.pow(ci, e), new Ht(this.r * e, this.g * e, this.b * e, this.opacity); + }, + darker(e) { + return e = e == null ? go : Math.pow(go, e), new Ht(this.r * e, this.g * e, this.b * e, this.opacity); + }, + rgb() { + return this; + }, + clamp() { + return new Ht(sr(this.r), sr(this.g), sr(this.b), di(this.opacity)); + }, + displayable() { + return -0.5 <= this.r && this.r < 255.5 && -0.5 <= this.g && this.g < 255.5 && -0.5 <= this.b && this.b < 255.5 && 0 <= this.opacity && this.opacity <= 1; + }, + hex: Ga, + // Deprecated! Use color.formatHex. + formatHex: Ga, + formatHex8: Mh, + formatRgb: Ua, + toString: Ua +})); +function Ga() { + return `#${or(this.r)}${or(this.g)}${or(this.b)}`; +} +function Mh() { + return `#${or(this.r)}${or(this.g)}${or(this.b)}${or((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`; +} +function Ua() { + const e = di(this.opacity); + return `${e === 1 ? "rgb(" : "rgba("}${sr(this.r)}, ${sr(this.g)}, ${sr(this.b)}${e === 1 ? ")" : `, ${e})`}`; +} +function di(e) { + return isNaN(e) ? 1 : Math.max(0, Math.min(1, e)); +} +function sr(e) { + return Math.max(0, Math.min(255, Math.round(e) || 0)); +} +function or(e) { + return e = sr(e), (e < 16 ? "0" : "") + e.toString(16); +} +function ja(e, t, n, r) { + return r <= 0 ? e = t = n = NaN : n <= 0 || n >= 1 ? e = t = NaN : t <= 0 && (e = NaN), new tn(e, t, n, r); +} +function Iu(e) { + if (e instanceof tn) return new tn(e.h, e.s, e.l, e.opacity); + if (e instanceof So || (e = vo(e)), !e) return new tn(); + if (e instanceof tn) return e; + e = e.rgb(); + var t = e.r / 255, n = e.g / 255, r = e.b / 255, o = Math.min(t, n, r), i = Math.max(t, n, r), s = NaN, a = i - o, l = (i + o) / 2; + return a ? (t === i ? s = (n - r) / a + (n < r) * 6 : n === i ? s = (r - t) / a + 2 : s = (t - n) / a + 4, a /= l < 0.5 ? i + o : 2 - i - o, s *= 60) : a = l > 0 && l < 1 ? 0 : s, new tn(s, a, l, e.opacity); +} +function Th(e, t, n, r) { + return arguments.length === 1 ? Iu(e) : new tn(e, t, n, r ?? 1); +} +function tn(e, t, n, r) { + this.h = +e, this.s = +t, this.l = +n, this.opacity = +r; +} +ra(tn, Th, Ou(So, { + brighter(e) { + return e = e == null ? ci : Math.pow(ci, e), new tn(this.h, this.s, this.l * e, this.opacity); + }, + darker(e) { + return e = e == null ? go : Math.pow(go, e), new tn(this.h, this.s, this.l * e, this.opacity); + }, + rgb() { + var e = this.h % 360 + (this.h < 0) * 360, t = isNaN(e) || isNaN(this.s) ? 0 : this.s, n = this.l, r = n + (n < 0.5 ? n : 1 - n) * t, o = 2 * n - r; + return new Ht( + ns(e >= 240 ? e - 240 : e + 120, o, r), + ns(e, o, r), + ns(e < 120 ? e + 240 : e - 120, o, r), + this.opacity + ); + }, + clamp() { + return new tn(Ja(this.h), Xo(this.s), Xo(this.l), di(this.opacity)); + }, + displayable() { + return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && 0 <= this.l && this.l <= 1 && 0 <= this.opacity && this.opacity <= 1; + }, + formatHsl() { + const e = di(this.opacity); + return `${e === 1 ? "hsl(" : "hsla("}${Ja(this.h)}, ${Xo(this.s) * 100}%, ${Xo(this.l) * 100}%${e === 1 ? ")" : `, ${e})`}`; + } +})); +function Ja(e) { + return e = (e || 0) % 360, e < 0 ? e + 360 : e; +} +function Xo(e) { + return Math.max(0, Math.min(1, e || 0)); +} +function ns(e, t, n) { + return (e < 60 ? t + (n - t) * e / 60 : e < 180 ? n : e < 240 ? t + (n - t) * (240 - e) / 60 : t) * 255; +} +const zu = (e) => () => e; +function Hh(e, t) { + return function(n) { + return e + n * t; + }; +} +function Vh(e, t, n) { + return e = Math.pow(e, n), t = Math.pow(t, n) - e, n = 1 / n, function(r) { + return Math.pow(e + r * t, n); + }; +} +function Dh(e) { + return (e = +e) == 1 ? Ru : function(t, n) { + return n - t ? Vh(t, n, e) : zu(isNaN(t) ? n : t); + }; +} +function Ru(e, t) { + var n = t - e; + return n ? Hh(e, n) : zu(isNaN(e) ? t : e); +} +const Qa = function e(t) { + var n = Dh(t); + function r(o, i) { + var s = n((o = Cs(o)).r, (i = Cs(i)).r), a = n(o.g, i.g), l = n(o.b, i.b), u = Ru(o.opacity, i.opacity); + return function(c) { + return o.r = s(c), o.g = a(c), o.b = l(c), o.opacity = u(c), o + ""; + }; + } + return r.gamma = e, r; +}(1); +function Yn(e, t) { + return e = +e, t = +t, function(n) { + return e * (1 - n) + t * n; + }; +} +var ks = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g, rs = new RegExp(ks.source, "g"); +function Ah(e) { + return function() { + return e; + }; +} +function Lh(e) { + return function(t) { + return e(t) + ""; + }; +} +function Oh(e, t) { + var n = ks.lastIndex = rs.lastIndex = 0, r, o, i, s = -1, a = [], l = []; + for (e = e + "", t = t + ""; (r = ks.exec(e)) && (o = rs.exec(t)); ) + (i = o.index) > n && (i = t.slice(n, i), a[s] ? a[s] += i : a[++s] = i), (r = r[0]) === (o = o[0]) ? a[s] ? a[s] += o : a[++s] = o : (a[++s] = null, l.push({ i: s, x: Yn(r, o) })), n = rs.lastIndex; + return n < t.length && (i = t.slice(n), a[s] ? a[s] += i : a[++s] = i), a.length < 2 ? l[0] ? Lh(l[0].x) : Ah(t) : (t = l.length, function(u) { + for (var c = 0, f; c < t; ++c) a[(f = l[c]).i] = f.x(u); + return a.join(""); + }); +} +var el = 180 / Math.PI, $s = { + translateX: 0, + translateY: 0, + rotate: 0, + skewX: 0, + scaleX: 1, + scaleY: 1 +}; +function Bu(e, t, n, r, o, i) { + var s, a, l; + return (s = Math.sqrt(e * e + t * t)) && (e /= s, t /= s), (l = e * n + t * r) && (n -= e * l, r -= t * l), (a = Math.sqrt(n * n + r * r)) && (n /= a, r /= a, l /= a), e * r < t * n && (e = -e, t = -t, l = -l, s = -s), { + translateX: o, + translateY: i, + rotate: Math.atan2(t, e) * el, + skewX: Math.atan(l) * el, + scaleX: s, + scaleY: a + }; +} +var Fo; +function Ih(e) { + const t = new (typeof DOMMatrix == "function" ? DOMMatrix : WebKitCSSMatrix)(e + ""); + return t.isIdentity ? $s : Bu(t.a, t.b, t.c, t.d, t.e, t.f); +} +function zh(e) { + return e == null || (Fo || (Fo = document.createElementNS("http://www.w3.org/2000/svg", "g")), Fo.setAttribute("transform", e), !(e = Fo.transform.baseVal.consolidate())) ? $s : (e = e.matrix, Bu(e.a, e.b, e.c, e.d, e.e, e.f)); +} +function Yu(e, t, n, r) { + function o(u) { + return u.length ? u.pop() + " " : ""; + } + function i(u, c, f, d, g, p) { + if (u !== f || c !== d) { + var x = g.push("translate(", null, t, null, n); + p.push({ i: x - 4, x: Yn(u, f) }, { i: x - 2, x: Yn(c, d) }); + } else (f || d) && g.push("translate(" + f + t + d + n); + } + function s(u, c, f, d) { + u !== c ? (u - c > 180 ? c += 360 : c - u > 180 && (u += 360), d.push({ i: f.push(o(f) + "rotate(", null, r) - 2, x: Yn(u, c) })) : c && f.push(o(f) + "rotate(" + c + r); + } + function a(u, c, f, d) { + u !== c ? d.push({ i: f.push(o(f) + "skewX(", null, r) - 2, x: Yn(u, c) }) : c && f.push(o(f) + "skewX(" + c + r); + } + function l(u, c, f, d, g, p) { + if (u !== f || c !== d) { + var x = g.push(o(g) + "scale(", null, ",", null, ")"); + p.push({ i: x - 4, x: Yn(u, f) }, { i: x - 2, x: Yn(c, d) }); + } else (f !== 1 || d !== 1) && g.push(o(g) + "scale(" + f + "," + d + ")"); + } + return function(u, c) { + var f = [], d = []; + return u = e(u), c = e(c), i(u.translateX, u.translateY, c.translateX, c.translateY, f, d), s(u.rotate, c.rotate, f, d), a(u.skewX, c.skewX, f, d), l(u.scaleX, u.scaleY, c.scaleX, c.scaleY, f, d), u = c = null, function(g) { + for (var p = -1, x = d.length, C; ++p < x; ) f[(C = d[p]).i] = C.x(g); + return f.join(""); + }; + }; +} +var Rh = Yu(Ih, "px, ", "px)", "deg)"), Bh = Yu(zh, ", ", ")", ")"), Yh = 1e-12; +function tl(e) { + return ((e = Math.exp(e)) + 1 / e) / 2; +} +function Zh(e) { + return ((e = Math.exp(e)) - 1 / e) / 2; +} +function Xh(e) { + return ((e = Math.exp(2 * e)) - 1) / (e + 1); +} +const Fh = function e(t, n, r) { + function o(i, s) { + var a = i[0], l = i[1], u = i[2], c = s[0], f = s[1], d = s[2], g = c - a, p = f - l, x = g * g + p * p, C, $; + if (x < Yh) + $ = Math.log(d / u) / t, C = function(E) { + return [ + a + E * g, + l + E * p, + u * Math.exp(t * E * $) + ]; + }; + else { + var m = Math.sqrt(x), _ = (d * d - u * u + r * x) / (2 * u * n * m), v = (d * d - u * u - r * x) / (2 * d * n * m), b = Math.log(Math.sqrt(_ * _ + 1) - _), N = Math.log(Math.sqrt(v * v + 1) - v); + $ = (N - b) / t, C = function(E) { + var M = E * $, D = tl(b), V = u / (n * m) * (D * Xh(t * M + b) - Zh(b)); + return [ + a + V * g, + l + V * p, + u * D / tl(t * M + b) + ]; + }; + } + return C.duration = $ * 1e3 * t / Math.SQRT2, C; + } + return o.rho = function(i) { + var s = Math.max(1e-3, +i), a = s * s, l = a * a; + return e(s, a, l); + }, o; +}(Math.SQRT2, 2, 4); +var Vr = 0, to = 0, Jr = 0, Zu = 1e3, fi, no, gi = 0, ur = 0, Ri = 0, po = typeof performance == "object" && performance.now ? performance : Date, Xu = typeof window == "object" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(e) { + setTimeout(e, 17); +}; +function oa() { + return ur || (Xu(Wh), ur = po.now() + Ri); +} +function Wh() { + ur = 0; +} +function hi() { + this._call = this._time = this._next = null; +} +hi.prototype = Fu.prototype = { + constructor: hi, + restart: function(e, t, n) { + if (typeof e != "function") throw new TypeError("callback is not a function"); + n = (n == null ? oa() : +n) + (t == null ? 0 : +t), !this._next && no !== this && (no ? no._next = this : fi = this, no = this), this._call = e, this._time = n, Es(); + }, + stop: function() { + this._call && (this._call = null, this._time = 1 / 0, Es()); + } +}; +function Fu(e, t, n) { + var r = new hi(); + return r.restart(e, t, n), r; +} +function Kh() { + oa(), ++Vr; + for (var e = fi, t; e; ) + (t = ur - e._time) >= 0 && e._call.call(void 0, t), e = e._next; + --Vr; +} +function nl() { + ur = (gi = po.now()) + Ri, Vr = to = 0; + try { + Kh(); + } finally { + Vr = 0, Gh(), ur = 0; + } +} +function qh() { + var e = po.now(), t = e - gi; + t > Zu && (Ri -= t, gi = e); +} +function Gh() { + for (var e, t = fi, n, r = 1 / 0; t; ) + t._call ? (r > t._time && (r = t._time), e = t, t = t._next) : (n = t._next, t._next = null, t = e ? e._next = n : fi = n); + no = e, Es(r); +} +function Es(e) { + if (!Vr) { + to && (to = clearTimeout(to)); + var t = e - ur; + t > 24 ? (e < 1 / 0 && (to = setTimeout(nl, e - po.now() - Ri)), Jr && (Jr = clearInterval(Jr))) : (Jr || (gi = po.now(), Jr = setInterval(qh, Zu)), Vr = 1, Xu(nl)); + } +} +function rl(e, t, n) { + var r = new hi(); + return t = t == null ? 0 : +t, r.restart((o) => { + r.stop(), e(o + t); + }, t, n), r; +} +var Uh = Ii("start", "end", "cancel", "interrupt"), jh = [], Wu = 0, ol = 1, Ss = 2, jo = 3, il = 4, Ps = 5, Jo = 6; +function Bi(e, t, n, r, o, i) { + var s = e.__transition; + if (!s) e.__transition = {}; + else if (n in s) return; + Jh(e, n, { + name: t, + index: r, + // For context during callback. + group: o, + // For context during callback. + on: Uh, + tween: jh, + time: i.time, + delay: i.delay, + duration: i.duration, + ease: i.ease, + timer: null, + state: Wu + }); +} +function ia(e, t) { + var n = cn(e, t); + if (n.state > Wu) throw new Error("too late; already scheduled"); + return n; +} +function Cn(e, t) { + var n = cn(e, t); + if (n.state > jo) throw new Error("too late; already running"); + return n; +} +function cn(e, t) { + var n = e.__transition; + if (!n || !(n = n[t])) throw new Error("transition not found"); + return n; +} +function Jh(e, t, n) { + var r = e.__transition, o; + r[t] = n, n.timer = Fu(i, 0, n.time); + function i(u) { + n.state = ol, n.timer.restart(s, n.delay, n.time), n.delay <= u && s(u - n.delay); + } + function s(u) { + var c, f, d, g; + if (n.state !== ol) return l(); + for (c in r) + if (g = r[c], g.name === n.name) { + if (g.state === jo) return rl(s); + g.state === il ? (g.state = Jo, g.timer.stop(), g.on.call("interrupt", e, e.__data__, g.index, g.group), delete r[c]) : +c < t && (g.state = Jo, g.timer.stop(), g.on.call("cancel", e, e.__data__, g.index, g.group), delete r[c]); + } + if (rl(function() { + n.state === jo && (n.state = il, n.timer.restart(a, n.delay, n.time), a(u)); + }), n.state = Ss, n.on.call("start", e, e.__data__, n.index, n.group), n.state === Ss) { + for (n.state = jo, o = new Array(d = n.tween.length), c = 0, f = -1; c < d; ++c) + (g = n.tween[c].value.call(e, e.__data__, n.index, n.group)) && (o[++f] = g); + o.length = f + 1; + } + } + function a(u) { + for (var c = u < n.duration ? n.ease.call(null, u / n.duration) : (n.timer.restart(l), n.state = Ps, 1), f = -1, d = o.length; ++f < d; ) + o[f].call(e, c); + n.state === Ps && (n.on.call("end", e, e.__data__, n.index, n.group), l()); + } + function l() { + n.state = Jo, n.timer.stop(), delete r[t]; + for (var u in r) return; + delete e.__transition; + } +} +function Qo(e, t) { + var n = e.__transition, r, o, i = !0, s; + if (n) { + t = t == null ? null : t + ""; + for (s in n) { + if ((r = n[s]).name !== t) { + i = !1; + continue; + } + o = r.state > Ss && r.state < Ps, r.state = Jo, r.timer.stop(), r.on.call(o ? "interrupt" : "cancel", e, e.__data__, r.index, r.group), delete n[s]; + } + i && delete e.__transition; + } +} +function Qh(e) { + return this.each(function() { + Qo(this, e); + }); +} +function ev(e, t) { + var n, r; + return function() { + var o = Cn(this, e), i = o.tween; + if (i !== n) { + r = n = i; + for (var s = 0, a = r.length; s < a; ++s) + if (r[s].name === t) { + r = r.slice(), r.splice(s, 1); + break; + } + } + o.tween = r; + }; +} +function tv(e, t, n) { + var r, o; + if (typeof n != "function") throw new Error(); + return function() { + var i = Cn(this, e), s = i.tween; + if (s !== r) { + o = (r = s).slice(); + for (var a = { name: t, value: n }, l = 0, u = o.length; l < u; ++l) + if (o[l].name === t) { + o[l] = a; + break; + } + l === u && o.push(a); + } + i.tween = o; + }; +} +function nv(e, t) { + var n = this._id; + if (e += "", arguments.length < 2) { + for (var r = cn(this.node(), n).tween, o = 0, i = r.length, s; o < i; ++o) + if ((s = r[o]).name === e) + return s.value; + return null; + } + return this.each((t == null ? ev : tv)(n, e, t)); +} +function sa(e, t, n) { + var r = e._id; + return e.each(function() { + var o = Cn(this, r); + (o.value || (o.value = {}))[t] = n.apply(this, arguments); + }), function(o) { + return cn(o, r).value[t]; + }; +} +function Ku(e, t) { + var n; + return (typeof t == "number" ? Yn : t instanceof vo ? Qa : (n = vo(t)) ? (t = n, Qa) : Oh)(e, t); +} +function rv(e) { + return function() { + this.removeAttribute(e); + }; +} +function ov(e) { + return function() { + this.removeAttributeNS(e.space, e.local); + }; +} +function iv(e, t, n) { + var r, o = n + "", i; + return function() { + var s = this.getAttribute(e); + return s === o ? null : s === r ? i : i = t(r = s, n); + }; +} +function sv(e, t, n) { + var r, o = n + "", i; + return function() { + var s = this.getAttributeNS(e.space, e.local); + return s === o ? null : s === r ? i : i = t(r = s, n); + }; +} +function av(e, t, n) { + var r, o, i; + return function() { + var s, a = n(this), l; + return a == null ? void this.removeAttribute(e) : (s = this.getAttribute(e), l = a + "", s === l ? null : s === r && l === o ? i : (o = l, i = t(r = s, a))); + }; +} +function lv(e, t, n) { + var r, o, i; + return function() { + var s, a = n(this), l; + return a == null ? void this.removeAttributeNS(e.space, e.local) : (s = this.getAttributeNS(e.space, e.local), l = a + "", s === l ? null : s === r && l === o ? i : (o = l, i = t(r = s, a))); + }; +} +function uv(e, t) { + var n = zi(e), r = n === "transform" ? Bh : Ku; + return this.attrTween(e, typeof t == "function" ? (n.local ? lv : av)(n, r, sa(this, "attr." + e, t)) : t == null ? (n.local ? ov : rv)(n) : (n.local ? sv : iv)(n, r, t)); +} +function cv(e, t) { + return function(n) { + this.setAttribute(e, t.call(this, n)); + }; +} +function dv(e, t) { + return function(n) { + this.setAttributeNS(e.space, e.local, t.call(this, n)); + }; +} +function fv(e, t) { + var n, r; + function o() { + var i = t.apply(this, arguments); + return i !== r && (n = (r = i) && dv(e, i)), n; + } + return o._value = t, o; +} +function gv(e, t) { + var n, r; + function o() { + var i = t.apply(this, arguments); + return i !== r && (n = (r = i) && cv(e, i)), n; + } + return o._value = t, o; +} +function hv(e, t) { + var n = "attr." + e; + if (arguments.length < 2) return (n = this.tween(n)) && n._value; + if (t == null) return this.tween(n, null); + if (typeof t != "function") throw new Error(); + var r = zi(e); + return this.tween(n, (r.local ? fv : gv)(r, t)); +} +function vv(e, t) { + return function() { + ia(this, e).delay = +t.apply(this, arguments); + }; +} +function pv(e, t) { + return t = +t, function() { + ia(this, e).delay = t; + }; +} +function mv(e) { + var t = this._id; + return arguments.length ? this.each((typeof e == "function" ? vv : pv)(t, e)) : cn(this.node(), t).delay; +} +function yv(e, t) { + return function() { + Cn(this, e).duration = +t.apply(this, arguments); + }; +} +function wv(e, t) { + return t = +t, function() { + Cn(this, e).duration = t; + }; +} +function _v(e) { + var t = this._id; + return arguments.length ? this.each((typeof e == "function" ? yv : wv)(t, e)) : cn(this.node(), t).duration; +} +function xv(e, t) { + if (typeof t != "function") throw new Error(); + return function() { + Cn(this, e).ease = t; + }; +} +function bv(e) { + var t = this._id; + return arguments.length ? this.each(xv(t, e)) : cn(this.node(), t).ease; +} +function Cv(e, t) { + return function() { + var n = t.apply(this, arguments); + if (typeof n != "function") throw new Error(); + Cn(this, e).ease = n; + }; +} +function kv(e) { + if (typeof e != "function") throw new Error(); + return this.each(Cv(this._id, e)); +} +function $v(e) { + typeof e != "function" && (e = $u(e)); + for (var t = this._groups, n = t.length, r = new Array(n), o = 0; o < n; ++o) + for (var i = t[o], s = i.length, a = r[o] = [], l, u = 0; u < s; ++u) + (l = i[u]) && e.call(l, l.__data__, u, i) && a.push(l); + return new Ln(r, this._parents, this._name, this._id); +} +function Ev(e) { + if (e._id !== this._id) throw new Error(); + for (var t = this._groups, n = e._groups, r = t.length, o = n.length, i = Math.min(r, o), s = new Array(r), a = 0; a < i; ++a) + for (var l = t[a], u = n[a], c = l.length, f = s[a] = new Array(c), d, g = 0; g < c; ++g) + (d = l[g] || u[g]) && (f[g] = d); + for (; a < r; ++a) + s[a] = t[a]; + return new Ln(s, this._parents, this._name, this._id); +} +function Sv(e) { + return (e + "").trim().split(/^|\s+/).every(function(t) { + var n = t.indexOf("."); + return n >= 0 && (t = t.slice(0, n)), !t || t === "start"; + }); +} +function Pv(e, t, n) { + var r, o, i = Sv(t) ? ia : Cn; + return function() { + var s = i(this, e), a = s.on; + a !== r && (o = (r = a).copy()).on(t, n), s.on = o; + }; +} +function Nv(e, t) { + var n = this._id; + return arguments.length < 2 ? cn(this.node(), n).on.on(e) : this.each(Pv(n, e, t)); +} +function Mv(e) { + return function() { + var t = this.parentNode; + for (var n in this.__transition) if (+n !== e) return; + t && t.removeChild(this); + }; +} +function Tv() { + return this.on("end.remove", Mv(this._id)); +} +function Hv(e) { + var t = this._name, n = this._id; + typeof e != "function" && (e = ta(e)); + for (var r = this._groups, o = r.length, i = new Array(o), s = 0; s < o; ++s) + for (var a = r[s], l = a.length, u = i[s] = new Array(l), c, f, d = 0; d < l; ++d) + (c = a[d]) && (f = e.call(c, c.__data__, d, a)) && ("__data__" in c && (f.__data__ = c.__data__), u[d] = f, Bi(u[d], t, n, d, u, cn(c, n))); + return new Ln(i, this._parents, t, n); +} +function Vv(e) { + var t = this._name, n = this._id; + typeof e != "function" && (e = ku(e)); + for (var r = this._groups, o = r.length, i = [], s = [], a = 0; a < o; ++a) + for (var l = r[a], u = l.length, c, f = 0; f < u; ++f) + if (c = l[f]) { + for (var d = e.call(c, c.__data__, f, l), g, p = cn(c, n), x = 0, C = d.length; x < C; ++x) + (g = d[x]) && Bi(g, t, n, x, d, p); + i.push(d), s.push(c); + } + return new Ln(i, s, t, n); +} +var Dv = Eo.prototype.constructor; +function Av() { + return new Dv(this._groups, this._parents); +} +function Lv(e, t) { + var n, r, o; + return function() { + var i = Hr(this, e), s = (this.style.removeProperty(e), Hr(this, e)); + return i === s ? null : i === n && s === r ? o : o = t(n = i, r = s); + }; +} +function qu(e) { + return function() { + this.style.removeProperty(e); + }; +} +function Ov(e, t, n) { + var r, o = n + "", i; + return function() { + var s = Hr(this, e); + return s === o ? null : s === r ? i : i = t(r = s, n); + }; +} +function Iv(e, t, n) { + var r, o, i; + return function() { + var s = Hr(this, e), a = n(this), l = a + ""; + return a == null && (l = a = (this.style.removeProperty(e), Hr(this, e))), s === l ? null : s === r && l === o ? i : (o = l, i = t(r = s, a)); + }; +} +function zv(e, t) { + var n, r, o, i = "style." + t, s = "end." + i, a; + return function() { + var l = Cn(this, e), u = l.on, c = l.value[i] == null ? a || (a = qu(t)) : void 0; + (u !== n || o !== c) && (r = (n = u).copy()).on(s, o = c), l.on = r; + }; +} +function Rv(e, t, n) { + var r = (e += "") == "transform" ? Rh : Ku; + return t == null ? this.styleTween(e, Lv(e, r)).on("end.style." + e, qu(e)) : typeof t == "function" ? this.styleTween(e, Iv(e, r, sa(this, "style." + e, t))).each(zv(this._id, e)) : this.styleTween(e, Ov(e, r, t), n).on("end.style." + e, null); +} +function Bv(e, t, n) { + return function(r) { + this.style.setProperty(e, t.call(this, r), n); + }; +} +function Yv(e, t, n) { + var r, o; + function i() { + var s = t.apply(this, arguments); + return s !== o && (r = (o = s) && Bv(e, s, n)), r; + } + return i._value = t, i; +} +function Zv(e, t, n) { + var r = "style." + (e += ""); + if (arguments.length < 2) return (r = this.tween(r)) && r._value; + if (t == null) return this.tween(r, null); + if (typeof t != "function") throw new Error(); + return this.tween(r, Yv(e, t, n ?? "")); +} +function Xv(e) { + return function() { + this.textContent = e; + }; +} +function Fv(e) { + return function() { + var t = e(this); + this.textContent = t ?? ""; + }; +} +function Wv(e) { + return this.tween("text", typeof e == "function" ? Fv(sa(this, "text", e)) : Xv(e == null ? "" : e + "")); +} +function Kv(e) { + return function(t) { + this.textContent = e.call(this, t); + }; +} +function qv(e) { + var t, n; + function r() { + var o = e.apply(this, arguments); + return o !== n && (t = (n = o) && Kv(o)), t; + } + return r._value = e, r; +} +function Gv(e) { + var t = "text"; + if (arguments.length < 1) return (t = this.tween(t)) && t._value; + if (e == null) return this.tween(t, null); + if (typeof e != "function") throw new Error(); + return this.tween(t, qv(e)); +} +function Uv() { + for (var e = this._name, t = this._id, n = Gu(), r = this._groups, o = r.length, i = 0; i < o; ++i) + for (var s = r[i], a = s.length, l, u = 0; u < a; ++u) + if (l = s[u]) { + var c = cn(l, t); + Bi(l, e, n, u, s, { + time: c.time + c.delay + c.duration, + delay: 0, + duration: c.duration, + ease: c.ease + }); + } + return new Ln(r, this._parents, e, n); +} +function jv() { + var e, t, n = this, r = n._id, o = n.size(); + return new Promise(function(i, s) { + var a = { value: s }, l = { value: function() { + --o === 0 && i(); + } }; + n.each(function() { + var u = Cn(this, r), c = u.on; + c !== e && (t = (e = c).copy(), t._.cancel.push(a), t._.interrupt.push(a), t._.end.push(l)), u.on = t; + }), o === 0 && i(); + }); +} +var Jv = 0; +function Ln(e, t, n, r) { + this._groups = e, this._parents = t, this._name = n, this._id = r; +} +function Gu() { + return ++Jv; +} +var $n = Eo.prototype; +Ln.prototype = { + constructor: Ln, + select: Hv, + selectAll: Vv, + selectChild: $n.selectChild, + selectChildren: $n.selectChildren, + filter: $v, + merge: Ev, + selection: Av, + transition: Uv, + call: $n.call, + nodes: $n.nodes, + node: $n.node, + size: $n.size, + empty: $n.empty, + each: $n.each, + on: Nv, + attr: uv, + attrTween: hv, + style: Rv, + styleTween: Zv, + text: Wv, + textTween: Gv, + remove: Tv, + tween: nv, + delay: mv, + duration: _v, + ease: bv, + easeVarying: kv, + end: jv, + [Symbol.iterator]: $n[Symbol.iterator] +}; +function Qv(e) { + return ((e *= 2) <= 1 ? e * e * e : (e -= 2) * e * e + 2) / 2; +} +var e0 = { + time: null, + // Set on use. + delay: 0, + duration: 250, + ease: Qv +}; +function t0(e, t) { + for (var n; !(n = e.__transition) || !(n = n[t]); ) + if (!(e = e.parentNode)) + throw new Error(`transition ${t} not found`); + return n; +} +function n0(e) { + var t, n; + e instanceof Ln ? (t = e._id, e = e._name) : (t = Gu(), (n = e0).time = oa(), e = e == null ? null : e + ""); + for (var r = this._groups, o = r.length, i = 0; i < o; ++i) + for (var s = r[i], a = s.length, l, u = 0; u < a; ++u) + (l = s[u]) && Bi(l, e, t, u, s, n || t0(l, t)); + return new Ln(r, this._parents, e, t); +} +Eo.prototype.interrupt = Qh; +Eo.prototype.transition = n0; +const Wo = (e) => () => e; +function r0(e, { + sourceEvent: t, + target: n, + transform: r, + dispatch: o +}) { + Object.defineProperties(this, { + type: { value: e, enumerable: !0, configurable: !0 }, + sourceEvent: { value: t, enumerable: !0, configurable: !0 }, + target: { value: n, enumerable: !0, configurable: !0 }, + transform: { value: r, enumerable: !0, configurable: !0 }, + _: { value: o } + }); +} +function Pn(e, t, n) { + this.k = e, this.x = t, this.y = n; +} +Pn.prototype = { + constructor: Pn, + scale: function(e) { + return e === 1 ? this : new Pn(this.k * e, this.x, this.y); + }, + translate: function(e, t) { + return e === 0 & t === 0 ? this : new Pn(this.k, this.x + this.k * e, this.y + this.k * t); + }, + apply: function(e) { + return [e[0] * this.k + this.x, e[1] * this.k + this.y]; + }, + applyX: function(e) { + return e * this.k + this.x; + }, + applyY: function(e) { + return e * this.k + this.y; + }, + invert: function(e) { + return [(e[0] - this.x) / this.k, (e[1] - this.y) / this.k]; + }, + invertX: function(e) { + return (e - this.x) / this.k; + }, + invertY: function(e) { + return (e - this.y) / this.k; + }, + rescaleX: function(e) { + return e.copy().domain(e.range().map(this.invertX, this).map(e.invert, e)); + }, + rescaleY: function(e) { + return e.copy().domain(e.range().map(this.invertY, this).map(e.invert, e)); + }, + toString: function() { + return "translate(" + this.x + "," + this.y + ") scale(" + this.k + ")"; + } +}; +var Yi = new Pn(1, 0, 0); +Uu.prototype = Pn.prototype; +function Uu(e) { + for (; !e.__zoom; ) if (!(e = e.parentNode)) return Yi; + return e.__zoom; +} +function os(e) { + e.stopImmediatePropagation(); +} +function Qr(e) { + e.preventDefault(), e.stopImmediatePropagation(); +} +function o0(e) { + return (!e.ctrlKey || e.type === "wheel") && !e.button; +} +function i0() { + var e = this; + return e instanceof SVGElement ? (e = e.ownerSVGElement || e, e.hasAttribute("viewBox") ? (e = e.viewBox.baseVal, [[e.x, e.y], [e.x + e.width, e.y + e.height]]) : [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]]) : [[0, 0], [e.clientWidth, e.clientHeight]]; +} +function sl() { + return this.__zoom || Yi; +} +function s0(e) { + return -e.deltaY * (e.deltaMode === 1 ? 0.05 : e.deltaMode ? 1 : 2e-3) * (e.ctrlKey ? 10 : 1); +} +function a0() { + return navigator.maxTouchPoints || "ontouchstart" in this; +} +function l0(e, t, n) { + var r = e.invertX(t[0][0]) - n[0][0], o = e.invertX(t[1][0]) - n[1][0], i = e.invertY(t[0][1]) - n[0][1], s = e.invertY(t[1][1]) - n[1][1]; + return e.translate( + o > r ? (r + o) / 2 : Math.min(0, r) || Math.max(0, o), + s > i ? (i + s) / 2 : Math.min(0, i) || Math.max(0, s) + ); +} +function ju() { + var e = o0, t = i0, n = l0, r = s0, o = a0, i = [0, 1 / 0], s = [[-1 / 0, -1 / 0], [1 / 0, 1 / 0]], a = 250, l = Fh, u = Ii("start", "zoom", "end"), c, f, d, g = 500, p = 150, x = 0, C = 10; + function $(S) { + S.property("__zoom", sl).on("wheel.zoom", M, { passive: !1 }).on("mousedown.zoom", D).on("dblclick.zoom", V).filter(o).on("touchstart.zoom", A).on("touchmove.zoom", O).on("touchend.zoom touchcancel.zoom", R).style("-webkit-tap-highlight-color", "rgba(0,0,0,0)"); + } + $.transform = function(S, T, k, P) { + var H = S.selection ? S.selection() : S; + H.property("__zoom", sl), S !== H ? b(S, T, k, P) : H.interrupt().each(function() { + N(this, arguments).event(P).start().zoom(null, typeof T == "function" ? T.apply(this, arguments) : T).end(); + }); + }, $.scaleBy = function(S, T, k, P) { + $.scaleTo(S, function() { + var H = this.__zoom.k, I = typeof T == "function" ? T.apply(this, arguments) : T; + return H * I; + }, k, P); + }, $.scaleTo = function(S, T, k, P) { + $.transform(S, function() { + var H = t.apply(this, arguments), I = this.__zoom, B = k == null ? v(H) : typeof k == "function" ? k.apply(this, arguments) : k, F = I.invert(B), K = typeof T == "function" ? T.apply(this, arguments) : T; + return n(_(m(I, K), B, F), H, s); + }, k, P); + }, $.translateBy = function(S, T, k, P) { + $.transform(S, function() { + return n(this.__zoom.translate( + typeof T == "function" ? T.apply(this, arguments) : T, + typeof k == "function" ? k.apply(this, arguments) : k + ), t.apply(this, arguments), s); + }, null, P); + }, $.translateTo = function(S, T, k, P, H) { + $.transform(S, function() { + var I = t.apply(this, arguments), B = this.__zoom, F = P == null ? v(I) : typeof P == "function" ? P.apply(this, arguments) : P; + return n(Yi.translate(F[0], F[1]).scale(B.k).translate( + typeof T == "function" ? -T.apply(this, arguments) : -T, + typeof k == "function" ? -k.apply(this, arguments) : -k + ), I, s); + }, P, H); + }; + function m(S, T) { + return T = Math.max(i[0], Math.min(i[1], T)), T === S.k ? S : new Pn(T, S.x, S.y); + } + function _(S, T, k) { + var P = T[0] - k[0] * S.k, H = T[1] - k[1] * S.k; + return P === S.x && H === S.y ? S : new Pn(S.k, P, H); + } + function v(S) { + return [(+S[0][0] + +S[1][0]) / 2, (+S[0][1] + +S[1][1]) / 2]; + } + function b(S, T, k, P) { + S.on("start.zoom", function() { + N(this, arguments).event(P).start(); + }).on("interrupt.zoom end.zoom", function() { + N(this, arguments).event(P).end(); + }).tween("zoom", function() { + var H = this, I = arguments, B = N(H, I).event(P), F = t.apply(H, I), K = k == null ? v(F) : typeof k == "function" ? k.apply(H, I) : k, ie = Math.max(F[1][0] - F[0][0], F[1][1] - F[0][1]), ee = H.__zoom, W = typeof T == "function" ? T.apply(H, I) : T, ue = l(ee.invert(K).concat(ie / ee.k), W.invert(K).concat(ie / W.k)); + return function(me) { + if (me === 1) me = W; + else { + var Ce = ue(me), ge = ie / Ce[2]; + me = new Pn(ge, K[0] - Ce[0] * ge, K[1] - Ce[1] * ge); + } + B.zoom(null, me); + }; + }); + } + function N(S, T, k) { + return !k && S.__zooming || new E(S, T); + } + function E(S, T) { + this.that = S, this.args = T, this.active = 0, this.sourceEvent = null, this.extent = t.apply(S, T), this.taps = 0; + } + E.prototype = { + event: function(S) { + return S && (this.sourceEvent = S), this; + }, + start: function() { + return ++this.active === 1 && (this.that.__zooming = this, this.emit("start")), this; + }, + zoom: function(S, T) { + return this.mouse && S !== "mouse" && (this.mouse[1] = T.invert(this.mouse[0])), this.touch0 && S !== "touch" && (this.touch0[1] = T.invert(this.touch0[0])), this.touch1 && S !== "touch" && (this.touch1[1] = T.invert(this.touch1[0])), this.that.__zoom = T, this.emit("zoom"), this; + }, + end: function() { + return --this.active === 0 && (delete this.that.__zooming, this.emit("end")), this; + }, + emit: function(S) { + var T = Kt(this.that).datum(); + u.call( + S, + this.that, + new r0(S, { + sourceEvent: this.sourceEvent, + target: $, + transform: this.that.__zoom, + dispatch: u + }), + T + ); + } + }; + function M(S, ...T) { + if (!e.apply(this, arguments)) return; + var k = N(this, T).event(S), P = this.__zoom, H = Math.max(i[0], Math.min(i[1], P.k * Math.pow(2, r.apply(this, arguments)))), I = Qt(S); + if (k.wheel) + (k.mouse[0][0] !== I[0] || k.mouse[0][1] !== I[1]) && (k.mouse[1] = P.invert(k.mouse[0] = I)), clearTimeout(k.wheel); + else { + if (P.k === H) return; + k.mouse = [I, P.invert(I)], Qo(this), k.start(); + } + Qr(S), k.wheel = setTimeout(B, p), k.zoom("mouse", n(_(m(P, H), k.mouse[0], k.mouse[1]), k.extent, s)); + function B() { + k.wheel = null, k.end(); + } + } + function D(S, ...T) { + if (d || !e.apply(this, arguments)) return; + var k = S.currentTarget, P = N(this, T, !0).event(S), H = Kt(S.view).on("mousemove.zoom", K, !0).on("mouseup.zoom", ie, !0), I = Qt(S, k), B = S.clientX, F = S.clientY; + Au(S.view), os(S), P.mouse = [I, this.__zoom.invert(I)], Qo(this), P.start(); + function K(ee) { + if (Qr(ee), !P.moved) { + var W = ee.clientX - B, ue = ee.clientY - F; + P.moved = W * W + ue * ue > x; + } + P.event(ee).zoom("mouse", n(_(P.that.__zoom, P.mouse[0] = Qt(ee, k), P.mouse[1]), P.extent, s)); + } + function ie(ee) { + H.on("mousemove.zoom mouseup.zoom", null), Lu(ee.view, P.moved), Qr(ee), P.event(ee).end(); + } + } + function V(S, ...T) { + if (e.apply(this, arguments)) { + var k = this.__zoom, P = Qt(S.changedTouches ? S.changedTouches[0] : S, this), H = k.invert(P), I = k.k * (S.shiftKey ? 0.5 : 2), B = n(_(m(k, I), P, H), t.apply(this, T), s); + Qr(S), a > 0 ? Kt(this).transition().duration(a).call(b, B, P, S) : Kt(this).call($.transform, B, P, S); + } + } + function A(S, ...T) { + if (e.apply(this, arguments)) { + var k = S.touches, P = k.length, H = N(this, T, S.changedTouches.length === P).event(S), I, B, F, K; + for (os(S), B = 0; B < P; ++B) + F = k[B], K = Qt(F, this), K = [K, this.__zoom.invert(K), F.identifier], H.touch0 ? !H.touch1 && H.touch0[2] !== K[2] && (H.touch1 = K, H.taps = 0) : (H.touch0 = K, I = !0, H.taps = 1 + !!c); + c && (c = clearTimeout(c)), I && (H.taps < 2 && (f = K[0], c = setTimeout(function() { + c = null; + }, g)), Qo(this), H.start()); + } + } + function O(S, ...T) { + if (this.__zooming) { + var k = N(this, T).event(S), P = S.changedTouches, H = P.length, I, B, F, K; + for (Qr(S), I = 0; I < H; ++I) + B = P[I], F = Qt(B, this), k.touch0 && k.touch0[2] === B.identifier ? k.touch0[0] = F : k.touch1 && k.touch1[2] === B.identifier && (k.touch1[0] = F); + if (B = k.that.__zoom, k.touch1) { + var ie = k.touch0[0], ee = k.touch0[1], W = k.touch1[0], ue = k.touch1[1], me = (me = W[0] - ie[0]) * me + (me = W[1] - ie[1]) * me, Ce = (Ce = ue[0] - ee[0]) * Ce + (Ce = ue[1] - ee[1]) * Ce; + B = m(B, Math.sqrt(me / Ce)), F = [(ie[0] + W[0]) / 2, (ie[1] + W[1]) / 2], K = [(ee[0] + ue[0]) / 2, (ee[1] + ue[1]) / 2]; + } else if (k.touch0) F = k.touch0[0], K = k.touch0[1]; + else return; + k.zoom("touch", n(_(B, F, K), k.extent, s)); + } + } + function R(S, ...T) { + if (this.__zooming) { + var k = N(this, T).event(S), P = S.changedTouches, H = P.length, I, B; + for (os(S), d && clearTimeout(d), d = setTimeout(function() { + d = null; + }, g), I = 0; I < H; ++I) + B = P[I], k.touch0 && k.touch0[2] === B.identifier ? delete k.touch0 : k.touch1 && k.touch1[2] === B.identifier && delete k.touch1; + if (k.touch1 && !k.touch0 && (k.touch0 = k.touch1, delete k.touch1), k.touch0) k.touch0[1] = this.__zoom.invert(k.touch0[0]); + else if (k.end(), k.taps === 2 && (B = Qt(B, this), Math.hypot(f[0] - B[0], f[1] - B[1]) < C)) { + var F = Kt(this).on("dblclick.zoom"); + F && F.apply(this, arguments); + } + } + } + return $.wheelDelta = function(S) { + return arguments.length ? (r = typeof S == "function" ? S : Wo(+S), $) : r; + }, $.filter = function(S) { + return arguments.length ? (e = typeof S == "function" ? S : Wo(!!S), $) : e; + }, $.touchable = function(S) { + return arguments.length ? (o = typeof S == "function" ? S : Wo(!!S), $) : o; + }, $.extent = function(S) { + return arguments.length ? (t = typeof S == "function" ? S : Wo([[+S[0][0], +S[0][1]], [+S[1][0], +S[1][1]]]), $) : t; + }, $.scaleExtent = function(S) { + return arguments.length ? (i[0] = +S[0], i[1] = +S[1], $) : [i[0], i[1]]; + }, $.translateExtent = function(S) { + return arguments.length ? (s[0][0] = +S[0][0], s[1][0] = +S[1][0], s[0][1] = +S[0][1], s[1][1] = +S[1][1], $) : [[s[0][0], s[0][1]], [s[1][0], s[1][1]]]; + }, $.constrain = function(S) { + return arguments.length ? (n = S, $) : n; + }, $.duration = function(S) { + return arguments.length ? (a = +S, $) : a; + }, $.interpolate = function(S) { + return arguments.length ? (l = S, $) : l; + }, $.on = function() { + var S = u.on.apply(u, arguments); + return S === u ? $ : S; + }, $.clickDistance = function(S) { + return arguments.length ? (x = (S = +S) * S, $) : Math.sqrt(x); + }, $.tapDistance = function(S) { + return arguments.length ? (C = +S, $) : C; + }, $; +} +const Dr = { + error001: () => "[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001", + error002: () => "It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.", + error003: (e) => `Node type "${e}" not found. Using fallback type "default".`, + error004: () => "The React Flow parent container needs a width and a height to render the graph.", + error005: () => "Only child nodes can use a parent extent.", + error006: () => "Can't create edge. An edge needs a source and a target.", + error007: (e) => `The old edge with id=${e} does not exist.`, + error009: (e) => `Marker type "${e}" doesn't exist.`, + error008: (e, { id: t, sourceHandle: n, targetHandle: r }) => `Couldn't create edge for ${e} handle id: "${e === "source" ? n : r}", edge id: ${t}.`, + error010: () => "Handle: No node id found. Make sure to only use a Handle inside a custom Node.", + error011: (e) => `Edge type "${e}" not found. Using fallback type "default".`, + error012: (e) => `Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`, + error013: (e = "react") => `It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`, + error014: () => "useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.", + error015: () => "It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs." +}, vi = [ + [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY], + [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY] +]; +var cr; +(function(e) { + e.Strict = "strict", e.Loose = "loose"; +})(cr || (cr = {})); +var qn; +(function(e) { + e.Free = "free", e.Vertical = "vertical", e.Horizontal = "horizontal"; +})(qn || (qn = {})); +var pi; +(function(e) { + e.Partial = "partial", e.Full = "full"; +})(pi || (pi = {})); +const Ns = { + inProgress: !1, + isValid: null, + from: null, + fromHandle: null, + fromPosition: null, + fromNode: null, + to: null, + toHandle: null, + toPosition: null, + toNode: null +}; +var Cr; +(function(e) { + e.Bezier = "default", e.Straight = "straight", e.Step = "step", e.SmoothStep = "smoothstep", e.SimpleBezier = "simplebezier"; +})(Cr || (Cr = {})); +var mo; +(function(e) { + e.Arrow = "arrow", e.ArrowClosed = "arrowclosed"; +})(mo || (mo = {})); +var $e; +(function(e) { + e.Left = "left", e.Top = "top", e.Right = "right", e.Bottom = "bottom"; +})($e || ($e = {})); +const al = { + [$e.Left]: $e.Right, + [$e.Right]: $e.Left, + [$e.Top]: $e.Bottom, + [$e.Bottom]: $e.Top +}; +function u0(e, t) { + if (!e && !t) + return !0; + if (!e || !t || e.size !== t.size) + return !1; + if (!e.size && !t.size) + return !0; + for (const n of e.keys()) + if (!t.has(n)) + return !1; + return !0; +} +function ll(e, t, n) { + if (!n) + return; + const r = []; + e.forEach((o, i) => { + t != null && t.has(i) || r.push(o); + }), r.length && n(r); +} +function c0(e) { + return e === null ? null : e ? "valid" : "invalid"; +} +const d0 = (e) => "id" in e && "source" in e && "target" in e, f0 = (e) => "id" in e && "position" in e && !("source" in e) && !("target" in e), aa = (e) => "id" in e && "internals" in e && !("source" in e) && !("target" in e), Po = (e, t = [0, 0]) => { + const { width: n, height: r } = tr(e), o = e.origin ?? t, i = n * o[0], s = r * o[1]; + return { + x: e.position.x - i, + y: e.position.y - s + }; +}, g0 = (e, t = { nodeOrigin: [0, 0], nodeLookup: void 0 }) => { + if (e.length === 0) + return { x: 0, y: 0, width: 0, height: 0 }; + const n = e.reduce((r, o) => { + const i = typeof o == "string"; + let s = !t.nodeLookup && !i ? o : void 0; + t.nodeLookup && (s = i ? t.nodeLookup.get(o) : aa(o) ? o : t.nodeLookup.get(o.id)); + const a = s ? mi(s, t.nodeOrigin) : { x: 0, y: 0, x2: 0, y2: 0 }; + return Zi(r, a); + }, { x: 1 / 0, y: 1 / 0, x2: -1 / 0, y2: -1 / 0 }); + return Xi(n); +}, No = (e, t = {}) => { + if (e.size === 0) + return { x: 0, y: 0, width: 0, height: 0 }; + let n = { x: 1 / 0, y: 1 / 0, x2: -1 / 0, y2: -1 / 0 }; + return e.forEach((r) => { + if (t.filter === void 0 || t.filter(r)) { + const o = mi(r); + n = Zi(n, o); + } + }), Xi(n); +}, Ju = (e, t, [n, r, o] = [0, 0, 1], i = !1, s = !1) => { + const a = { + ...Mo(t, [n, r, o]), + width: t.width / o, + height: t.height / o + }, l = []; + for (const u of e.values()) { + const { measured: c, selectable: f = !0, hidden: d = !1 } = u; + if (s && !f || d) + continue; + const g = c.width ?? u.width ?? u.initialWidth ?? null, p = c.height ?? u.height ?? u.initialHeight ?? null, x = yo(a, Lr(u)), C = (g ?? 0) * (p ?? 0), $ = i && x > 0; + (!u.internals.handleBounds || $ || x >= C || u.dragging) && l.push(u); + } + return l; +}, Ms = (e, t) => { + const n = /* @__PURE__ */ new Set(); + return e.forEach((r) => { + n.add(r.id); + }), t.filter((r) => n.has(r.source) || n.has(r.target)); +}; +function ul(e, t) { + const n = /* @__PURE__ */ new Map(), r = t != null && t.nodes ? new Set(t.nodes.map((o) => o.id)) : null; + return e.forEach((o) => { + o.measured.width && o.measured.height && ((t == null ? void 0 : t.includeHiddenNodes) || !o.hidden) && (!r || r.has(o.id)) && n.set(o.id, o); + }), n; +} +async function cl({ nodes: e, width: t, height: n, panZoom: r, minZoom: o, maxZoom: i }, s) { + if (e.size === 0) + return Promise.resolve(!1); + const a = No(e), l = ua(a, t, n, (s == null ? void 0 : s.minZoom) ?? o, (s == null ? void 0 : s.maxZoom) ?? i, (s == null ? void 0 : s.padding) ?? 0.1); + return await r.setViewport(l, { duration: s == null ? void 0 : s.duration }), Promise.resolve(!0); +} +function h0({ nodeId: e, nextPosition: t, nodeLookup: n, nodeOrigin: r = [0, 0], nodeExtent: o, onError: i }) { + const s = n.get(e), a = s.parentId ? n.get(s.parentId) : void 0, { x: l, y: u } = a ? a.internals.positionAbsolute : { x: 0, y: 0 }, c = s.origin ?? r; + let f = o; + if (s.extent === "parent" && !s.expandParent) + if (!a) + i == null || i("005", Dr.error005()); + else { + const g = a.measured.width, p = a.measured.height; + g && p && (f = [ + [l, u], + [l + g, u + p] + ]); + } + else a && Or(s.extent) && (f = [ + [s.extent[0][0] + l, s.extent[0][1] + u], + [s.extent[1][0] + l, s.extent[1][1] + u] + ]); + const d = Or(f) ? dr(t, f, s.measured) : t; + return (s.measured.width === void 0 || s.measured.height === void 0) && (i == null || i("015", Dr.error015())), { + position: { + x: d.x - l + (s.measured.width ?? 0) * c[0], + y: d.y - u + (s.measured.height ?? 0) * c[1] + }, + positionAbsolute: d + }; +} +async function Qu({ nodesToRemove: e = [], edgesToRemove: t = [], nodes: n, edges: r, onBeforeDelete: o }) { + const i = new Set(e.map((d) => d.id)), s = []; + for (const d of n) { + if (d.deletable === !1) + continue; + const g = i.has(d.id), p = !g && d.parentId && s.find((x) => x.id === d.parentId); + (g || p) && s.push(d); + } + const a = new Set(t.map((d) => d.id)), l = r.filter((d) => d.deletable !== !1), c = Ms(s, l); + for (const d of l) + a.has(d.id) && !c.find((p) => p.id === d.id) && c.push(d); + if (!o) + return { + edges: c, + nodes: s + }; + const f = await o({ + nodes: s, + edges: c + }); + return typeof f == "boolean" ? f ? { edges: c, nodes: s } : { edges: [], nodes: [] } : f; +} +const Ar = (e, t = 0, n = 1) => Math.min(Math.max(e, t), n), dr = (e = { x: 0, y: 0 }, t, n) => ({ + x: Ar(e.x, t[0][0], t[1][0] - ((n == null ? void 0 : n.width) ?? 0)), + y: Ar(e.y, t[0][1], t[1][1] - ((n == null ? void 0 : n.height) ?? 0)) +}); +function ec(e, t, n) { + const { width: r, height: o } = tr(n), { x: i, y: s } = n.internals.positionAbsolute; + return dr(e, [ + [i, s], + [i + r, s + o] + ], t); +} +const dl = (e, t, n) => e < t ? Ar(Math.abs(e - t), 1, t) / t : e > n ? -Ar(Math.abs(e - n), 1, t) / t : 0, tc = (e, t, n = 15, r = 40) => { + const o = dl(e.x, r, t.width - r) * n, i = dl(e.y, r, t.height - r) * n; + return [o, i]; +}, Zi = (e, t) => ({ + x: Math.min(e.x, t.x), + y: Math.min(e.y, t.y), + x2: Math.max(e.x2, t.x2), + y2: Math.max(e.y2, t.y2) +}), Ts = ({ x: e, y: t, width: n, height: r }) => ({ + x: e, + y: t, + x2: e + n, + y2: t + r +}), Xi = ({ x: e, y: t, x2: n, y2: r }) => ({ + x: e, + y: t, + width: n - e, + height: r - t +}), Lr = (e, t = [0, 0]) => { + var o, i; + const { x: n, y: r } = aa(e) ? e.internals.positionAbsolute : Po(e, t); + return { + x: n, + y: r, + width: ((o = e.measured) == null ? void 0 : o.width) ?? e.width ?? e.initialWidth ?? 0, + height: ((i = e.measured) == null ? void 0 : i.height) ?? e.height ?? e.initialHeight ?? 0 + }; +}, mi = (e, t = [0, 0]) => { + var o, i; + const { x: n, y: r } = aa(e) ? e.internals.positionAbsolute : Po(e, t); + return { + x: n, + y: r, + x2: n + (((o = e.measured) == null ? void 0 : o.width) ?? e.width ?? e.initialWidth ?? 0), + y2: r + (((i = e.measured) == null ? void 0 : i.height) ?? e.height ?? e.initialHeight ?? 0) + }; +}, nc = (e, t) => Xi(Zi(Ts(e), Ts(t))), yo = (e, t) => { + const n = Math.max(0, Math.min(e.x + e.width, t.x + t.width) - Math.max(e.x, t.x)), r = Math.max(0, Math.min(e.y + e.height, t.y + t.height) - Math.max(e.y, t.y)); + return Math.ceil(n * r); +}, fl = (e) => Nn(e.width) && Nn(e.height) && Nn(e.x) && Nn(e.y), Nn = (e) => !isNaN(e) && isFinite(e), v0 = (e, t) => { +}, la = (e, t = [1, 1]) => ({ + x: t[0] * Math.round(e.x / t[0]), + y: t[1] * Math.round(e.y / t[1]) +}), Mo = ({ x: e, y: t }, [n, r, o], i = !1, s = [1, 1]) => { + const a = { + x: (e - n) / o, + y: (t - r) / o + }; + return i ? la(a, s) : a; +}, rc = ({ x: e, y: t }, [n, r, o]) => ({ + x: e * o + n, + y: t * o + r +}), ua = (e, t, n, r, o, i) => { + const s = t / (e.width * (1 + i)), a = n / (e.height * (1 + i)), l = Math.min(s, a), u = Ar(l, r, o), c = e.x + e.width / 2, f = e.y + e.height / 2, d = t / 2 - c * u, g = n / 2 - f * u; + return { x: d, y: g, zoom: u }; +}, yi = () => { + var e; + return typeof navigator < "u" && ((e = navigator == null ? void 0 : navigator.userAgent) == null ? void 0 : e.indexOf("Mac")) >= 0; +}; +function Or(e) { + return e !== void 0 && e !== "parent"; +} +function tr(e) { + var t, n; + return { + width: ((t = e.measured) == null ? void 0 : t.width) ?? e.width ?? e.initialWidth ?? 0, + height: ((n = e.measured) == null ? void 0 : n.height) ?? e.height ?? e.initialHeight ?? 0 + }; +} +function oc(e) { + var t, n; + return (((t = e.measured) == null ? void 0 : t.width) ?? e.width ?? e.initialWidth) !== void 0 && (((n = e.measured) == null ? void 0 : n.height) ?? e.height ?? e.initialHeight) !== void 0; +} +function p0(e, t = { width: 0, height: 0 }, n, r, o) { + const i = { ...e }, s = r.get(n); + if (s) { + const a = s.origin || o; + i.x += s.internals.positionAbsolute.x - (t.width ?? 0) * a[0], i.y += s.internals.positionAbsolute.y - (t.height ?? 0) * a[1]; + } + return i; +} +function is(e, { snapGrid: t = [0, 0], snapToGrid: n = !1, transform: r, containerBounds: o }) { + const { x: i, y: s } = Hn(e), a = Mo({ x: i - ((o == null ? void 0 : o.left) ?? 0), y: s - ((o == null ? void 0 : o.top) ?? 0) }, r), { x: l, y: u } = n ? la(a, t) : a; + return { + xSnapped: l, + ySnapped: u, + ...a + }; +} +const ca = (e) => ({ + width: e.offsetWidth, + height: e.offsetHeight +}), m0 = (e) => { + var t; + return ((t = e == null ? void 0 : e.getRootNode) == null ? void 0 : t.call(e)) || (window == null ? void 0 : window.document); +}, y0 = ["INPUT", "SELECT", "TEXTAREA"]; +function w0(e) { + var r, o; + const t = ((o = (r = e.composedPath) == null ? void 0 : r.call(e)) == null ? void 0 : o[0]) || e.target; + return (t == null ? void 0 : t.nodeType) !== 1 ? !1 : y0.includes(t.nodeName) || t.hasAttribute("contenteditable") || !!t.closest(".nokey"); +} +const ic = (e) => "clientX" in e, Hn = (e, t) => { + var i, s; + const n = ic(e), r = n ? e.clientX : (i = e.touches) == null ? void 0 : i[0].clientX, o = n ? e.clientY : (s = e.touches) == null ? void 0 : s[0].clientY; + return { + x: r - ((t == null ? void 0 : t.left) ?? 0), + y: o - ((t == null ? void 0 : t.top) ?? 0) + }; +}, gl = (e, t, n, r, o) => { + const i = t.querySelectorAll(`.${e}`); + return !i || !i.length ? null : Array.from(i).map((s) => { + const a = s.getBoundingClientRect(); + return { + id: s.getAttribute("data-handleid"), + type: e, + nodeId: o, + position: s.getAttribute("data-handlepos"), + x: (a.left - n.left) / r, + y: (a.top - n.top) / r, + ...ca(s) + }; + }); +}; +function _0({ sourceX: e, sourceY: t, targetX: n, targetY: r, sourceControlX: o, sourceControlY: i, targetControlX: s, targetControlY: a }) { + const l = e * 0.125 + o * 0.375 + s * 0.375 + n * 0.125, u = t * 0.125 + i * 0.375 + a * 0.375 + r * 0.125, c = Math.abs(l - e), f = Math.abs(u - t); + return [l, u, c, f]; +} +function Ko(e, t) { + return e >= 0 ? 0.5 * e : t * 25 * Math.sqrt(-e); +} +function hl({ pos: e, x1: t, y1: n, x2: r, y2: o, c: i }) { + switch (e) { + case $e.Left: + return [t - Ko(t - r, i), n]; + case $e.Right: + return [t + Ko(r - t, i), n]; + case $e.Top: + return [t, n - Ko(n - o, i)]; + case $e.Bottom: + return [t, n + Ko(o - n, i)]; + } +} +function sc({ sourceX: e, sourceY: t, sourcePosition: n = $e.Bottom, targetX: r, targetY: o, targetPosition: i = $e.Top, curvature: s = 0.25 }) { + const [a, l] = hl({ + pos: n, + x1: e, + y1: t, + x2: r, + y2: o, + c: s + }), [u, c] = hl({ + pos: i, + x1: r, + y1: o, + x2: e, + y2: t, + c: s + }), [f, d, g, p] = _0({ + sourceX: e, + sourceY: t, + targetX: r, + targetY: o, + sourceControlX: a, + sourceControlY: l, + targetControlX: u, + targetControlY: c + }); + return [ + `M${e},${t} C${a},${l} ${u},${c} ${r},${o}`, + f, + d, + g, + p + ]; +} +function ac({ sourceX: e, sourceY: t, targetX: n, targetY: r }) { + const o = Math.abs(n - e) / 2, i = n < e ? n + o : n - o, s = Math.abs(r - t) / 2, a = r < t ? r + s : r - s; + return [i, a, o, s]; +} +function x0({ sourceNode: e, targetNode: t, selected: n = !1, zIndex: r = 0, elevateOnSelect: o = !1 }) { + if (!o) + return r; + const i = n || t.selected || e.selected, s = Math.max(e.internals.z || 0, t.internals.z || 0, 1e3); + return r + (i ? s : 0); +} +function b0({ sourceNode: e, targetNode: t, width: n, height: r, transform: o }) { + const i = Zi(mi(e), mi(t)); + i.x === i.x2 && (i.x2 += 1), i.y === i.y2 && (i.y2 += 1); + const s = { + x: -o[0] / o[2], + y: -o[1] / o[2], + width: n / o[2], + height: r / o[2] + }; + return yo(s, Xi(i)) > 0; +} +const C0 = ({ source: e, sourceHandle: t, target: n, targetHandle: r }) => `xy-edge__${e}${t || ""}-${n}${r || ""}`, k0 = (e, t) => t.some((n) => n.source === e.source && n.target === e.target && (n.sourceHandle === e.sourceHandle || !n.sourceHandle && !e.sourceHandle) && (n.targetHandle === e.targetHandle || !n.targetHandle && !e.targetHandle)), $0 = (e, t) => { + if (!e.source || !e.target) + return t; + let n; + return d0(e) ? n = { ...e } : n = { + ...e, + id: C0(e) + }, k0(n, t) ? t : (n.sourceHandle === null && delete n.sourceHandle, n.targetHandle === null && delete n.targetHandle, t.concat(n)); +}; +function Hs({ sourceX: e, sourceY: t, targetX: n, targetY: r }) { + const [o, i, s, a] = ac({ + sourceX: e, + sourceY: t, + targetX: n, + targetY: r + }); + return [`M ${e},${t}L ${n},${r}`, o, i, s, a]; +} +const vl = { + [$e.Left]: { x: -1, y: 0 }, + [$e.Right]: { x: 1, y: 0 }, + [$e.Top]: { x: 0, y: -1 }, + [$e.Bottom]: { x: 0, y: 1 } +}, E0 = ({ source: e, sourcePosition: t = $e.Bottom, target: n }) => t === $e.Left || t === $e.Right ? e.x < n.x ? { x: 1, y: 0 } : { x: -1, y: 0 } : e.y < n.y ? { x: 0, y: 1 } : { x: 0, y: -1 }, pl = (e, t) => Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2)); +function S0({ source: e, sourcePosition: t = $e.Bottom, target: n, targetPosition: r = $e.Top, center: o, offset: i }) { + const s = vl[t], a = vl[r], l = { x: e.x + s.x * i, y: e.y + s.y * i }, u = { x: n.x + a.x * i, y: n.y + a.y * i }, c = E0({ + source: l, + sourcePosition: t, + target: u + }), f = c.x !== 0 ? "x" : "y", d = c[f]; + let g = [], p, x; + const C = { x: 0, y: 0 }, $ = { x: 0, y: 0 }, [m, _, v, b] = ac({ + sourceX: e.x, + sourceY: e.y, + targetX: n.x, + targetY: n.y + }); + if (s[f] * a[f] === -1) { + p = o.x ?? m, x = o.y ?? _; + const E = [ + { x: p, y: l.y }, + { x: p, y: u.y } + ], M = [ + { x: l.x, y: x }, + { x: u.x, y: x } + ]; + s[f] === d ? g = f === "x" ? E : M : g = f === "x" ? M : E; + } else { + const E = [{ x: l.x, y: u.y }], M = [{ x: u.x, y: l.y }]; + if (f === "x" ? g = s.x === d ? M : E : g = s.y === d ? E : M, t === r) { + const R = Math.abs(e[f] - n[f]); + if (R <= i) { + const S = Math.min(i - 1, i - R); + s[f] === d ? C[f] = (l[f] > e[f] ? -1 : 1) * S : $[f] = (u[f] > n[f] ? -1 : 1) * S; + } + } + if (t !== r) { + const R = f === "x" ? "y" : "x", S = s[f] === a[R], T = l[R] > u[R], k = l[R] < u[R]; + (s[f] === 1 && (!S && T || S && k) || s[f] !== 1 && (!S && k || S && T)) && (g = f === "x" ? E : M); + } + const D = { x: l.x + C.x, y: l.y + C.y }, V = { x: u.x + $.x, y: u.y + $.y }, A = Math.max(Math.abs(D.x - g[0].x), Math.abs(V.x - g[0].x)), O = Math.max(Math.abs(D.y - g[0].y), Math.abs(V.y - g[0].y)); + A >= O ? (p = (D.x + V.x) / 2, x = g[0].y) : (p = g[0].x, x = (D.y + V.y) / 2); + } + return [[ + e, + { x: l.x + C.x, y: l.y + C.y }, + ...g, + { x: u.x + $.x, y: u.y + $.y }, + n + ], p, x, v, b]; +} +function P0(e, t, n, r) { + const o = Math.min(pl(e, t) / 2, pl(t, n) / 2, r), { x: i, y: s } = t; + if (e.x === i && i === n.x || e.y === s && s === n.y) + return `L${i} ${s}`; + if (e.y === s) { + const u = e.x < n.x ? -1 : 1, c = e.y < n.y ? 1 : -1; + return `L ${i + o * u},${s}Q ${i},${s} ${i},${s + o * c}`; + } + const a = e.x < n.x ? 1 : -1, l = e.y < n.y ? -1 : 1; + return `L ${i},${s + o * l}Q ${i},${s} ${i + o * a},${s}`; +} +function wi({ sourceX: e, sourceY: t, sourcePosition: n = $e.Bottom, targetX: r, targetY: o, targetPosition: i = $e.Top, borderRadius: s = 5, centerX: a, centerY: l, offset: u = 20 }) { + const [c, f, d, g, p] = S0({ + source: { x: e, y: t }, + sourcePosition: n, + target: { x: r, y: o }, + targetPosition: i, + center: { x: a, y: l }, + offset: u + }); + return [c.reduce((C, $, m) => { + let _ = ""; + return m > 0 && m < c.length - 1 ? _ = P0(c[m - 1], $, c[m + 1], s) : _ = `${m === 0 ? "M" : "L"}${$.x} ${$.y}`, C += _, C; + }, ""), f, d, g, p]; +} +function ml(e) { + var t; + return e && !!(e.internals.handleBounds || (t = e.handles) != null && t.length) && !!(e.measured.width || e.width || e.initialWidth); +} +function N0(e) { + var f; + const { sourceNode: t, targetNode: n } = e; + if (!ml(t) || !ml(n)) + return null; + const r = t.internals.handleBounds || yl(t.handles), o = n.internals.handleBounds || yl(n.handles), i = wl((r == null ? void 0 : r.source) ?? [], e.sourceHandle), s = wl( + // when connection type is loose we can define all handles as sources and connect source -> source + e.connectionMode === cr.Strict ? (o == null ? void 0 : o.target) ?? [] : ((o == null ? void 0 : o.target) ?? []).concat((o == null ? void 0 : o.source) ?? []), + e.targetHandle + ); + if (!i || !s) + return (f = e.onError) == null || f.call(e, "008", Dr.error008(i ? "target" : "source", { + id: e.id, + sourceHandle: e.sourceHandle, + targetHandle: e.targetHandle + })), null; + const a = (i == null ? void 0 : i.position) || $e.Bottom, l = (s == null ? void 0 : s.position) || $e.Top, u = wo(t, i, a), c = wo(n, s, l); + return { + sourceX: u.x, + sourceY: u.y, + targetX: c.x, + targetY: c.y, + sourcePosition: a, + targetPosition: l + }; +} +function yl(e) { + if (!e) + return null; + const t = [], n = []; + for (const r of e) + r.width = r.width ?? 1, r.height = r.height ?? 1, r.type === "source" ? t.push(r) : r.type === "target" && n.push(r); + return { + source: t, + target: n + }; +} +function wo(e, t, n = $e.Left, r = !1) { + const o = ((t == null ? void 0 : t.x) ?? 0) + e.internals.positionAbsolute.x, i = ((t == null ? void 0 : t.y) ?? 0) + e.internals.positionAbsolute.y, { width: s, height: a } = t ?? tr(e); + if (r) + return { x: o + s / 2, y: i + a / 2 }; + switch ((t == null ? void 0 : t.position) ?? n) { + case $e.Top: + return { x: o + s / 2, y: i }; + case $e.Right: + return { x: o + s, y: i + a / 2 }; + case $e.Bottom: + return { x: o + s / 2, y: i + a }; + case $e.Left: + return { x: o, y: i + a / 2 }; + } +} +function wl(e, t) { + return e && (t ? e.find((n) => n.id === t) : e[0]) || null; +} +function Vs(e, t) { + return e ? typeof e == "string" ? e : `${t ? `${t}__` : ""}${Object.keys(e).sort().map((r) => `${r}=${e[r]}`).join("&")}` : ""; +} +function M0(e, { id: t, defaultColor: n, defaultMarkerStart: r, defaultMarkerEnd: o }) { + const i = /* @__PURE__ */ new Set(); + return e.reduce((s, a) => ([a.markerStart || r, a.markerEnd || o].forEach((l) => { + if (l && typeof l == "object") { + const u = Vs(l, t); + i.has(u) || (s.push({ id: u, color: l.color || n, ...l }), i.add(u)); + } + }), s), []).sort((s, a) => s.id.localeCompare(a.id)); +} +function T0(e, t, n, r, o) { + let i = 0.5; + o === "start" ? i = 0 : o === "end" && (i = 1); + let s = [ + (e.x + e.width * i) * t.zoom + t.x, + e.y * t.zoom + t.y - r + ], a = [-100 * i, -100]; + switch (n) { + case $e.Right: + s = [ + (e.x + e.width) * t.zoom + t.x + r, + (e.y + e.height * i) * t.zoom + t.y + ], a = [0, -100 * i]; + break; + case $e.Bottom: + s[1] = (e.y + e.height) * t.zoom + t.y + r, a[1] = 0; + break; + case $e.Left: + s = [ + e.x * t.zoom + t.x - r, + (e.y + e.height * i) * t.zoom + t.y + ], a = [-100, -100 * i]; + break; + } + return `translate(${s[0]}px, ${s[1]}px) translate(${a[0]}%, ${a[1]}%)`; +} +const da = { + nodeOrigin: [0, 0], + nodeExtent: vi, + elevateNodesOnSelect: !0, + defaults: {} +}, H0 = { + ...da, + checkEquality: !0 +}; +function fa(e, t) { + const n = { ...e }; + for (const r in t) + t[r] !== void 0 && (n[r] = t[r]); + return n; +} +function V0(e, t, n) { + const r = fa(da, n); + for (const o of e.values()) + if (o.parentId) + ga(o, e, t, r); + else { + const i = Po(o, r.nodeOrigin), s = Or(o.extent) ? o.extent : r.nodeExtent, a = dr(i, s, tr(o)); + o.internals.positionAbsolute = a; + } +} +function lc(e, t, n, r) { + var a, l; + const o = fa(H0, r), i = new Map(t), s = o != null && o.elevateNodesOnSelect ? 1e3 : 0; + t.clear(), n.clear(); + for (const u of e) { + let c = i.get(u.id); + if (o.checkEquality && u === (c == null ? void 0 : c.internals.userNode)) + t.set(u.id, c); + else { + const f = Po(u, o.nodeOrigin), d = Or(u.extent) ? u.extent : o.nodeExtent, g = dr(f, d, tr(u)); + c = { + ...o.defaults, + ...u, + measured: { + width: (a = u.measured) == null ? void 0 : a.width, + height: (l = u.measured) == null ? void 0 : l.height + }, + internals: { + positionAbsolute: g, + // if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured + handleBounds: u.measured ? c == null ? void 0 : c.internals.handleBounds : void 0, + z: uc(u, s), + userNode: u + } + }, t.set(u.id, c); + } + u.parentId && ga(c, t, n, r); + } +} +function D0(e, t) { + if (!e.parentId) + return; + const n = t.get(e.parentId); + n ? n.set(e.id, e) : t.set(e.parentId, /* @__PURE__ */ new Map([[e.id, e]])); +} +function ga(e, t, n, r) { + const { elevateNodesOnSelect: o, nodeOrigin: i, nodeExtent: s } = fa(da, r), a = e.parentId, l = t.get(a); + if (!l) { + console.warn(`Parent node ${a} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`); + return; + } + D0(e, n); + const u = o ? 1e3 : 0, { x: c, y: f, z: d } = A0(e, l, i, s, u), { positionAbsolute: g } = e.internals, p = c !== g.x || f !== g.y; + (p || d !== e.internals.z) && t.set(e.id, { + ...e, + internals: { + ...e.internals, + positionAbsolute: p ? { x: c, y: f } : g, + z: d + } + }); +} +function uc(e, t) { + return (Nn(e.zIndex) ? e.zIndex : 0) + (e.selected ? t : 0); +} +function A0(e, t, n, r, o) { + const { x: i, y: s } = t.internals.positionAbsolute, a = tr(e), l = Po(e, n), u = Or(e.extent) ? dr(l, e.extent, a) : l; + let c = dr({ x: i + u.x, y: s + u.y }, r, a); + e.extent === "parent" && (c = ec(c, a, t)); + const f = uc(e, o), d = t.internals.z ?? 0; + return { + x: c.x, + y: c.y, + z: d > f ? d : f + }; +} +function L0(e, t, n, r = [0, 0]) { + var s; + const o = [], i = /* @__PURE__ */ new Map(); + for (const a of e) { + const l = t.get(a.parentId); + if (!l) + continue; + const u = ((s = i.get(a.parentId)) == null ? void 0 : s.expandedRect) ?? Lr(l), c = nc(u, a.rect); + i.set(a.parentId, { expandedRect: c, parent: l }); + } + return i.size > 0 && i.forEach(({ expandedRect: a, parent: l }, u) => { + var _; + const c = l.internals.positionAbsolute, f = tr(l), d = l.origin ?? r, g = a.x < c.x ? Math.round(Math.abs(c.x - a.x)) : 0, p = a.y < c.y ? Math.round(Math.abs(c.y - a.y)) : 0, x = Math.max(f.width, Math.round(a.width)), C = Math.max(f.height, Math.round(a.height)), $ = (x - f.width) * d[0], m = (C - f.height) * d[1]; + (g > 0 || p > 0 || $ || m) && (o.push({ + id: u, + type: "position", + position: { + x: l.position.x - g + $, + y: l.position.y - p + m + } + }), (_ = n.get(u)) == null || _.forEach((v) => { + e.some((b) => b.id === v.id) || o.push({ + id: v.id, + type: "position", + position: { + x: v.position.x + g, + y: v.position.y + p + } + }); + })), (f.width < a.width || f.height < a.height || g || p) && o.push({ + id: u, + type: "dimensions", + setAttributes: !0, + dimensions: { + width: x + (g ? d[0] * g - $ : 0), + height: C + (p ? d[1] * p - m : 0) + } + }); + }), o; +} +function O0(e, t, n, r, o, i) { + const s = r == null ? void 0 : r.querySelector(".xyflow__viewport"); + let a = !1; + if (!s) + return { changes: [], updatedInternals: a }; + const l = [], u = window.getComputedStyle(s), { m22: c } = new window.DOMMatrixReadOnly(u.transform), f = []; + for (const d of e.values()) { + const g = t.get(d.id); + if (!g) + continue; + if (g.hidden) { + t.set(g.id, { + ...g, + internals: { + ...g.internals, + handleBounds: void 0 + } + }), a = !0; + continue; + } + const p = ca(d.nodeElement), x = g.measured.width !== p.width || g.measured.height !== p.height; + if (!!(p.width && p.height && (x || !g.internals.handleBounds || d.force))) { + const $ = d.nodeElement.getBoundingClientRect(), m = Or(g.extent) ? g.extent : i; + let { positionAbsolute: _ } = g.internals; + g.parentId && g.extent === "parent" ? _ = ec(_, p, t.get(g.parentId)) : m && (_ = dr(_, m, p)); + const v = { + ...g, + measured: p, + internals: { + ...g.internals, + positionAbsolute: _, + handleBounds: { + source: gl("source", d.nodeElement, $, c, g.id), + target: gl("target", d.nodeElement, $, c, g.id) + } + } + }; + t.set(g.id, v), g.parentId && ga(v, t, n, { nodeOrigin: o }), a = !0, x && (l.push({ + id: g.id, + type: "dimensions", + dimensions: p + }), g.expandParent && g.parentId && f.push({ + id: g.id, + parentId: g.parentId, + rect: Lr(v, o) + })); + } + } + if (f.length > 0) { + const d = L0(f, t, n, o); + l.push(...d); + } + return { changes: l, updatedInternals: a }; +} +async function I0({ delta: e, panZoom: t, transform: n, translateExtent: r, width: o, height: i }) { + if (!t || !e.x && !e.y) + return Promise.resolve(!1); + const s = await t.setViewportConstrained({ + x: n[0] + e.x, + y: n[1] + e.y, + zoom: n[2] + }, [ + [0, 0], + [o, i] + ], r), a = !!s && (s.x !== n[0] || s.y !== n[1] || s.k !== n[2]); + return Promise.resolve(a); +} +function _l(e, t, n, r, o, i) { + let s = o; + const a = r.get(s) || /* @__PURE__ */ new Map(); + r.set(s, a.set(n, t)), s = `${o}-${e}`; + const l = r.get(s) || /* @__PURE__ */ new Map(); + if (r.set(s, l.set(n, t)), i) { + s = `${o}-${e}-${i}`; + const u = r.get(s) || /* @__PURE__ */ new Map(); + r.set(s, u.set(n, t)); + } +} +function cc(e, t, n) { + e.clear(), t.clear(); + for (const r of n) { + const { source: o, target: i, sourceHandle: s = null, targetHandle: a = null } = r, l = { edgeId: r.id, source: o, target: i, sourceHandle: s, targetHandle: a }, u = `${o}-${s}--${i}-${a}`, c = `${i}-${a}--${o}-${s}`; + _l("source", l, c, e, o, s), _l("target", l, u, e, i, a), t.set(r.id, r); + } +} +function z0(e, t) { + if (e === null || t === null) + return !1; + const n = Array.isArray(e) ? e : [e], r = Array.isArray(t) ? t : [t]; + if (n.length !== r.length) + return !1; + for (let o = 0; o < n.length; o++) + if (n[o].id !== r[o].id || n[o].type !== r[o].type || !Object.is(n[o].data, r[o].data)) + return !1; + return !0; +} +function dc(e, t) { + if (!e.parentId) + return !1; + const n = t.get(e.parentId); + return n ? n.selected ? !0 : dc(n, t) : !1; +} +function xl(e, t, n) { + var o; + let r = e; + do { + if ((o = r == null ? void 0 : r.matches) != null && o.call(r, t)) + return !0; + if (r === n) + return !1; + r = r == null ? void 0 : r.parentElement; + } while (r); + return !1; +} +function R0(e, t, n, r) { + const o = /* @__PURE__ */ new Map(); + for (const [i, s] of e) + if ((s.selected || s.id === r) && (!s.parentId || !dc(s, e)) && (s.draggable || t && typeof s.draggable > "u")) { + const a = e.get(i); + a && o.set(i, { + id: i, + position: a.position || { x: 0, y: 0 }, + distance: { + x: n.x - a.internals.positionAbsolute.x, + y: n.y - a.internals.positionAbsolute.y + }, + extent: a.extent, + parentId: a.parentId, + origin: a.origin, + expandParent: a.expandParent, + internals: { + positionAbsolute: a.internals.positionAbsolute || { x: 0, y: 0 } + }, + measured: { + width: a.measured.width ?? 0, + height: a.measured.height ?? 0 + } + }); + } + return o; +} +function ss({ nodeId: e, dragItems: t, nodeLookup: n, dragging: r = !0 }) { + var s, a, l; + const o = []; + for (const [u, c] of t) { + const f = (s = n.get(u)) == null ? void 0 : s.internals.userNode; + f && o.push({ + ...f, + position: c.position, + dragging: r + }); + } + if (!e) + return [o[0], o]; + const i = (a = n.get(e)) == null ? void 0 : a.internals.userNode; + return [ + i ? { + ...i, + position: ((l = t.get(e)) == null ? void 0 : l.position) || i.position, + dragging: r + } : o[0], + o + ]; +} +function B0({ onNodeMouseDown: e, getStoreItems: t, onDragStart: n, onDrag: r, onDragStop: o }) { + let i = { x: null, y: null }, s = 0, a = /* @__PURE__ */ new Map(), l = !1, u = { x: 0, y: 0 }, c = null, f = !1, d = null, g = !1; + function p({ noDragClassName: C, handleSelector: $, domNode: m, isSelectable: _, nodeId: v, nodeClickDistance: b = 0 }) { + d = Kt(m); + function N({ x: V, y: A }, O) { + const { nodeLookup: R, nodeExtent: S, snapGrid: T, snapToGrid: k, nodeOrigin: P, onNodeDrag: H, onSelectionDrag: I, onError: B, updateNodePositions: F } = t(); + i = { x: V, y: A }; + let K = !1, ie = { x: 0, y: 0, x2: 0, y2: 0 }; + if (a.size > 1 && S) { + const ee = No(a); + ie = Ts(ee); + } + for (const [ee, W] of a) { + if (!R.has(ee)) + continue; + let ue = { x: V - W.distance.x, y: A - W.distance.y }; + k && (ue = la(ue, T)); + let me = [ + [S[0][0], S[0][1]], + [S[1][0], S[1][1]] + ]; + if (a.size > 1 && S && !W.extent) { + const { positionAbsolute: ze } = W.internals, G = ze.x - ie.x + S[0][0], se = ze.x + W.measured.width - ie.x2 + S[1][0], Te = ze.y - ie.y + S[0][1], Ae = ze.y + W.measured.height - ie.y2 + S[1][1]; + me = [ + [G, Te], + [se, Ae] + ]; + } + const { position: Ce, positionAbsolute: ge } = h0({ + nodeId: ee, + nextPosition: ue, + nodeLookup: R, + nodeExtent: me, + nodeOrigin: P, + onError: B + }); + K = K || W.position.x !== Ce.x || W.position.y !== Ce.y, W.position = Ce, W.internals.positionAbsolute = ge; + } + if (K && (F(a, !0), O && (r || H || !v && I))) { + const [ee, W] = ss({ + nodeId: v, + dragItems: a, + nodeLookup: R + }); + r == null || r(O, a, ee, W), H == null || H(O, ee, W), v || I == null || I(O, W); + } + } + async function E() { + if (!c) + return; + const { transform: V, panBy: A, autoPanSpeed: O, autoPanOnNodeDrag: R } = t(); + if (!R) { + l = !1, cancelAnimationFrame(s); + return; + } + const [S, T] = tc(u, c, O); + (S !== 0 || T !== 0) && (i.x = (i.x ?? 0) - S / V[2], i.y = (i.y ?? 0) - T / V[2], await A({ x: S, y: T }) && N(i, null)), s = requestAnimationFrame(E); + } + function M(V) { + var K; + const { nodeLookup: A, multiSelectionActive: O, nodesDraggable: R, transform: S, snapGrid: T, snapToGrid: k, selectNodesOnDrag: P, onNodeDragStart: H, onSelectionDragStart: I, unselectNodesAndEdges: B } = t(); + f = !0, (!P || !_) && !O && v && ((K = A.get(v)) != null && K.selected || B()), _ && P && v && (e == null || e(v)); + const F = is(V.sourceEvent, { transform: S, snapGrid: T, snapToGrid: k, containerBounds: c }); + if (i = F, a = R0(A, R, F, v), a.size > 0 && (n || H || !v && I)) { + const [ie, ee] = ss({ + nodeId: v, + dragItems: a, + nodeLookup: A + }); + n == null || n(V.sourceEvent, a, ie, ee), H == null || H(V.sourceEvent, ie, ee), v || I == null || I(V.sourceEvent, ee); + } + } + const D = wh().clickDistance(b).on("start", (V) => { + const { domNode: A, nodeDragThreshold: O, transform: R, snapGrid: S, snapToGrid: T } = t(); + c = (A == null ? void 0 : A.getBoundingClientRect()) || null, g = !1, O === 0 && M(V), i = is(V.sourceEvent, { transform: R, snapGrid: S, snapToGrid: T, containerBounds: c }), u = Hn(V.sourceEvent, c); + }).on("drag", (V) => { + const { autoPanOnNodeDrag: A, transform: O, snapGrid: R, snapToGrid: S, nodeDragThreshold: T, nodeLookup: k } = t(), P = is(V.sourceEvent, { transform: O, snapGrid: R, snapToGrid: S, containerBounds: c }); + if ((V.sourceEvent.type === "touchmove" && V.sourceEvent.touches.length > 1 || // if user deletes a node while dragging, we need to abort the drag to prevent errors + v && !k.has(v)) && (g = !0), !g) { + if (!l && A && f && (l = !0, E()), !f) { + const H = P.xSnapped - (i.x ?? 0), I = P.ySnapped - (i.y ?? 0); + Math.sqrt(H * H + I * I) > T && M(V); + } + (i.x !== P.xSnapped || i.y !== P.ySnapped) && a && f && (u = Hn(V.sourceEvent, c), N(P, V.sourceEvent)); + } + }).on("end", (V) => { + if (!(!f || g) && (l = !1, f = !1, cancelAnimationFrame(s), a.size > 0)) { + const { nodeLookup: A, updateNodePositions: O, onNodeDragStop: R, onSelectionDragStop: S } = t(); + if (O(a, !1), o || R || !v && S) { + const [T, k] = ss({ + nodeId: v, + dragItems: a, + nodeLookup: A, + dragging: !1 + }); + o == null || o(V.sourceEvent, a, T, k), R == null || R(V.sourceEvent, T, k), v || S == null || S(V.sourceEvent, k); + } + } + }).filter((V) => { + const A = V.target; + return !V.button && (!C || !xl(A, `.${C}`, m)) && (!$ || xl(A, $, m)); + }); + d.call(D); + } + function x() { + d == null || d.on(".drag", null); + } + return { + update: p, + destroy: x + }; +} +function Y0(e, t, n) { + const r = [], o = { + x: e.x - n, + y: e.y - n, + width: n * 2, + height: n * 2 + }; + for (const i of t.values()) + yo(o, Lr(i)) > 0 && r.push(i); + return r; +} +const Z0 = 250; +function X0(e, t, n, r) { + var a, l; + let o = [], i = 1 / 0; + const s = Y0(e, n, t + Z0); + for (const u of s) { + const c = [...((a = u.internals.handleBounds) == null ? void 0 : a.source) ?? [], ...((l = u.internals.handleBounds) == null ? void 0 : l.target) ?? []]; + for (const f of c) { + if (r.nodeId === f.nodeId && r.type === f.type && r.id === f.id) + continue; + const { x: d, y: g } = wo(u, f, f.position, !0), p = Math.sqrt(Math.pow(d - e.x, 2) + Math.pow(g - e.y, 2)); + p > t || (p < i ? (o = [{ ...f, x: d, y: g }], i = p) : p === i && o.push({ ...f, x: d, y: g })); + } + } + if (!o.length) + return null; + if (o.length > 1) { + const u = r.type === "source" ? "target" : "source"; + return o.find((c) => c.type === u) ?? o[0]; + } + return o[0]; +} +function fc(e, t, n, r, o, i = !1) { + var u, c, f; + const s = r.get(e); + if (!s) + return null; + const a = o === "strict" ? (u = s.internals.handleBounds) == null ? void 0 : u[t] : [...((c = s.internals.handleBounds) == null ? void 0 : c.source) ?? [], ...((f = s.internals.handleBounds) == null ? void 0 : f.target) ?? []], l = (n ? a == null ? void 0 : a.find((d) => d.id === n) : a == null ? void 0 : a[0]) ?? null; + return l && i ? { ...l, ...wo(s, l, l.position, !0) } : l; +} +function gc(e, t) { + return e || (t != null && t.classList.contains("target") ? "target" : t != null && t.classList.contains("source") ? "source" : null); +} +function F0(e, t) { + let n = null; + return t ? n = !0 : e && !t && (n = !1), n; +} +const hc = () => !0; +function W0(e, { connectionMode: t, connectionRadius: n, handleId: r, nodeId: o, edgeUpdaterType: i, isTarget: s, domNode: a, nodeLookup: l, lib: u, autoPanOnConnect: c, flowId: f, panBy: d, cancelConnection: g, onConnectStart: p, onConnect: x, onConnectEnd: C, isValidConnection: $ = hc, onReconnectEnd: m, updateConnection: _, getTransform: v, getFromHandle: b, autoPanSpeed: N }) { + const E = m0(e.target); + let M = 0, D; + const { x: V, y: A } = Hn(e), O = E == null ? void 0 : E.elementFromPoint(V, A), R = gc(i, O), S = a == null ? void 0 : a.getBoundingClientRect(); + if (!S || !R) + return; + const T = fc(o, R, r, l, t); + if (!T) + return; + let k = Hn(e, S), P = !1, H = null, I = !1, B = null; + function F() { + if (!c || !S) + return; + const [ge, ze] = tc(k, S, N); + d({ x: ge, y: ze }), M = requestAnimationFrame(F); + } + const K = { + ...T, + nodeId: o, + type: R, + position: T.position + }, ie = l.get(o), W = { + inProgress: !0, + isValid: null, + from: wo(ie, K, $e.Left, !0), + fromHandle: K, + fromPosition: K.position, + fromNode: ie, + to: k, + toHandle: null, + toPosition: al[K.position], + toNode: null + }; + _(W); + let ue = W; + p == null || p(e, { nodeId: o, handleId: r, handleType: R }); + function me(ge) { + if (!b() || !K) { + Ce(ge); + return; + } + const ze = v(); + k = Hn(ge, S), D = X0(Mo(k, ze, !1, [1, 1]), n, l, K), P || (F(), P = !0); + const G = vc(ge, { + handle: D, + connectionMode: t, + fromNodeId: o, + fromHandleId: r, + fromType: s ? "target" : "source", + isValidConnection: $, + doc: E, + lib: u, + flowId: f, + nodeLookup: l + }); + B = G.handleDomNode, H = G.connection, I = F0(!!D, G.isValid); + const se = { + // from stays the same + ...ue, + isValid: I, + to: D && I ? rc({ x: D.x, y: D.y }, ze) : k, + toHandle: G.toHandle, + toPosition: I && G.toHandle ? G.toHandle.position : al[K.position], + toNode: G.toHandle ? l.get(G.toHandle.nodeId) : null + }; + I && D && ue.toHandle && se.toHandle && ue.toHandle.type === se.toHandle.type && ue.toHandle.nodeId === se.toHandle.nodeId && ue.toHandle.id === se.toHandle.id && ue.to.x === se.to.x && ue.to.y === se.to.y || (_(se), ue = se); + } + function Ce(ge) { + (D || B) && H && I && (x == null || x(H)); + const { inProgress: ze, ...G } = ue, se = { + ...G, + toPosition: ue.toHandle ? ue.toPosition : null + }; + C == null || C(ge, se), i && (m == null || m(ge, se)), g(), cancelAnimationFrame(M), P = !1, I = !1, H = null, B = null, E.removeEventListener("mousemove", me), E.removeEventListener("mouseup", Ce), E.removeEventListener("touchmove", me), E.removeEventListener("touchend", Ce); + } + E.addEventListener("mousemove", me), E.addEventListener("mouseup", Ce), E.addEventListener("touchmove", me), E.addEventListener("touchend", Ce); +} +function vc(e, { handle: t, connectionMode: n, fromNodeId: r, fromHandleId: o, fromType: i, doc: s, lib: a, flowId: l, isValidConnection: u = hc, nodeLookup: c }) { + const f = i === "target", d = t ? s.querySelector(`.${a}-flow__handle[data-id="${l}-${t == null ? void 0 : t.nodeId}-${t == null ? void 0 : t.id}-${t == null ? void 0 : t.type}"]`) : null, { x: g, y: p } = Hn(e), x = s.elementFromPoint(g, p), C = x != null && x.classList.contains(`${a}-flow__handle`) ? x : d, $ = { + handleDomNode: C, + isValid: !1, + connection: null, + toHandle: null + }; + if (C) { + const m = gc(void 0, C), _ = C.getAttribute("data-nodeid"), v = C.getAttribute("data-handleid"), b = C.classList.contains("connectable"), N = C.classList.contains("connectableend"); + if (!_ || !m) + return $; + const E = { + source: f ? _ : r, + sourceHandle: f ? v : o, + target: f ? r : _, + targetHandle: f ? o : v + }; + $.connection = E; + const D = b && N && (n === cr.Strict ? f && m === "source" || !f && m === "target" : _ !== r || v !== o); + $.isValid = D && u(E), $.toHandle = fc(_, m, v, c, n, !1); + } + return $; +} +const K0 = { + onPointerDown: W0, + isValid: vc +}; +function q0({ domNode: e, panZoom: t, getTransform: n, getViewScale: r }) { + const o = Kt(e); + function i({ translateExtent: a, width: l, height: u, zoomStep: c = 10, pannable: f = !0, zoomable: d = !0, inversePan: g = !1 }) { + const p = (_) => { + const v = n(); + if (_.sourceEvent.type !== "wheel" || !t) + return; + const b = -_.sourceEvent.deltaY * (_.sourceEvent.deltaMode === 1 ? 0.05 : _.sourceEvent.deltaMode ? 1 : 2e-3) * c, N = v[2] * Math.pow(2, b); + t.scaleTo(N); + }; + let x = [0, 0]; + const C = (_) => { + (_.sourceEvent.type === "mousedown" || _.sourceEvent.type === "touchstart") && (x = [ + _.sourceEvent.clientX ?? _.sourceEvent.touches[0].clientX, + _.sourceEvent.clientY ?? _.sourceEvent.touches[0].clientY + ]); + }, $ = (_) => { + const v = n(); + if (_.sourceEvent.type !== "mousemove" && _.sourceEvent.type !== "touchmove" || !t) + return; + const b = [ + _.sourceEvent.clientX ?? _.sourceEvent.touches[0].clientX, + _.sourceEvent.clientY ?? _.sourceEvent.touches[0].clientY + ], N = [b[0] - x[0], b[1] - x[1]]; + x = b; + const E = r() * Math.max(v[2], Math.log(v[2])) * (g ? -1 : 1), M = { + x: v[0] - N[0] * E, + y: v[1] - N[1] * E + }, D = [ + [0, 0], + [l, u] + ]; + t.setViewportConstrained({ + x: M.x, + y: M.y, + zoom: v[2] + }, D, a); + }, m = ju().on("start", C).on("zoom", f ? $ : null).on("zoom.wheel", d ? p : null); + o.call(m, {}); + } + function s() { + o.on("zoom", null); + } + return { + update: i, + destroy: s, + pointer: Qt + }; +} +const G0 = (e, t) => e.x !== t.x || e.y !== t.y || e.zoom !== t.k, Fi = (e) => ({ + x: e.x, + y: e.y, + zoom: e.k +}), as = ({ x: e, y: t, zoom: n }) => Yi.translate(e, t).scale(n), wr = (e, t) => e.target.closest(`.${t}`), pc = (e, t) => t === 2 && Array.isArray(e) && e.includes(2), ls = (e, t = 0, n = () => { +}) => { + const r = typeof t == "number" && t > 0; + return r || n(), r ? e.transition().duration(t).on("end", n) : e; +}, mc = (e) => { + const t = e.ctrlKey && yi() ? 10 : 1; + return -e.deltaY * (e.deltaMode === 1 ? 0.05 : e.deltaMode ? 1 : 2e-3) * t; +}; +function U0({ zoomPanValues: e, noWheelClassName: t, d3Selection: n, d3Zoom: r, panOnScrollMode: o, panOnScrollSpeed: i, zoomOnPinch: s, onPanZoomStart: a, onPanZoom: l, onPanZoomEnd: u }) { + return (c) => { + if (wr(c, t)) + return !1; + c.preventDefault(), c.stopImmediatePropagation(); + const f = n.property("__zoom").k || 1; + if (c.ctrlKey && s) { + const C = Qt(c), $ = mc(c), m = f * Math.pow(2, $); + r.scaleTo(n, m, C, c); + return; + } + const d = c.deltaMode === 1 ? 20 : 1; + let g = o === qn.Vertical ? 0 : c.deltaX * d, p = o === qn.Horizontal ? 0 : c.deltaY * d; + !yi() && c.shiftKey && o !== qn.Vertical && (g = c.deltaY * d, p = 0), r.translateBy( + n, + -(g / f) * i, + -(p / f) * i, + // @ts-ignore + { internal: !0 } + ); + const x = Fi(n.property("__zoom")); + clearTimeout(e.panScrollTimeout), e.isPanScrolling || (e.isPanScrolling = !0, a == null || a(c, x)), e.isPanScrolling && (l == null || l(c, x), e.panScrollTimeout = setTimeout(() => { + u == null || u(c, x), e.isPanScrolling = !1; + }, 150)); + }; +} +function j0({ noWheelClassName: e, preventScrolling: t, d3ZoomHandler: n }) { + return function(r, o) { + if (!t && r.type === "wheel" && !r.ctrlKey || wr(r, e)) + return null; + r.preventDefault(), n.call(this, r, o); + }; +} +function J0({ zoomPanValues: e, onDraggingChange: t, onPanZoomStart: n }) { + return (r) => { + var i, s, a; + if ((i = r.sourceEvent) != null && i.internal) + return; + const o = Fi(r.transform); + e.mouseButton = ((s = r.sourceEvent) == null ? void 0 : s.button) || 0, e.isZoomingOrPanning = !0, e.prevViewport = o, ((a = r.sourceEvent) == null ? void 0 : a.type) === "mousedown" && t(!0), n && (n == null || n(r.sourceEvent, o)); + }; +} +function Q0({ zoomPanValues: e, panOnDrag: t, onPaneContextMenu: n, onTransformChange: r, onPanZoom: o }) { + return (i) => { + var s, a; + e.usedRightMouseButton = !!(n && pc(t, e.mouseButton ?? 0)), (s = i.sourceEvent) != null && s.sync || r([i.transform.x, i.transform.y, i.transform.k]), o && !((a = i.sourceEvent) != null && a.internal) && (o == null || o(i.sourceEvent, Fi(i.transform))); + }; +} +function e2({ zoomPanValues: e, panOnDrag: t, panOnScroll: n, onDraggingChange: r, onPanZoomEnd: o, onPaneContextMenu: i }) { + return (s) => { + var a; + if (!((a = s.sourceEvent) != null && a.internal) && (e.isZoomingOrPanning = !1, i && pc(t, e.mouseButton ?? 0) && !e.usedRightMouseButton && s.sourceEvent && i(s.sourceEvent), e.usedRightMouseButton = !1, r(!1), o && G0(e.prevViewport, s.transform))) { + const l = Fi(s.transform); + e.prevViewport = l, clearTimeout(e.timerId), e.timerId = setTimeout( + () => { + o == null || o(s.sourceEvent, l); + }, + // we need a setTimeout for panOnScroll to supress multiple end events fired during scroll + n ? 150 : 0 + ); + } + }; +} +function t2({ zoomActivationKeyPressed: e, zoomOnScroll: t, zoomOnPinch: n, panOnDrag: r, panOnScroll: o, zoomOnDoubleClick: i, userSelectionActive: s, noWheelClassName: a, noPanClassName: l, lib: u }) { + return (c) => { + var p; + const f = e || t, d = n && c.ctrlKey; + if (c.button === 1 && c.type === "mousedown" && (wr(c, `${u}-flow__node`) || wr(c, `${u}-flow__edge`))) + return !0; + if (!r && !f && !o && !i && !n || s || wr(c, a) && c.type === "wheel" || wr(c, l) && (c.type !== "wheel" || o && c.type === "wheel" && !e) || !n && c.ctrlKey && c.type === "wheel") + return !1; + if (!n && c.type === "touchstart" && ((p = c.touches) == null ? void 0 : p.length) > 1) + return c.preventDefault(), !1; + if (!f && !o && !d && c.type === "wheel" || !r && (c.type === "mousedown" || c.type === "touchstart") || Array.isArray(r) && !r.includes(c.button) && c.type === "mousedown") + return !1; + const g = Array.isArray(r) && r.includes(c.button) || !c.button || c.button <= 1; + return (!c.ctrlKey || c.type === "wheel") && g; + }; +} +function n2({ domNode: e, minZoom: t, maxZoom: n, paneClickDistance: r, translateExtent: o, viewport: i, onPanZoom: s, onPanZoomStart: a, onPanZoomEnd: l, onDraggingChange: u }) { + const c = { + isZoomingOrPanning: !1, + usedRightMouseButton: !1, + prevViewport: { x: 0, y: 0, zoom: 0 }, + mouseButton: 0, + timerId: void 0, + panScrollTimeout: void 0, + isPanScrolling: !1 + }, f = e.getBoundingClientRect(), d = ju().clickDistance(!Nn(r) || r < 0 ? 0 : r).scaleExtent([t, n]).translateExtent(o), g = Kt(e).call(d); + _({ + x: i.x, + y: i.y, + zoom: Ar(i.zoom, t, n) + }, [ + [0, 0], + [f.width, f.height] + ], o); + const p = g.on("wheel.zoom"), x = g.on("dblclick.zoom"); + d.wheelDelta(mc); + function C(O, R) { + return g ? new Promise((S) => { + d == null || d.transform(ls(g, R == null ? void 0 : R.duration, () => S(!0)), O); + }) : Promise.resolve(!1); + } + function $({ noWheelClassName: O, noPanClassName: R, onPaneContextMenu: S, userSelectionActive: T, panOnScroll: k, panOnDrag: P, panOnScrollMode: H, panOnScrollSpeed: I, preventScrolling: B, zoomOnPinch: F, zoomOnScroll: K, zoomOnDoubleClick: ie, zoomActivationKeyPressed: ee, lib: W, onTransformChange: ue }) { + T && !c.isZoomingOrPanning && m(); + const Ce = k && !ee && !T ? U0({ + zoomPanValues: c, + noWheelClassName: O, + d3Selection: g, + d3Zoom: d, + panOnScrollMode: H, + panOnScrollSpeed: I, + zoomOnPinch: F, + onPanZoomStart: a, + onPanZoom: s, + onPanZoomEnd: l + }) : j0({ + noWheelClassName: O, + preventScrolling: B, + d3ZoomHandler: p + }); + if (g.on("wheel.zoom", Ce, { passive: !1 }), !T) { + const ze = J0({ + zoomPanValues: c, + onDraggingChange: u, + onPanZoomStart: a + }); + d.on("start", ze); + const G = Q0({ + zoomPanValues: c, + panOnDrag: P, + onPaneContextMenu: !!S, + onPanZoom: s, + onTransformChange: ue + }); + d.on("zoom", G); + const se = e2({ + zoomPanValues: c, + panOnDrag: P, + panOnScroll: k, + onPaneContextMenu: S, + onPanZoomEnd: l, + onDraggingChange: u + }); + d.on("end", se); + } + const ge = t2({ + zoomActivationKeyPressed: ee, + panOnDrag: P, + zoomOnScroll: K, + panOnScroll: k, + zoomOnDoubleClick: ie, + zoomOnPinch: F, + userSelectionActive: T, + noPanClassName: R, + noWheelClassName: O, + lib: W + }); + d.filter(ge), ie ? g.on("dblclick.zoom", x) : g.on("dblclick.zoom", null); + } + function m() { + d.on("zoom", null); + } + async function _(O, R, S) { + const T = as(O), k = d == null ? void 0 : d.constrain()(T, R, S); + return k && await C(k), new Promise((P) => P(k)); + } + async function v(O, R) { + const S = as(O); + return await C(S, R), new Promise((T) => T(S)); + } + function b(O) { + if (g) { + const R = as(O), S = g.property("__zoom"); + (S.k !== O.zoom || S.x !== O.x || S.y !== O.y) && (d == null || d.transform(g, R, null, { sync: !0 })); + } + } + function N() { + const O = g ? Uu(g.node()) : { x: 0, y: 0, k: 1 }; + return { x: O.x, y: O.y, zoom: O.k }; + } + function E(O, R) { + return g ? new Promise((S) => { + d == null || d.scaleTo(ls(g, R == null ? void 0 : R.duration, () => S(!0)), O); + }) : Promise.resolve(!1); + } + function M(O, R) { + return g ? new Promise((S) => { + d == null || d.scaleBy(ls(g, R == null ? void 0 : R.duration, () => S(!0)), O); + }) : Promise.resolve(!1); + } + function D(O) { + d == null || d.scaleExtent(O); + } + function V(O) { + d == null || d.translateExtent(O); + } + function A(O) { + const R = !Nn(O) || O < 0 ? 0 : O; + d == null || d.clickDistance(R); + } + return { + update: $, + destroy: m, + setViewport: v, + setViewportConstrained: _, + getViewport: N, + scaleTo: E, + scaleBy: M, + setScaleExtent: D, + setTranslateExtent: V, + syncViewport: b, + setClickDistance: A + }; +} +var bl; +(function(e) { + e.Line = "line", e.Handle = "handle"; +})(bl || (bl = {})); +var r2 = /* @__PURE__ */ ne('
    '); +function Qn(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(ie, "$connectable", n), i = () => Q(Ce, "$connectionRadius", n), s = () => Q(ue, "$domNode", n), a = () => Q(me, "$nodeLookup", n), l = () => Q(W, "$connectionMode", n), u = () => Q(G, "$lib", n), c = () => Q(Fe, "$autoPanOnConnect", n), f = () => Q(Oe, "$flowId", n), d = () => Q(ze, "$isValidConnectionStore", n), g = () => Q(Te, "$onedgecreate", n), p = () => Q(oe, "$onConnectAction", n), x = () => Q(ve, "$onConnectStartAction", n), C = () => Q(xe, "$onConnectEndAction", n), $ = () => Q(ge, "$viewport", n), m = () => Q(ct, "$connection", n), _ = () => Q(Le, "$edges", n), v = () => Q(Qe, "$connectionLookup", n), b = re(), N = re(), E = re(), M = re(), D = re(), V = re(), A = re(), O = re(); + let R = w(t, "id", 12, void 0), S = w(t, "type", 12, "source"), T = w(t, "position", 28, () => $e.Top), k = w(t, "style", 12, void 0), P = w(t, "isValidConnection", 12, void 0), H = w(t, "onconnect", 12, void 0), I = w(t, "ondisconnect", 12, void 0), B = w(t, "isConnectable", 12, void 0), F = w(t, "class", 12, void 0); + const K = ar("svelteflow__node_id"), ie = ar("svelteflow__node_connectable"), ee = Ue(), { + connectionMode: W, + domNode: ue, + nodeLookup: me, + connectionRadius: Ce, + viewport: ge, + isValidConnection: ze, + lib: G, + addEdge: se, + onedgecreate: Te, + panBy: Ae, + cancelConnection: Xe, + updateConnection: te, + autoPanOnConnect: Fe, + edges: Le, + connectionLookup: Qe, + onconnect: oe, + onconnectstart: ve, + onconnectend: xe, + flowId: Oe, + connection: ct + } = ee; + function lt(Ne) { + const rt = ic(Ne); + (rt && Ne.button === 0 || !rt) && K0.onPointerDown(Ne, { + handleId: h(E), + nodeId: K, + isTarget: h(b), + connectionRadius: i(), + domNode: s(), + nodeLookup: a(), + connectionMode: l(), + lib: u(), + autoPanOnConnect: c(), + flowId: f(), + isValidConnection: P() ?? d(), + updateConnection: te, + cancelConnection: Xe, + panBy: Ae, + onConnect: (ye) => { + var at; + const ot = g() ? g()(ye) : ye; + ot && (se(ot), (at = p()) == null || at(ye)); + }, + onConnectStart: (ye, ot) => { + var at; + (at = x()) == null || at(ye, { + nodeId: ot.nodeId, + handleId: ot.handleId, + handleType: ot.handleType + }); + }, + onConnectEnd: (ye, ot) => { + var at; + (at = C()) == null || at(ye, ot); + }, + getTransform: () => [ + $().x, + $().y, + $().zoom + ], + getFromHandle: () => m().fromHandle + }); + } + let J = re(null), Re = re(); + he(() => j(S()), () => { + U(b, S() === "target"); + }), he( + () => (j(B()), o()), + () => { + U(N, B() !== void 0 ? B() : o()); + } + ), he(() => j(R()), () => { + U(E, R() || null); + }), he( + () => (j(H()), j(I()), _(), v(), j(S()), j(R())), + () => { + (H() || I()) && (_(), U(Re, v().get(`${K}-${S()}${R() ? `-${R()}` : ""}`))); + } + ), he( + () => (h(J), h(Re), j(I()), j(H())), + () => { + if (h(J) && !u0(h(Re), h(J))) { + const Ne = h(Re) ?? /* @__PURE__ */ new Map(); + ll(h(J), Ne, I()), ll(Ne, h(J), H()); + } + U(J, h(Re) ?? /* @__PURE__ */ new Map()); + } + ), he(() => m(), () => { + U(M, !!m().fromHandle); + }), he( + () => (m(), j(S()), h(E)), + () => { + var Ne, rt, ye; + U(D, ((Ne = m().fromHandle) == null ? void 0 : Ne.nodeId) === K && ((rt = m().fromHandle) == null ? void 0 : rt.type) === S() && ((ye = m().fromHandle) == null ? void 0 : ye.id) === h(E)); + } + ), he( + () => (m(), j(S()), h(E)), + () => { + var Ne, rt, ye; + U(V, ((Ne = m().toHandle) == null ? void 0 : Ne.nodeId) === K && ((rt = m().toHandle) == null ? void 0 : rt.type) === S() && ((ye = m().toHandle) == null ? void 0 : ye.id) === h(E)); + } + ), he( + () => (l(), m(), j(S()), h(E)), + () => { + var Ne, rt, ye; + U(A, l() === cr.Strict ? ((Ne = m().fromHandle) == null ? void 0 : Ne.type) !== S() : K !== ((rt = m().fromHandle) == null ? void 0 : rt.nodeId) || h(E) !== ((ye = m().fromHandle) == null ? void 0 : ye.id)); + } + ), he(() => (h(V), m()), () => { + U(O, h(V) && m().isValid); + }), gt(), He(); + var le = r2(); + ce(le, "data-nodeid", K); + let fn; + var Ut = X(le); + pt(Ut, t, "default", {}), Z(le), Ee( + (Ne) => { + ce(le, "data-handleid", h(E)), ce(le, "data-handlepos", T()), ce(le, "data-id", `${f() ?? ""}-${K ?? ""}-${R() || ""}-${S() ?? ""}`), fn = kt(le, 1, bn(Ne), null, fn, { + valid: h(O), + connectingto: h(V), + connectingfrom: h(D), + source: !h(b), + target: h(b), + connectablestart: h(N), + connectableend: h(N), + connectable: h(N), + connectionindicator: h(N) && (!h(M) || h(A)) + }), ce(le, "style", k()); + }, + [ + () => Et([ + "svelte-flow__handle", + `svelte-flow__handle-${T()}`, + "nodrag", + "nopan", + T(), + F() + ]) + ], + pe + ), Ye("mousedown", le, lt), Ye("touchstart", le, lt), L(e, le); + var gn = fe({ + get id() { + return R(); + }, + set id(Ne) { + R(Ne), y(); + }, + get type() { + return S(); + }, + set type(Ne) { + S(Ne), y(); + }, + get position() { + return T(); + }, + set position(Ne) { + T(Ne), y(); + }, + get style() { + return k(); + }, + set style(Ne) { + k(Ne), y(); + }, + get isValidConnection() { + return P(); + }, + set isValidConnection(Ne) { + P(Ne), y(); + }, + get onconnect() { + return H(); + }, + set onconnect(Ne) { + H(Ne), y(); + }, + get ondisconnect() { + return I(); + }, + set ondisconnect(Ne) { + I(Ne), y(); + }, + get isConnectable() { + return B(); + }, + set isConnectable(Ne) { + B(Ne), y(); + }, + get class() { + return F(); + }, + set class(Ne) { + F(Ne), y(); + } + }); + return r(), gn; +} +ae( + Qn, + { + id: {}, + type: {}, + position: {}, + style: {}, + isValidConnection: {}, + onconnect: {}, + ondisconnect: {}, + isConnectable: {}, + class: {} + }, + ["default"], + [], + !0 +); +var o2 = /* @__PURE__ */ ne(" ", 1); +function _i(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, ["data", "targetPosition", "sourcePosition"]), de(t, !1); + let r = w(t, "data", 28, () => ({ label: "Node" })), o = w(t, "targetPosition", 12, void 0), i = w(t, "sourcePosition", 12, void 0); + He(); + var s = o2(), a = be(s); + const l = /* @__PURE__ */ pe(() => o() ?? $e.Top); + Qn(a, { + type: "target", + get position() { + return h(l); + } + }); + var u = z(a), c = z(u); + const f = /* @__PURE__ */ pe(() => i() ?? $e.Bottom); + return Qn(c, { + type: "source", + get position() { + return h(f); + } + }), Ee(() => { + var d; + return Rt(u, ` ${((d = r()) == null ? void 0 : d.label) ?? ""} `); + }), L(e, s), fe({ + get data() { + return r(); + }, + set data(d) { + r(d), y(); + }, + get targetPosition() { + return o(); + }, + set targetPosition(d) { + o(d), y(); + }, + get sourcePosition() { + return i(); + }, + set sourcePosition(d) { + i(d), y(); + } + }); +} +ae( + _i, + { + data: {}, + targetPosition: {}, + sourcePosition: {} + }, + [], + [], + !0 +); +var i2 = /* @__PURE__ */ ne(" ", 1); +function yc(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, ["data", "sourcePosition"]), de(t, !1); + let r = w(t, "data", 28, () => ({ label: "Node" })), o = w(t, "sourcePosition", 12, void 0); + He(), Se(); + var i = i2(), s = be(i), a = z(s); + const l = /* @__PURE__ */ pe(() => o() ?? $e.Bottom); + return Qn(a, { + type: "source", + get position() { + return h(l); + } + }), Ee(() => { + var u; + return Rt(s, `${((u = r()) == null ? void 0 : u.label) ?? ""} `); + }), L(e, i), fe({ + get data() { + return r(); + }, + set data(u) { + r(u), y(); + }, + get sourcePosition() { + return o(); + }, + set sourcePosition(u) { + o(u), y(); + } + }); +} +ae(yc, { data: {}, sourcePosition: {} }, [], [], !0); +var s2 = /* @__PURE__ */ ne(" ", 1); +function wc(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, ["data", "targetPosition"]), de(t, !1); + let r = w(t, "data", 28, () => ({ label: "Node" })), o = w(t, "targetPosition", 12, void 0); + He(), Se(); + var i = s2(), s = be(i), a = z(s); + const l = /* @__PURE__ */ pe(() => o() ?? $e.Top); + return Qn(a, { + type: "target", + get position() { + return h(l); + } + }), Ee(() => { + var u; + return Rt(s, `${((u = r()) == null ? void 0 : u.label) ?? ""} `); + }), L(e, i), fe({ + get data() { + return r(); + }, + set data(u) { + r(u), y(); + }, + get targetPosition() { + return o(); + }, + set targetPosition(u) { + o(u), y(); + } + }); +} +ae(wc, { data: {}, targetPosition: {} }, [], [], !0); +function _c(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, []); +} +ae(_c, {}, [], [], !0); +function Cl(e, t, n) { + if (!t) + return; + const r = n ? t.querySelector(n) : t; + r && r.appendChild(e); +} +function kr(e, { target: t, domNode: n }) { + return Cl(e, n, t), { + async update({ target: r, domNode: o }) { + Cl(e, o, r); + }, + destroy() { + e.parentNode && e.parentNode.removeChild(e); + } + }; +} +var a2 = /* @__PURE__ */ ne("
    "); +function xc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(i, "$domNode", n), { domNode: i } = Ue(); + He(); + var s = a2(), a = X(s); + pt(a, t, "default", {}), Z(s), vt(s, (l, u) => kr == null ? void 0 : kr(l, u), () => ({ + target: ".svelte-flow__edgelabel-renderer", + domNode: o() + })), L(e, s), fe(), r(); +} +ae(xc, {}, ["default"], [], !0); +function bc() { + const { edgeLookup: e, selectionRect: t, selectionRectMode: n, multiselectionKeyPressed: r, addSelectedEdges: o, unselectNodesAndEdges: i, elementsSelectable: s } = Ue(); + return (a) => { + const l = q(e).get(a); + if (!l) { + console.warn("012", Dr.error012(a)); + return; + } + (l.selectable || q(s) && typeof l.selectable > "u") && (t.set(null), n.set(null), l.selected ? l.selected && q(r) && i({ nodes: [], edges: [l] }) : o([a])); + }; +} +var l2 = /* @__PURE__ */ ne('
    '); +function Cc(e, t) { + de(t, !1); + let n = w(t, "style", 12, void 0), r = w(t, "x", 12, void 0), o = w(t, "y", 12, void 0); + const i = bc(), s = ar("svelteflow__edge_id"); + return He(), xc(e, { + children: (a, l) => { + var u = l2(), c = X(u); + pt(c, t, "default", {}), Z(u), Ee(() => { + ce(u, "style", "pointer-events: all;" + n()), st(u, "transform", `translate(-50%, -50%) translate(${r() ?? ""}px,${o() ?? ""}px)`); + }), Ye("keyup", u, () => { + }), Ye("click", u, () => { + s && i(s); + }), L(a, u); + }, + $$slots: { default: !0 } + }), fe({ + get style() { + return n(); + }, + set style(a) { + n(a), y(); + }, + get x() { + return r(); + }, + set x(a) { + r(a), y(); + }, + get y() { + return o(); + }, + set y(a) { + o(a), y(); + } + }); +} +ae(Cc, { style: {}, x: {}, y: {} }, ["default"], [], !0); +var u2 = /* @__PURE__ */ _e(''), c2 = /* @__PURE__ */ _e('', 1); +function To(e, t) { + de(t, !1); + let n = w(t, "id", 12, void 0), r = w(t, "path", 12), o = w(t, "label", 12, void 0), i = w(t, "labelX", 12, void 0), s = w(t, "labelY", 12, void 0), a = w(t, "labelStyle", 12, void 0), l = w(t, "markerStart", 12, void 0), u = w(t, "markerEnd", 12, void 0), c = w(t, "style", 12, void 0), f = w(t, "interactionWidth", 12, 20), d = w(t, "class", 12, void 0), g = f() === void 0 ? 20 : f(); + He(); + var p = c2(), x = be(p), C = z(x); + { + var $ = (v) => { + var b = u2(); + ce(b, "stroke-opacity", 0), ce(b, "stroke-width", g), Ee(() => ce(b, "d", r())), L(v, b); + }; + ke(C, (v) => { + g && v($); + }); + } + var m = z(C); + { + var _ = (v) => { + Cc(v, { + get x() { + return i(); + }, + get y() { + return s(); + }, + get style() { + return a(); + }, + children: (b, N) => { + Se(); + var E = Ie(); + Ee(() => Rt(E, o())), L(b, E); + }, + $$slots: { default: !0 } + }); + }; + ke(m, (v) => { + o() && v(_); + }); + } + return Ee( + (v) => { + ce(x, "id", n()), ce(x, "d", r()), kt(x, 0, bn(v)), ce(x, "marker-start", l()), ce(x, "marker-end", u()), ce(x, "style", c()); + }, + [ + () => Et(["svelte-flow__edge-path", d()]) + ], + pe + ), L(e, p), fe({ + get id() { + return n(); + }, + set id(v) { + n(v), y(); + }, + get path() { + return r(); + }, + set path(v) { + r(v), y(); + }, + get label() { + return o(); + }, + set label(v) { + o(v), y(); + }, + get labelX() { + return i(); + }, + set labelX(v) { + i(v), y(); + }, + get labelY() { + return s(); + }, + set labelY(v) { + s(v), y(); + }, + get labelStyle() { + return a(); + }, + set labelStyle(v) { + a(v), y(); + }, + get markerStart() { + return l(); + }, + set markerStart(v) { + l(v), y(); + }, + get markerEnd() { + return u(); + }, + set markerEnd(v) { + u(v), y(); + }, + get style() { + return c(); + }, + set style(v) { + c(v), y(); + }, + get interactionWidth() { + return f(); + }, + set interactionWidth(v) { + f(v), y(); + }, + get class() { + return d(); + }, + set class(v) { + d(v), y(); + } + }); +} +ae( + To, + { + id: {}, + path: {}, + label: {}, + labelX: {}, + labelY: {}, + labelStyle: {}, + markerStart: {}, + markerEnd: {}, + style: {}, + interactionWidth: {}, + class: {} + }, + [], + [], + !0 +); +function xi(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, [ + "label", + "labelStyle", + "style", + "markerStart", + "markerEnd", + "interactionWidth", + "sourceX", + "sourceY", + "sourcePosition", + "targetX", + "targetY", + "targetPosition" + ]), de(t, !1); + const r = re(), o = re(), i = re(); + let s = w(t, "label", 12, void 0), a = w(t, "labelStyle", 12, void 0), l = w(t, "style", 12, void 0), u = w(t, "markerStart", 12, void 0), c = w(t, "markerEnd", 12, void 0), f = w(t, "interactionWidth", 12, void 0), d = w(t, "sourceX", 12), g = w(t, "sourceY", 12), p = w(t, "sourcePosition", 12), x = w(t, "targetX", 12), C = w(t, "targetY", 12), $ = w(t, "targetPosition", 12); + return he( + () => (h(r), h(o), h(i), j(d()), j(g()), j(x()), j(C()), j(p()), j($())), + () => { + ((m) => (U(r, m[0]), U(o, m[1]), U(i, m[2])))(sc({ + sourceX: d(), + sourceY: g(), + targetX: x(), + targetY: C(), + sourcePosition: p(), + targetPosition: $() + })); + } + ), gt(), He(), To(e, { + get path() { + return h(r); + }, + get labelX() { + return h(o); + }, + get labelY() { + return h(i); + }, + get label() { + return s(); + }, + get labelStyle() { + return a(); + }, + get markerStart() { + return u(); + }, + get markerEnd() { + return c(); + }, + get interactionWidth() { + return f(); + }, + get style() { + return l(); + } + }), fe({ + get label() { + return s(); + }, + set label(m) { + s(m), y(); + }, + get labelStyle() { + return a(); + }, + set labelStyle(m) { + a(m), y(); + }, + get style() { + return l(); + }, + set style(m) { + l(m), y(); + }, + get markerStart() { + return u(); + }, + set markerStart(m) { + u(m), y(); + }, + get markerEnd() { + return c(); + }, + set markerEnd(m) { + c(m), y(); + }, + get interactionWidth() { + return f(); + }, + set interactionWidth(m) { + f(m), y(); + }, + get sourceX() { + return d(); + }, + set sourceX(m) { + d(m), y(); + }, + get sourceY() { + return g(); + }, + set sourceY(m) { + g(m), y(); + }, + get sourcePosition() { + return p(); + }, + set sourcePosition(m) { + p(m), y(); + }, + get targetX() { + return x(); + }, + set targetX(m) { + x(m), y(); + }, + get targetY() { + return C(); + }, + set targetY(m) { + C(m), y(); + }, + get targetPosition() { + return $(); + }, + set targetPosition(m) { + $(m), y(); + } + }); +} +ae( + xi, + { + label: {}, + labelStyle: {}, + style: {}, + markerStart: {}, + markerEnd: {}, + interactionWidth: {}, + sourceX: {}, + sourceY: {}, + sourcePosition: {}, + targetX: {}, + targetY: {}, + targetPosition: {} + }, + [], + [], + !0 +); +function kc(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, [ + "label", + "labelStyle", + "style", + "markerStart", + "markerEnd", + "interactionWidth", + "sourceX", + "sourceY", + "sourcePosition", + "targetX", + "targetY", + "targetPosition" + ]), de(t, !1); + const r = re(), o = re(), i = re(); + let s = w(t, "label", 12, void 0), a = w(t, "labelStyle", 12, void 0), l = w(t, "style", 12, void 0), u = w(t, "markerStart", 12, void 0), c = w(t, "markerEnd", 12, void 0), f = w(t, "interactionWidth", 12, void 0), d = w(t, "sourceX", 12), g = w(t, "sourceY", 12), p = w(t, "sourcePosition", 12), x = w(t, "targetX", 12), C = w(t, "targetY", 12), $ = w(t, "targetPosition", 12); + return he( + () => (h(r), h(o), h(i), j(d()), j(g()), j(x()), j(C()), j(p()), j($())), + () => { + ((m) => (U(r, m[0]), U(o, m[1]), U(i, m[2])))(wi({ + sourceX: d(), + sourceY: g(), + targetX: x(), + targetY: C(), + sourcePosition: p(), + targetPosition: $() + })); + } + ), gt(), He(), To(e, { + get path() { + return h(r); + }, + get labelX() { + return h(o); + }, + get labelY() { + return h(i); + }, + get label() { + return s(); + }, + get labelStyle() { + return a(); + }, + get markerStart() { + return u(); + }, + get markerEnd() { + return c(); + }, + get interactionWidth() { + return f(); + }, + get style() { + return l(); + } + }), fe({ + get label() { + return s(); + }, + set label(m) { + s(m), y(); + }, + get labelStyle() { + return a(); + }, + set labelStyle(m) { + a(m), y(); + }, + get style() { + return l(); + }, + set style(m) { + l(m), y(); + }, + get markerStart() { + return u(); + }, + set markerStart(m) { + u(m), y(); + }, + get markerEnd() { + return c(); + }, + set markerEnd(m) { + c(m), y(); + }, + get interactionWidth() { + return f(); + }, + set interactionWidth(m) { + f(m), y(); + }, + get sourceX() { + return d(); + }, + set sourceX(m) { + d(m), y(); + }, + get sourceY() { + return g(); + }, + set sourceY(m) { + g(m), y(); + }, + get sourcePosition() { + return p(); + }, + set sourcePosition(m) { + p(m), y(); + }, + get targetX() { + return x(); + }, + set targetX(m) { + x(m), y(); + }, + get targetY() { + return C(); + }, + set targetY(m) { + C(m), y(); + }, + get targetPosition() { + return $(); + }, + set targetPosition(m) { + $(m), y(); + } + }); +} +ae( + kc, + { + label: {}, + labelStyle: {}, + style: {}, + markerStart: {}, + markerEnd: {}, + interactionWidth: {}, + sourceX: {}, + sourceY: {}, + sourcePosition: {}, + targetX: {}, + targetY: {}, + targetPosition: {} + }, + [], + [], + !0 +); +function $c(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, [ + "label", + "labelStyle", + "style", + "markerStart", + "markerEnd", + "interactionWidth", + "sourceX", + "sourceY", + "targetX", + "targetY" + ]), de(t, !1); + const r = re(), o = re(), i = re(); + let s = w(t, "label", 12, void 0), a = w(t, "labelStyle", 12, void 0), l = w(t, "style", 12, void 0), u = w(t, "markerStart", 12, void 0), c = w(t, "markerEnd", 12, void 0), f = w(t, "interactionWidth", 12, void 0), d = w(t, "sourceX", 12), g = w(t, "sourceY", 12), p = w(t, "targetX", 12), x = w(t, "targetY", 12); + return he( + () => (h(r), h(o), h(i), j(d()), j(g()), j(p()), j(x())), + () => { + ((C) => (U(r, C[0]), U(o, C[1]), U(i, C[2])))(Hs({ + sourceX: d(), + sourceY: g(), + targetX: p(), + targetY: x() + })); + } + ), gt(), He(), To(e, { + get path() { + return h(r); + }, + get labelX() { + return h(o); + }, + get labelY() { + return h(i); + }, + get label() { + return s(); + }, + get labelStyle() { + return a(); + }, + get markerStart() { + return u(); + }, + get markerEnd() { + return c(); + }, + get interactionWidth() { + return f(); + }, + get style() { + return l(); + } + }), fe({ + get label() { + return s(); + }, + set label(C) { + s(C), y(); + }, + get labelStyle() { + return a(); + }, + set labelStyle(C) { + a(C), y(); + }, + get style() { + return l(); + }, + set style(C) { + l(C), y(); + }, + get markerStart() { + return u(); + }, + set markerStart(C) { + u(C), y(); + }, + get markerEnd() { + return c(); + }, + set markerEnd(C) { + c(C), y(); + }, + get interactionWidth() { + return f(); + }, + set interactionWidth(C) { + f(C), y(); + }, + get sourceX() { + return d(); + }, + set sourceX(C) { + d(C), y(); + }, + get sourceY() { + return g(); + }, + set sourceY(C) { + g(C), y(); + }, + get targetX() { + return p(); + }, + set targetX(C) { + p(C), y(); + }, + get targetY() { + return x(); + }, + set targetY(C) { + x(C), y(); + } + }); +} +ae( + $c, + { + label: {}, + labelStyle: {}, + style: {}, + markerStart: {}, + markerEnd: {}, + interactionWidth: {}, + sourceX: {}, + sourceY: {}, + targetX: {}, + targetY: {} + }, + [], + [], + !0 +); +function Ec(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]); + nt(n, [ + "label", + "labelStyle", + "style", + "markerStart", + "markerEnd", + "interactionWidth", + "sourceX", + "sourceY", + "sourcePosition", + "targetX", + "targetY", + "targetPosition" + ]), de(t, !1); + const r = re(), o = re(), i = re(); + let s = w(t, "label", 12, void 0), a = w(t, "labelStyle", 12, void 0), l = w(t, "style", 12, void 0), u = w(t, "markerStart", 12, void 0), c = w(t, "markerEnd", 12, void 0), f = w(t, "interactionWidth", 12, void 0), d = w(t, "sourceX", 12), g = w(t, "sourceY", 12), p = w(t, "sourcePosition", 12), x = w(t, "targetX", 12), C = w(t, "targetY", 12), $ = w(t, "targetPosition", 12); + return he( + () => (h(r), h(o), h(i), j(d()), j(g()), j(x()), j(C()), j(p()), j($())), + () => { + ((m) => (U(r, m[0]), U(o, m[1]), U(i, m[2])))(wi({ + sourceX: d(), + sourceY: g(), + targetX: x(), + targetY: C(), + sourcePosition: p(), + targetPosition: $(), + borderRadius: 0 + })); + } + ), gt(), He(), To(e, { + get path() { + return h(r); + }, + get labelX() { + return h(o); + }, + get labelY() { + return h(i); + }, + get label() { + return s(); + }, + get labelStyle() { + return a(); + }, + get markerStart() { + return u(); + }, + get markerEnd() { + return c(); + }, + get interactionWidth() { + return f(); + }, + get style() { + return l(); + } + }), fe({ + get label() { + return s(); + }, + set label(m) { + s(m), y(); + }, + get labelStyle() { + return a(); + }, + set labelStyle(m) { + a(m), y(); + }, + get style() { + return l(); + }, + set style(m) { + l(m), y(); + }, + get markerStart() { + return u(); + }, + set markerStart(m) { + u(m), y(); + }, + get markerEnd() { + return c(); + }, + set markerEnd(m) { + c(m), y(); + }, + get interactionWidth() { + return f(); + }, + set interactionWidth(m) { + f(m), y(); + }, + get sourceX() { + return d(); + }, + set sourceX(m) { + d(m), y(); + }, + get sourceY() { + return g(); + }, + set sourceY(m) { + g(m), y(); + }, + get sourcePosition() { + return p(); + }, + set sourcePosition(m) { + p(m), y(); + }, + get targetX() { + return x(); + }, + set targetX(m) { + x(m), y(); + }, + get targetY() { + return C(); + }, + set targetY(m) { + C(m), y(); + }, + get targetPosition() { + return $(); + }, + set targetPosition(m) { + $(m), y(); + } + }); +} +ae( + Ec, + { + label: {}, + labelStyle: {}, + style: {}, + markerStart: {}, + markerEnd: {}, + interactionWidth: {}, + sourceX: {}, + sourceY: {}, + sourcePosition: {}, + targetX: {}, + targetY: {}, + targetPosition: {} + }, + [], + [], + !0 +); +function d2(e, t) { + const n = e.set, r = t.set, o = q(e), i = q(t); + let a = o.length === 0 && i.length > 0 ? i : o; + e.set(a); + const l = (u) => { + const c = n(u); + return a = c, r(a), c; + }; + e.set = t.set = l, e.update = t.update = (u) => l(u(a)); +} +function f2(e, t) { + const n = e.set, r = t.set; + let o = q(t); + e.set(o); + const i = (s) => { + n(s), r(s), o = s; + }; + e.set = t.set = i, e.update = t.update = (s) => i(s(o)); +} +const g2 = (e, t, n) => { + if (!n) + return; + const r = q(e), o = t.set, i = n.set; + let s = n ? q(n) : { x: 0, y: 0, zoom: 1 }; + t.set(s), t.set = (a) => (o(a), i(a), s = a, a), n.set = (a) => (r == null || r.syncViewport(a), o(a), i(a), s = a, a), t.update = (a) => { + t.set(a(s)); + }, n.update = (a) => { + n.set(a(s)); + }; +}, h2 = (e, t, n, r = [0, 0], o = vi) => { + const { subscribe: i, set: s, update: a } = we([]); + let l = e, u = {}, c = !0; + const f = (x) => (lc(x, t, n, { + elevateNodesOnSelect: c, + nodeOrigin: r, + nodeExtent: o, + defaults: u, + checkEquality: !1 + }), l = x, s(l), l), d = (x) => f(x(l)), g = (x) => { + u = x; + }, p = (x) => { + c = x.elevateNodesOnSelect ?? c; + }; + return f(l), { + subscribe: i, + set: f, + update: d, + setDefaultOptions: g, + setOptions: p + }; +}, v2 = (e, t, n, r) => { + const { subscribe: o, set: i, update: s } = we([]); + let a = e, l = {}; + const u = (d) => { + const g = l ? d.map((p) => ({ ...l, ...p })) : d; + cc(t, n, g), a = g, i(a); + }, c = (d) => u(d(a)), f = (d) => { + l = d; + }; + return u(a), { + subscribe: o, + set: u, + update: c, + setDefaultOptions: f + }; +}, Sc = { + input: yc, + output: wc, + default: _i, + group: _c +}, Pc = { + straight: $c, + smoothstep: kc, + default: xi, + step: Ec +}, p2 = ({ nodes: e = [], edges: t = [], width: n, height: r, fitView: o, nodeOrigin: i, nodeExtent: s }) => { + const a = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), f = i ?? [0, 0], d = s ?? vi; + lc(e, a, l, { + nodeExtent: d, + nodeOrigin: f, + elevateNodesOnSelect: !1, + checkEquality: !1 + }), cc(u, c, t); + let g = { x: 0, y: 0, zoom: 1 }; + if (o && n && r) { + const p = No(a, { + filter: (x) => !!((x.width || x.initialWidth) && (x.height || x.initialHeight)) + }); + g = ua(p, n, r, 0.5, 2, 0.1); + } + return { + flowId: we(null), + nodes: h2(e, a, l, f, d), + nodeLookup: Ft(a), + parentLookup: Ft(l), + edgeLookup: Ft(c), + visibleNodes: Ft([]), + edges: v2(t, u, c), + visibleEdges: Ft([]), + connectionLookup: Ft(u), + height: we(500), + width: we(500), + minZoom: we(0.5), + maxZoom: we(2), + nodeOrigin: we(f), + nodeDragThreshold: we(1), + nodeExtent: we(d), + translateExtent: we(vi), + autoPanOnNodeDrag: we(!0), + autoPanOnConnect: we(!0), + fitViewOnInit: we(!1), + fitViewOnInitDone: we(!1), + fitViewOptions: we(void 0), + panZoom: we(null), + snapGrid: we(null), + dragging: we(!1), + selectionRect: we(null), + selectionKeyPressed: we(!1), + multiselectionKeyPressed: we(!1), + deleteKeyPressed: we(!1), + panActivationKeyPressed: we(!1), + zoomActivationKeyPressed: we(!1), + selectionRectMode: we(null), + selectionMode: we(pi.Partial), + nodeTypes: we(Sc), + edgeTypes: we(Pc), + viewport: we(g), + connectionMode: we(cr.Strict), + domNode: we(null), + connection: Ft(Ns), + connectionLineType: we(Cr.Bezier), + connectionRadius: we(20), + isValidConnection: we(() => !0), + nodesDraggable: we(!0), + nodesConnectable: we(!0), + elementsSelectable: we(!0), + selectNodesOnDrag: we(!0), + markers: Ft([]), + defaultMarkerColor: we("#b1b1b7"), + lib: Ft("svelte"), + onlyRenderVisibleElements: we(!1), + onerror: we(v0), + ondelete: we(void 0), + onedgecreate: we(void 0), + onconnect: we(void 0), + onconnectstart: we(void 0), + onconnectend: we(void 0), + onbeforedelete: we(void 0), + nodesInitialized: we(!1), + edgesInitialized: we(!1), + viewportInitialized: we(!1), + initialized: Ft(!1) + }; +}; +function m2(e) { + const t = Kn([ + e.edges, + e.nodes, + e.nodeLookup, + e.onlyRenderVisibleElements, + e.viewport, + e.width, + e.height + ], ([n, , r, o, i, s, a]) => o && s && a ? n.filter((u) => { + const c = r.get(u.source), f = r.get(u.target); + return c && f && b0({ + sourceNode: c, + targetNode: f, + width: s, + height: a, + transform: [i.x, i.y, i.zoom] + }); + }) : n); + return Kn([t, e.nodes, e.nodeLookup, e.connectionMode, e.onerror], ([n, , r, o, i]) => n.reduce((a, l) => { + const u = r.get(l.source), c = r.get(l.target); + if (!u || !c) + return a; + const f = N0({ + id: l.id, + sourceNode: u, + targetNode: c, + sourceHandle: l.sourceHandle || null, + targetHandle: l.targetHandle || null, + connectionMode: o, + onError: i + }); + return f && a.push({ + ...l, + zIndex: x0({ + selected: l.selected, + zIndex: l.zIndex, + sourceNode: u, + targetNode: c, + elevateOnSelect: !1 + }), + ...f + }), a; + }, [])); +} +function y2(e) { + return Kn([ + e.nodeLookup, + e.onlyRenderVisibleElements, + e.width, + e.height, + e.viewport, + e.nodes + ], ([t, n, r, o, i]) => { + const s = [i.x, i.y, i.zoom]; + return n ? Ju(t, { x: 0, y: 0, width: r, height: o }, s, !0) : Array.from(t.values()); + }); +} +const Wi = Symbol(); +function Nc({ nodes: e, edges: t, width: n, height: r, fitView: o, nodeOrigin: i, nodeExtent: s }) { + const a = p2({ + nodes: e, + edges: t, + width: n, + height: r, + fitView: o, + nodeOrigin: i, + nodeExtent: s + }); + function l(k) { + a.nodeTypes.set({ + ...Sc, + ...k + }); + } + function u(k) { + a.edgeTypes.set({ + ...Pc, + ...k + }); + } + function c(k) { + const P = q(a.edges); + a.edges.set($0(k, P)); + } + const f = (k, P = !1) => { + var I; + const H = q(a.nodeLookup); + for (const [B, F] of k) { + const K = (I = H.get(B)) == null ? void 0 : I.internals.userNode; + K && (K.position = F.position, K.dragging = P); + } + a.nodes.update((B) => B); + }; + function d(k) { + var F, K, ie; + const P = q(a.nodeLookup), H = q(a.parentLookup), { changes: I, updatedInternals: B } = O0(k, P, q(a.parentLookup), q(a.domNode), q(a.nodeOrigin)); + if (B) { + if (V0(P, H, { nodeOrigin: i, nodeExtent: s }), !q(a.fitViewOnInitDone) && q(a.fitViewOnInit)) { + const ee = q(a.fitViewOptions), W = p({ + ...ee, + nodes: ee == null ? void 0 : ee.nodes + }); + a.fitViewOnInitDone.set(W); + } + for (const ee of I) { + const W = (F = P.get(ee.id)) == null ? void 0 : F.internals.userNode; + if (W) + switch (ee.type) { + case "dimensions": { + const ue = { ...W.measured, ...ee.dimensions }; + ee.setAttributes && (W.width = ((K = ee.dimensions) == null ? void 0 : K.width) ?? W.width, W.height = ((ie = ee.dimensions) == null ? void 0 : ie.height) ?? W.height), W.measured = ue; + break; + } + case "position": + W.position = ee.position ?? W.position; + break; + } + } + a.nodes.update((ee) => ee), q(a.nodesInitialized) || a.nodesInitialized.set(!0); + } + } + function g(k) { + const P = q(a.panZoom), H = q(a.domNode); + if (!P || !H) + return Promise.resolve(!1); + const { width: I, height: B } = ca(H), F = ul(q(a.nodeLookup), k); + return cl({ + nodes: F, + width: I, + height: B, + minZoom: q(a.minZoom), + maxZoom: q(a.maxZoom), + panZoom: P + }, k); + } + function p(k) { + const P = q(a.panZoom); + if (!P) + return !1; + const H = ul(q(a.nodeLookup), k); + return cl({ + nodes: H, + width: q(a.width), + height: q(a.height), + minZoom: q(a.minZoom), + maxZoom: q(a.maxZoom), + panZoom: P + }, k), H.size > 0; + } + function x(k, P) { + const H = q(a.panZoom); + return H ? H.scaleBy(k, P) : Promise.resolve(!1); + } + function C(k) { + return x(1.2, k); + } + function $(k) { + return x(1 / 1.2, k); + } + function m(k) { + const P = q(a.panZoom); + P && (P.setScaleExtent([k, q(a.maxZoom)]), a.minZoom.set(k)); + } + function _(k) { + const P = q(a.panZoom); + P && (P.setScaleExtent([q(a.minZoom), k]), a.maxZoom.set(k)); + } + function v(k) { + const P = q(a.panZoom); + P && (P.setTranslateExtent(k), a.translateExtent.set(k)); + } + function b(k) { + let P = !1; + return k.forEach((H) => { + H.selected && (H.selected = !1, P = !0); + }), P; + } + function N(k) { + var P; + (P = q(a.panZoom)) == null || P.setClickDistance(k); + } + function E(k) { + b((k == null ? void 0 : k.nodes) || q(a.nodes)) && a.nodes.set(q(a.nodes)), b((k == null ? void 0 : k.edges) || q(a.edges)) && a.edges.set(q(a.edges)); + } + a.deleteKeyPressed.subscribe(async (k) => { + var P; + if (k) { + const H = q(a.nodes), I = q(a.edges), B = H.filter((ee) => ee.selected), F = I.filter((ee) => ee.selected), { nodes: K, edges: ie } = await Qu({ + nodesToRemove: B, + edgesToRemove: F, + nodes: H, + edges: I, + onBeforeDelete: q(a.onbeforedelete) + }); + (K.length || ie.length) && (a.nodes.update((ee) => ee.filter((W) => !K.some((ue) => ue.id === W.id))), a.edges.update((ee) => ee.filter((W) => !ie.some((ue) => ue.id === W.id))), (P = q(a.ondelete)) == null || P({ + nodes: K, + edges: ie + })); + } + }); + function M(k) { + const P = q(a.multiselectionKeyPressed); + a.nodes.update((H) => H.map((I) => { + const B = k.includes(I.id), F = P && I.selected || B; + return I.selected = F, I; + })), P || a.edges.update((H) => H.map((I) => (I.selected = !1, I))); + } + function D(k) { + const P = q(a.multiselectionKeyPressed); + a.edges.update((H) => H.map((I) => { + const B = k.includes(I.id), F = P && I.selected || B; + return I.selected = F, I; + })), P || a.nodes.update((H) => H.map((I) => (I.selected = !1, I))); + } + function V(k) { + var H; + const P = (H = q(a.nodes)) == null ? void 0 : H.find((I) => I.id === k); + if (!P) { + console.warn("012", Dr.error012(k)); + return; + } + a.selectionRect.set(null), a.selectionRectMode.set(null), P.selected ? P.selected && q(a.multiselectionKeyPressed) && E({ nodes: [P], edges: [] }) : M([k]); + } + function A(k) { + const P = q(a.viewport); + return I0({ + delta: k, + panZoom: q(a.panZoom), + transform: [P.x, P.y, P.zoom], + translateExtent: q(a.translateExtent), + width: q(a.width), + height: q(a.height) + }); + } + const O = we(Ns), R = (k) => { + O.set({ ...k }); + }; + function S() { + O.set(Ns); + } + function T() { + a.fitViewOnInitDone.set(!1), a.selectionRect.set(null), a.selectionRectMode.set(null), a.snapGrid.set(null), a.isValidConnection.set(() => !0), E(), S(); + } + return { + // state + ...a, + // derived state + visibleEdges: m2(a), + visibleNodes: y2(a), + connection: Kn([O, a.viewport], ([k, P]) => k.inProgress ? { + ...k, + to: Mo(k.to, [P.x, P.y, P.zoom]) + } : { ...k }), + markers: Kn([a.edges, a.defaultMarkerColor, a.flowId], ([k, P, H]) => M0(k, { defaultColor: P, id: H })), + initialized: (() => { + let k = !1; + const P = q(a.nodes).length, H = q(a.edges).length; + return Kn([a.nodesInitialized, a.edgesInitialized, a.viewportInitialized], ([I, B, F]) => k || (P === 0 ? k = F : H === 0 ? k = F && I : k = F && I && B, k)); + })(), + // actions + syncNodeStores: (k) => d2(a.nodes, k), + syncEdgeStores: (k) => f2(a.edges, k), + syncViewport: (k) => g2(a.panZoom, a.viewport, k), + setNodeTypes: l, + setEdgeTypes: u, + addEdge: c, + updateNodePositions: f, + updateNodeInternals: d, + zoomIn: C, + zoomOut: $, + fitView: (k) => g(k), + setMinZoom: m, + setMaxZoom: _, + setTranslateExtent: v, + setPaneClickDistance: N, + unselectNodesAndEdges: E, + addSelectedNodes: M, + addSelectedEdges: D, + handleNodeSelection: V, + panBy: A, + updateConnection: R, + cancelConnection: S, + reset: T + }; +} +function Ue() { + const e = ar(Wi); + if (!e) + throw new Error("In order to use useStore you need to wrap your component in a "); + return e.getStore(); +} +function w2({ nodes: e, edges: t, width: n, height: r, fitView: o, nodeOrigin: i, nodeExtent: s }) { + const a = Nc({ nodes: e, edges: t, width: n, height: r, fitView: o, nodeOrigin: i, nodeExtent: s }); + return Tr(Wi, { + getStore: () => a + }), a; +} +function us(e, t) { + const { panZoom: n, minZoom: r, maxZoom: o, initialViewport: i, viewport: s, dragging: a, translateExtent: l, paneClickDistance: u } = t, c = n2({ + domNode: e, + minZoom: r, + maxZoom: o, + translateExtent: l, + viewport: i, + paneClickDistance: u, + onDraggingChange: a.set + }), f = c.getViewport(); + return s.set(f), n.set(c), c.update(t), { + update(d) { + c.update(d); + } + }; +} +var _2 = /* @__PURE__ */ ne('
    '); +const x2 = { + hash: "svelte-4xkw84", + code: ".svelte-flow__zoom.svelte-4xkw84 {width:100%;height:100%;position:absolute;top:0;left:0;z-index:4;}" +}; +function Mc(e, t) { + de(t, !1), Je(e, x2); + const [n, r] = tt(), o = () => Q(H, "$panActivationKeyPressed", n), i = () => Q(R, "$minZoom", n), s = () => Q(S, "$maxZoom", n), a = () => Q(I, "$zoomActivationKeyPressed", n), l = () => Q(O, "$selectionRect", n), u = () => Q(k, "$translateExtent", n), c = () => Q(P, "$lib", n), f = re(), d = re(), g = re(); + let p = w(t, "initialViewport", 12, void 0), x = w(t, "onMoveStart", 12, void 0), C = w(t, "onMove", 12, void 0), $ = w(t, "onMoveEnd", 12, void 0), m = w(t, "panOnScrollMode", 12), _ = w(t, "preventScrolling", 12), v = w(t, "zoomOnScroll", 12), b = w(t, "zoomOnDoubleClick", 12), N = w(t, "zoomOnPinch", 12), E = w(t, "panOnDrag", 12), M = w(t, "panOnScroll", 12), D = w(t, "paneClickDistance", 12); + const { + viewport: V, + panZoom: A, + selectionRect: O, + minZoom: R, + maxZoom: S, + dragging: T, + translateExtent: k, + lib: P, + panActivationKeyPressed: H, + zoomActivationKeyPressed: I, + viewportInitialized: B + } = Ue(), F = (W) => V.set({ + x: W[0], + y: W[1], + zoom: W[2] + }); + un(() => { + li(B, !0); + }), he(() => j(p()), () => { + U(f, p() || { x: 0, y: 0, zoom: 1 }); + }), he( + () => (o(), j(E())), + () => { + U(d, o() || E()); + } + ), he( + () => (o(), j(M())), + () => { + U(g, o() || M()); + } + ), gt(), He(); + var K = _2(), ie = X(K); + pt(ie, t, "default", {}), Z(K), vt(K, (W, ue) => us == null ? void 0 : us(W, ue), () => ({ + viewport: V, + minZoom: i(), + maxZoom: s(), + initialViewport: h(f), + dragging: T, + panZoom: A, + onPanZoomStart: x(), + onPanZoom: C(), + onPanZoomEnd: $(), + zoomOnScroll: v(), + zoomOnDoubleClick: b(), + zoomOnPinch: N(), + panOnScroll: h(g), + panOnDrag: h(d), + panOnScrollSpeed: 0.5, + panOnScrollMode: m() || qn.Free, + zoomActivationKeyPressed: a(), + preventScrolling: typeof _() == "boolean" ? _() : !0, + noPanClassName: "nopan", + noWheelClassName: "nowheel", + userSelectionActive: !!l(), + translateExtent: u(), + lib: c(), + paneClickDistance: D(), + onTransformChange: F + })), L(e, K); + var ee = fe({ + get initialViewport() { + return p(); + }, + set initialViewport(W) { + p(W), y(); + }, + get onMoveStart() { + return x(); + }, + set onMoveStart(W) { + x(W), y(); + }, + get onMove() { + return C(); + }, + set onMove(W) { + C(W), y(); + }, + get onMoveEnd() { + return $(); + }, + set onMoveEnd(W) { + $(W), y(); + }, + get panOnScrollMode() { + return m(); + }, + set panOnScrollMode(W) { + m(W), y(); + }, + get preventScrolling() { + return _(); + }, + set preventScrolling(W) { + _(W), y(); + }, + get zoomOnScroll() { + return v(); + }, + set zoomOnScroll(W) { + v(W), y(); + }, + get zoomOnDoubleClick() { + return b(); + }, + set zoomOnDoubleClick(W) { + b(W), y(); + }, + get zoomOnPinch() { + return N(); + }, + set zoomOnPinch(W) { + N(W), y(); + }, + get panOnDrag() { + return E(); + }, + set panOnDrag(W) { + E(W), y(); + }, + get panOnScroll() { + return M(); + }, + set panOnScroll(W) { + M(W), y(); + }, + get paneClickDistance() { + return D(); + }, + set paneClickDistance(W) { + D(W), y(); + } + }); + return r(), ee; +} +ae( + Mc, + { + initialViewport: {}, + onMoveStart: {}, + onMove: {}, + onMoveEnd: {}, + panOnScrollMode: {}, + preventScrolling: {}, + zoomOnScroll: {}, + zoomOnDoubleClick: {}, + zoomOnPinch: {}, + panOnDrag: {}, + panOnScroll: {}, + paneClickDistance: {} + }, + ["default"], + [], + !0 +); +function kl(e, t) { + return (n) => { + n.target === t && (e == null || e(n)); + }; +} +function $l(e) { + return (t) => { + const n = e.includes(t.id); + return t.selected !== n && (t.selected = n), t; + }; +} +var b2 = /* @__PURE__ */ ne("
    "); +const C2 = { + hash: "svelte-1esy7hx", + code: ".svelte-flow__pane.svelte-1esy7hx {position:absolute;top:0;left:0;width:100%;height:100%;}" +}; +function Tc(e, t) { + de(t, !1), Je(e, C2); + const [n, r] = tt(), o = () => Q(S, "$panActivationKeyPressed", n), i = () => Q(O, "$selectionKeyPressed", n), s = () => Q(V, "$selectionRect", n), a = () => Q(D, "$elementsSelectable", n), l = () => Q(A, "$selectionRectMode", n), u = () => Q(N, "$edges", n), c = () => Q(b, "$nodeLookup", n), f = () => Q(E, "$viewport", n), d = () => Q(R, "$selectionMode", n), g = () => Q(M, "$dragging", n), p = re(), x = re(), C = re(); + let $ = w(t, "panOnDrag", 12, void 0), m = w(t, "selectionOnDrag", 12, void 0); + const _ = Oi(), { + nodes: v, + nodeLookup: b, + edges: N, + viewport: E, + dragging: M, + elementsSelectable: D, + selectionRect: V, + selectionRectMode: A, + selectionKeyPressed: O, + selectionMode: R, + panActivationKeyPressed: S, + unselectNodesAndEdges: T + } = Ue(); + let k = re(), P = null, H = [], I = !1; + function B(G) { + if (I) { + I = !1; + return; + } + _("paneclick", { event: G }), T(), A.set(null); + } + function F(G) { + var Ae, Xe; + if (P = h(k).getBoundingClientRect(), !D || !h(x) || G.button !== 0 || G.target !== h(k) || !P) + return; + (Xe = (Ae = G.target) == null ? void 0 : Ae.setPointerCapture) == null || Xe.call(Ae, G.pointerId); + const { x: se, y: Te } = Hn(G, P); + T(), V.set({ + width: 0, + height: 0, + startX: se, + startY: Te, + x: se, + y: Te + }); + } + function K(G) { + if (!h(x) || !P || !s()) + return; + I = !0; + const se = Hn(G, P), Te = s().startX ?? 0, Ae = s().startY ?? 0, Xe = { + ...s(), + x: se.x < Te ? se.x : Te, + y: se.y < Ae ? se.y : Ae, + width: Math.abs(se.x - Te), + height: Math.abs(se.y - Ae) + }, te = H.map((oe) => oe.id), Fe = Ms(H, u()).map((oe) => oe.id); + H = Ju( + c(), + Xe, + [ + f().x, + f().y, + f().zoom + ], + d() === pi.Partial, + !0 + ); + const Le = Ms(H, u()).map((oe) => oe.id), Qe = H.map((oe) => oe.id); + (te.length !== Qe.length || Qe.some((oe) => !te.includes(oe))) && v.update((oe) => oe.map($l(Qe))), (Fe.length !== Le.length || Le.some((oe) => !Fe.includes(oe))) && N.update((oe) => oe.map($l(Le))), A.set("user"), V.set(Xe); + } + function ie(G) { + var se, Te; + G.button === 0 && ((Te = (se = G.target) == null ? void 0 : se.releasePointerCapture) == null || Te.call(se, G.pointerId), !h(x) && l() === "user" && G.target === h(k) && (B == null || B(G)), V.set(null), H.length > 0 && li(A, "nodes"), i() && (I = !1)); + } + const ee = (G) => { + var se; + if (Array.isArray(h(p)) && ((se = h(p)) != null && se.includes(2))) { + G.preventDefault(); + return; + } + _("panecontextmenu", { event: G }); + }; + he( + () => (o(), j($())), + () => { + U(p, o() || $()); + } + ), he( + () => (i(), s(), j(m()), h(p)), + () => { + U(x, i() || s() || m() && h(p) !== !0); + } + ), he( + () => (a(), h(x), l()), + () => { + U(C, a() && (h(x) || l() === "user")); + } + ), gt(), He(); + var W = b2(), ue = /* @__PURE__ */ Me(() => h(C) ? void 0 : kl(B, h(k))), me = /* @__PURE__ */ Me(() => kl(ee, h(k))); + let Ce; + var ge = X(W); + pt(ge, t, "default", {}), Z(W), An(W, (G) => U(k, G), () => h(k)), Ee( + (G) => Ce = kt(W, 1, "svelte-flow__pane svelte-1esy7hx", null, Ce, { + draggable: G, + dragging: g(), + selection: h(x) + }), + [ + () => $() === !0 || Array.isArray($()) && $().includes(0) + ], + pe + ), Ye("click", W, function(...G) { + var se; + (se = h(ue)) == null || se.apply(this, G); + }), Ye("pointerdown", W, function(...G) { + var se; + (se = h(C) ? F : void 0) == null || se.apply(this, G); + }), Ye("pointermove", W, function(...G) { + var se; + (se = h(C) ? K : void 0) == null || se.apply(this, G); + }), Ye("pointerup", W, function(...G) { + var se; + (se = h(C) ? ie : void 0) == null || se.apply(this, G); + }), Ye("contextmenu", W, function(...G) { + var se; + (se = h(me)) == null || se.apply(this, G); + }), L(e, W); + var ze = fe({ + get panOnDrag() { + return $(); + }, + set panOnDrag(G) { + $(G), y(); + }, + get selectionOnDrag() { + return m(); + }, + set selectionOnDrag(G) { + m(G), y(); + } + }); + return r(), ze; +} +ae(Tc, { panOnDrag: {}, selectionOnDrag: {} }, ["default"], [], !0); +var k2 = /* @__PURE__ */ ne('
    '); +const $2 = { + hash: "svelte-1floaup", + code: ".svelte-flow__viewport.svelte-1floaup {width:100%;height:100%;position:absolute;top:0;left:0;}" +}; +function Hc(e, t) { + de(t, !1), Je(e, $2); + const [n, r] = tt(), o = () => Q(i, "$viewport", n), { viewport: i } = Ue(); + He(); + var s = k2(), a = X(s); + pt(a, t, "default", {}), Z(s), Ee(() => ce(s, "style", `transform: translate(${o().x ?? ""}px, ${o().y ?? ""}px) scale(${o().zoom ?? ""})`)), L(e, s), fe(), r(); +} +ae(Hc, {}, ["default"], [], !0); +function $r(e, t) { + const { store: n, onDrag: r, onDragStart: o, onDragStop: i, onNodeMouseDown: s } = t, a = B0({ + onDrag: r, + onDragStart: o, + onDragStop: i, + onNodeMouseDown: s, + getStoreItems: () => { + const u = q(n.snapGrid), c = q(n.viewport); + return { + nodes: q(n.nodes), + nodeLookup: q(n.nodeLookup), + edges: q(n.edges), + nodeExtent: q(n.nodeExtent), + snapGrid: u || [0, 0], + snapToGrid: !!u, + nodeOrigin: q(n.nodeOrigin), + multiSelectionActive: q(n.multiselectionKeyPressed), + domNode: q(n.domNode), + transform: [c.x, c.y, c.zoom], + autoPanOnNodeDrag: q(n.autoPanOnNodeDrag), + nodesDraggable: q(n.nodesDraggable), + selectNodesOnDrag: q(n.selectNodesOnDrag), + nodeDragThreshold: q(n.nodeDragThreshold), + unselectNodesAndEdges: n.unselectNodesAndEdges, + updateNodePositions: n.updateNodePositions, + panBy: n.panBy + }; + } + }); + function l(u, c) { + if (c.disabled) { + a.destroy(); + return; + } + a.update({ + domNode: u, + noDragClassName: c.noDragClass, + handleSelector: c.handleSelector, + nodeId: c.nodeId, + isSelectable: c.isSelectable, + nodeClickDistance: c.nodeClickDistance + }); + } + return l(e, t), { + update(u) { + l(e, u); + }, + destroy() { + a.destroy(); + } + }; +} +function E2({ width: e, height: t, initialWidth: n, initialHeight: r, measuredWidth: o, measuredHeight: i }) { + if (o === void 0 && i === void 0) { + const s = e ?? n, a = t ?? r; + return { + width: s ? `width:${s}px;` : "", + height: a ? `height:${a}px;` : "" + }; + } + return { + width: e ? `width:${e}px;` : "", + height: t ? `height:${t}px;` : "" + }; +} +var S2 = /* @__PURE__ */ ne("
    "); +function Vc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(me, "$nodeTypes", n), i = () => Q(se, "$elementsSelectable", n), s = () => Q(Te, "$nodesDraggable", n), a = () => Q(Fe, "$connectableStore", n), l = re(void 0, !0), u = re(void 0, !0), c = re(void 0, !0), f = re(void 0, !0); + let d = w(t, "node", 13), g = w(t, "id", 13), p = w(t, "data", 29, () => ({})), x = w(t, "selected", 13, !1), C = w(t, "draggable", 13, void 0), $ = w(t, "selectable", 13, void 0), m = w(t, "connectable", 13, !0), _ = w(t, "deletable", 13, !0), v = w(t, "hidden", 13, !1), b = w(t, "dragging", 13, !1), N = w(t, "resizeObserver", 13, null), E = w(t, "style", 13, void 0), M = w(t, "type", 13, "default"), D = w(t, "isParent", 13, !1), V = w(t, "positionX", 13), A = w(t, "positionY", 13), O = w(t, "sourcePosition", 13, void 0), R = w(t, "targetPosition", 13, void 0), S = w(t, "zIndex", 13), T = w(t, "measuredWidth", 13, void 0), k = w(t, "measuredHeight", 13, void 0), P = w(t, "initialWidth", 13, void 0), H = w(t, "initialHeight", 13, void 0), I = w(t, "width", 13, void 0), B = w(t, "height", 13, void 0), F = w(t, "dragHandle", 13, void 0), K = w(t, "initialized", 13, !1), ie = w(t, "parentId", 13, void 0), ee = w(t, "nodeClickDistance", 13, void 0), W = w(t, "class", 13, ""); + const ue = Ue(), { + nodeTypes: me, + nodeDragThreshold: Ce, + selectNodesOnDrag: ge, + handleNodeSelection: ze, + updateNodeInternals: G, + elementsSelectable: se, + nodesDraggable: Te + } = ue; + let Ae = re(void 0, !0), Xe = re(null, !0); + const te = Oi(), Fe = we(m()); + let Le = re(void 0, !0), Qe = re(void 0, !0), oe = re(void 0, !0); + Tr("svelteflow__node_id", g()), Tr("svelteflow__node_connectable", Fe), Qs(() => { + var J; + h(Xe) && ((J = N()) == null || J.unobserve(h(Xe))); + }); + function ve(J) { + $() && (!q(ge) || !C() || q(Ce) > 0) && ze(g()), te("nodeclick", { node: d().internals.userNode, event: J }); + } + he(() => j(M()), () => { + U(l, M() || "default"); + }), he(() => (o(), h(l)), () => { + U(u, !!o()[h(l)]); + }), he( + () => (o(), h(l), _i), + () => { + U(c, o()[h(l)] || _i); + } + ), he( + () => (h(u), j(M())), + () => { + h(u) || console.warn("003", Dr.error003(M())); + } + ), he( + () => (j(I()), j(B()), j(P()), j(H()), j(T()), j(k())), + () => { + U(f, E2({ + width: I(), + height: B(), + initialWidth: P(), + initialHeight: H(), + measuredWidth: T(), + measuredHeight: k() + })); + } + ), he(() => j(m()), () => { + Fe.set(!!m()); + }), he( + () => (h(Le), h(l), h(Qe), j(O()), h(oe), j(R()), j(g()), h(Ae)), + () => { + (h(Le) && h(l) !== h(Le) || h(Qe) && O() !== h(Qe) || h(oe) && R() !== h(oe)) && requestAnimationFrame(() => G(/* @__PURE__ */ new Map([ + [ + g(), + { + id: g(), + nodeElement: h(Ae), + force: !0 + } + ] + ]))), U(Le, h(l)), U(Qe, O()), U(oe, R()); + } + ), he( + () => (j(N()), h(Ae), h(Xe), j(K())), + () => { + N() && (h(Ae) !== h(Xe) || !K()) && (h(Xe) && N().unobserve(h(Xe)), h(Ae) && N().observe(h(Ae)), U(Xe, h(Ae))); + } + ), gt(), He(!0); + var xe = et(), Oe = be(xe); + { + var ct = (J) => { + var Re = S2(); + let le; + var fn = X(Re); + const Ut = /* @__PURE__ */ pe(() => x() ?? !1), gn = /* @__PURE__ */ pe(() => $() ?? i() ?? !0), Ne = /* @__PURE__ */ pe(() => _() ?? !0), rt = /* @__PURE__ */ pe(() => C() ?? s() ?? !0); + yu(fn, () => h(c), (ye, ot) => { + ot(ye, { + get data() { + return p(); + }, + get id() { + return g(); + }, + get selected() { + return h(Ut); + }, + get selectable() { + return h(gn); + }, + get deletable() { + return h(Ne); + }, + get sourcePosition() { + return O(); + }, + get targetPosition() { + return R(); + }, + get zIndex() { + return S(); + }, + get dragging() { + return b(); + }, + get draggable() { + return h(rt); + }, + get dragHandle() { + return F(); + }, + get parentId() { + return ie(); + }, + get type() { + return h(l); + }, + get isConnectable() { + return a(); + }, + get positionAbsoluteX() { + return V(); + }, + get positionAbsoluteY() { + return A(); + }, + get width() { + return I(); + }, + get height() { + return B(); + } + }); + }), Z(Re), vt(Re, (ye, ot) => $r == null ? void 0 : $r(ye, ot), () => ({ + nodeId: g(), + isSelectable: $(), + disabled: !1, + handleSelector: F(), + noDragClass: "nodrag", + nodeClickDistance: ee(), + onNodeMouseDown: ze, + onDrag: (ye, ot, at, Xt) => { + te("nodedrag", { event: ye, targetNode: at, nodes: Xt }); + }, + onDragStart: (ye, ot, at, Xt) => { + te("nodedragstart", { event: ye, targetNode: at, nodes: Xt }); + }, + onDragStop: (ye, ot, at, Xt) => { + te("nodedragstop", { event: ye, targetNode: at, nodes: Xt }); + }, + store: ue + })), An(Re, (ye) => U(Ae, ye), () => h(Ae)), Ot(() => Ye("click", Re, ve)), Ot(() => Ye("mouseenter", Re, (ye) => te("nodemouseenter", { node: d(), event: ye }))), Ot(() => Ye("mouseleave", Re, (ye) => te("nodemouseleave", { node: d(), event: ye }))), Ot(() => Ye("mousemove", Re, (ye) => te("nodemousemove", { node: d(), event: ye }))), Ot(() => Ye("contextmenu", Re, (ye) => te("nodecontextmenu", { node: d(), event: ye }))), Ee( + (ye) => { + ce(Re, "data-id", g()), le = kt(Re, 1, bn(ye), null, le, { + dragging: b(), + selected: x(), + draggable: C(), + connectable: m(), + selectable: $(), + nopan: C(), + parent: D() + }), ce(Re, "style", `${E() ?? ""};${h(f).width ?? ""}${h(f).height ?? ""}`), st(Re, "z-index", S()), st(Re, "transform", `translate(${V() ?? ""}px, ${A() ?? ""}px)`), st(Re, "visibility", K() ? "visible" : "hidden"); + }, + [ + () => Et([ + "svelte-flow__node", + `svelte-flow__node-${h(l)}`, + W() + ]) + ], + pe + ), L(J, Re); + }; + ke(Oe, (J) => { + v() || J(ct); + }); + } + L(e, xe); + var lt = fe({ + get node() { + return d(); + }, + set node(J) { + d(J), y(); + }, + get id() { + return g(); + }, + set id(J) { + g(J), y(); + }, + get data() { + return p(); + }, + set data(J) { + p(J), y(); + }, + get selected() { + return x(); + }, + set selected(J) { + x(J), y(); + }, + get draggable() { + return C(); + }, + set draggable(J) { + C(J), y(); + }, + get selectable() { + return $(); + }, + set selectable(J) { + $(J), y(); + }, + get connectable() { + return m(); + }, + set connectable(J) { + m(J), y(); + }, + get deletable() { + return _(); + }, + set deletable(J) { + _(J), y(); + }, + get hidden() { + return v(); + }, + set hidden(J) { + v(J), y(); + }, + get dragging() { + return b(); + }, + set dragging(J) { + b(J), y(); + }, + get resizeObserver() { + return N(); + }, + set resizeObserver(J) { + N(J), y(); + }, + get style() { + return E(); + }, + set style(J) { + E(J), y(); + }, + get type() { + return M(); + }, + set type(J) { + M(J), y(); + }, + get isParent() { + return D(); + }, + set isParent(J) { + D(J), y(); + }, + get positionX() { + return V(); + }, + set positionX(J) { + V(J), y(); + }, + get positionY() { + return A(); + }, + set positionY(J) { + A(J), y(); + }, + get sourcePosition() { + return O(); + }, + set sourcePosition(J) { + O(J), y(); + }, + get targetPosition() { + return R(); + }, + set targetPosition(J) { + R(J), y(); + }, + get zIndex() { + return S(); + }, + set zIndex(J) { + S(J), y(); + }, + get measuredWidth() { + return T(); + }, + set measuredWidth(J) { + T(J), y(); + }, + get measuredHeight() { + return k(); + }, + set measuredHeight(J) { + k(J), y(); + }, + get initialWidth() { + return P(); + }, + set initialWidth(J) { + P(J), y(); + }, + get initialHeight() { + return H(); + }, + set initialHeight(J) { + H(J), y(); + }, + get width() { + return I(); + }, + set width(J) { + I(J), y(); + }, + get height() { + return B(); + }, + set height(J) { + B(J), y(); + }, + get dragHandle() { + return F(); + }, + set dragHandle(J) { + F(J), y(); + }, + get initialized() { + return K(); + }, + set initialized(J) { + K(J), y(); + }, + get parentId() { + return ie(); + }, + set parentId(J) { + ie(J), y(); + }, + get nodeClickDistance() { + return ee(); + }, + set nodeClickDistance(J) { + ee(J), y(); + }, + get class() { + return W(); + }, + set class(J) { + W(J), y(); + } + }); + return r(), lt; +} +ae( + Vc, + { + node: {}, + id: {}, + data: {}, + selected: {}, + draggable: {}, + selectable: {}, + connectable: {}, + deletable: {}, + hidden: {}, + dragging: {}, + resizeObserver: {}, + style: {}, + type: {}, + isParent: {}, + positionX: {}, + positionY: {}, + sourcePosition: {}, + targetPosition: {}, + zIndex: {}, + measuredWidth: {}, + measuredHeight: {}, + initialWidth: {}, + initialHeight: {}, + width: {}, + height: {}, + dragHandle: {}, + initialized: {}, + parentId: {}, + nodeClickDistance: {}, + class: {} + }, + [], + [], + !0 +); +var P2 = /* @__PURE__ */ ne('
    '); +const N2 = { + hash: "svelte-tf4uy4", + code: ".svelte-flow__nodes.svelte-tf4uy4 {width:100%;height:100%;position:absolute;left:0;top:0;}" +}; +function Dc(e, t) { + de(t, !1), Je(e, N2); + const [n, r] = tt(), o = () => Q(c, "$visibleNodes", n), i = () => Q(f, "$nodesDraggable", n), s = () => Q(g, "$elementsSelectable", n), a = () => Q(d, "$nodesConnectable", n), l = () => Q(x, "$parentLookup", n); + let u = w(t, "nodeClickDistance", 12, 0); + const { + visibleNodes: c, + nodesDraggable: f, + nodesConnectable: d, + elementsSelectable: g, + updateNodeInternals: p, + parentLookup: x + } = Ue(), C = typeof ResizeObserver > "u" ? null : new ResizeObserver((_) => { + const v = /* @__PURE__ */ new Map(); + _.forEach((b) => { + const N = b.target.getAttribute("data-id"); + v.set(N, { id: N, nodeElement: b.target, force: !0 }); + }), p(v); + }); + Qs(() => { + C == null || C.disconnect(); + }), He(); + var $ = P2(); + Yt($, 5, o, (_) => _.id, (_, v) => { + const b = /* @__PURE__ */ pe(() => !!h(v).selected), N = /* @__PURE__ */ pe(() => !!h(v).hidden), E = /* @__PURE__ */ pe(() => !!(h(v).draggable || i() && typeof h(v).draggable > "u")), M = /* @__PURE__ */ pe(() => !!(h(v).selectable || s() && typeof h(v).selectable > "u")), D = /* @__PURE__ */ pe(() => !!(h(v).connectable || a() && typeof h(v).connectable > "u")), V = /* @__PURE__ */ pe(() => h(v).deletable ?? !0), A = /* @__PURE__ */ pe(() => l().has(h(v).id)), O = /* @__PURE__ */ pe(() => h(v).type ?? "default"), R = /* @__PURE__ */ pe(() => h(v).internals.z ?? 0), S = /* @__PURE__ */ pe(() => oc(h(v))); + Vc(_, { + get node() { + return h(v); + }, + get id() { + return h(v).id; + }, + get data() { + return h(v).data; + }, + get selected() { + return h(b); + }, + get hidden() { + return h(N); + }, + get draggable() { + return h(E); + }, + get selectable() { + return h(M); + }, + get connectable() { + return h(D); + }, + get deletable() { + return h(V); + }, + get positionX() { + return h(v).internals.positionAbsolute.x; + }, + get positionY() { + return h(v).internals.positionAbsolute.y; + }, + get isParent() { + return h(A); + }, + get style() { + return h(v).style; + }, + get class() { + return h(v).class; + }, + get type() { + return h(O); + }, + get sourcePosition() { + return h(v).sourcePosition; + }, + get targetPosition() { + return h(v).targetPosition; + }, + get dragging() { + return h(v).dragging; + }, + get zIndex() { + return h(R); + }, + get dragHandle() { + return h(v).dragHandle; + }, + get initialized() { + return h(S); + }, + get width() { + return h(v).width; + }, + get height() { + return h(v).height; + }, + get initialWidth() { + return h(v).initialWidth; + }, + get initialHeight() { + return h(v).initialHeight; + }, + get measuredWidth() { + return h(v).measured.width; + }, + get measuredHeight() { + return h(v).measured.height; + }, + get parentId() { + return h(v).parentId; + }, + resizeObserver: C, + get nodeClickDistance() { + return u(); + }, + $$events: { + nodeclick(T) { + Ve.call(this, t, T); + }, + nodemouseenter(T) { + Ve.call(this, t, T); + }, + nodemousemove(T) { + Ve.call(this, t, T); + }, + nodemouseleave(T) { + Ve.call(this, t, T); + }, + nodedrag(T) { + Ve.call(this, t, T); + }, + nodedragstart(T) { + Ve.call(this, t, T); + }, + nodedragstop(T) { + Ve.call(this, t, T); + }, + nodecontextmenu(T) { + Ve.call(this, t, T); + } + } + }); + }), Z($), L(e, $); + var m = fe({ + get nodeClickDistance() { + return u(); + }, + set nodeClickDistance(_) { + u(_), y(); + } + }); + return r(), m; +} +ae(Dc, { nodeClickDistance: {} }, [], [], !0); +var M2 = /* @__PURE__ */ _e(''); +function Ac(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(W, "$edgeTypes", n), i = () => Q(ue, "$flowId", n), s = () => Q(me, "$elementsSelectable", n), a = () => Q(ee, "$edgeLookup", n), l = re(void 0, !0), u = re(void 0, !0), c = re(void 0, !0), f = re(void 0, !0), d = re(void 0, !0); + let g = w(t, "id", 13), p = w(t, "type", 13, "default"), x = w(t, "source", 13, ""), C = w(t, "target", 13, ""), $ = w(t, "data", 29, () => ({})), m = w(t, "style", 13, void 0), _ = w(t, "zIndex", 13, void 0), v = w(t, "animated", 13, !1), b = w(t, "selected", 13, !1), N = w(t, "selectable", 13, void 0), E = w(t, "deletable", 13, void 0), M = w(t, "hidden", 13, !1), D = w(t, "label", 13, void 0), V = w(t, "labelStyle", 13, void 0), A = w(t, "markerStart", 13, void 0), O = w(t, "markerEnd", 13, void 0), R = w(t, "sourceHandle", 13, void 0), S = w(t, "targetHandle", 13, void 0), T = w(t, "sourceX", 13), k = w(t, "sourceY", 13), P = w(t, "targetX", 13), H = w(t, "targetY", 13), I = w(t, "sourcePosition", 13), B = w(t, "targetPosition", 13), F = w(t, "ariaLabel", 13, void 0), K = w(t, "interactionWidth", 13, void 0), ie = w(t, "class", 13, ""); + Tr("svelteflow__edge_id", g()); + const { + edgeLookup: ee, + edgeTypes: W, + flowId: ue, + elementsSelectable: me + } = Ue(), Ce = Oi(), ge = bc(); + function ze(te) { + const Fe = a().get(g()); + Fe && (ge(g()), Ce("edgeclick", { event: te, edge: Fe })); + } + function G(te, Fe) { + const Le = a().get(g()); + Le && Ce(Fe, { event: te, edge: Le }); + } + he(() => j(p()), () => { + U(l, p() || "default"); + }), he( + () => (o(), h(l), xi), + () => { + U(u, o()[h(l)] || xi); + } + ), he( + () => (j(A()), i()), + () => { + U(c, A() ? `url('#${Vs(A(), i())}')` : void 0); + } + ), he( + () => (j(O()), i()), + () => { + U(f, O() ? `url('#${Vs(O(), i())}')` : void 0); + } + ), he( + () => (j(N()), s()), + () => { + U(d, N() ?? s()); + } + ), gt(), He(!0); + var se = et(), Te = be(se); + { + var Ae = (te) => { + var Fe = M2(), Le = X(Fe); + let Qe; + var oe = X(Le); + const ve = /* @__PURE__ */ pe(() => E() ?? !0); + yu(oe, () => h(u), (xe, Oe) => { + Oe(xe, { + get id() { + return g(); + }, + get source() { + return x(); + }, + get target() { + return C(); + }, + get sourceX() { + return T(); + }, + get sourceY() { + return k(); + }, + get targetX() { + return P(); + }, + get targetY() { + return H(); + }, + get sourcePosition() { + return I(); + }, + get targetPosition() { + return B(); + }, + get animated() { + return v(); + }, + get selected() { + return b(); + }, + get label() { + return D(); + }, + get labelStyle() { + return V(); + }, + get data() { + return $(); + }, + get style() { + return m(); + }, + get interactionWidth() { + return K(); + }, + get selectable() { + return h(d); + }, + get deletable() { + return h(ve); + }, + get type() { + return h(l); + }, + get sourceHandleId() { + return R(); + }, + get targetHandleId() { + return S(); + }, + get markerStart() { + return h(c); + }, + get markerEnd() { + return h(f); + } + }); + }), Z(Le), Z(Fe), Ee( + (xe) => { + st(Fe, "z-index", _()), Qe = kt(Le, 0, bn(xe), null, Qe, { + animated: v(), + selected: b(), + selectable: h(d) + }), ce(Le, "data-id", g()), ce(Le, "aria-label", F() === null ? void 0 : F() ? F() : `Edge from ${x()} to ${C()}`); + }, + [ + () => Et(["svelte-flow__edge", ie()]) + ], + pe + ), Ye("click", Le, ze), Ye("contextmenu", Le, (xe) => { + G(xe, "edgecontextmenu"); + }), Ye("mouseenter", Le, (xe) => { + G(xe, "edgemouseenter"); + }), Ye("mouseleave", Le, (xe) => { + G(xe, "edgemouseleave"); + }), L(te, Fe); + }; + ke(Te, (te) => { + M() || te(Ae); + }); + } + L(e, se); + var Xe = fe({ + get id() { + return g(); + }, + set id(te) { + g(te), y(); + }, + get type() { + return p(); + }, + set type(te) { + p(te), y(); + }, + get source() { + return x(); + }, + set source(te) { + x(te), y(); + }, + get target() { + return C(); + }, + set target(te) { + C(te), y(); + }, + get data() { + return $(); + }, + set data(te) { + $(te), y(); + }, + get style() { + return m(); + }, + set style(te) { + m(te), y(); + }, + get zIndex() { + return _(); + }, + set zIndex(te) { + _(te), y(); + }, + get animated() { + return v(); + }, + set animated(te) { + v(te), y(); + }, + get selected() { + return b(); + }, + set selected(te) { + b(te), y(); + }, + get selectable() { + return N(); + }, + set selectable(te) { + N(te), y(); + }, + get deletable() { + return E(); + }, + set deletable(te) { + E(te), y(); + }, + get hidden() { + return M(); + }, + set hidden(te) { + M(te), y(); + }, + get label() { + return D(); + }, + set label(te) { + D(te), y(); + }, + get labelStyle() { + return V(); + }, + set labelStyle(te) { + V(te), y(); + }, + get markerStart() { + return A(); + }, + set markerStart(te) { + A(te), y(); + }, + get markerEnd() { + return O(); + }, + set markerEnd(te) { + O(te), y(); + }, + get sourceHandle() { + return R(); + }, + set sourceHandle(te) { + R(te), y(); + }, + get targetHandle() { + return S(); + }, + set targetHandle(te) { + S(te), y(); + }, + get sourceX() { + return T(); + }, + set sourceX(te) { + T(te), y(); + }, + get sourceY() { + return k(); + }, + set sourceY(te) { + k(te), y(); + }, + get targetX() { + return P(); + }, + set targetX(te) { + P(te), y(); + }, + get targetY() { + return H(); + }, + set targetY(te) { + H(te), y(); + }, + get sourcePosition() { + return I(); + }, + set sourcePosition(te) { + I(te), y(); + }, + get targetPosition() { + return B(); + }, + set targetPosition(te) { + B(te), y(); + }, + get ariaLabel() { + return F(); + }, + set ariaLabel(te) { + F(te), y(); + }, + get interactionWidth() { + return K(); + }, + set interactionWidth(te) { + K(te), y(); + }, + get class() { + return ie(); + }, + set class(te) { + ie(te), y(); + } + }); + return r(), Xe; +} +ae( + Ac, + { + id: {}, + type: {}, + source: {}, + target: {}, + data: {}, + style: {}, + zIndex: {}, + animated: {}, + selected: {}, + selectable: {}, + deletable: {}, + hidden: {}, + label: {}, + labelStyle: {}, + markerStart: {}, + markerEnd: {}, + sourceHandle: {}, + targetHandle: {}, + sourceX: {}, + sourceY: {}, + targetX: {}, + targetY: {}, + sourcePosition: {}, + targetPosition: {}, + ariaLabel: {}, + interactionWidth: {}, + class: {} + }, + [], + [], + !0 +); +function Lc(e, t) { + de(t, !1); + let n = w(t, "onMount", 12, void 0), r = w(t, "onDestroy", 12, void 0); + return un(() => { + var o; + return (o = n()) == null || o(), r(); + }), He(), fe({ + get onMount() { + return n(); + }, + set onMount(o) { + n(o), y(); + }, + get onDestroy() { + return r(); + }, + set onDestroy(o) { + r(o), y(); + } + }); +} +ae(Lc, { onMount: {}, onDestroy: {} }, [], [], !0); +var T2 = /* @__PURE__ */ _e(""); +function Oc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(i, "$markers", n), { markers: i } = Ue(); + He(); + var s = T2(); + Yt(s, 5, o, (a) => a.id, (a, l) => { + Ic(a, ut(() => h(l))); + }), Z(s), L(e, s), fe(), r(); +} +ae(Oc, {}, [], [], !0); +var H2 = /* @__PURE__ */ _e(''), V2 = /* @__PURE__ */ _e(''), D2 = /* @__PURE__ */ _e(''); +function Ic(e, t) { + de(t, !1); + let n = w(t, "id", 12), r = w(t, "type", 12), o = w(t, "width", 12, 12.5), i = w(t, "height", 12, 12.5), s = w(t, "markerUnits", 12, "strokeWidth"), a = w(t, "orient", 12, "auto-start-reverse"), l = w(t, "color", 12, void 0), u = w(t, "strokeWidth", 12, void 0); + He(); + var c = D2(), f = X(c); + { + var d = (p) => { + var x = H2(); + Ee(() => { + ce(x, "stroke", l()), ce(x, "stroke-width", u()); + }), L(p, x); + }, g = (p, x) => { + { + var C = ($) => { + var m = V2(); + Ee(() => { + ce(m, "stroke", l()), ce(m, "stroke-width", u()), ce(m, "fill", l()); + }), L($, m); + }; + ke( + p, + ($) => { + r() === mo.ArrowClosed && $(C); + }, + x + ); + } + }; + ke(f, (p) => { + r() === mo.Arrow ? p(d) : p(g, !1); + }); + } + return Z(c), Ee(() => { + ce(c, "id", n()), ce(c, "markerWidth", `${o()}`), ce(c, "markerHeight", `${i()}`), ce(c, "markerUnits", s()), ce(c, "orient", a()); + }), L(e, c), fe({ + get id() { + return n(); + }, + set id(p) { + n(p), y(); + }, + get type() { + return r(); + }, + set type(p) { + r(p), y(); + }, + get width() { + return o(); + }, + set width(p) { + o(p), y(); + }, + get height() { + return i(); + }, + set height(p) { + i(p), y(); + }, + get markerUnits() { + return s(); + }, + set markerUnits(p) { + s(p), y(); + }, + get orient() { + return a(); + }, + set orient(p) { + a(p), y(); + }, + get color() { + return l(); + }, + set color(p) { + l(p), y(); + }, + get strokeWidth() { + return u(); + }, + set strokeWidth(p) { + u(p), y(); + } + }); +} +ae( + Ic, + { + id: {}, + type: {}, + width: {}, + height: {}, + markerUnits: {}, + orient: {}, + color: {}, + strokeWidth: {} + }, + [], + [], + !0 +); +var A2 = /* @__PURE__ */ ne('
    '); +function zc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(a, "$visibleEdges", n), i = () => Q(c, "$elementsSelectable", n); + let s = w(t, "defaultEdgeOptions", 12); + const { + visibleEdges: a, + edgesInitialized: l, + edges: { setDefaultOptions: u }, + elementsSelectable: c + } = Ue(); + un(() => { + s() && u(s()); + }), He(); + var f = A2(), d = X(f), g = X(d); + Oc(g, {}), Z(d); + var p = z(d, 2); + Yt(p, 1, o, (m) => m.id, (m, _) => { + const v = /* @__PURE__ */ pe(() => h(_).selectable ?? i()), b = /* @__PURE__ */ pe(() => h(_).type || "default"); + Ac(m, { + get id() { + return h(_).id; + }, + get source() { + return h(_).source; + }, + get target() { + return h(_).target; + }, + get data() { + return h(_).data; + }, + get style() { + return h(_).style; + }, + get animated() { + return h(_).animated; + }, + get selected() { + return h(_).selected; + }, + get selectable() { + return h(v); + }, + get deletable() { + return h(_).deletable; + }, + get hidden() { + return h(_).hidden; + }, + get label() { + return h(_).label; + }, + get labelStyle() { + return h(_).labelStyle; + }, + get markerStart() { + return h(_).markerStart; + }, + get markerEnd() { + return h(_).markerEnd; + }, + get sourceHandle() { + return h(_).sourceHandle; + }, + get targetHandle() { + return h(_).targetHandle; + }, + get sourceX() { + return h(_).sourceX; + }, + get sourceY() { + return h(_).sourceY; + }, + get targetX() { + return h(_).targetX; + }, + get targetY() { + return h(_).targetY; + }, + get sourcePosition() { + return h(_).sourcePosition; + }, + get targetPosition() { + return h(_).targetPosition; + }, + get ariaLabel() { + return h(_).ariaLabel; + }, + get interactionWidth() { + return h(_).interactionWidth; + }, + get class() { + return h(_).class; + }, + get type() { + return h(b); + }, + get zIndex() { + return h(_).zIndex; + }, + $$events: { + edgeclick(N) { + Ve.call(this, t, N); + }, + edgecontextmenu(N) { + Ve.call(this, t, N); + }, + edgemouseenter(N) { + Ve.call(this, t, N); + }, + edgemouseleave(N) { + Ve.call(this, t, N); + } + } + }); + }); + var x = z(p, 2); + { + var C = (m) => { + Lc(m, { + onMount: () => { + li(l, !0); + }, + onDestroy: () => { + li(l, !1); + } + }); + }; + ke(x, (m) => { + o().length > 0 && m(C); + }); + } + Z(f), L(e, f); + var $ = fe({ + get defaultEdgeOptions() { + return s(); + }, + set defaultEdgeOptions(m) { + s(m), y(); + } + }); + return r(), $; +} +ae(zc, { defaultEdgeOptions: {} }, [], [], !0); +var L2 = /* @__PURE__ */ ne('
    '); +const O2 = { + hash: "svelte-1iugwpu", + code: ".svelte-flow__selection.svelte-1iugwpu {position:absolute;top:0;left:0;}" +}; +function ha(e, t) { + de(t, !1), Je(e, O2); + let n = w(t, "x", 12, 0), r = w(t, "y", 12, 0), o = w(t, "width", 12, 0), i = w(t, "height", 12, 0), s = w(t, "isVisible", 12, !0); + var a = et(), l = be(a); + { + var u = (c) => { + var f = L2(); + Ee(() => { + st(f, "width", typeof o() == "string" ? o() : `${o()}px`), st(f, "height", typeof i() == "string" ? i() : `${i()}px`), st(f, "transform", `translate(${n()}px, ${r()}px)`); + }), L(c, f); + }; + ke(l, (c) => { + s() && c(u); + }); + } + return L(e, a), fe({ + get x() { + return n(); + }, + set x(c) { + n(c), y(); + }, + get y() { + return r(); + }, + set y(c) { + r(c), y(); + }, + get width() { + return o(); + }, + set width(c) { + o(c), y(); + }, + get height() { + return i(); + }, + set height(c) { + i(c), y(); + }, + get isVisible() { + return s(); + }, + set isVisible(c) { + s(c), y(); + } + }); +} +ae( + ha, + { + x: {}, + y: {}, + width: {}, + height: {}, + isVisible: {} + }, + [], + [], + !0 +); +function Rc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(s, "$selectionRect", n), i = () => Q(a, "$selectionRectMode", n), { selectionRect: s, selectionRectMode: a } = Ue(); + He(); + const l = /* @__PURE__ */ pe(() => !!(o() && i() === "user")), u = /* @__PURE__ */ pe(() => { + var g; + return (g = o()) == null ? void 0 : g.width; + }), c = /* @__PURE__ */ pe(() => { + var g; + return (g = o()) == null ? void 0 : g.height; + }), f = /* @__PURE__ */ pe(() => { + var g; + return (g = o()) == null ? void 0 : g.x; + }), d = /* @__PURE__ */ pe(() => { + var g; + return (g = o()) == null ? void 0 : g.y; + }); + ha(e, { + get isVisible() { + return h(l); + }, + get width() { + return h(u); + }, + get height() { + return h(c); + }, + get x() { + return h(f); + }, + get y() { + return h(d); + } + }), fe(), r(); +} +ae(Rc, {}, [], [], !0); +var I2 = /* @__PURE__ */ ne('
    '); +const z2 = { + hash: "svelte-5pxri", + code: ".selection-wrapper.svelte-5pxri {position:absolute;top:0;left:0;z-index:7;pointer-events:all;}" +}; +function Bc(e, t) { + de(t, !1), Je(e, z2); + const [n, r] = tt(), o = () => Q(l, "$selectionRectMode", n), i = () => Q(c, "$nodeLookup", n), s = () => Q(u, "$nodes", n), a = Ue(), { selectionRectMode: l, nodes: u, nodeLookup: c } = a, f = Oi(); + let d = re(null); + function g(m) { + const _ = s().filter((v) => v.selected); + f("selectioncontextmenu", { nodes: _, event: m }); + } + function p(m) { + const _ = s().filter((v) => v.selected); + f("selectionclick", { nodes: _, event: m }); + } + he( + () => (o(), i(), s()), + () => { + o() === "nodes" && (U(d, No(i(), { filter: (m) => !!m.selected })), s()); + } + ), gt(), He(); + var x = et(), C = be(x); + { + var $ = (m) => { + var _ = I2(), v = X(_); + ha(v, { width: "100%", height: "100%", x: 0, y: 0 }), Z(_), vt(_, (b, N) => $r == null ? void 0 : $r(b, N), () => ({ + disabled: !1, + store: a, + onDrag: (b, N, E, M) => { + f("nodedrag", { event: b, targetNode: null, nodes: M }); + }, + onDragStart: (b, N, E, M) => { + f("nodedragstart", { event: b, targetNode: null, nodes: M }); + }, + onDragStop: (b, N, E, M) => { + f("nodedragstop", { event: b, targetNode: null, nodes: M }); + } + })), Ot(() => Ye("contextmenu", _, g)), Ot(() => Ye("click", _, p)), Ot(() => Ye("keyup", _, () => { + })), Ee(() => ce(_, "style", `width: ${h(d).width ?? ""}px; height: ${h(d).height ?? ""}px; transform: translate(${h(d).x ?? ""}px, ${h(d).y ?? ""}px)`)), L(m, _); + }; + ke(C, (m) => { + o() === "nodes" && h(d) && Nn(h(d).x) && Nn(h(d).y) && m($); + }); + } + L(e, x), fe(), r(); +} +ae(Bc, {}, [], [], !0); +function We(e, t) { + let { enabled: n = !0, trigger: r, type: o = "keydown" } = t; + function i(s) { + const a = Array.isArray(r) ? r : [r], l = { + alt: s.altKey, + ctrl: s.ctrlKey, + shift: s.shiftKey, + meta: s.metaKey + }; + for (const u of a) { + const c = { + modifier: [], + preventDefault: !1, + enabled: !0, + ...u + }, { modifier: f, key: d, callback: g, preventDefault: p, enabled: x } = c; + if (x) { + if (f.length && !(Array.isArray(f) ? f : [f]).map( + (m) => typeof m == "string" ? [m] : m + ).some( + (m) => m.every((_) => l[_]) + )) + continue; + if (s.key === d) { + p && s.preventDefault(); + const C = { + node: e, + trigger: c, + originalEvent: s + }; + e.dispatchEvent(new CustomEvent("shortcut", { detail: C })), g == null || g(C); + } + } + } + } + return n && e.addEventListener(o, i), { + update: (s) => { + const { enabled: a = !0, type: l = "keydown" } = s; + n && (!a || o !== l) ? e.removeEventListener(o, i) : !n && a && e.addEventListener(l, i), n = a, o = l, r = s.trigger; + }, + destroy: () => { + e.removeEventListener(o, i); + } + }; +} +function Yc(e, t) { + de(t, !1); + let n = w(t, "selectionKey", 12, "Shift"), r = w(t, "multiSelectionKey", 28, () => yi() ? "Meta" : "Control"), o = w(t, "deleteKey", 12, "Backspace"), i = w(t, "panActivationKey", 12, " "), s = w(t, "zoomActivationKey", 28, () => yi() ? "Meta" : "Control"); + const { + selectionKeyPressed: a, + multiselectionKeyPressed: l, + deleteKeyPressed: u, + panActivationKeyPressed: c, + zoomActivationKeyPressed: f, + selectionRect: d + } = Ue(); + function g(m) { + return m !== null && typeof m == "object"; + } + function p(m) { + return g(m) ? m.modifier || [] : []; + } + function x(m) { + return m == null ? "" : g(m) ? m.key : m; + } + function C(m, _) { + return (Array.isArray(m) ? m : [m]).map((b) => { + const N = x(b); + return { + key: N, + modifier: p(b), + enabled: N !== null, + callback: _ + }; + }); + } + function $() { + d.set(null), a.set(!1), l.set(!1), u.set(!1), c.set(!1), f.set(!1); + } + return He(), Ye("blur", Nt, $), Ye("contextmenu", Nt, $), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(n(), () => a.set(!0)), + type: "keydown" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(n(), () => a.set(!1)), + type: "keyup" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(r(), () => l.set(!0)), + type: "keydown" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(r(), () => l.set(!1)), + type: "keyup" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(o(), (m) => { + !(m.originalEvent.ctrlKey || m.originalEvent.metaKey || m.originalEvent.shiftKey) && !w0(m.originalEvent) && u.set(!0); + }), + type: "keydown" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(o(), () => u.set(!1)), + type: "keyup" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(i(), () => c.set(!0)), + type: "keydown" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(i(), () => c.set(!1)), + type: "keyup" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(s(), () => f.set(!0)), + type: "keydown" + })), vt(Nt, (m, _) => We == null ? void 0 : We(m, _), () => ({ + trigger: C(s(), () => f.set(!1)), + type: "keyup" + })), fe({ + get selectionKey() { + return n(); + }, + set selectionKey(m) { + n(m), y(); + }, + get multiSelectionKey() { + return r(); + }, + set multiSelectionKey(m) { + r(m), y(); + }, + get deleteKey() { + return o(); + }, + set deleteKey(m) { + o(m), y(); + }, + get panActivationKey() { + return i(); + }, + set panActivationKey(m) { + i(m), y(); + }, + get zoomActivationKey() { + return s(); + }, + set zoomActivationKey(m) { + s(m), y(); + } + }); +} +ae( + Yc, + { + selectionKey: {}, + multiSelectionKey: {}, + deleteKey: {}, + panActivationKey: {}, + zoomActivationKey: {} + }, + [], + [], + !0 +); +var R2 = /* @__PURE__ */ _e(''), B2 = /* @__PURE__ */ _e(''); +function Zc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(g, "$connection", n), i = () => Q(p, "$connectionLineType", n), s = () => Q(f, "$width", n), a = () => Q(d, "$height", n); + let l = w(t, "containerStyle", 12, ""), u = w(t, "style", 12, ""), c = w(t, "isCustomComponent", 12, !1); + const { + width: f, + height: d, + connection: g, + connectionLineType: p + } = Ue(); + let x = re(null); + he( + () => (o(), j(c()), i(), h(x), Hs), + () => { + if (o().inProgress && !c()) { + const { from: v, to: b, fromPosition: N, toPosition: E } = o(), M = { + sourceX: v.x, + sourceY: v.y, + sourcePosition: N, + targetX: b.x, + targetY: b.y, + targetPosition: E + }; + switch (i()) { + case Cr.Bezier: + ((D) => U(x, D[0]))(sc(M)); + break; + case Cr.Step: + ((D) => U(x, D[0]))(wi({ ...M, borderRadius: 0 })); + break; + case Cr.SmoothStep: + ((D) => U(x, D[0]))(wi(M)); + break; + default: + ((D) => U(x, D[0]))(Hs(M)); + } + } + } + ), gt(), He(); + var C = et(), $ = be(C); + { + var m = (v) => { + var b = B2(), N = X(b), E = X(N); + pt(E, t, "connectionLine", {}); + var M = z(E); + { + var D = (V) => { + var A = R2(); + Ee(() => { + ce(A, "d", h(x)), ce(A, "style", u()); + }), L(V, A); + }; + ke(M, (V) => { + c() || V(D); + }); + } + Z(N), Z(b), Ee( + (V) => { + ce(b, "width", s()), ce(b, "height", a()), ce(b, "style", l()), kt(N, 0, bn(V)); + }, + [ + () => Et([ + "svelte-flow__connection", + c0(o().isValid) + ]) + ], + pe + ), L(v, b); + }; + ke($, (v) => { + o().inProgress && v(m); + }); + } + L(e, C); + var _ = fe({ + get containerStyle() { + return l(); + }, + set containerStyle(v) { + l(v), y(); + }, + get style() { + return u(); + }, + set style(v) { + u(v), y(); + }, + get isCustomComponent() { + return c(); + }, + set isCustomComponent(v) { + c(v), y(); + } + }); + return r(), _; +} +ae( + Zc, + { + containerStyle: {}, + style: {}, + isCustomComponent: {} + }, + ["connectionLine"], + [], + !0 +); +var Y2 = /* @__PURE__ */ ne("
    "); +function Ho(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]), r = nt(n, ["position", "style", "class"]); + de(t, !1); + const [o, i] = tt(), s = () => Q(f, "$selectionRectMode", o), a = re(); + let l = w(t, "position", 12, "top-right"), u = w(t, "style", 12, void 0), c = w(t, "class", 12, void 0); + const { selectionRectMode: f } = Ue(); + he(() => j(l()), () => { + U(a, `${l()}`.split("-")); + }), gt(), He(); + var d = Y2(); + let g; + var p = X(d); + pt(p, t, "default", {}), Z(d), Ee( + (C) => { + g = on(d, g, { + class: C, + style: u(), + ...r + }), st(d, "pointer-events", s() ? "none" : ""); + }, + [ + () => Et([ + "svelte-flow__panel", + c(), + ...h(a) + ]) + ], + pe + ), L(e, d); + var x = fe({ + get position() { + return l(); + }, + set position(C) { + l(C), y(); + }, + get style() { + return u(); + }, + set style(C) { + u(C), y(); + }, + get class() { + return c(); + }, + set class(C) { + c(C), y(); + } + }); + return i(), x; +} +ae(Ho, { position: {}, style: {}, class: {} }, ["default"], [], !0); +var Z2 = /* @__PURE__ */ ne('
    Svelte Flow'); +function Xc(e, t) { + de(t, !1); + let n = w(t, "proOptions", 12, void 0), r = w(t, "position", 12, "bottom-right"); + He(); + var o = et(), i = be(o); + { + var s = (a) => { + Ho(a, { + get position() { + return r(); + }, + class: "svelte-flow__attribution", + "data-message": "Feel free to remove the attribution or check out how you could support us: https://svelteflow.dev/support-us", + children: (l, u) => { + var c = Z2(); + L(l, c); + }, + $$slots: { default: !0 } + }); + }; + ke(i, (a) => { + var l; + (l = n()) != null && l.hideAttribution || a(s); + }); + } + return L(e, o), fe({ + get proOptions() { + return n(); + }, + set proOptions(a) { + n(a), y(); + }, + get position() { + return r(); + }, + set position(a) { + r(a), y(); + } + }); +} +ae(Xc, { proOptions: {}, position: {} }, [], [], !0); +function El(e, { nodeTypes: t, edgeTypes: n, minZoom: r, maxZoom: o, translateExtent: i, paneClickDistance: s }) { + t !== void 0 && e.setNodeTypes(t), n !== void 0 && e.setEdgeTypes(n), r !== void 0 && e.setMinZoom(r), o !== void 0 && e.setMaxZoom(o), i !== void 0 && e.setTranslateExtent(i), s !== void 0 && e.setPaneClickDistance(s); +} +const X2 = (e) => Object.keys(e); +function Sl(e, t) { + X2(t).forEach((n) => { + const r = t[n]; + r !== void 0 && e[n].set(r); + }); +} +function F2() { + return typeof window > "u" || !window.matchMedia ? null : window.matchMedia("(prefers-color-scheme: dark)"); +} +function W2(e = "light") { + return Ft("light", (n) => { + if (e !== "system") { + n(e); + return; + } + const r = F2(), o = () => n(r != null && r.matches ? "dark" : "light"); + return n(r != null && r.matches ? "dark" : "light"), r == null || r.addEventListener("change", o), () => { + r == null || r.removeEventListener("change", o); + }; + }); +} +var K2 = /* @__PURE__ */ ne('
    ', 1), q2 = /* @__PURE__ */ ne(" ", 1), G2 = /* @__PURE__ */ ne("
    "); +const U2 = { + hash: "svelte-12wlba6", + code: ".svelte-flow.svelte-12wlba6 {width:100%;height:100%;overflow:hidden;position:relative;z-index:0;background-color:var(--background-color, var(--background-color-default));}:root {--background-color-default: #fff;--background-pattern-color-default: #ddd;--minimap-mask-color-default: rgb(240, 240, 240, 0.6);--minimap-mask-stroke-color-default: none;--minimap-mask-stroke-width-default: 1;--controls-button-background-color-default: #fefefe;--controls-button-background-color-hover-default: #f4f4f4;--controls-button-color-default: inherit;--controls-button-color-hover-default: inherit;--controls-button-border-color-default: #eee;}" +}; +function Fc(e, t) { + const n = p1(t), r = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]), o = nt(r, [ + "id", + "nodes", + "edges", + "fitView", + "fitViewOptions", + "minZoom", + "maxZoom", + "initialViewport", + "viewport", + "nodeTypes", + "edgeTypes", + "selectionKey", + "selectionMode", + "panActivationKey", + "multiSelectionKey", + "zoomActivationKey", + "nodesDraggable", + "nodesConnectable", + "nodeDragThreshold", + "elementsSelectable", + "snapGrid", + "deleteKey", + "connectionRadius", + "connectionLineType", + "connectionMode", + "connectionLineStyle", + "connectionLineContainerStyle", + "onMoveStart", + "onMove", + "onMoveEnd", + "isValidConnection", + "translateExtent", + "nodeExtent", + "onlyRenderVisibleElements", + "panOnScrollMode", + "preventScrolling", + "zoomOnScroll", + "zoomOnDoubleClick", + "zoomOnPinch", + "panOnScroll", + "panOnDrag", + "selectionOnDrag", + "autoPanOnConnect", + "autoPanOnNodeDrag", + "onerror", + "ondelete", + "onedgecreate", + "attributionPosition", + "proOptions", + "defaultEdgeOptions", + "width", + "height", + "colorMode", + "onconnect", + "onconnectstart", + "onconnectend", + "onbeforedelete", + "oninit", + "nodeOrigin", + "paneClickDistance", + "nodeClickDistance", + "defaultMarkerColor", + "style", + "class" + ]); + de(t, !1), Je(e, U2); + const [i, s] = tt(), a = () => Q(_(), "$viewport", i), l = () => Q(ji, "$initialized", i), u = () => Q(h(c), "$colorModeClass", i), c = re(); + let f = w(t, "id", 12, "1"), d = w(t, "nodes", 12), g = w(t, "edges", 12), p = w(t, "fitView", 12, void 0), x = w(t, "fitViewOptions", 12, void 0), C = w(t, "minZoom", 12, void 0), $ = w(t, "maxZoom", 12, void 0), m = w(t, "initialViewport", 12, void 0), _ = w(t, "viewport", 12, void 0), v = w(t, "nodeTypes", 12, void 0), b = w(t, "edgeTypes", 12, void 0), N = w(t, "selectionKey", 12, void 0), E = w(t, "selectionMode", 12, void 0), M = w(t, "panActivationKey", 12, void 0), D = w(t, "multiSelectionKey", 12, void 0), V = w(t, "zoomActivationKey", 12, void 0), A = w(t, "nodesDraggable", 12, void 0), O = w(t, "nodesConnectable", 12, void 0), R = w(t, "nodeDragThreshold", 12, void 0), S = w(t, "elementsSelectable", 12, void 0), T = w(t, "snapGrid", 12, void 0), k = w(t, "deleteKey", 12, void 0), P = w(t, "connectionRadius", 12, void 0), H = w(t, "connectionLineType", 12, void 0), I = w(t, "connectionMode", 28, () => cr.Strict), B = w(t, "connectionLineStyle", 12, ""), F = w(t, "connectionLineContainerStyle", 12, ""), K = w(t, "onMoveStart", 12, void 0), ie = w(t, "onMove", 12, void 0), ee = w(t, "onMoveEnd", 12, void 0), W = w(t, "isValidConnection", 12, void 0), ue = w(t, "translateExtent", 12, void 0), me = w(t, "nodeExtent", 12, void 0), Ce = w(t, "onlyRenderVisibleElements", 12, void 0), ge = w(t, "panOnScrollMode", 28, () => qn.Free), ze = w(t, "preventScrolling", 12, !0), G = w(t, "zoomOnScroll", 12, !0), se = w(t, "zoomOnDoubleClick", 12, !0), Te = w(t, "zoomOnPinch", 12, !0), Ae = w(t, "panOnScroll", 12, !1), Xe = w(t, "panOnDrag", 12, !0), te = w(t, "selectionOnDrag", 12, void 0), Fe = w(t, "autoPanOnConnect", 12, !0), Le = w(t, "autoPanOnNodeDrag", 12, !0), Qe = w(t, "onerror", 12, void 0), oe = w(t, "ondelete", 12, void 0), ve = w(t, "onedgecreate", 12, void 0), xe = w(t, "attributionPosition", 12, void 0), Oe = w(t, "proOptions", 12, void 0), ct = w(t, "defaultEdgeOptions", 12, void 0), lt = w(t, "width", 12, void 0), J = w(t, "height", 12, void 0), Re = w(t, "colorMode", 12, "light"), le = w(t, "onconnect", 12, void 0), fn = w(t, "onconnectstart", 12, void 0), Ut = w(t, "onconnectend", 12, void 0), gn = w(t, "onbeforedelete", 12, void 0), Ne = w(t, "oninit", 12, void 0), rt = w(t, "nodeOrigin", 12, void 0), ye = w(t, "paneClickDistance", 12, 0), ot = w(t, "nodeClickDistance", 12, 0), at = w(t, "defaultMarkerColor", 12, "#b1b1b7"), Xt = w(t, "style", 12, void 0), Kr = w(t, "class", 12, void 0), At = re(), St = re(), hn = re(); + const jt = a() || m(), ft = Uf(Wi) ? Ue() : w2({ + nodes: q(d()), + edges: q(g()), + width: lt(), + height: J(), + fitView: p(), + nodeOrigin: rt(), + nodeExtent: me() + }); + un(() => (ft.width.set(h(St)), ft.height.set(h(hn)), ft.domNode.set(h(At)), ft.syncNodeStores(d()), ft.syncEdgeStores(g()), ft.syncViewport(_()), p() !== void 0 && ft.fitViewOnInit.set(p()), x() && ft.fitViewOptions.set(x()), El(ft, { + nodeTypes: v(), + edgeTypes: b(), + minZoom: C(), + maxZoom: $(), + translateExtent: ue(), + paneClickDistance: ye() + }), () => { + ft.reset(); + })); + const { initialized: ji } = ft; + let nr = re(!1); + he( + () => (h(St), h(hn)), + () => { + h(St) !== void 0 && h(hn) !== void 0 && (ft.width.set(h(St)), ft.height.set(h(hn))); + } + ), he( + () => (h(nr), l(), j(Ne())), + () => { + var Y; + !h(nr) && l() && ((Y = Ne()) == null || Y(), U(nr, !0)); + } + ), he( + () => (j(f()), j(H()), j(P()), j(E()), j(T()), j(at()), j(A()), j(O()), j(S()), j(Ce()), j(W()), j(Fe()), j(Le()), j(Qe()), j(oe()), j(ve()), j(I()), j(R()), j(le()), j(fn()), j(Ut()), j(gn()), j(rt()), Sl), + () => { + const Y = { + flowId: f(), + connectionLineType: H(), + connectionRadius: P(), + selectionMode: E(), + snapGrid: T(), + defaultMarkerColor: at(), + nodesDraggable: A(), + nodesConnectable: O(), + elementsSelectable: S(), + onlyRenderVisibleElements: Ce(), + isValidConnection: W(), + autoPanOnConnect: Fe(), + autoPanOnNodeDrag: Le(), + onerror: Qe(), + ondelete: oe(), + onedgecreate: ve(), + connectionMode: I(), + nodeDragThreshold: R(), + onconnect: le(), + onconnectstart: fn(), + onconnectend: Ut(), + onbeforedelete: gn(), + nodeOrigin: rt() + }; + Sl(ft, Y); + } + ), he( + () => (j(v()), j(b()), j(C()), j($()), j(ue()), j(ye())), + () => { + El(ft, { + nodeTypes: v(), + edgeTypes: b(), + minZoom: C(), + maxZoom: $(), + translateExtent: ue(), + paneClickDistance: ye() + }); + } + ), he( + () => j(Re()), + () => { + k1(U(c, W2(Re())), "$colorModeClass", i); + } + ), gt(), He(); + var Jt = G2(); + let Io; + var zo = X(Jt); + Yc(zo, { + get selectionKey() { + return N(); + }, + get deleteKey() { + return k(); + }, + get panActivationKey() { + return M(); + }, + get multiSelectionKey() { + return D(); + }, + get zoomActivationKey() { + return V(); + } + }); + var Ro = z(zo, 2); + const Rd = /* @__PURE__ */ pe(() => ge() === void 0 ? qn.Free : ge()), Bd = /* @__PURE__ */ pe(() => ze() === void 0 ? !0 : ze()), Yd = /* @__PURE__ */ pe(() => G() === void 0 ? !0 : G()), Zd = /* @__PURE__ */ pe(() => se() === void 0 ? !0 : se()), Xd = /* @__PURE__ */ pe(() => Te() === void 0 ? !0 : Te()), Fd = /* @__PURE__ */ pe(() => Ae() === void 0 ? !1 : Ae()), Wd = /* @__PURE__ */ pe(() => Xe() === void 0 ? !0 : Xe()), Kd = /* @__PURE__ */ pe(() => ye() === void 0 ? 0 : ye()); + Mc(Ro, { + initialViewport: jt, + get onMoveStart() { + return K(); + }, + get onMove() { + return ie(); + }, + get onMoveEnd() { + return ee(); + }, + get panOnScrollMode() { + return h(Rd); + }, + get preventScrolling() { + return h(Bd); + }, + get zoomOnScroll() { + return h(Yd); + }, + get zoomOnDoubleClick() { + return h(Zd); + }, + get zoomOnPinch() { + return h(Xd); + }, + get panOnScroll() { + return h(Fd); + }, + get panOnDrag() { + return h(Wd); + }, + get paneClickDistance() { + return h(Kd); + }, + children: (Y, gw) => { + const Ud = /* @__PURE__ */ pe(() => Xe() === void 0 ? !0 : Xe()); + Tc(Y, { + get panOnDrag() { + return h(Ud); + }, + get selectionOnDrag() { + return te(); + }, + $$events: { + paneclick(qr) { + Ve.call(this, t, qr); + }, + panecontextmenu(qr) { + Ve.call(this, t, qr); + } + }, + children: (qr, hw) => { + var xa = q2(), ba = be(xa); + Hc(ba, { + children: (Jd, vw) => { + var Ca = K2(), ka = be(Ca); + zc(ka, { + get defaultEdgeOptions() { + return ct(); + }, + $$events: { + edgeclick(Be) { + Ve.call(this, t, Be); + }, + edgecontextmenu(Be) { + Ve.call(this, t, Be); + }, + edgemouseenter(Be) { + Ve.call(this, t, Be); + }, + edgemouseleave(Be) { + Ve.call(this, t, Be); + } + } + }); + var $a = z(ka, 2); + Zc($a, { + get containerStyle() { + return F(); + }, + get style() { + return B(); + }, + isCustomComponent: n.connectionLine, + $$slots: { + connectionLine: (Be, pw) => { + var Sa = et(), ef = be(Sa); + pt(ef, t, "connectionLine", {}), L(Be, Sa); + } + } + }); + var Ea = z($a, 6); + Dc(Ea, { + get nodeClickDistance() { + return ot(); + }, + $$events: { + nodeclick(Be) { + Ve.call(this, t, Be); + }, + nodemouseenter(Be) { + Ve.call(this, t, Be); + }, + nodemousemove(Be) { + Ve.call(this, t, Be); + }, + nodemouseleave(Be) { + Ve.call(this, t, Be); + }, + nodedragstart(Be) { + Ve.call(this, t, Be); + }, + nodedrag(Be) { + Ve.call(this, t, Be); + }, + nodedragstop(Be) { + Ve.call(this, t, Be); + }, + nodecontextmenu(Be) { + Ve.call(this, t, Be); + } + } + }); + var Qd = z(Ea, 2); + Bc(Qd, { + $$events: { + selectionclick(Be) { + Ve.call(this, t, Be); + }, + selectioncontextmenu(Be) { + Ve.call(this, t, Be); + }, + nodedragstart(Be) { + Ve.call(this, t, Be); + }, + nodedrag(Be) { + Ve.call(this, t, Be); + }, + nodedragstop(Be) { + Ve.call(this, t, Be); + } + } + }), L(Jd, Ca); + }, + $$slots: { default: !0 } + }); + var jd = z(ba, 2); + Rc(jd, {}), L(qr, xa); + }, + $$slots: { default: !0 } + }); + }, + $$slots: { default: !0 } + }); + var _a = z(Ro, 2); + Xc(_a, { + get proOptions() { + return Oe(); + }, + get position() { + return xe(); + } + }); + var qd = z(_a, 2); + pt(qd, t, "default", {}), Z(Jt), An(Jt, (Y) => U(At, Y), () => h(At)), Ee( + (Y) => Io = on( + Jt, + Io, + { + style: Xt(), + class: Y, + "data-testid": "svelte-flow__wrapper", + ...o, + role: "application" + }, + "svelte-12wlba6" + ), + [ + () => Et([ + "svelte-flow", + Kr(), + u() + ]) + ], + pe + ), Ra(Jt, "clientWidth", (Y) => U(St, Y)), Ra(Jt, "clientHeight", (Y) => U(hn, Y)), Ye("dragover", Jt, function(Y) { + Ve.call(this, t, Y); + }), Ye("drop", Jt, function(Y) { + Ve.call(this, t, Y); + }), L(e, Jt); + var Gd = fe({ + get id() { + return f(); + }, + set id(Y) { + f(Y), y(); + }, + get nodes() { + return d(); + }, + set nodes(Y) { + d(Y), y(); + }, + get edges() { + return g(); + }, + set edges(Y) { + g(Y), y(); + }, + get fitView() { + return p(); + }, + set fitView(Y) { + p(Y), y(); + }, + get fitViewOptions() { + return x(); + }, + set fitViewOptions(Y) { + x(Y), y(); + }, + get minZoom() { + return C(); + }, + set minZoom(Y) { + C(Y), y(); + }, + get maxZoom() { + return $(); + }, + set maxZoom(Y) { + $(Y), y(); + }, + get initialViewport() { + return m(); + }, + set initialViewport(Y) { + m(Y), y(); + }, + get viewport() { + return _(); + }, + set viewport(Y) { + _(Y), y(); + }, + get nodeTypes() { + return v(); + }, + set nodeTypes(Y) { + v(Y), y(); + }, + get edgeTypes() { + return b(); + }, + set edgeTypes(Y) { + b(Y), y(); + }, + get selectionKey() { + return N(); + }, + set selectionKey(Y) { + N(Y), y(); + }, + get selectionMode() { + return E(); + }, + set selectionMode(Y) { + E(Y), y(); + }, + get panActivationKey() { + return M(); + }, + set panActivationKey(Y) { + M(Y), y(); + }, + get multiSelectionKey() { + return D(); + }, + set multiSelectionKey(Y) { + D(Y), y(); + }, + get zoomActivationKey() { + return V(); + }, + set zoomActivationKey(Y) { + V(Y), y(); + }, + get nodesDraggable() { + return A(); + }, + set nodesDraggable(Y) { + A(Y), y(); + }, + get nodesConnectable() { + return O(); + }, + set nodesConnectable(Y) { + O(Y), y(); + }, + get nodeDragThreshold() { + return R(); + }, + set nodeDragThreshold(Y) { + R(Y), y(); + }, + get elementsSelectable() { + return S(); + }, + set elementsSelectable(Y) { + S(Y), y(); + }, + get snapGrid() { + return T(); + }, + set snapGrid(Y) { + T(Y), y(); + }, + get deleteKey() { + return k(); + }, + set deleteKey(Y) { + k(Y), y(); + }, + get connectionRadius() { + return P(); + }, + set connectionRadius(Y) { + P(Y), y(); + }, + get connectionLineType() { + return H(); + }, + set connectionLineType(Y) { + H(Y), y(); + }, + get connectionMode() { + return I(); + }, + set connectionMode(Y) { + I(Y), y(); + }, + get connectionLineStyle() { + return B(); + }, + set connectionLineStyle(Y) { + B(Y), y(); + }, + get connectionLineContainerStyle() { + return F(); + }, + set connectionLineContainerStyle(Y) { + F(Y), y(); + }, + get onMoveStart() { + return K(); + }, + set onMoveStart(Y) { + K(Y), y(); + }, + get onMove() { + return ie(); + }, + set onMove(Y) { + ie(Y), y(); + }, + get onMoveEnd() { + return ee(); + }, + set onMoveEnd(Y) { + ee(Y), y(); + }, + get isValidConnection() { + return W(); + }, + set isValidConnection(Y) { + W(Y), y(); + }, + get translateExtent() { + return ue(); + }, + set translateExtent(Y) { + ue(Y), y(); + }, + get nodeExtent() { + return me(); + }, + set nodeExtent(Y) { + me(Y), y(); + }, + get onlyRenderVisibleElements() { + return Ce(); + }, + set onlyRenderVisibleElements(Y) { + Ce(Y), y(); + }, + get panOnScrollMode() { + return ge(); + }, + set panOnScrollMode(Y) { + ge(Y), y(); + }, + get preventScrolling() { + return ze(); + }, + set preventScrolling(Y) { + ze(Y), y(); + }, + get zoomOnScroll() { + return G(); + }, + set zoomOnScroll(Y) { + G(Y), y(); + }, + get zoomOnDoubleClick() { + return se(); + }, + set zoomOnDoubleClick(Y) { + se(Y), y(); + }, + get zoomOnPinch() { + return Te(); + }, + set zoomOnPinch(Y) { + Te(Y), y(); + }, + get panOnScroll() { + return Ae(); + }, + set panOnScroll(Y) { + Ae(Y), y(); + }, + get panOnDrag() { + return Xe(); + }, + set panOnDrag(Y) { + Xe(Y), y(); + }, + get selectionOnDrag() { + return te(); + }, + set selectionOnDrag(Y) { + te(Y), y(); + }, + get autoPanOnConnect() { + return Fe(); + }, + set autoPanOnConnect(Y) { + Fe(Y), y(); + }, + get autoPanOnNodeDrag() { + return Le(); + }, + set autoPanOnNodeDrag(Y) { + Le(Y), y(); + }, + get onerror() { + return Qe(); + }, + set onerror(Y) { + Qe(Y), y(); + }, + get ondelete() { + return oe(); + }, + set ondelete(Y) { + oe(Y), y(); + }, + get onedgecreate() { + return ve(); + }, + set onedgecreate(Y) { + ve(Y), y(); + }, + get attributionPosition() { + return xe(); + }, + set attributionPosition(Y) { + xe(Y), y(); + }, + get proOptions() { + return Oe(); + }, + set proOptions(Y) { + Oe(Y), y(); + }, + get defaultEdgeOptions() { + return ct(); + }, + set defaultEdgeOptions(Y) { + ct(Y), y(); + }, + get width() { + return lt(); + }, + set width(Y) { + lt(Y), y(); + }, + get height() { + return J(); + }, + set height(Y) { + J(Y), y(); + }, + get colorMode() { + return Re(); + }, + set colorMode(Y) { + Re(Y), y(); + }, + get onconnect() { + return le(); + }, + set onconnect(Y) { + le(Y), y(); + }, + get onconnectstart() { + return fn(); + }, + set onconnectstart(Y) { + fn(Y), y(); + }, + get onconnectend() { + return Ut(); + }, + set onconnectend(Y) { + Ut(Y), y(); + }, + get onbeforedelete() { + return gn(); + }, + set onbeforedelete(Y) { + gn(Y), y(); + }, + get oninit() { + return Ne(); + }, + set oninit(Y) { + Ne(Y), y(); + }, + get nodeOrigin() { + return rt(); + }, + set nodeOrigin(Y) { + rt(Y), y(); + }, + get paneClickDistance() { + return ye(); + }, + set paneClickDistance(Y) { + ye(Y), y(); + }, + get nodeClickDistance() { + return ot(); + }, + set nodeClickDistance(Y) { + ot(Y), y(); + }, + get defaultMarkerColor() { + return at(); + }, + set defaultMarkerColor(Y) { + at(Y), y(); + }, + get style() { + return Xt(); + }, + set style(Y) { + Xt(Y), y(); + }, + get class() { + return Kr(); + }, + set class(Y) { + Kr(Y), y(); + } + }); + return s(), Gd; +} +ae( + Fc, + { + id: {}, + nodes: {}, + edges: {}, + fitView: {}, + fitViewOptions: {}, + minZoom: {}, + maxZoom: {}, + initialViewport: {}, + viewport: {}, + nodeTypes: {}, + edgeTypes: {}, + selectionKey: {}, + selectionMode: {}, + panActivationKey: {}, + multiSelectionKey: {}, + zoomActivationKey: {}, + nodesDraggable: {}, + nodesConnectable: {}, + nodeDragThreshold: {}, + elementsSelectable: {}, + snapGrid: {}, + deleteKey: {}, + connectionRadius: {}, + connectionLineType: {}, + connectionMode: {}, + connectionLineStyle: {}, + connectionLineContainerStyle: {}, + onMoveStart: {}, + onMove: {}, + onMoveEnd: {}, + isValidConnection: {}, + translateExtent: {}, + nodeExtent: {}, + onlyRenderVisibleElements: {}, + panOnScrollMode: {}, + preventScrolling: {}, + zoomOnScroll: {}, + zoomOnDoubleClick: {}, + zoomOnPinch: {}, + panOnScroll: {}, + panOnDrag: {}, + selectionOnDrag: {}, + autoPanOnConnect: {}, + autoPanOnNodeDrag: {}, + onerror: {}, + ondelete: {}, + onedgecreate: {}, + attributionPosition: {}, + proOptions: {}, + defaultEdgeOptions: {}, + width: {}, + height: {}, + colorMode: {}, + onconnect: {}, + onconnectstart: {}, + onconnectend: {}, + onbeforedelete: {}, + oninit: {}, + nodeOrigin: {}, + paneClickDistance: {}, + nodeClickDistance: {}, + defaultMarkerColor: {}, + style: {}, + class: {} + }, + ["connectionLine", "default"], + [], + !0 +); +function Wc(e, t) { + de(t, !1); + let n = w(t, "initialNodes", 12, void 0), r = w(t, "initialEdges", 12, void 0), o = w(t, "initialWidth", 12, void 0), i = w(t, "initialHeight", 12, void 0), s = w(t, "fitView", 12, void 0), a = w(t, "nodeOrigin", 12, void 0); + const l = Nc({ + nodes: n(), + edges: r(), + width: o(), + height: i(), + nodeOrigin: a(), + fitView: s() + }); + Tr(Wi, { getStore: () => l }), Qs(() => { + l.reset(); + }), He(); + var u = et(), c = be(u); + return pt(c, t, "default", {}), L(e, u), fe({ + get initialNodes() { + return n(); + }, + set initialNodes(f) { + n(f), y(); + }, + get initialEdges() { + return r(); + }, + set initialEdges(f) { + r(f), y(); + }, + get initialWidth() { + return o(); + }, + set initialWidth(f) { + o(f), y(); + }, + get initialHeight() { + return i(); + }, + set initialHeight(f) { + i(f), y(); + }, + get fitView() { + return s(); + }, + set fitView(f) { + s(f), y(); + }, + get nodeOrigin() { + return a(); + }, + set nodeOrigin(f) { + a(f), y(); + } + }); +} +ae( + Wc, + { + initialNodes: {}, + initialEdges: {}, + initialWidth: {}, + initialHeight: {}, + fitView: {}, + nodeOrigin: {} + }, + ["default"], + [], + !0 +); +var j2 = /* @__PURE__ */ ne(""); +function ro(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]), r = nt(n, [ + "class", + "bgColor", + "bgColorHover", + "color", + "colorHover", + "borderColor" + ]); + de(t, !1); + let o = w(t, "class", 12, void 0), i = w(t, "bgColor", 12, void 0), s = w(t, "bgColorHover", 12, void 0), a = w(t, "color", 12, void 0), l = w(t, "colorHover", 12, void 0), u = w(t, "borderColor", 12, void 0); + He(); + var c = j2(); + let f; + var d = X(c); + return pt(d, t, "default", { class: "button-svg" }), Z(c), Ee( + (g) => { + f = on(c, f, { type: "button", class: g, ...r }), st(c, "--xy-controls-button-background-color-props", i()), st(c, "--xy-controls-button-background-color-hover-props", s()), st(c, "--xy-controls-button-color-props", a()), st(c, "--xy-controls-button-color-hover-props", l()), st(c, "--xy-controls-button-border-color-props", u()); + }, + [ + () => Et([ + "svelte-flow__controls-button", + o() + ]) + ], + pe + ), Ye("click", c, function(g) { + Ve.call(this, t, g); + }), L(e, c), fe({ + get class() { + return o(); + }, + set class(g) { + o(g), y(); + }, + get bgColor() { + return i(); + }, + set bgColor(g) { + i(g), y(); + }, + get bgColorHover() { + return s(); + }, + set bgColorHover(g) { + s(g), y(); + }, + get color() { + return a(); + }, + set color(g) { + a(g), y(); + }, + get colorHover() { + return l(); + }, + set colorHover(g) { + l(g), y(); + }, + get borderColor() { + return u(); + }, + set borderColor(g) { + u(g), y(); + } + }); +} +ae( + ro, + { + class: {}, + bgColor: {}, + bgColorHover: {}, + color: {}, + colorHover: {}, + borderColor: {} + }, + ["default"], + [], + !0 +); +var J2 = /* @__PURE__ */ _e(''); +function Kc(e) { + var t = J2(); + L(e, t); +} +ae(Kc, {}, [], [], !0); +var Q2 = /* @__PURE__ */ _e(''); +function qc(e) { + var t = Q2(); + L(e, t); +} +ae(qc, {}, [], [], !0); +var ep = /* @__PURE__ */ _e(''); +function Gc(e) { + var t = ep(); + L(e, t); +} +ae(Gc, {}, [], [], !0); +var tp = /* @__PURE__ */ _e(''); +function Uc(e) { + var t = tp(); + L(e, t); +} +ae(Uc, {}, [], [], !0); +var np = /* @__PURE__ */ _e(''); +function jc(e) { + var t = np(); + L(e, t); +} +ae(jc, {}, [], [], !0); +var rp = /* @__PURE__ */ ne(" ", 1), op = /* @__PURE__ */ ne(" ", 1); +function Jc(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(H, "$nodesDraggable", n), i = () => Q(I, "$nodesConnectable", n), s = () => Q(B, "$elementsSelectable", n), a = () => Q(T, "$viewport", n), l = () => Q(k, "$minZoom", n), u = () => Q(P, "$maxZoom", n), c = re(), f = re(), d = re(), g = re(); + let p = w(t, "position", 12, "bottom-left"), x = w(t, "showZoom", 12, !0), C = w(t, "showFitView", 12, !0), $ = w(t, "showLock", 12, !0), m = w(t, "buttonBgColor", 12, void 0), _ = w(t, "buttonBgColorHover", 12, void 0), v = w(t, "buttonColor", 12, void 0), b = w(t, "buttonColorHover", 12, void 0), N = w(t, "buttonBorderColor", 12, void 0), E = w(t, "ariaLabel", 12, void 0), M = w(t, "style", 12, void 0), D = w(t, "orientation", 12, "vertical"), V = w(t, "fitViewOptions", 12, void 0), A = w(t, "class", 12, ""); + const { + zoomIn: O, + zoomOut: R, + fitView: S, + viewport: T, + minZoom: k, + maxZoom: P, + nodesDraggable: H, + nodesConnectable: I, + elementsSelectable: B + } = Ue(), F = { + bgColor: m(), + bgColorHover: _(), + color: v(), + colorHover: b(), + borderColor: N() + }, K = () => { + O(); + }, ie = () => { + R(); + }, ee = () => { + S(V()); + }, W = () => { + U(c, !h(c)), H.set(h(c)), I.set(h(c)), B.set(h(c)); + }; + he( + () => (o(), i(), s()), + () => { + U(c, o() || i() || s()); + } + ), he(() => (a(), l()), () => { + U(f, a().zoom <= l()); + }), he(() => (a(), u()), () => { + U(d, a().zoom >= u()); + }), he(() => j(D()), () => { + U(g, D() === "horizontal" ? "horizontal" : "vertical"); + }), gt(), He(); + const ue = /* @__PURE__ */ pe(() => Et([ + "svelte-flow__controls", + h(g), + A() + ])), me = /* @__PURE__ */ pe(() => E() ?? "Svelte Flow controls"); + Ho(e, { + get class() { + return h(ue); + }, + get position() { + return p(); + }, + "data-testid": "svelte-flow__controls", + get "aria-label"() { + return h(me); + }, + get style() { + return M(); + }, + children: (ge, ze) => { + var G = op(), se = be(G); + pt(se, t, "before", {}); + var Te = z(se, 2); + { + var Ae = (ve) => { + var xe = rp(), Oe = be(xe); + ro(Oe, ut( + { + class: "svelte-flow__controls-zoomin", + title: "zoom in", + "aria-label": "zoom in", + get disabled() { + return h(d); + } + }, + F, + { + $$events: { click: K }, + children: (lt, J) => { + Kc(lt); + }, + $$slots: { default: !0 } + } + )); + var ct = z(Oe, 2); + ro(ct, ut( + { + class: "svelte-flow__controls-zoomout", + title: "zoom out", + "aria-label": "zoom out", + get disabled() { + return h(f); + } + }, + F, + { + $$events: { click: ie }, + children: (lt, J) => { + qc(lt); + }, + $$slots: { default: !0 } + } + )), L(ve, xe); + }; + ke(Te, (ve) => { + x() && ve(Ae); + }); + } + var Xe = z(Te, 2); + { + var te = (ve) => { + ro(ve, ut( + { + class: "svelte-flow__controls-fitview", + title: "fit view", + "aria-label": "fit view" + }, + F, + { + $$events: { click: ee }, + children: (xe, Oe) => { + Gc(xe); + }, + $$slots: { default: !0 } + } + )); + }; + ke(Xe, (ve) => { + C() && ve(te); + }); + } + var Fe = z(Xe, 2); + { + var Le = (ve) => { + ro(ve, ut( + { + class: "svelte-flow__controls-interactive", + title: "toggle interactivity", + "aria-label": "toggle interactivity" + }, + F, + { + $$events: { click: W }, + children: (xe, Oe) => { + var ct = et(), lt = be(ct); + { + var J = (le) => { + jc(le); + }, Re = (le) => { + Uc(le); + }; + ke(lt, (le) => { + h(c) ? le(J) : le(Re, !1); + }); + } + L(xe, ct); + }, + $$slots: { default: !0 } + } + )); + }; + ke(Fe, (ve) => { + $() && ve(Le); + }); + } + var Qe = z(Fe, 2); + pt(Qe, t, "default", {}); + var oe = z(Qe, 2); + pt(oe, t, "after", {}), L(ge, G); + }, + $$slots: { default: !0 } + }); + var Ce = fe({ + get position() { + return p(); + }, + set position(ge) { + p(ge), y(); + }, + get showZoom() { + return x(); + }, + set showZoom(ge) { + x(ge), y(); + }, + get showFitView() { + return C(); + }, + set showFitView(ge) { + C(ge), y(); + }, + get showLock() { + return $(); + }, + set showLock(ge) { + $(ge), y(); + }, + get buttonBgColor() { + return m(); + }, + set buttonBgColor(ge) { + m(ge), y(); + }, + get buttonBgColorHover() { + return _(); + }, + set buttonBgColorHover(ge) { + _(ge), y(); + }, + get buttonColor() { + return v(); + }, + set buttonColor(ge) { + v(ge), y(); + }, + get buttonColorHover() { + return b(); + }, + set buttonColorHover(ge) { + b(ge), y(); + }, + get buttonBorderColor() { + return N(); + }, + set buttonBorderColor(ge) { + N(ge), y(); + }, + get ariaLabel() { + return E(); + }, + set ariaLabel(ge) { + E(ge), y(); + }, + get style() { + return M(); + }, + set style(ge) { + M(ge), y(); + }, + get orientation() { + return D(); + }, + set orientation(ge) { + D(ge), y(); + }, + get fitViewOptions() { + return V(); + }, + set fitViewOptions(ge) { + V(ge), y(); + }, + get class() { + return A(); + }, + set class(ge) { + A(ge), y(); + } + }); + return r(), Ce; +} +ae( + Jc, + { + position: {}, + showZoom: {}, + showFitView: {}, + showLock: {}, + buttonBgColor: {}, + buttonBgColorHover: {}, + buttonColor: {}, + buttonColorHover: {}, + buttonBorderColor: {}, + ariaLabel: {}, + style: {}, + orientation: {}, + fitViewOptions: {}, + class: {} + }, + ["before", "default", "after"], + [], + !0 +); +var Gn; +(function(e) { + e.Lines = "lines", e.Dots = "dots", e.Cross = "cross"; +})(Gn || (Gn = {})); +var ip = /* @__PURE__ */ _e(""); +function Qc(e, t) { + de(t, !1); + let n = w(t, "radius", 12, 5), r = w(t, "class", 12, ""); + He(); + var o = ip(); + return Ee( + (i) => { + ce(o, "cx", n()), ce(o, "cy", n()), ce(o, "r", n()), kt(o, 0, bn(i)); + }, + [ + () => Et([ + "svelte-flow__background-pattern", + "dots", + r() + ]) + ], + pe + ), L(e, o), fe({ + get radius() { + return n(); + }, + set radius(i) { + n(i), y(); + }, + get class() { + return r(); + }, + set class(i) { + r(i), y(); + } + }); +} +ae(Qc, { radius: {}, class: {} }, [], [], !0); +var sp = /* @__PURE__ */ _e(""); +function ed(e, t) { + de(t, !1); + let n = w(t, "lineWidth", 12, 1), r = w(t, "dimensions", 12), o = w(t, "variant", 12, void 0), i = w(t, "class", 12, ""); + He(); + var s = sp(); + return Ee( + (a) => { + ce(s, "stroke-width", n()), ce(s, "d", `M${r()[0] / 2} 0 V${r()[1]} M0 ${r()[1] / 2} H${r()[0]}`), kt(s, 0, bn(a)); + }, + [ + () => Et([ + "svelte-flow__background-pattern", + o(), + i() + ]) + ], + pe + ), L(e, s), fe({ + get lineWidth() { + return n(); + }, + set lineWidth(a) { + n(a), y(); + }, + get dimensions() { + return r(); + }, + set dimensions(a) { + r(a), y(); + }, + get variant() { + return o(); + }, + set variant(a) { + o(a), y(); + }, + get class() { + return i(); + }, + set class(a) { + i(a), y(); + } + }); +} +ae( + ed, + { + lineWidth: {}, + dimensions: {}, + variant: {}, + class: {} + }, + [], + [], + !0 +); +const ap = { + [Gn.Dots]: 1, + [Gn.Lines]: 1, + [Gn.Cross]: 6 +}; +var lp = /* @__PURE__ */ _e(''); +const up = { + hash: "svelte-1r7pe8d", + code: ".svelte-flow__background.svelte-1r7pe8d {position:absolute;width:100%;height:100%;top:0;left:0;}" +}; +function td(e, t) { + de(t, !1), Je(e, up); + const [n, r] = tt(), o = () => Q(b, "$flowId", n), i = () => Q(v, "$viewport", n), s = re(), a = re(), l = re(), u = re(), c = re(); + let f = w(t, "id", 12, void 0), d = w(t, "variant", 28, () => Gn.Dots), g = w(t, "gap", 12, 20), p = w(t, "size", 12, 1), x = w(t, "lineWidth", 12, 1), C = w(t, "bgColor", 12, void 0), $ = w(t, "patternColor", 12, void 0), m = w(t, "patternClass", 12, void 0), _ = w(t, "class", 12, ""); + const { viewport: v, flowId: b } = Ue(), N = p() || ap[d()], E = d() === Gn.Dots, M = d() === Gn.Cross, D = Array.isArray(g()) ? g() : [g(), g()]; + he( + () => (o(), j(f())), + () => { + U(s, `background-pattern-${o()}-${f() ? f() : ""}`); + } + ), he(() => i(), () => { + U(a, [ + D[0] * i().zoom || 1, + D[1] * i().zoom || 1 + ]); + }), he(() => i(), () => { + U(l, N * i().zoom); + }), he(() => (h(l), h(a)), () => { + U(u, M ? [h(l), h(l)] : h(a)); + }), he( + () => (h(l), h(u)), + () => { + U(c, E ? [ + h(l) / 2, + h(l) / 2 + ] : [ + h(u)[0] / 2, + h(u)[1] / 2 + ]); + } + ), gt(), He(); + var V = lp(), A = X(V), O = X(A); + { + var R = (P) => { + const H = /* @__PURE__ */ pe(() => h(l) / 2); + Qc(P, { + get radius() { + return h(H); + }, + get class() { + return m(); + } + }); + }, S = (P) => { + ed(P, { + get dimensions() { + return h(u); + }, + get variant() { + return d(); + }, + get lineWidth() { + return x(); + }, + get class() { + return m(); + } + }); + }; + ke(O, (P) => { + E ? P(R) : P(S, !1); + }); + } + Z(A); + var T = z(A); + Z(V), Ee( + (P) => { + kt(V, 0, bn(P), "svelte-1r7pe8d"), st(V, "--xy-background-color-props", C()), st(V, "--xy-background-pattern-color-props", $()), ce(A, "id", h(s)), ce(A, "x", i().x % h(a)[0]), ce(A, "y", i().y % h(a)[1]), ce(A, "width", h(a)[0]), ce(A, "height", h(a)[1]), ce(A, "patternTransform", `translate(-${h(c)[0]},-${h(c)[1]})`), ce(T, "fill", `url(#${h(s)})`); + }, + [ + () => Et(["svelte-flow__background", _()]) + ], + pe + ), L(e, V); + var k = fe({ + get id() { + return f(); + }, + set id(P) { + f(P), y(); + }, + get variant() { + return d(); + }, + set variant(P) { + d(P), y(); + }, + get gap() { + return g(); + }, + set gap(P) { + g(P), y(); + }, + get size() { + return p(); + }, + set size(P) { + p(P), y(); + }, + get lineWidth() { + return x(); + }, + set lineWidth(P) { + x(P), y(); + }, + get bgColor() { + return C(); + }, + set bgColor(P) { + C(P), y(); + }, + get patternColor() { + return $(); + }, + set patternColor(P) { + $(P), y(); + }, + get patternClass() { + return m(); + }, + set patternClass(P) { + m(P), y(); + }, + get class() { + return _(); + }, + set class(P) { + _(P), y(); + } + }); + return r(), k; +} +ae( + td, + { + id: {}, + variant: {}, + gap: {}, + size: {}, + lineWidth: {}, + bgColor: {}, + patternColor: {}, + patternClass: {}, + class: {} + }, + [], + [], + !0 +); +var cp = /* @__PURE__ */ _e(""); +function nd(e, t) { + de(t, !1); + let n = w(t, "x", 12), r = w(t, "y", 12), o = w(t, "width", 12, 0), i = w(t, "height", 12, 0), s = w(t, "borderRadius", 12, 5), a = w(t, "color", 12, void 0), l = w(t, "shapeRendering", 12), u = w(t, "strokeColor", 12, void 0), c = w(t, "strokeWidth", 12, 2), f = w(t, "selected", 12, !1), d = w(t, "class", 12, ""); + He(); + var g = cp(); + let p; + return Ee( + (x) => { + p = kt(g, 0, bn(x), null, p, { selected: f() }), ce(g, "x", n()), ce(g, "y", r()), ce(g, "rx", s()), ce(g, "ry", s()), ce(g, "width", o()), ce(g, "height", i()), ce(g, "style", `${a() ? `fill: ${a()};` : ""}${u() ? `stroke: ${u()};` : ""}${c() ? `stroke-width: ${c()};` : ""}`), ce(g, "shape-rendering", l()); + }, + [ + () => Et(["svelte-flow__minimap-node", d()]) + ], + pe + ), L(e, g), fe({ + get x() { + return n(); + }, + set x(x) { + n(x), y(); + }, + get y() { + return r(); + }, + set y(x) { + r(x), y(); + }, + get width() { + return o(); + }, + set width(x) { + o(x), y(); + }, + get height() { + return i(); + }, + set height(x) { + i(x), y(); + }, + get borderRadius() { + return s(); + }, + set borderRadius(x) { + s(x), y(); + }, + get color() { + return a(); + }, + set color(x) { + a(x), y(); + }, + get shapeRendering() { + return l(); + }, + set shapeRendering(x) { + l(x), y(); + }, + get strokeColor() { + return u(); + }, + set strokeColor(x) { + u(x), y(); + }, + get strokeWidth() { + return c(); + }, + set strokeWidth(x) { + c(x), y(); + }, + get selected() { + return f(); + }, + set selected(x) { + f(x), y(); + }, + get class() { + return d(); + }, + set class(x) { + d(x), y(); + } + }); +} +ae( + nd, + { + x: {}, + y: {}, + width: {}, + height: {}, + borderRadius: {}, + color: {}, + shapeRendering: {}, + strokeColor: {}, + strokeWidth: {}, + selected: {}, + class: {} + }, + [], + [], + !0 +); +function cs(e, t) { + const n = q0({ + domNode: e, + panZoom: t.panZoom, + getTransform: () => { + const o = q(t.viewport); + return [o.x, o.y, o.zoom]; + }, + getViewScale: t.getViewScale + }); + function r(o) { + n.update({ + translateExtent: o.translateExtent, + width: o.width, + height: o.height, + inversePan: o.inversePan, + zoomStep: o.zoomStep, + pannable: o.pannable, + zoomable: o.zoomable + }); + } + return { + update: r, + destroy() { + n.destroy(); + } + }; +} +const ds = (e) => e instanceof Function ? e : () => e; +var dp = /* @__PURE__ */ _e(" "), fp = /* @__PURE__ */ _e(''); +function rd(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(Xe, "$flowId", n), i = () => Q(se, "$viewport", n), s = () => Q(Te, "$containerWidth", n), a = () => Q(Ae, "$containerHeight", n), l = () => Q(G, "$nodeLookup", n), u = () => Q(ze, "$nodes", n), c = () => Q(te, "$panZoom", n), f = () => Q(Fe, "$translateExtent", n), d = re(), g = re(), p = re(), x = re(), C = re(), $ = re(), m = re(), _ = re(), v = re(), b = re(), N = re(), E = re(), M = re(); + let D = w(t, "position", 12, "bottom-right"), V = w(t, "ariaLabel", 12, "Mini map"), A = w(t, "nodeStrokeColor", 12, "transparent"), O = w(t, "nodeColor", 12, void 0), R = w(t, "nodeClass", 12, ""), S = w(t, "nodeBorderRadius", 12, 5), T = w(t, "nodeStrokeWidth", 12, 2), k = w(t, "bgColor", 12, void 0), P = w(t, "maskColor", 12, void 0), H = w(t, "maskStrokeColor", 12, void 0), I = w(t, "maskStrokeWidth", 12, void 0), B = w(t, "width", 12, void 0), F = w(t, "height", 12, void 0), K = w(t, "pannable", 12, !0), ie = w(t, "zoomable", 12, !0), ee = w(t, "inversePan", 12, void 0), W = w(t, "zoomStep", 12, void 0), ue = w(t, "style", 12, ""), me = w(t, "class", 12, ""); + const Ce = 200, ge = 150, { + nodes: ze, + nodeLookup: G, + viewport: se, + width: Te, + height: Ae, + flowId: Xe, + panZoom: te, + translateExtent: Fe + } = Ue(), Le = O() === void 0 ? void 0 : ds(O()), Qe = ds(A()), oe = ds(R()), ve = ( + // @ts-expect-error - TS doesn't know about chrome + typeof window > "u" || window.chrome ? "crispEdges" : "geometricPrecision" + ), xe = `svelte-flow__minimap-desc-${o()}`; + let Oe = re(h(d)); + const ct = () => h($); + he( + () => (i(), s(), a()), + () => { + U(d, { + x: -i().x / i().zoom, + y: -i().y / i().zoom, + width: s() / i().zoom, + height: a() / i().zoom + }); + } + ), he( + () => (l(), h(d), u()), + () => { + U(Oe, l().size > 0 ? nc(No(l()), h(d)) : h(d)), u(); + } + ), he(() => j(B()), () => { + U(g, B() ?? Ce); + }), he(() => j(F()), () => { + U(p, F() ?? ge); + }), he( + () => (h(Oe), h(g)), + () => { + U(x, h(Oe).width / h(g)); + } + ), he( + () => (h(Oe), h(p)), + () => { + U(C, h(Oe).height / h(p)); + } + ), he( + () => (h(x), h(C)), + () => { + U($, Math.max(h(x), h(C))); + } + ), he(() => (h($), h(g)), () => { + U(m, h($) * h(g)); + }), he( + () => (h($), h(p)), + () => { + U(_, h($) * h(p)); + } + ), he(() => h($), () => { + U(v, 5 * h($)); + }), he( + () => (h(Oe), h(m), h(v)), + () => { + U(b, h(Oe).x - (h(m) - h(Oe).width) / 2 - h(v)); + } + ), he( + () => (h(Oe), h(_), h(v)), + () => { + U(N, h(Oe).y - (h(_) - h(Oe).height) / 2 - h(v)); + } + ), he(() => (h(m), h(v)), () => { + U(E, h(m) + h(v) * 2); + }), he(() => (h(_), h(v)), () => { + U(M, h(_) + h(v) * 2); + }), gt(), He(); + const lt = /* @__PURE__ */ pe(() => ue() + (k() ? `;--xy-minimap-background-color-props:${k()}` : "")), J = /* @__PURE__ */ pe(() => Et(["svelte-flow__minimap", me()])); + Ho(e, { + get position() { + return D(); + }, + get style() { + return h(lt); + }, + get class() { + return h(J); + }, + "data-testid": "svelte-flow__minimap", + children: (le, fn) => { + var Ut = et(), gn = be(Ut); + { + var Ne = (rt) => { + var ye = fp(); + ce(ye, "aria-labelledby", xe); + var ot = X(ye); + { + var at = (At) => { + var St = dp(); + ce(St, "id", xe); + var hn = X(St, !0); + Z(St), Ee(() => Rt(hn, V())), L(At, St); + }; + ke(ot, (At) => { + V() && At(at); + }); + } + var Xt = z(ot); + Yt(Xt, 1, u, (At) => At.id, (At, St) => { + var hn = et(); + const jt = /* @__PURE__ */ pe(() => l().get(h(St).id)); + var ft = be(hn); + { + var ji = (nr) => { + const Jt = /* @__PURE__ */ pe(() => tr(h(jt))), Io = /* @__PURE__ */ pe(() => Le == null ? void 0 : Le(h(jt))), zo = /* @__PURE__ */ pe(() => Qe(h(jt))), Ro = /* @__PURE__ */ pe(() => oe(h(jt))); + nd(nr, ut( + { + get x() { + return h(jt).internals.positionAbsolute.x; + }, + get y() { + return h(jt).internals.positionAbsolute.y; + } + }, + () => h(Jt), + { + get selected() { + return h(jt).selected; + }, + get color() { + return h(Io); + }, + get borderRadius() { + return S(); + }, + get strokeColor() { + return h(zo); + }, + get strokeWidth() { + return T(); + }, + shapeRendering: ve, + get class() { + return h(Ro); + } + } + )); + }; + ke(ft, (nr) => { + h(jt) && oc(h(jt)) && nr(ji); + }); + } + L(At, hn); + }); + var Kr = z(Xt); + Z(ye), vt(ye, (At, St) => cs == null ? void 0 : cs(At, St), () => ({ + panZoom: c(), + viewport: se, + getViewScale: ct, + translateExtent: f(), + width: s(), + height: a(), + inversePan: ee(), + zoomStep: W(), + pannable: K(), + zoomable: ie() + })), Ee(() => { + ce(ye, "width", h(g)), ce(ye, "height", h(p)), ce(ye, "viewBox", `${h(b) ?? ""} ${h(N) ?? ""} ${h(E) ?? ""} ${h(M) ?? ""}`), st(ye, "--xy-minimap-mask-background-color-props", P()), st(ye, "--xy-minimap-mask-stroke-color-props", H()), st(ye, "--xy-minimap-mask-stroke-width-props", I() ? I() * h($) : void 0), ce(Kr, "d", `M${h(b) - h(v)},${h(N) - h(v)}h${h(E) + h(v) * 2}v${h(M) + h(v) * 2}h${-h(E) - h(v) * 2}z + M${h(d).x ?? ""},${h(d).y ?? ""}h${h(d).width ?? ""}v${h(d).height ?? ""}h${-h(d).width}z`); + }), L(rt, ye); + }; + ke(gn, (rt) => { + c() && rt(Ne); + }); + } + L(le, Ut); + }, + $$slots: { default: !0 } + }); + var Re = fe({ + get position() { + return D(); + }, + set position(le) { + D(le), y(); + }, + get ariaLabel() { + return V(); + }, + set ariaLabel(le) { + V(le), y(); + }, + get nodeStrokeColor() { + return A(); + }, + set nodeStrokeColor(le) { + A(le), y(); + }, + get nodeColor() { + return O(); + }, + set nodeColor(le) { + O(le), y(); + }, + get nodeClass() { + return R(); + }, + set nodeClass(le) { + R(le), y(); + }, + get nodeBorderRadius() { + return S(); + }, + set nodeBorderRadius(le) { + S(le), y(); + }, + get nodeStrokeWidth() { + return T(); + }, + set nodeStrokeWidth(le) { + T(le), y(); + }, + get bgColor() { + return k(); + }, + set bgColor(le) { + k(le), y(); + }, + get maskColor() { + return P(); + }, + set maskColor(le) { + P(le), y(); + }, + get maskStrokeColor() { + return H(); + }, + set maskStrokeColor(le) { + H(le), y(); + }, + get maskStrokeWidth() { + return I(); + }, + set maskStrokeWidth(le) { + I(le), y(); + }, + get width() { + return B(); + }, + set width(le) { + B(le), y(); + }, + get height() { + return F(); + }, + set height(le) { + F(le), y(); + }, + get pannable() { + return K(); + }, + set pannable(le) { + K(le), y(); + }, + get zoomable() { + return ie(); + }, + set zoomable(le) { + ie(le), y(); + }, + get inversePan() { + return ee(); + }, + set inversePan(le) { + ee(le), y(); + }, + get zoomStep() { + return W(); + }, + set zoomStep(le) { + W(le), y(); + }, + get style() { + return ue(); + }, + set style(le) { + ue(le), y(); + }, + get class() { + return me(); + }, + set class(le) { + me(le), y(); + } + }); + return r(), Re; +} +ae( + rd, + { + position: {}, + ariaLabel: {}, + nodeStrokeColor: {}, + nodeColor: {}, + nodeClass: {}, + nodeBorderRadius: {}, + nodeStrokeWidth: {}, + bgColor: {}, + maskColor: {}, + maskStrokeColor: {}, + maskStrokeWidth: {}, + width: {}, + height: {}, + pannable: {}, + zoomable: {}, + inversePan: {}, + zoomStep: {}, + style: {}, + class: {} + }, + [], + [], + !0 +); +const Pl = (e) => f0(e); +function Dt() { + const { zoomIn: e, zoomOut: t, fitView: n, onbeforedelete: r, snapGrid: o, viewport: i, width: s, height: a, minZoom: l, maxZoom: u, panZoom: c, nodes: f, edges: d, domNode: g, nodeLookup: p, nodeOrigin: x, edgeLookup: C, connectionLookup: $ } = Ue(), m = (b) => { + var V, A; + const N = q(p), E = Pl(b) ? b : N.get(b.id), M = E.parentId ? p0(E.position, E.measured, E.parentId, N, q(x)) : E.position, D = { + ...E, + position: M, + width: ((V = E.measured) == null ? void 0 : V.width) ?? E.width, + height: ((A = E.measured) == null ? void 0 : A.height) ?? E.height + }; + return Lr(D); + }, _ = (b, N, E = { replace: !1 }) => { + var V; + const M = (V = q(p).get(b)) == null ? void 0 : V.internals.userNode; + if (!M) + return; + const D = typeof N == "function" ? N(M) : N; + E.replace ? f.update((A) => A.map((O) => O.id === b ? Pl(D) ? D : { ...O, ...D } : O)) : (Object.assign(M, D), f.update((A) => A)); + }, v = (b) => q(p).get(b); + return { + zoomIn: e, + zoomOut: t, + getInternalNode: v, + getNode: (b) => { + var N; + return (N = v(b)) == null ? void 0 : N.internals.userNode; + }, + getNodes: (b) => b === void 0 ? q(f) : Nl(q(p), b), + getEdge: (b) => q(C).get(b), + getEdges: (b) => b === void 0 ? q(d) : Nl(q(C), b), + setZoom: (b, N) => { + const E = q(c); + return E ? E.scaleTo(b, { duration: N == null ? void 0 : N.duration }) : Promise.resolve(!1); + }, + getZoom: () => q(i).zoom, + setViewport: async (b, N) => { + const E = q(i), M = q(c); + return M ? (await M.setViewport({ + x: b.x ?? E.x, + y: b.y ?? E.y, + zoom: b.zoom ?? E.zoom + }, { duration: N == null ? void 0 : N.duration }), Promise.resolve(!0)) : Promise.resolve(!1); + }, + getViewport: () => q(i), + setCenter: async (b, N, E) => { + const M = typeof (E == null ? void 0 : E.zoom) < "u" ? E.zoom : q(u), D = q(c); + return D ? (await D.setViewport({ + x: q(s) / 2 - b * M, + y: q(a) / 2 - N * M, + zoom: M + }, { duration: E == null ? void 0 : E.duration }), Promise.resolve(!0)) : Promise.resolve(!1); + }, + fitView: n, + fitBounds: async (b, N) => { + const E = q(c); + if (!E) + return Promise.resolve(!1); + const M = ua(b, q(s), q(a), q(l), q(u), (N == null ? void 0 : N.padding) ?? 0.1); + return await E.setViewport(M, { duration: N == null ? void 0 : N.duration }), Promise.resolve(!0); + }, + getIntersectingNodes: (b, N = !0, E) => { + const M = fl(b), D = M ? b : m(b); + return D ? (E || q(f)).filter((V) => { + const A = q(p).get(V.id); + if (!A || !M && V.id === b.id) + return !1; + const O = Lr(A), R = yo(O, D); + return N && R > 0 || R >= D.width * D.height; + }) : []; + }, + isNodeIntersecting: (b, N, E = !0) => { + const D = fl(b) ? b : m(b); + if (!D) + return !1; + const V = yo(D, N); + return E && V > 0 || V >= D.width * D.height; + }, + deleteElements: async ({ nodes: b = [], edges: N = [] }) => { + const { nodes: E, edges: M } = await Qu({ + nodesToRemove: b, + edgesToRemove: N, + nodes: q(f), + edges: q(d), + onBeforeDelete: q(r) + }); + return E && f.update((D) => D.filter((V) => !E.some(({ id: A }) => A === V.id))), M && d.update((D) => D.filter((V) => !M.some(({ id: A }) => A === V.id))), { + deletedNodes: E, + deletedEdges: M + }; + }, + screenToFlowPosition: (b, N = { snapToGrid: !0 }) => { + const E = q(g); + if (!E) + return b; + const M = N.snapToGrid ? q(o) : !1, { x: D, y: V, zoom: A } = q(i), { x: O, y: R } = E.getBoundingClientRect(), S = { + x: b.x - O, + y: b.y - R + }; + return Mo(S, [D, V, A], M !== null, M || [1, 1]); + }, + /** + * + * @param position + * @returns + */ + flowToScreenPosition: (b) => { + const N = q(g); + if (!N) + return b; + const { x: E, y: M, zoom: D } = q(i), { x: V, y: A } = N.getBoundingClientRect(), O = rc(b, [E, M, D]); + return { + x: O.x + V, + y: O.y + A + }; + }, + toObject: () => ({ + nodes: q(f).map((b) => ({ + ...b, + // we want to make sure that changes to the nodes object that gets returned by toObject + // do not affect the nodes object + position: { ...b.position }, + data: { ...b.data } + })), + edges: q(d).map((b) => ({ ...b })), + viewport: { ...q(i) } + }), + updateNode: _, + updateNodeData: (b, N, E) => { + var V; + const M = (V = q(p).get(b)) == null ? void 0 : V.internals.userNode; + if (!M) + return; + const D = typeof N == "function" ? N(M) : N; + M.data = E != null && E.replace ? D : { ...M.data, ...D }, f.update((A) => A); + }, + getNodesBounds: (b) => { + const N = q(p), E = q(x); + return g0(b, { nodeLookup: N, nodeOrigin: E }); + }, + getHandleConnections: ({ type: b, id: N, nodeId: E }) => { + var M; + return Array.from(((M = q($).get(`${E}-${b}-${N ?? null}`)) == null ? void 0 : M.values()) ?? []); + }, + viewport: i + }; +} +function Nl(e, t) { + var r; + const n = []; + for (const o of t) { + const i = e.get(o); + if (i) { + const s = "internals" in i ? (r = i.internals) == null ? void 0 : r.userNode : i; + n.push(s); + } + } + return n; +} +var gp = /* @__PURE__ */ ne('
    '); +function od(e, t) { + de(t, !1); + const [n, r] = tt(), o = () => Q(_, "$nodes", n), i = () => Q(m, "$nodeLookup", n), s = () => Q($, "$viewport", n), a = () => Q(C, "$domNode", n), l = re(), u = re(), c = re(); + let f = w(t, "nodeId", 12, void 0), d = w(t, "position", 12, void 0), g = w(t, "align", 12, void 0), p = w(t, "offset", 12, void 0), x = w(t, "isVisible", 12, void 0); + const { domNode: C, viewport: $, nodeLookup: m, nodes: _ } = Ue(), { getNodesBounds: v } = Dt(), b = ar("svelteflow__node_id"); + let N = re(), E = re([]), M = p() !== void 0 ? p() : 10, D = d() !== void 0 ? d() : $e.Top, V = g() !== void 0 ? g() : "center"; + he( + () => (o(), j(f()), i()), + () => { + o(); + const T = Array.isArray(f()) ? f() : [f() || b]; + U(E, T.reduce( + (k, P) => { + const H = i().get(P); + return H && k.push(H), k; + }, + [] + )); + } + ), he( + () => (h(E), s()), + () => { + const T = v(h(E)); + T && U(N, T0(T, s(), D, M, V)); + } + ), he(() => h(E), () => { + U(l, h(E).length === 0 ? 1 : Math.max(...h(E).map((T) => (T.internals.z || 5) + 1))); + }), he(() => o(), () => { + U(u, o().filter((T) => T.selected).length); + }), he( + () => (j(x()), h(E), h(u)), + () => { + U(c, typeof x() == "boolean" ? x() : h(E).length === 1 && h(E)[0].selected && h(u) === 1); + } + ), gt(), He(); + var A = et(), O = be(A); + { + var R = (T) => { + var k = gp(), P = X(k); + pt(P, t, "default", {}), Z(k), vt(k, (H, I) => kr == null ? void 0 : kr(H, I), () => ({ domNode: a() })), Ee( + (H) => { + ce(k, "data-id", H), st(k, "position", "absolute"), st(k, "transform", h(N)), st(k, "z-index", h(l)); + }, + [ + () => h(E).reduce((H, I) => `${H}${I.id} `, "").trim() + ], + pe + ), L(T, k); + }; + ke(O, (T) => { + a() && h(c) && h(E) && T(R); + }); + } + L(e, A); + var S = fe({ + get nodeId() { + return f(); + }, + set nodeId(T) { + f(T), y(); + }, + get position() { + return d(); + }, + set position(T) { + d(T), y(); + }, + get align() { + return g(); + }, + set align(T) { + g(T), y(); + }, + get offset() { + return p(); + }, + set offset(T) { + p(T), y(); + }, + get isVisible() { + return x(); + }, + set isVisible(T) { + x(T), y(); + } + }); + return r(), S; +} +ae( + od, + { + nodeId: {}, + position: {}, + align: {}, + offset: {}, + isVisible: {} + }, + ["default"], + [], + !0 +); +function pr(e) { + const { nodes: t, nodeLookup: n } = Ue(); + let r = [], o = !0; + return Kn([t, n], ([, i], s) => { + var c; + const a = [], l = Array.isArray(e), u = l ? e : [e]; + for (const f of u) { + const d = (c = i.get(f)) == null ? void 0 : c.internals.userNode; + d && a.push({ + id: d.id, + type: d.type, + data: d.data + }); + } + (!z0(a, r) || o) && (r = a, s(l ? a : a[0] ?? null), o = !1); + }); +} +const Ml = "tinyflow-component"; +class yw { + constructor(t) { + wt(this, "options"); + wt(this, "rootEl"); + wt(this, "svelteFlowInstance"); + if (typeof t.element != "string" && !(t.element instanceof Element)) + throw new Error("element must be a string or Element"); + this._setOptions(t), this._init(); + } + _init() { + if (typeof this.options.element == "string") { + if (this.rootEl = document.querySelector(this.options.element), !this.rootEl) + throw new Error( + `element not found by document.querySelector('${this.options.element}')` + ); + } else if (this.options.element instanceof Element) + this.rootEl = this.options.element; + else + throw new Error("element must be a string or Element"); + const t = document.createElement(Ml); + t.style.display = "block", t.style.width = "100%", t.style.height = "100%", t.classList.add("tf-theme-light"), t.options = this.options, t.onInit = (n) => { + this.svelteFlowInstance = n; + }, this.rootEl.appendChild(t); + } + _setOptions(t) { + this.options = { + ...t + }; + } + getOptions() { + return this.options; + } + getData() { + return this.svelteFlowInstance.toObject(); + } + setData(t) { + this.options.data = t; + const n = document.createElement(Ml); + n.style.display = "block", n.style.width = "100%", n.style.height = "100%", n.classList.add("tf-theme-light"), n.options = this.options, n.onInit = (r) => { + this.svelteFlowInstance = r; + }, this.destroy(), this.rootEl.appendChild(n); + } + destroy() { + for (; this.rootEl.firstChild; ) + this.rootEl.removeChild(this.rootEl.firstChild); + } +} +const hp = () => { + const e = we([]), t = we([]), n = we({ x: 250, y: 100, zoom: 1 }); + return { + nodes: e, + edges: t, + viewport: n, + init: (r, o) => { + e.set(r), t.set(o); + }, + addNode: (r) => { + e.update((o) => [...o, r]); + }, + removeNode: (r) => { + e.update((o) => o.filter((i) => i.id !== r)); + }, + updateNode: (r, o) => { + e.update((i) => i.map((s) => s.id === r ? o : s)); + }, + updateNodeData: (r, o) => { + e.update( + (i) => i.map((s) => s.id === r ? { ...s, data: { ...s.data, ...o } } : s) + ); + }, + selectNodeOnly: (r) => { + e.update( + (o) => o.map( + (i) => i.id === r ? { ...i, selected: !0 } : { ...i, selected: !1 } + ) + ); + }, + addEdge: (r) => { + t.update((o) => [...o, r]); + }, + removeEdge: (r) => { + t.update((o) => o.filter((i) => i.id !== r)); + }, + updateEdge: (r, o) => { + t.update((i) => i.map((s) => s.id === r ? o : s)); + }, + updateEdgeData: (r, o) => { + t.update((i) => i.map((s) => s.id === r ? { ...s, data: o } : s)); + } + }; +}, ei = hp(); +var vp = /* @__PURE__ */ ne(""); +function Ke(e, t) { + de(t, !0); + const n = w(t, "children", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "children" + ]); + var o = vp(); + let i; + var s = X(o); + return lr(s, () => n() ?? dt), Z(o), Ee(() => i = on(o, i, { + type: "button", + ...r, + class: `tf-btn nopan nodrag ${t.class ?? ""}` + })), L(e, o), fe({ + get children() { + return n(); + }, + set children(a) { + n(a), y(); + } + }); +} +ae(Ke, { children: {} }, [], [], !0); +var pp = /* @__PURE__ */ ne(""); +function id(e, t) { + de(t, !0); + const n = /* @__PURE__ */ yt(t, ["$$slots", "$$events", "$$legacy", "$$host"]); + var r = pp(); + io(r); + let o; + Ee(() => o = on(r, o, { + type: "checkbox", + ...n, + class: `tf-checkbox nopan nodrag ${t.class ?? ""}` + })), L(e, r), fe(); +} +ae(id, {}, [], [], !0); +var mp = /* @__PURE__ */ ne(""); +function xt(e, t) { + de(t, !0); + const n = /* @__PURE__ */ yt(t, ["$$slots", "$$events", "$$legacy", "$$host"]); + var r = mp(); + io(r); + let o; + Ee(() => o = on(r, o, { + type: "text", + ...n, + class: `tf-input nopan nodrag ${t.class ?? ""}` + })), L(e, r), fe(); +} +ae(xt, {}, [], [], !0); +var yp = /* @__PURE__ */ ne(""); +function $t(e, t) { + de(t, !0); + const n = /* @__PURE__ */ yt(t, ["$$slots", "$$events", "$$legacy", "$$host"]); + var r = yp(); + l1(r); + let o; + Ee(() => o = on(r, o, { + ...n, + class: `tf-textarea nodrag ${t.class ?? ""}` + })), L(e, r), fe(); +} +ae($t, {}, [], [], !0); +var wp = /* @__PURE__ */ ne('
    '), _p = /* @__PURE__ */ ne("
    "); +function sd(e, t) { + const n = nt(t, [ + "children", + "$$slots", + "$$events", + "$$legacy", + "$$host" + ]), r = nt(n, ["items", "onChange", "activeIndex"]); + de(t, !1); + let o = w(t, "items", 28, () => []), i = w(t, "onChange", 12, () => { + }), s = w(t, "activeIndex", 12, 0); + function a(c, f) { + var d; + s(f), (d = i()) == null || d(c, f); + } + He(); + var l = _p(); + let u; + return Yt(l, 5, o, Li, (c, f, d) => { + var g = wp(); + ce(g, "tabindex", d), g.__click = () => a(h(f), d), g.__keydown = ($) => { + ($.key === "Enter" || $.key === " ") && ($.preventDefault(), a(h(f), d)); + }; + var p = X(g); + { + var x = ($) => { + var m = Ie(); + Ee(() => Rt(m, h(f).label)), L($, m); + }, C = ($) => { + var m = et(), _ = be(m); + lr(_, () => h(f).label ?? dt), L($, m); + }; + ke(p, ($) => { + typeof h(f).label == "string" ? $(x) : $(C, !1); + }); + } + Z(g), Ee(() => kt(g, 1, `tf-tabs-item ${(d === s() ? "active" : "") ?? ""}`)), L(c, g); + }), Z(l), Ee(() => u = on(l, u, { + ...r, + class: `tf-tabs ${r.class ?? ""}` + })), L(e, l), fe({ + get items() { + return o(); + }, + set items(c) { + o(c), y(); + }, + get onChange() { + return i(); + }, + set onChange(c) { + i(c), y(); + }, + get activeIndex() { + return s(); + }, + set activeIndex(c) { + s(c), y(); + } + }); +} +Ai(["click", "keydown"]); +ae(sd, { items: {}, onChange: {}, activeIndex: {} }, [], [], !0); +var xp = (e, t, n) => t(h(n)), bp = (e, t, n) => { + (e.key === "Enter" || e.key === " ") && (e.preventDefault(), t(h(n))); +}, Cp = /* @__PURE__ */ ne(''), kp = /* @__PURE__ */ ne('
    '), $p = /* @__PURE__ */ ne('
    '), Ep = /* @__PURE__ */ ne('
    '), Sp = /* @__PURE__ */ ne("
    "); +const Pp = { + hash: "svelte-1jfktzw", + code: `\r + /* 定义旋转的 CSS 类 */.rotate-90.svelte-1jfktzw {transform:rotate(90deg);transition:transform 0.3s ease;}` +}; +function ad(e, t) { + de(t, !0), Je(e, Pp); + let n = w(t, "items", 7), r = w(t, "onChange", 7), o = w(t, "activeKeys", 31, () => Tt([])); + function i(a) { + var l; + o().includes(a.key) ? o(o().filter((u) => u !== a.key)) : (o().push(a.key), o(o())), (l = r()) == null || l(a, o()); + } + var s = Sp(); + return Yt(s, 21, n, Li, (a, l, u) => { + var c = Ep(), f = X(c); + ce(f, "tabindex", u), f.__click = [xp, i, l], f.__keydown = [bp, i, l]; + var d = X(f); + { + var g = (v) => { + var b = Cp(), N = X(b); + Fn(N, { + get target() { + return h(l).icon; + } + }), Z(b), L(v, b); + }; + ke(d, (v) => { + h(l).icon && v(g); + }); + } + var p = z(d, 2); + Fn(p, { + get target() { + return h(l).title; + } + }); + var x = z(p, 2); + Z(f); + var C = z(f, 2); + { + var $ = (v) => { + var b = kp(), N = X(b); + Fn(N, { + get target() { + return h(l).description; + } + }), Z(b), L(v, b); + }; + ke(C, (v) => { + h(l).description && v($); + }); + } + var m = z(C, 2); + { + var _ = (v) => { + var b = $p(), N = X(b); + Fn(N, { + get target() { + return h(l).content; + } + }), Z(b), L(v, b); + }; + ke(m, (v) => { + o().includes(h(l).key) && v(_); + }); + } + Z(c), Ee((v) => kt(x, 1, `tf-collapse-item-title-arrow ${v ?? ""}`, "svelte-1jfktzw"), [ + () => o().includes(h(l).key) ? "rotate-90" : "" + ]), L(a, c); + }), Z(s), Ee(() => { + ce(s, "style", t.style), kt(s, 1, `tf-collapse ${t.class ?? ""}`, "svelte-1jfktzw"); + }), L(e, s), fe({ + get items() { + return n(); + }, + set items(a) { + n(a), y(); + }, + get onChange() { + return r(); + }, + set onChange(a) { + r(a), y(); + }, + get activeKeys() { + return o(); + }, + set activeKeys(a = []) { + o(a), y(); + } + }); +} +Ai(["click", "keydown"]); +ae(ad, { items: {}, onChange: {}, activeKeys: {} }, [], [], !0); +function Fn(e, t) { + de(t, !0); + let n = w(t, "target", 7); + typeof n() > "u" && n("undefined"); + var r = et(), o = be(r); + { + var i = (a) => { + var l = et(), u = be(l); + lr(u, () => n() ?? dt), L(a, l); + }, s = (a) => { + var l = et(), u = be(l); + mu(u, n), L(a, l); + }; + ke(o, (a) => { + typeof n() == "function" ? a(i) : a(s, !1); + }); + } + return L(e, r), fe({ + get target() { + return n(); + }, + set target(a) { + n(a), y(); + } + }); +} +ae(Fn, { target: {} }, [], [], !0); +var Np = (e, t, n) => t(h(n)), Mp = /* @__PURE__ */ _e(''), Tp = /* @__PURE__ */ ne('
    '), Hp = /* @__PURE__ */ ne(' ', 1), Vp = /* @__PURE__ */ ne('
    '), Dp = /* @__PURE__ */ ne(" ", 1), Ap = /* @__PURE__ */ ne('
    '), Lp = /* @__PURE__ */ ne(''), Op = /* @__PURE__ */ ne("
    "); +function sn(e, t) { + de(t, !0); + const n = (_, v = dt) => { + var b = et(), N = be(b); + Yt(N, 19, v, (E, M) => `${M}_${E.value}`, (E, M) => { + var D = Hp(), V = be(D); + V.__click = [Np, x, M]; + var A = X(V), O = X(A); + { + var R = (P) => { + var H = Mp(); + L(P, H); + }; + ke(O, (P) => { + h(M).children && h(M).children.length > 0 && P(R); + }); + } + Z(A); + var S = z(A, 2); + Fn(S, { + get target() { + return h(M).label; + } + }), Z(V); + var T = z(V, 2); + { + var k = (P) => { + var H = Tp(), I = X(H); + n(I, () => h(M).children), Z(H), L(P, H); + }; + ke(T, (P) => { + h(M).children && h(M).children.length > 0 && (l() || c().includes(h(M).value)) && P(k); + }); + } + L(E, D); + }), L(_, b); + }; + let r = w(t, "items", 7), o = w(t, "onExpand", 7), i = w(t, "onSelect", 7), s = w(t, "value", 23, () => []), a = w(t, "defaultValue", 23, () => []), l = w(t, "expandAll", 7, !0), u = w(t, "multiple", 7, !1), c = w(t, "expandValue", 23, () => []), f = w(t, "placeholder", 7), d = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "items", + "onExpand", + "onSelect", + "value", + "defaultValue", + "expandAll", + "multiple", + "expandValue", + "placeholder" + ]), g = /* @__PURE__ */ Me(() => { + const _ = [], v = (b) => { + for (let N of b) + s().length > 0 ? s().includes(N.value) && _.push(N) : a().includes(N.value) && _.push(N), N.children && N.children.length > 0 && v(N.children); + }; + return v(r()), _; + }), p; + function x(_) { + var v, b; + if (_.children && _.children.length > 0) { + (v = o()) == null || v(_); + return; + } else + p == null || p.hide(), (b = i()) == null || b(_); + } + var C = Op(); + let $; + var m = X(C); + return An( + Lo(m, { + floating: (v) => { + var b = Vp(), N = X(b); + n(N, r), Z(b), L(v, b); + }, + children: (v, b) => { + var N = Lp(); + let E; + var M = X(N); + Yt( + M, + 23, + () => h(g), + (D, V) => `${V}_${D.value}`, + (D, V, A) => { + var O = et(), R = be(O); + { + var S = (k) => { + var P = et(), H = be(P); + { + var I = (B) => { + Fn(B, { + get target() { + return h(V).label; + } + }); + }; + ke(H, (B) => { + h(A) === 0 && B(I); + }); + } + L(k, P); + }, T = (k) => { + var P = Dp(), H = be(P); + Fn(H, { + get target() { + return h(V).label; + } + }); + var I = z(H, 2); + { + var B = (F) => { + var K = Ie(","); + L(F, K); + }; + ke(I, (F) => { + h(A) < h(g).length - 1 && F(B); + }); + } + L(k, P); + }; + ke(R, (k) => { + u() ? k(T, !1) : k(S); + }); + } + L(D, O); + }, + (D) => { + var V = Ap(), A = X(V, !0); + Z(V), Ee(() => Rt(A, f())), L(D, V); + } + ), Z(M), Se(2), Z(N), Ee(() => E = on(N, E, { + class: "tf-select-input nopan nodrag", + ...d + })), L(v, N); + }, + $$slots: { floating: !0, default: !0 } + }), + (v) => p = v, + () => p + ), Z(C), Ee(() => $ = on(C, $, { + ...d, + class: `tf-select ${d.class ?? ""}` + })), L(e, C), fe({ + get items() { + return r(); + }, + set items(_) { + r(_), y(); + }, + get onExpand() { + return o(); + }, + set onExpand(_) { + o(_), y(); + }, + get onSelect() { + return i(); + }, + set onSelect(_) { + i(_), y(); + }, + get value() { + return s(); + }, + set value(_ = []) { + s(_), y(); + }, + get defaultValue() { + return a(); + }, + set defaultValue(_ = []) { + a(_), y(); + }, + get expandAll() { + return l(); + }, + set expandAll(_ = !0) { + l(_), y(); + }, + get multiple() { + return u(); + }, + set multiple(_ = !1) { + u(_), y(); + }, + get expandValue() { + return c(); + }, + set expandValue(_ = []) { + c(_), y(); + }, + get placeholder() { + return f(); + }, + set placeholder(_) { + f(_), y(); + } + }); +} +Ai(["click"]); +ae( + sn, + { + items: {}, + onExpand: {}, + onSelect: {}, + value: {}, + defaultValue: {}, + expandAll: {}, + multiple: {}, + expandValue: {}, + placeholder: {} + }, + [], + [], + !0 +); +const _o = Math.min, Er = Math.max, bi = Math.round, mn = (e) => ({ + x: e, + y: e +}), Ip = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" +}, zp = { + start: "end", + end: "start" +}; +function Ds(e, t, n) { + return Er(e, _o(t, n)); +} +function Vo(e, t) { + return typeof e == "function" ? e(t) : e; +} +function fr(e) { + return e.split("-")[0]; +} +function Do(e) { + return e.split("-")[1]; +} +function ld(e) { + return e === "x" ? "y" : "x"; +} +function va(e) { + return e === "y" ? "height" : "width"; +} +function Ir(e) { + return ["top", "bottom"].includes(fr(e)) ? "y" : "x"; +} +function pa(e) { + return ld(Ir(e)); +} +function Rp(e, t, n) { + n === void 0 && (n = !1); + const r = Do(e), o = pa(e), i = va(o); + let s = o === "x" ? r === (n ? "end" : "start") ? "right" : "left" : r === "start" ? "bottom" : "top"; + return t.reference[i] > t.floating[i] && (s = Ci(s)), [s, Ci(s)]; +} +function Bp(e) { + const t = Ci(e); + return [As(e), t, As(t)]; +} +function As(e) { + return e.replace(/start|end/g, (t) => zp[t]); +} +function Yp(e, t, n) { + const r = ["left", "right"], o = ["right", "left"], i = ["top", "bottom"], s = ["bottom", "top"]; + switch (e) { + case "top": + case "bottom": + return n ? t ? o : r : t ? r : o; + case "left": + case "right": + return t ? i : s; + default: + return []; + } +} +function Zp(e, t, n, r) { + const o = Do(e); + let i = Yp(fr(e), n === "start", r); + return o && (i = i.map((s) => s + "-" + o), t && (i = i.concat(i.map(As)))), i; +} +function Ci(e) { + return e.replace(/left|right|bottom|top/g, (t) => Ip[t]); +} +function Xp(e) { + return { + top: 0, + right: 0, + bottom: 0, + left: 0, + ...e + }; +} +function ud(e) { + return typeof e != "number" ? Xp(e) : { + top: e, + right: e, + bottom: e, + left: e + }; +} +function ki(e) { + const { + x: t, + y: n, + width: r, + height: o + } = e; + return { + width: r, + height: o, + top: n, + left: t, + right: t + r, + bottom: n + o, + x: t, + y: n + }; +} +function Tl(e, t, n) { + let { + reference: r, + floating: o + } = e; + const i = Ir(t), s = pa(t), a = va(s), l = fr(t), u = i === "y", c = r.x + r.width / 2 - o.width / 2, f = r.y + r.height / 2 - o.height / 2, d = r[a] / 2 - o[a] / 2; + let g; + switch (l) { + case "top": + g = { + x: c, + y: r.y - o.height + }; + break; + case "bottom": + g = { + x: c, + y: r.y + r.height + }; + break; + case "right": + g = { + x: r.x + r.width, + y: f + }; + break; + case "left": + g = { + x: r.x - o.width, + y: f + }; + break; + default: + g = { + x: r.x, + y: r.y + }; + } + switch (Do(t)) { + case "start": + g[s] -= d * (n && u ? -1 : 1); + break; + case "end": + g[s] += d * (n && u ? -1 : 1); + break; + } + return g; +} +const Fp = async (e, t, n) => { + const { + placement: r = "bottom", + strategy: o = "absolute", + middleware: i = [], + platform: s + } = n, a = i.filter(Boolean), l = await (s.isRTL == null ? void 0 : s.isRTL(t)); + let u = await s.getElementRects({ + reference: e, + floating: t, + strategy: o + }), { + x: c, + y: f + } = Tl(u, r, l), d = r, g = {}, p = 0; + for (let x = 0; x < a.length; x++) { + const { + name: C, + fn: $ + } = a[x], { + x: m, + y: _, + data: v, + reset: b + } = await $({ + x: c, + y: f, + initialPlacement: r, + placement: d, + strategy: o, + middlewareData: g, + rects: u, + platform: s, + elements: { + reference: e, + floating: t + } + }); + c = m ?? c, f = _ ?? f, g = { + ...g, + [C]: { + ...g[C], + ...v + } + }, b && p <= 50 && (p++, typeof b == "object" && (b.placement && (d = b.placement), b.rects && (u = b.rects === !0 ? await s.getElementRects({ + reference: e, + floating: t, + strategy: o + }) : b.rects), { + x: c, + y: f + } = Tl(u, d, l)), x = -1); + } + return { + x: c, + y: f, + placement: d, + strategy: o, + middlewareData: g + }; +}; +async function cd(e, t) { + var n; + t === void 0 && (t = {}); + const { + x: r, + y: o, + platform: i, + rects: s, + elements: a, + strategy: l + } = e, { + boundary: u = "clippingAncestors", + rootBoundary: c = "viewport", + elementContext: f = "floating", + altBoundary: d = !1, + padding: g = 0 + } = Vo(t, e), p = ud(g), C = a[d ? f === "floating" ? "reference" : "floating" : f], $ = ki(await i.getClippingRect({ + element: (n = await (i.isElement == null ? void 0 : i.isElement(C))) == null || n ? C : C.contextElement || await (i.getDocumentElement == null ? void 0 : i.getDocumentElement(a.floating)), + boundary: u, + rootBoundary: c, + strategy: l + })), m = f === "floating" ? { + x: r, + y: o, + width: s.floating.width, + height: s.floating.height + } : s.reference, _ = await (i.getOffsetParent == null ? void 0 : i.getOffsetParent(a.floating)), v = await (i.isElement == null ? void 0 : i.isElement(_)) ? await (i.getScale == null ? void 0 : i.getScale(_)) || { + x: 1, + y: 1 + } : { + x: 1, + y: 1 + }, b = ki(i.convertOffsetParentRelativeRectToViewportRelativeRect ? await i.convertOffsetParentRelativeRectToViewportRelativeRect({ + elements: a, + rect: m, + offsetParent: _, + strategy: l + }) : m); + return { + top: ($.top - b.top + p.top) / v.y, + bottom: (b.bottom - $.bottom + p.bottom) / v.y, + left: ($.left - b.left + p.left) / v.x, + right: (b.right - $.right + p.right) / v.x + }; +} +const Wp = (e) => ({ + name: "arrow", + options: e, + async fn(t) { + const { + x: n, + y: r, + placement: o, + rects: i, + platform: s, + elements: a, + middlewareData: l + } = t, { + element: u, + padding: c = 0 + } = Vo(e, t) || {}; + if (u == null) + return {}; + const f = ud(c), d = { + x: n, + y: r + }, g = pa(o), p = va(g), x = await s.getDimensions(u), C = g === "y", $ = C ? "top" : "left", m = C ? "bottom" : "right", _ = C ? "clientHeight" : "clientWidth", v = i.reference[p] + i.reference[g] - d[g] - i.floating[p], b = d[g] - i.reference[g], N = await (s.getOffsetParent == null ? void 0 : s.getOffsetParent(u)); + let E = N ? N[_] : 0; + (!E || !await (s.isElement == null ? void 0 : s.isElement(N))) && (E = a.floating[_] || i.floating[p]); + const M = v / 2 - b / 2, D = E / 2 - x[p] / 2 - 1, V = _o(f[$], D), A = _o(f[m], D), O = V, R = E - x[p] - A, S = E / 2 - x[p] / 2 + M, T = Ds(O, S, R), k = !l.arrow && Do(o) != null && S !== T && i.reference[p] / 2 - (S < O ? V : A) - x[p] / 2 < 0, P = k ? S < O ? S - O : S - R : 0; + return { + [g]: d[g] + P, + data: { + [g]: T, + centerOffset: S - T - P, + ...k && { + alignmentOffset: P + } + }, + reset: k + }; + } +}), Kp = function(e) { + return e === void 0 && (e = {}), { + name: "flip", + options: e, + async fn(t) { + var n, r; + const { + placement: o, + middlewareData: i, + rects: s, + initialPlacement: a, + platform: l, + elements: u + } = t, { + mainAxis: c = !0, + crossAxis: f = !0, + fallbackPlacements: d, + fallbackStrategy: g = "bestFit", + fallbackAxisSideDirection: p = "none", + flipAlignment: x = !0, + ...C + } = Vo(e, t); + if ((n = i.arrow) != null && n.alignmentOffset) + return {}; + const $ = fr(o), m = Ir(a), _ = fr(a) === a, v = await (l.isRTL == null ? void 0 : l.isRTL(u.floating)), b = d || (_ || !x ? [Ci(a)] : Bp(a)), N = p !== "none"; + !d && N && b.push(...Zp(a, x, p, v)); + const E = [a, ...b], M = await cd(t, C), D = []; + let V = ((r = i.flip) == null ? void 0 : r.overflows) || []; + if (c && D.push(M[$]), f) { + const S = Rp(o, s, v); + D.push(M[S[0]], M[S[1]]); + } + if (V = [...V, { + placement: o, + overflows: D + }], !D.every((S) => S <= 0)) { + var A, O; + const S = (((A = i.flip) == null ? void 0 : A.index) || 0) + 1, T = E[S]; + if (T) + return { + data: { + index: S, + overflows: V + }, + reset: { + placement: T + } + }; + let k = (O = V.filter((P) => P.overflows[0] <= 0).sort((P, H) => P.overflows[1] - H.overflows[1])[0]) == null ? void 0 : O.placement; + if (!k) + switch (g) { + case "bestFit": { + var R; + const P = (R = V.filter((H) => { + if (N) { + const I = Ir(H.placement); + return I === m || // Create a bias to the `y` side axis due to horizontal + // reading directions favoring greater width. + I === "y"; + } + return !0; + }).map((H) => [H.placement, H.overflows.filter((I) => I > 0).reduce((I, B) => I + B, 0)]).sort((H, I) => H[1] - I[1])[0]) == null ? void 0 : R[0]; + P && (k = P); + break; + } + case "initialPlacement": + k = a; + break; + } + if (o !== k) + return { + reset: { + placement: k + } + }; + } + return {}; + } + }; +}; +async function qp(e, t) { + const { + placement: n, + platform: r, + elements: o + } = e, i = await (r.isRTL == null ? void 0 : r.isRTL(o.floating)), s = fr(n), a = Do(n), l = Ir(n) === "y", u = ["left", "top"].includes(s) ? -1 : 1, c = i && l ? -1 : 1, f = Vo(t, e); + let { + mainAxis: d, + crossAxis: g, + alignmentAxis: p + } = typeof f == "number" ? { + mainAxis: f, + crossAxis: 0, + alignmentAxis: null + } : { + mainAxis: f.mainAxis || 0, + crossAxis: f.crossAxis || 0, + alignmentAxis: f.alignmentAxis + }; + return a && typeof p == "number" && (g = a === "end" ? p * -1 : p), l ? { + x: g * c, + y: d * u + } : { + x: d * u, + y: g * c + }; +} +const Gp = function(e) { + return e === void 0 && (e = 0), { + name: "offset", + options: e, + async fn(t) { + var n, r; + const { + x: o, + y: i, + placement: s, + middlewareData: a + } = t, l = await qp(t, e); + return s === ((n = a.offset) == null ? void 0 : n.placement) && (r = a.arrow) != null && r.alignmentOffset ? {} : { + x: o + l.x, + y: i + l.y, + data: { + ...l, + placement: s + } + }; + } + }; +}, Up = function(e) { + return e === void 0 && (e = {}), { + name: "shift", + options: e, + async fn(t) { + const { + x: n, + y: r, + placement: o + } = t, { + mainAxis: i = !0, + crossAxis: s = !1, + limiter: a = { + fn: (C) => { + let { + x: $, + y: m + } = C; + return { + x: $, + y: m + }; + } + }, + ...l + } = Vo(e, t), u = { + x: n, + y: r + }, c = await cd(t, l), f = Ir(fr(o)), d = ld(f); + let g = u[d], p = u[f]; + if (i) { + const C = d === "y" ? "top" : "left", $ = d === "y" ? "bottom" : "right", m = g + c[C], _ = g - c[$]; + g = Ds(m, g, _); + } + if (s) { + const C = f === "y" ? "top" : "left", $ = f === "y" ? "bottom" : "right", m = p + c[C], _ = p - c[$]; + p = Ds(m, p, _); + } + const x = a.fn({ + ...t, + [d]: g, + [f]: p + }); + return { + ...x, + data: { + x: x.x - n, + y: x.y - r, + enabled: { + [d]: i, + [f]: s + } + } + }; + } + }; +}; +function Ki() { + return typeof window < "u"; +} +function Wr(e) { + return dd(e) ? (e.nodeName || "").toLowerCase() : "#document"; +} +function Bt(e) { + var t; + return (e == null || (t = e.ownerDocument) == null ? void 0 : t.defaultView) || window; +} +function zn(e) { + var t; + return (t = (dd(e) ? e.ownerDocument : e.document) || window.document) == null ? void 0 : t.documentElement; +} +function dd(e) { + return Ki() ? e instanceof Node || e instanceof Bt(e).Node : !1; +} +function an(e) { + return Ki() ? e instanceof Element || e instanceof Bt(e).Element : !1; +} +function _n(e) { + return Ki() ? e instanceof HTMLElement || e instanceof Bt(e).HTMLElement : !1; +} +function Hl(e) { + return !Ki() || typeof ShadowRoot > "u" ? !1 : e instanceof ShadowRoot || e instanceof Bt(e).ShadowRoot; +} +function Ao(e) { + const { + overflow: t, + overflowX: n, + overflowY: r, + display: o + } = ln(e); + return /auto|scroll|overlay|hidden|clip/.test(t + r + n) && !["inline", "contents"].includes(o); +} +function jp(e) { + return ["table", "td", "th"].includes(Wr(e)); +} +function qi(e) { + return [":popover-open", ":modal"].some((t) => { + try { + return e.matches(t); + } catch { + return !1; + } + }); +} +function ma(e) { + const t = ya(), n = an(e) ? ln(e) : e; + return ["transform", "translate", "scale", "rotate", "perspective"].some((r) => n[r] ? n[r] !== "none" : !1) || (n.containerType ? n.containerType !== "normal" : !1) || !t && (n.backdropFilter ? n.backdropFilter !== "none" : !1) || !t && (n.filter ? n.filter !== "none" : !1) || ["transform", "translate", "scale", "rotate", "perspective", "filter"].some((r) => (n.willChange || "").includes(r)) || ["paint", "layout", "strict", "content"].some((r) => (n.contain || "").includes(r)); +} +function Jp(e) { + let t = er(e); + for (; _n(t) && !zr(t); ) { + if (ma(t)) + return t; + if (qi(t)) + return null; + t = er(t); + } + return null; +} +function ya() { + return typeof CSS > "u" || !CSS.supports ? !1 : CSS.supports("-webkit-backdrop-filter", "none"); +} +function zr(e) { + return ["html", "body", "#document"].includes(Wr(e)); +} +function ln(e) { + return Bt(e).getComputedStyle(e); +} +function Gi(e) { + return an(e) ? { + scrollLeft: e.scrollLeft, + scrollTop: e.scrollTop + } : { + scrollLeft: e.scrollX, + scrollTop: e.scrollY + }; +} +function er(e) { + if (Wr(e) === "html") + return e; + const t = ( + // Step into the shadow DOM of the parent of a slotted node. + e.assignedSlot || // DOM Element detected. + e.parentNode || // ShadowRoot detected. + Hl(e) && e.host || // Fallback. + zn(e) + ); + return Hl(t) ? t.host : t; +} +function fd(e) { + const t = er(e); + return zr(t) ? e.ownerDocument ? e.ownerDocument.body : e.body : _n(t) && Ao(t) ? t : fd(t); +} +function gd(e, t, n) { + var r; + t === void 0 && (t = []); + const o = fd(e), i = o === ((r = e.ownerDocument) == null ? void 0 : r.body), s = Bt(o); + return i ? (Ls(s), t.concat(s, s.visualViewport || [], Ao(o) ? o : [], [])) : t.concat(o, gd(o, [])); +} +function Ls(e) { + return e.parent && Object.getPrototypeOf(e.parent) ? e.frameElement : null; +} +function hd(e) { + const t = ln(e); + let n = parseFloat(t.width) || 0, r = parseFloat(t.height) || 0; + const o = _n(e), i = o ? e.offsetWidth : n, s = o ? e.offsetHeight : r, a = bi(n) !== i || bi(r) !== s; + return a && (n = i, r = s), { + width: n, + height: r, + $: a + }; +} +function vd(e) { + return an(e) ? e : e.contextElement; +} +function Sr(e) { + const t = vd(e); + if (!_n(t)) + return mn(1); + const n = t.getBoundingClientRect(), { + width: r, + height: o, + $: i + } = hd(t); + let s = (i ? bi(n.width) : n.width) / r, a = (i ? bi(n.height) : n.height) / o; + return (!s || !Number.isFinite(s)) && (s = 1), (!a || !Number.isFinite(a)) && (a = 1), { + x: s, + y: a + }; +} +const Qp = /* @__PURE__ */ mn(0); +function pd(e) { + const t = Bt(e); + return !ya() || !t.visualViewport ? Qp : { + x: t.visualViewport.offsetLeft, + y: t.visualViewport.offsetTop + }; +} +function em(e, t, n) { + return t === void 0 && (t = !1), !n || t && n !== Bt(e) ? !1 : t; +} +function xo(e, t, n, r) { + t === void 0 && (t = !1), n === void 0 && (n = !1); + const o = e.getBoundingClientRect(), i = vd(e); + let s = mn(1); + t && (r ? an(r) && (s = Sr(r)) : s = Sr(e)); + const a = em(i, n, r) ? pd(i) : mn(0); + let l = (o.left + a.x) / s.x, u = (o.top + a.y) / s.y, c = o.width / s.x, f = o.height / s.y; + if (i) { + const d = Bt(i), g = r && an(r) ? Bt(r) : r; + let p = d, x = Ls(p); + for (; x && r && g !== p; ) { + const C = Sr(x), $ = x.getBoundingClientRect(), m = ln(x), _ = $.left + (x.clientLeft + parseFloat(m.paddingLeft)) * C.x, v = $.top + (x.clientTop + parseFloat(m.paddingTop)) * C.y; + l *= C.x, u *= C.y, c *= C.x, f *= C.y, l += _, u += v, p = Bt(x), x = Ls(p); + } + } + return ki({ + width: c, + height: f, + x: l, + y: u + }); +} +function wa(e, t) { + const n = Gi(e).scrollLeft; + return t ? t.left + n : xo(zn(e)).left + n; +} +function md(e, t, n) { + n === void 0 && (n = !1); + const r = e.getBoundingClientRect(), o = r.left + t.scrollLeft - (n ? 0 : ( + // RTL scrollbar. + wa(e, r) + )), i = r.top + t.scrollTop; + return { + x: o, + y: i + }; +} +function tm(e) { + let { + elements: t, + rect: n, + offsetParent: r, + strategy: o + } = e; + const i = o === "fixed", s = zn(r), a = t ? qi(t.floating) : !1; + if (r === s || a && i) + return n; + let l = { + scrollLeft: 0, + scrollTop: 0 + }, u = mn(1); + const c = mn(0), f = _n(r); + if ((f || !f && !i) && ((Wr(r) !== "body" || Ao(s)) && (l = Gi(r)), _n(r))) { + const g = xo(r); + u = Sr(r), c.x = g.x + r.clientLeft, c.y = g.y + r.clientTop; + } + const d = s && !f && !i ? md(s, l, !0) : mn(0); + return { + width: n.width * u.x, + height: n.height * u.y, + x: n.x * u.x - l.scrollLeft * u.x + c.x + d.x, + y: n.y * u.y - l.scrollTop * u.y + c.y + d.y + }; +} +function nm(e) { + return Array.from(e.getClientRects()); +} +function rm(e) { + const t = zn(e), n = Gi(e), r = e.ownerDocument.body, o = Er(t.scrollWidth, t.clientWidth, r.scrollWidth, r.clientWidth), i = Er(t.scrollHeight, t.clientHeight, r.scrollHeight, r.clientHeight); + let s = -n.scrollLeft + wa(e); + const a = -n.scrollTop; + return ln(r).direction === "rtl" && (s += Er(t.clientWidth, r.clientWidth) - o), { + width: o, + height: i, + x: s, + y: a + }; +} +function om(e, t) { + const n = Bt(e), r = zn(e), o = n.visualViewport; + let i = r.clientWidth, s = r.clientHeight, a = 0, l = 0; + if (o) { + i = o.width, s = o.height; + const u = ya(); + (!u || u && t === "fixed") && (a = o.offsetLeft, l = o.offsetTop); + } + return { + width: i, + height: s, + x: a, + y: l + }; +} +function im(e, t) { + const n = xo(e, !0, t === "fixed"), r = n.top + e.clientTop, o = n.left + e.clientLeft, i = _n(e) ? Sr(e) : mn(1), s = e.clientWidth * i.x, a = e.clientHeight * i.y, l = o * i.x, u = r * i.y; + return { + width: s, + height: a, + x: l, + y: u + }; +} +function Vl(e, t, n) { + let r; + if (t === "viewport") + r = om(e, n); + else if (t === "document") + r = rm(zn(e)); + else if (an(t)) + r = im(t, n); + else { + const o = pd(e); + r = { + x: t.x - o.x, + y: t.y - o.y, + width: t.width, + height: t.height + }; + } + return ki(r); +} +function yd(e, t) { + const n = er(e); + return n === t || !an(n) || zr(n) ? !1 : ln(n).position === "fixed" || yd(n, t); +} +function sm(e, t) { + const n = t.get(e); + if (n) + return n; + let r = gd(e, []).filter((a) => an(a) && Wr(a) !== "body"), o = null; + const i = ln(e).position === "fixed"; + let s = i ? er(e) : e; + for (; an(s) && !zr(s); ) { + const a = ln(s), l = ma(s); + !l && a.position === "fixed" && (o = null), (i ? !l && !o : !l && a.position === "static" && !!o && ["absolute", "fixed"].includes(o.position) || Ao(s) && !l && yd(e, s)) ? r = r.filter((c) => c !== s) : o = a, s = er(s); + } + return t.set(e, r), r; +} +function am(e) { + let { + element: t, + boundary: n, + rootBoundary: r, + strategy: o + } = e; + const s = [...n === "clippingAncestors" ? qi(t) ? [] : sm(t, this._c) : [].concat(n), r], a = s[0], l = s.reduce((u, c) => { + const f = Vl(t, c, o); + return u.top = Er(f.top, u.top), u.right = _o(f.right, u.right), u.bottom = _o(f.bottom, u.bottom), u.left = Er(f.left, u.left), u; + }, Vl(t, a, o)); + return { + width: l.right - l.left, + height: l.bottom - l.top, + x: l.left, + y: l.top + }; +} +function lm(e) { + const { + width: t, + height: n + } = hd(e); + return { + width: t, + height: n + }; +} +function um(e, t, n) { + const r = _n(t), o = zn(t), i = n === "fixed", s = xo(e, !0, i, t); + let a = { + scrollLeft: 0, + scrollTop: 0 + }; + const l = mn(0); + if (r || !r && !i) + if ((Wr(t) !== "body" || Ao(o)) && (a = Gi(t)), r) { + const d = xo(t, !0, i, t); + l.x = d.x + t.clientLeft, l.y = d.y + t.clientTop; + } else o && (l.x = wa(o)); + const u = o && !r && !i ? md(o, a) : mn(0), c = s.left + a.scrollLeft - l.x - u.x, f = s.top + a.scrollTop - l.y - u.y; + return { + x: c, + y: f, + width: s.width, + height: s.height + }; +} +function fs(e) { + return ln(e).position === "static"; +} +function Dl(e, t) { + if (!_n(e) || ln(e).position === "fixed") + return null; + if (t) + return t(e); + let n = e.offsetParent; + return zn(e) === n && (n = n.ownerDocument.body), n; +} +function wd(e, t) { + const n = Bt(e); + if (qi(e)) + return n; + if (!_n(e)) { + let o = er(e); + for (; o && !zr(o); ) { + if (an(o) && !fs(o)) + return o; + o = er(o); + } + return n; + } + let r = Dl(e, t); + for (; r && jp(r) && fs(r); ) + r = Dl(r, t); + return r && zr(r) && fs(r) && !ma(r) ? n : r || Jp(e) || n; +} +const cm = async function(e) { + const t = this.getOffsetParent || wd, n = this.getDimensions, r = await n(e.floating); + return { + reference: um(e.reference, await t(e.floating), e.strategy), + floating: { + x: 0, + y: 0, + width: r.width, + height: r.height + } + }; +}; +function dm(e) { + return ln(e).direction === "rtl"; +} +const fm = { + convertOffsetParentRelativeRectToViewportRelativeRect: tm, + getDocumentElement: zn, + getClippingRect: am, + getOffsetParent: wd, + getElementRects: cm, + getClientRects: nm, + getDimensions: lm, + getScale: Sr, + isElement: an, + isRTL: dm +}, gm = Gp, hm = Up, vm = Kp, pm = Wp, mm = (e, t, n) => { + const r = /* @__PURE__ */ new Map(), o = { + platform: fm, + ...n + }, i = { + ...o.platform, + _c: r + }; + return Fp(e, t, { + ...o, + platform: i + }); +}, ym = ({ + trigger: e, + triggerEvent: t, + floatContent: n, + placement: r = "bottom", + offsetOptions: o, + flipOptions: i, + shiftOptions: s, + interactive: a, + showArrow: l +}) => { + if (typeof e == "string") { + const $ = document.querySelector(e); + if ($) + e = $; + else + throw new Error("element not found by document.querySelector('" + e + "')"); + } + let u; + if (typeof n == "string") { + const $ = document.querySelector(n); + if ($) + u = $; + else + throw new Error("element not found by document.querySelector('" + n + "')"); + } else + u = n; + let c; + l && (c = document.createElement("div"), c.style.position = "absolute", c.style.backgroundColor = "#222", c.style.width = "8px", c.style.height = "8px", c.style.transform = "rotate(45deg)", c.style.display = "none", u.firstElementChild.before(c)); + function f() { + mm(e, u, { + placement: r, + middleware: [ + gm(o), + // 手动偏移配置 + vm(i), + //自动翻转 + hm(s), + //自动偏移(使得浮动元素能够进入视野) + ...l ? [pm({ element: c })] : [] + ] + }).then(({ x: $, y: m, placement: _, middlewareData: v }) => { + if (Object.assign(u.style, { + left: `${$}px`, + top: `${m}px` + }), l) { + const { x: b, y: N } = v.arrow, E = { + top: "bottom", + right: "left", + bottom: "top", + left: "right" + }[_.split("-")[0]]; + Object.assign(c.style, { + zIndex: -1, + left: b != null ? `${b}px` : "", + top: N != null ? `${N}px` : "", + right: "", + bottom: "", + [E]: "2px" + }); + } + }); + } + let d = !1; + function g() { + u.style.display = "block", u.style.visibility = "block", u.style.position = "absolute", l && (c.style.display = "block"), d = !0, f(); + } + function p() { + u.style.display = "none", l && (c.style.display = "none"), d = !1; + } + function x($) { + $.stopPropagation(), d ? p() : g(); + } + function C($) { + u.contains($.target) || p(); + } + return (!t || t.length == 0) && (t = ["click"]), t.forEach(($) => { + e.addEventListener($, x); + }), document.addEventListener("click", C), { + destroy() { + t.forEach(($) => { + e.removeEventListener($, x); + }), document.removeEventListener("click", C); + }, + hide() { + p(); + }, + isVisible() { + return d; + } + }; +}; +var wm = /* @__PURE__ */ ne('
    '); +function Lo(e, t) { + de(t, !0); + const n = w(t, "children", 7), r = w(t, "floating", 7), o = w(t, "placement", 7, "bottom"); + let i, s, a; + un(() => (a = ym({ + trigger: i, + floatContent: s, + interactive: !0, + placement: o() + }), () => { + a.destroy(); + })); + function l() { + a.hide(); + } + var u = wm(), c = X(u), f = X(c); + lr(f, n), Z(c), An(c, (p) => i = p, () => i); + var d = z(c, 2), g = X(d); + return lr(g, r), Z(d), An(d, (p) => s = p, () => s), Z(u), L(e, u), fe({ + hide: l, + get children() { + return n(); + }, + set children(p) { + n(p), y(); + }, + get floating() { + return r(); + }, + set floating(p) { + r(p), y(); + }, + get placement() { + return o(); + }, + set placement(p = "bottom") { + o(p), y(); + } + }); +} +ae(Lo, { children: {}, floating: {}, placement: {} }, [], ["hide"], !0); +function Ge(e, t) { + de(t, !0); + const n = w(t, "children", 7), r = w(t, "level", 7, 1), o = w(t, "mt", 7), i = w(t, "mb", 7); + var s = et(), a = be(s); + return m1(a, () => `h${r()}`, !1, (l, u) => { + let c; + Ee(() => c = on( + l, + c, + { + class: "tf-heading", + style: `margin-top:${o() || "0"};margin-bottom:${i() || "0"}` + }, + void 0, + l.namespaceURI === Rl, + l.nodeName.includes("-") + )); + var f = et(), d = be(f); + lr(d, () => n() ?? dt), L(u, f); + }), L(e, s), fe({ + get children() { + return n(); + }, + set children(l) { + n(l), y(); + }, + get level() { + return r(); + }, + set level(l = 1) { + r(l), y(); + }, + get mt() { + return o(); + }, + set mt(l) { + o(l), y(); + }, + get mb() { + return i(); + }, + set mb(l) { + i(l), y(); + } + }); +} +ae(Ge, { children: {}, level: {}, mt: {}, mb: {} }, [], [], !0); +var _m = /* @__PURE__ */ _e(''); +const xm = { + hash: "svelte-1rvn4a8", + code: ".input-btn-more {border:1px solid transparent;padding:3px;&:hover {background:#eee;border:1px solid transparent;}}" +}; +function Ui(e, t) { + de(t, !0), Je(e, xm); + const n = /* @__PURE__ */ yt(t, ["$$slots", "$$events", "$$legacy", "$$host"]); + Ke(e, ut(() => n, { + get class() { + return `input-btn-more ${t.class ?? ""}`; + }, + children: (r, o) => { + var i = _m(); + L(r, i); + }, + $$slots: { default: !0 } + })), fe(); +} +ae(Ui, {}, [], [], !0); +const bm = () => { + const e = Ue(); + return { + deleteNode: (n) => { + e.nodes.update((r) => r.filter((o) => o.id !== n)), e.edges.update( + (r) => r.filter((o) => o.source !== n && o.target !== n) + ); + } + }; +}, Rr = (e = 16) => { + const t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", n = new Uint8Array(e); + return crypto.getRandomValues(n), Array.from(n, (r) => t[r % t.length]).join(""); +}, Cm = () => { + const { nodes: e, nodeLookup: t } = Ue(); + return { + copyNode: (r) => { + var s; + const i = (s = q(t).get(r)) == null ? void 0 : s.internals.userNode; + if (i) { + const a = Rr(), l = { + ...i, + id: a, + position: { + x: i.position.x + 50, + y: i.position.y + 50 + } + }; + e.update((u) => [...u, l]), e.update( + (u) => u.map( + (c) => c.id === a ? { ...c, selected: !0 } : { ...c, selected: !1 } + ) + ); + } + } + }; +}; +var km = /* @__PURE__ */ _e(''), $m = /* @__PURE__ */ _e(''), Em = /* @__PURE__ */ _e(''), Sm = /* @__PURE__ */ ne('
    '), Pm = /* @__PURE__ */ ne('
    TinyFlow.ai
    ', 1); +const Nm = { + hash: "svelte-44dmwv", + code: ".tf-node-toolbar.svelte-44dmwv {display:flex;gap:5px;padding:5px;border-radius:5px;background:#fff;border:1px solid #eee;box-shadow:0 0 5px rgba(0, 0, 0, 0.1);}.tf-node-toolbar-item {border:1px solid transparent;}" +}; +function dn(e, t) { + de(t, !0), Je(e, Nm); + const n = w(t, "data", 7), r = w(t, "id", 7, ""), o = w(t, "icon", 7), i = w(t, "handle", 7), s = w(t, "children", 7), a = w(t, "allowExecute", 7, !0), l = w(t, "allowCopy", 7, !0), u = w(t, "allowDelete", 7, !0), c = w(t, "showSourceHandle", 7, !0), f = w(t, "showTargetHandle", 7, !0); + let d = n().expand ? ["key"] : []; + const { updateNodeData: g } = Dt(), p = [ + { + key: "key", + icon: o(), + title: n().title, + description: n().description, + content: s() + } + ], { deleteNode: x } = bm(), { copyNode: C } = Cm(); + var $ = Pm(), m = be($); + { + var _ = (O) => { + od(O, { + get position() { + return $e.Top; + }, + align: "end", + children: (R, S) => { + var T = Sm(), k = X(T); + { + var P = (K) => { + Ke(K, { + class: "tf-node-toolbar-item", + children: (ie, ee) => { + var W = km(); + L(ie, W); + }, + $$slots: { default: !0 } + }); + }; + ke(k, (K) => { + a() && K(P); + }); + } + var H = z(k, 2); + { + var I = (K) => { + Ke(K, { + class: "tf-node-toolbar-item", + onclick: () => { + C(r()); + }, + children: (ie, ee) => { + var W = $m(); + L(ie, W); + }, + $$slots: { default: !0 } + }); + }; + ke(H, (K) => { + l() && K(I); + }); + } + var B = z(H, 2); + { + var F = (K) => { + Ke(K, { + class: "tf-node-toolbar-item", + onclick: () => { + x(r()); + }, + children: (ie, ee) => { + var W = Em(); + L(ie, W); + }, + $$slots: { default: !0 } + }); + }; + ke(B, (K) => { + u() && K(F); + }); + } + Z(T), L(R, T); + }, + $$slots: { default: !0 } + }); + }; + ke(m, (O) => { + (a() || l() || u()) && O(_); + }); + } + var v = z(m, 2), b = z(X(v), 2), N = X(b); + ad(N, { + items: p, + activeKeys: d, + onChange: (O, R) => { + g(r(), { expand: R == null ? void 0 : R.includes("key") }); + } + }), Z(b), Z(v); + var E = z(v, 2); + { + var M = (O) => { + Qn(O, { + type: "target", + get position() { + return $e.Left; + }, + style: " left: -12px;top: 20px" + }); + }; + ke(E, (O) => { + f() && O(M); + }); + } + var D = z(E, 2); + { + var V = (O) => { + Qn(O, { + type: "source", + get position() { + return $e.Right; + }, + style: "right: -12px;top: 20px" + }); + }; + ke(D, (O) => { + c() && O(V); + }); + } + var A = z(D, 2); + return lr(A, () => i() ?? dt), L(e, $), fe({ + get data() { + return n(); + }, + set data(O) { + n(O), y(); + }, + get id() { + return r(); + }, + set id(O = "") { + r(O), y(); + }, + get icon() { + return o(); + }, + set icon(O) { + o(O), y(); + }, + get handle() { + return i(); + }, + set handle(O) { + i(O), y(); + }, + get children() { + return s(); + }, + set children(O) { + s(O), y(); + }, + get allowExecute() { + return a(); + }, + set allowExecute(O = !0) { + a(O), y(); + }, + get allowCopy() { + return l(); + }, + set allowCopy(O = !0) { + l(O), y(); + }, + get allowDelete() { + return u(); + }, + set allowDelete(O = !0) { + u(O), y(); + }, + get showSourceHandle() { + return c(); + }, + set showSourceHandle(O = !0) { + c(O), y(); + }, + get showTargetHandle() { + return f(); + }, + set showTargetHandle(O = !0) { + f(O), y(); + } + }); +} +ae( + dn, + { + data: {}, + id: {}, + icon: {}, + handle: {}, + children: {}, + allowExecute: {}, + allowCopy: {}, + allowDelete: {}, + showSourceHandle: {}, + showTargetHandle: {} + }, + [], + [], + !0 +); +function ht() { + return ar("svelteflow__node_id"); +} +const _d = [ + { + value: "String", + label: "String" + }, + { + value: "Number", + label: "Number" + }, + { + value: "Boolean", + label: "Boolean" + }, + { + value: "File", + label: "File" + }, + { + value: "Object", + label: "Object" + }, + { + value: "Array", + label: "Array" + } +], Mm = [ + { + value: "ref", + label: "引用" + }, + { + value: "input", + label: "固定值" + } +]; +var Tm = /* @__PURE__ */ ne('
    参数类型:
    默认值:
    参数描述:
    '), Hm = /* @__PURE__ */ _e(''), Vm = /* @__PURE__ */ ne('
    ', 1); +const Dm = { + hash: "svelte-laou7w", + code: ".input-item.svelte-laou7w {display:flex;align-items:center;}.input-more-setting.svelte-laou7w {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-laou7w .input-more-item:where(.svelte-laou7w) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}" +}; +function xd(e, t) { + de(t, !0), Je(e, Dm); + const [n, r] = tt(), o = () => Q(h(l), "$node", n), i = w(t, "parameter", 7), s = w(t, "index", 7); + let a = ht(), l = /* @__PURE__ */ Me(() => pr(a)), u = /* @__PURE__ */ Me(() => { + var M, D; + return { + ...i(), + ...(D = (M = o()) == null ? void 0 : M.data) == null ? void 0 : D.parameters[s()] + }; + }); + const { updateNodeData: c } = Dt(), f = (M) => { + const D = M.target.value; + c(a, (V) => { + let A = V.data.parameters; + return A[s()].name = D, { parameters: A }; + }); + }, d = (M) => { + const D = M.target.checked; + c(a, (V) => { + let A = V.data.parameters; + return A[s()].required = D, { parameters: A }; + }); + }, g = (M) => { + const D = M.value; + D && c(a, (V) => { + let A = V.data.parameters; + return A[s()].dataType = D, { parameters: A }; + }); + }; + let p; + const x = () => { + c(a, (M) => { + let D = M.data.parameters; + return D.splice(s(), 1), { parameters: [...D] }; + }), p == null || p.hide(); + }; + var C = Vm(), $ = be(C), m = X($); + xt(m, { + style: "width: 100%;", + get value() { + return h(u).name; + }, + placeholder: "请输入参数名称", + oninput: f + }), Z($); + var _ = z($, 2), v = X(_); + id(v, { + get checked() { + return h(u).required; + }, + onchange: d + }), Z(_); + var b = z(_, 2), N = X(b); + An( + Lo(N, { + placement: "bottom", + floating: (D) => { + var V = Tm(), A = X(V), O = z(X(A)); + const R = /* @__PURE__ */ Me(() => h(u).dataType ? [h(u).dataType] : ["String"]); + sn(O, { + items: _d, + style: "width: 100%", + onSelect: g, + get value() { + return h(R); + } + }), Z(A); + var S = z(A, 2), T = z(X(S)); + $t(T, { rows: 1, style: "width: 100%;" }), Z(S); + var k = z(S, 2), P = z(X(k)); + $t(P, { rows: 3, style: "width: 100%;" }), Z(k); + var H = z(k, 2), I = X(H); + Ke(I, { + onclick: x, + children: (B, F) => { + Se(); + var K = Ie("删除"); + L(B, K); + }, + $$slots: { default: !0 } + }), Z(H), Z(V), L(D, V); + }, + children: (D, V) => { + Ke(D, { + class: "input-btn-more", + children: (A, O) => { + var R = Hm(); + L(A, R); + }, + $$slots: { default: !0 } + }); + }, + $$slots: { floating: !0, default: !0 } + }), + (D) => p = D, + () => p + ), Z(b), L(e, C); + var E = fe({ + get parameter() { + return i(); + }, + set parameter(M) { + i(M), y(); + }, + get index() { + return s(); + }, + set index(M) { + s(M), y(); + } + }); + return r(), E; +} +ae(xd, { parameter: {}, index: {} }, [], [], !0); +var Am = /* @__PURE__ */ ne('
    参数名称
    必填
    ', 1), Lm = /* @__PURE__ */ ne('
    无输入参数
    '), Om = /* @__PURE__ */ ne('
    '); +const Im = { + hash: "svelte-3n0wca", + code: `.input-container.svelte-3n0wca {display:grid;grid-template-columns:80% 10% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-3n0wca .none-params:where(.svelte-3n0wca) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-3n0wca .input-header:where(.svelte-3n0wca) {font-size:12px;color:#666;}` +}; +function bd(e, t) { + de(t, !0), Je(e, Im); + const [n, r] = tt(), o = () => Q(h(s), "$node", n); + let i = ht(), s = /* @__PURE__ */ Me(() => pr(i)), a = /* @__PURE__ */ Me(() => { + var d, g; + return [...((g = (d = o()) == null ? void 0 : d.data) == null ? void 0 : g.parameters) || []]; + }); + var l = Om(), u = X(l); + { + var c = (d) => { + var g = Am(); + Se(4), L(d, g); + }; + ke(u, (d) => { + h(a).length !== 0 && d(c); + }); + } + var f = z(u, 2); + Yt( + f, + 19, + () => h(a), + (d) => d.id, + (d, g, p) => { + xd(d, { + get parameter() { + return h(g); + }, + get index() { + return h(p); + } + }); + }, + (d) => { + var g = Lm(); + L(d, g); + } + ), Z(l), L(e, l), fe(), r(); +} +ae(bd, {}, [], [], !0); +const Cd = (e) => { + !e || e.length == 0 || e.forEach((t) => { + t.id || (t.id = Rr()), Cd(t.children); + }); +}, kn = () => { + const { updateNodeData: e } = Dt(); + return { + addParameter: (t, n = "parameters", r) => { + Cd(r == null ? void 0 : r.children); + const o = { + ...r, + id: Rr() + }; + e(t, (i) => { + let s = i.data[n]; + return s ? s.push(o) : s = [o], { + [n]: [...s] + }; + }); + } + }; +}; +var zm = /* @__PURE__ */ _e(''), Rm = /* @__PURE__ */ _e(''), Bm = /* @__PURE__ */ ne('
    ', 1); +const Ym = { + hash: "svelte-r5g35l", + code: ".heading.svelte-r5g35l {display:flex;margin-bottom:10px;}.input-btn-more {border:1px solid transparent;padding:3px;}.input-btn-more:hover {background:#eee;border:1px solid transparent;}" +}; +function kd(e, t) { + de(t, !0), Je(e, Ym); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(); + return dn(e, ut(() => r, { + get data() { + return n(); + }, + allowExecute: !1, + showTargetHandle: !1, + icon: (a) => { + var l = zm(); + L(a, l); + }, + children: (a, l) => { + var u = Bm(), c = be(u), f = X(c); + Ge(f, { + level: 3, + children: (p, x) => { + Se(); + var C = Ie("输入参数"); + L(p, C); + }, + $$slots: { default: !0 } + }); + var d = z(f, 2); + Ke(d, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (p, x) => { + var C = Rm(); + L(p, C); + }, + $$slots: { default: !0 } + }), Z(c); + var g = z(c, 2); + bd(g, {}), L(a, u); + }, + $$slots: { icon: !0, default: !0 } + })), fe({ + get data() { + return n(); + }, + set data(s) { + n(s), y(); + } + }); +} +ae(kd, { data: {} }, [], [], !0); +const $d = (e, t, n) => { + for (let r of n) + r.target === t && r.source && (e.push(r.source), $d(e, r.source, n)); +}, Al = (e, t) => { + if (e.type === "startNode") { + const n = e.data.parameters, r = []; + if (n) + for (const o of n) + r.push({ + label: o.name + (t ? ` (Array<${o.dataType || "String"}>)` : ` (${o.dataType || "String"})`), + value: e.id + "." + o.name + }); + return { + label: e.data.title, + value: e.id, + children: r + }; + } else { + if (e.type === "loopNode" && t) + return { + label: e.data.title, + value: e.id, + children: [ + { + label: "loopItem", + value: e.id + ".loop" + }, + { + label: "index (Number)", + value: e.id + ".index" + } + ] + }; + { + const n = e.data.outputDefs; + if (n) { + const r = (o, i) => !o || o.length === 0 ? [] : o.map((s) => ({ + label: s.name + (t ? ` (Array<${s.dataType || "String"}>)` : ` (${s.dataType || "String"})`), + // label: param.name , + value: i + "." + s.name, + children: r(s.children, i + "." + s.name) + })); + return { + label: e.data.title, + value: e.id, + children: r(n, e.id) + }; + } + } + } +}, Zm = (e = !1) => { + const t = ht(), n = pr(t), { nodes: r, edges: o } = Ue(); + return Kn([n, r, o], ([i, s, a]) => { + const l = []; + if (e) { + for (let u of s) + if (u.parentId === i.id) { + const c = Al(u, u.parentId === i.id); + c && l.push(c); + } + } else { + const u = []; + $d(u, t, a); + for (let c of s) + if (u.includes(c.id)) { + const f = Al(c, c.parentId === i.id); + f && l.push(f); + } + } + return l; + }); +}; +var Xm = /* @__PURE__ */ ne('
    数据来源:
    默认值:
    参数描述:
    '), Fm = /* @__PURE__ */ ne('
    ', 1); +const Wm = { + hash: "svelte-laou7w", + code: ".input-item.svelte-laou7w {display:flex;align-items:center;}.input-more-setting.svelte-laou7w {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-laou7w .input-more-item:where(.svelte-laou7w) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}" +}; +function Ed(e, t) { + de(t, !0), Je(e, Wm); + const [n, r] = tt(), o = () => Q(h(c), "$node", n), i = () => Q(v, "$selectItems", n), s = w(t, "parameter", 7), a = w(t, "index", 7), l = w(t, "dataKeyName", 7); + let u = ht(), c = /* @__PURE__ */ Me(() => pr(u)), f = /* @__PURE__ */ Me(() => { + var T; + return { + ...s(), + ...(T = o()) == null ? void 0 : T.data[l()][a()] + }; + }); + const { updateNodeData: d } = Dt(), g = (T, k) => { + d(u, (P) => { + let H = P.data[l()]; + return H[a()] = { ...H[a()], [T]: k }, { [l()]: H }; + }); + }, p = (T) => { + const k = T.target.value; + g("name", k); + }, x = (T) => { + const k = T.target.value; + g("value", k); + }, C = (T) => { + const k = T.value; + g("ref", k); + }, $ = (T) => { + const k = T.value; + g("refType", k); + }; + let m; + const _ = () => { + d(u, (T) => { + let k = T.data[l()]; + return k.splice(a(), 1), { [l()]: [...k] }; + }), m == null || m.hide(); + }, v = Zm(); + var b = Fm(), N = be(b), E = X(N); + xt(E, { + style: "width: 100%;", + get value() { + return h(f).name; + }, + placeholder: "请输入参数名称", + oninput: p + }), Z(N); + var M = z(N, 2), D = X(M); + { + var V = (T) => { + xt(T, { + get value() { + return h(f).value; + }, + placeholder: "请输入参数值", + oninput: x + }); + }, A = (T) => { + const k = /* @__PURE__ */ Me(() => [h(f).ref]); + sn(T, { + get items() { + return i(); + }, + style: "width: 100%", + defaultValue: ["ref"], + get value() { + return h(k); + }, + expandAll: !0, + onSelect: C + }); + }; + ke(D, (T) => { + h(f).refType === "input" ? T(V) : T(A, !1); + }); + } + Z(M); + var O = z(M, 2), R = X(O); + An( + Lo(R, { + placement: "bottom", + floating: (k) => { + var P = Xm(), H = X(P), I = z(X(H)); + const B = /* @__PURE__ */ Me(() => h(f).refType ? [h(f).refType] : []); + sn(I, { + items: Mm, + style: "width: 100%", + defaultValue: ["ref"], + get value() { + return h(B); + }, + onSelect: $ + }), Z(H); + var F = z(H, 2), K = z(X(F)); + $t(K, { + rows: 1, + style: "width: 100%;", + onchange: (me) => { + const Ce = me.target.value; + g("defaultValue", Ce); + } + }), Z(F); + var ie = z(F, 2), ee = z(X(ie)); + $t(ee, { + rows: 3, + style: "width: 100%;", + onchange: (me) => { + const Ce = me.target.value; + g("description", Ce); + } + }), Z(ie); + var W = z(ie, 2), ue = X(W); + Ke(ue, { + onclick: _, + children: (me, Ce) => { + Se(); + var ge = Ie("删除"); + L(me, ge); + }, + $$slots: { default: !0 } + }), Z(W), Z(P), L(k, P); + }, + children: (k, P) => { + Ui(k, {}); + }, + $$slots: { floating: !0, default: !0 } + }), + (k) => m = k, + () => m + ), Z(O), L(e, b); + var S = fe({ + get parameter() { + return s(); + }, + set parameter(T) { + s(T), y(); + }, + get index() { + return a(); + }, + set index(T) { + a(T), y(); + }, + get dataKeyName() { + return l(); + }, + set dataKeyName(T) { + l(T), y(); + } + }); + return r(), S; +} +ae(Ed, { parameter: {}, index: {}, dataKeyName: {} }, [], [], !0); +var Km = /* @__PURE__ */ ne('
    参数名称
    参数值
    ', 1), qm = /* @__PURE__ */ ne('
    '), Gm = /* @__PURE__ */ ne('
    '); +const Um = { + hash: "svelte-1sm1mgi", + code: `.input-container.svelte-1sm1mgi {display:grid;grid-template-columns:40% 50% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-1sm1mgi .none-params:where(.svelte-1sm1mgi) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-1sm1mgi .input-header:where(.svelte-1sm1mgi) {font-size:12px;color:#666;}` +}; +function zt(e, t) { + de(t, !0), Je(e, Um); + const [n, r] = tt(), o = () => Q(h(l), "$node", n), i = w(t, "noneParameterText", 7, "无输入参数"), s = w(t, "dataKeyName", 7, "parameters"); + let a = ht(), l = /* @__PURE__ */ Me(() => pr(a)), u = /* @__PURE__ */ Me(() => { + var x; + return [...((x = o()) == null ? void 0 : x.data[s()]) || []]; + }); + var c = Gm(), f = X(c); + { + var d = (x) => { + var C = Km(); + Se(4), L(x, C); + }; + ke(f, (x) => { + h(u).length !== 0 && x(d); + }); + } + var g = z(f, 2); + Yt( + g, + 19, + () => h(u), + (x) => x.id, + (x, C, $) => { + Ed(x, { + get parameter() { + return h(C); + }, + get index() { + return h($); + }, + get dataKeyName() { + return s(); + } + }); + }, + (x) => { + var C = qm(), $ = X(C, !0); + Z(C), Ee(() => Rt($, i())), L(x, C); + } + ), Z(c), L(e, c); + var p = fe({ + get noneParameterText() { + return i(); + }, + set noneParameterText(x = "无输入参数") { + i(x), y(); + }, + get dataKeyName() { + return s(); + }, + set dataKeyName(x = "parameters") { + s(x), y(); + } + }); + return r(), p; +} +ae(zt, { noneParameterText: {}, dataKeyName: {} }, [], [], !0); +var jm = /* @__PURE__ */ _e(''), Jm = /* @__PURE__ */ _e(''), Qm = /* @__PURE__ */ ne('
    ', 1); +const ey = { + hash: "svelte-11h445j", + code: ".heading.svelte-11h445j {display:flex;margin-bottom:10px;}" +}; +function Sd(e, t) { + de(t, !0), Je(e, ey); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(); + return dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + allowExecute: !1, + showSourceHandle: !1, + icon: (a) => { + var l = jm(); + L(a, l); + }, + children: (a, l) => { + var u = Qm(), c = be(u), f = X(c); + Ge(f, { + level: 3, + children: (p, x) => { + Se(); + var C = Ie("输出参数"); + L(p, C); + }, + $$slots: { default: !0 } + }); + var d = z(f, 2); + Ke(d, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o, "outputDefs"); + }, + children: (p, x) => { + var C = Jm(); + L(p, C); + }, + $$slots: { default: !0 } + }), Z(c); + var g = z(c, 2); + zt(g, { + noneParameterText: "无输出参数", + dataKeyName: "outputDefs" + }), L(a, u); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(s) { + n(s), y(); + } + }); +} +ae(Sd, { data: {} }, [], [], !0); +const Oo = () => ar("tinyflow_options"); +var ty = /* @__PURE__ */ _e(''), ny = /* @__PURE__ */ ne('
    '), ry = /* @__PURE__ */ ne('
    默认值:
    参数描述:
    '), oy = /* @__PURE__ */ ne('
    ', 1); +const iy = { + hash: "svelte-1cfeest", + code: ".input-item.svelte-1cfeest {display:flex;align-items:center;gap:2px;}.input-more-setting.svelte-1cfeest {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-1cfeest .input-more-item:where(.svelte-1cfeest) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}" +}; +function Pd(e, t) { + de(t, !0), Je(e, iy); + const [n, r] = tt(), o = () => Q(h(u), "$node", n), i = w(t, "parameter", 7), s = w(t, "position", 7), a = w(t, "dataKeyName", 7); + let l = ht(), u = /* @__PURE__ */ Me(() => pr(l)), c = /* @__PURE__ */ Me(() => { + var I; + let P = (I = o()) == null ? void 0 : I.data[a()], H; + if (P && s().length > 0) { + let B = P; + for (let F = 0; F < s().length; F++) { + const K = s()[F]; + F == s().length - 1 ? H = B[K] : B = B[K].children; + } + } + return { ...i(), ...H }; + }); + const { updateNodeData: f } = Dt(), d = (P, H) => { + f(l, (I) => { + const B = I.data[a()]; + if (B && s().length > 0) { + let F = B; + for (let K = 0; K < s().length; K++) { + const ie = s()[K]; + K == s().length - 1 ? F[ie] = { ...F[ie], [P]: H } : F = B[ie].children; + } + } + return { [a()]: B }; + }); + }, g = (P) => { + const H = P.target.value; + d("name", H); + }, p = (P) => { + const H = P.value; + d("dataType", H); + }; + let x; + const C = () => { + f(l, (P) => { + let H = P.data[a()]; + if (H && s().length > 0) { + let I = H; + for (let B = 0; B < s().length; B++) { + const F = s()[B]; + B == s().length - 1 ? I.splice(F, 1) : I = I[F].children; + } + } + return { [a()]: [...H] }; + }), x == null || x.hide(); + }, $ = () => { + f(l, (P) => { + let H = P.data[a()]; + if (H && s().length > 0) { + let I = H; + for (let B = 0; B < s().length; B++) { + const F = s()[B]; + B == s().length - 1 ? I[F].children ? I[F].children.push({ + id: Rr(), + name: "newParam", + dataType: "String" + }) : I[F].children = [ + { + id: Rr(), + name: "newParam", + dataType: "String" + } + ] : I = I[F].children; + } + } + return { [a()]: [...H] }; + }); + }; + var m = oy(), _ = be(m), v = X(_); + { + var b = (P) => { + var H = et(), I = be(H); + Yt(I, 17, s, Li, (B, F) => { + Se(); + var K = Ie(" "); + L(B, K); + }), L(P, H); + }; + ke(v, (P) => { + s().length > 1 && P(b); + }); + } + var N = z(v, 2); + const E = /* @__PURE__ */ Me(() => h(c).nameDisabled === !0); + xt(N, { + style: "width: 100%;", + get value() { + return h(c).name; + }, + placeholder: "请输入参数名称", + oninput: g, + get disabled() { + return h(E); + } + }), Z(_); + var M = z(_, 2), D = X(M); + const V = /* @__PURE__ */ Me(() => h(c).dataType ? [h(c).dataType] : []), A = /* @__PURE__ */ Me(() => h(c).dataTypeDisabled === !0); + sn(D, { + items: _d, + style: "width: 100%", + defaultValue: ["String"], + get value() { + return h(V); + }, + get disabled() { + return h(A); + }, + onSelect: p + }); + var O = z(D, 2); + { + var R = (P) => { + Ke(P, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: $, + children: (H, I) => { + var B = ty(); + L(H, B); + }, + $$slots: { default: !0 } + }); + }; + ke(O, (P) => { + (h(c).dataType === "Object" || h(c).dataType === "Array") && h(c).addChildDisabled !== !0 && P(R); + }); + } + Z(M); + var S = z(M, 2), T = X(S); + An( + Lo(T, { + placement: "bottom", + floating: (H) => { + var I = ry(), B = X(I), F = z(X(B)); + $t(F, { + rows: 1, + style: "width: 100%;", + onchange: (ue) => { + const me = ue.target.value; + d("defaultValue", me); + } + }), Z(B); + var K = z(B, 2), ie = z(X(K)); + $t(ie, { + rows: 3, + style: "width: 100%;", + onchange: (ue) => { + const me = ue.target.value; + d("description", me); + } + }), Z(K); + var ee = z(K, 2); + { + var W = (ue) => { + var me = ny(), Ce = X(me); + Ke(Ce, { + onclick: C, + children: (ge, ze) => { + Se(); + var G = Ie("删除"); + L(ge, G); + }, + $$slots: { default: !0 } + }), Z(me), L(ue, me); + }; + ke(ee, (ue) => { + h(c).deleteDisabled !== !0 && ue(W); + }); + } + Z(I), L(H, I); + }, + children: (H, I) => { + Ui(H, {}); + }, + $$slots: { floating: !0, default: !0 } + }), + (H) => x = H, + () => x + ), Z(S), L(e, m); + var k = fe({ + get parameter() { + return i(); + }, + set parameter(P) { + i(P), y(); + }, + get position() { + return s(); + }, + set position(P) { + s(P), y(); + }, + get dataKeyName() { + return a(); + }, + set dataKeyName(P) { + a(P), y(); + } + }); + return r(), k; +} +ae(Pd, { parameter: {}, position: {}, dataKeyName: {} }, [], [], !0); +var sy = /* @__PURE__ */ ne(" ", 1), ay = /* @__PURE__ */ ne('
    '), ly = /* @__PURE__ */ ne('
    参数名称
    参数类型
    ', 1), uy = /* @__PURE__ */ ne('
    '); +const cy = { + hash: "svelte-1sm1mgi", + code: `.input-container.svelte-1sm1mgi {display:grid;grid-template-columns:40% 50% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-1sm1mgi .none-params:where(.svelte-1sm1mgi) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-1sm1mgi .input-header:where(.svelte-1sm1mgi) {font-size:12px;color:#666;}` +}; +function Rn(e, t) { + de(t, !0), Je(e, cy); + const [n, r] = tt(), o = () => Q(h(u), "$node", n), i = (C, $ = dt, m = dt) => { + var _ = et(), v = be(_); + Yt( + v, + 19, + $, + (b) => `${b.id}_${b.children ? b.children.length : 0}`, + (b, N, E) => { + var M = sy(), D = be(M); + const V = /* @__PURE__ */ Me(() => [...m(), h(E)]); + Pd(D, { + get parameter() { + return h(N); + }, + get position() { + return h(V); + }, + get dataKeyName() { + return a(); + } + }); + var A = z(D, 2); + { + var O = (R) => { + var S = /* @__PURE__ */ pe(() => [...m(), h(E)]); + i(R, () => h(N).children, () => h(S)); + }; + ke(A, (R) => { + h(N).children && R(O); + }); + } + L(b, M); + }, + (b) => { + var N = et(), E = be(N); + { + var M = (D) => { + var V = ay(), A = X(V, !0); + Z(V), Ee(() => Rt(A, s())), L(D, V); + }; + ke(E, (D) => { + m().length === 0 && D(M); + }); + } + L(b, N); + } + ), L(C, _); + }, s = w(t, "noneParameterText", 7, "无输出参数"), a = w(t, "dataKeyName", 7, "outputDefs"); + let l = ht(), u = /* @__PURE__ */ Me(() => pr(l)), c = /* @__PURE__ */ Me(() => { + var C; + return [...((C = o()) == null ? void 0 : C.data[a()]) || []]; + }); + var f = uy(), d = X(f); + { + var g = (C) => { + var $ = ly(); + Se(4), L(C, $); + }; + ke(d, (C) => { + h(c).length !== 0 && C(g); + }); + } + var p = z(d, 2); + i(p, () => h(c) || [], () => []), Z(f), L(e, f); + var x = fe({ + get noneParameterText() { + return s(); + }, + set noneParameterText(C = "无输出参数") { + s(C), y(); + }, + get dataKeyName() { + return a(); + }, + set dataKeyName(C = "outputDefs") { + a(C), y(); + } + }); + return r(), x; +} +ae(Rn, { noneParameterText: {}, dataKeyName: {} }, [], [], !0); +var dy = /* @__PURE__ */ _e(''), fy = /* @__PURE__ */ _e(''), gy = /* @__PURE__ */ _e(''), hy = /* @__PURE__ */ ne('
    模型
    采样参数
    系统提示词
    用户提示词
    ', 1); +const vy = { + hash: "svelte-wn2kra", + code: `.heading.svelte-wn2kra {display:flex;margin-bottom:10px;}.setting-title.svelte-wn2kra {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-wn2kra {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}\r + /* 新增样式 */.slider-container.svelte-wn2kra {width:100%;display:flex;flex-direction:column;gap:4px;}.slider-container.svelte-wn2kra label:where(.svelte-wn2kra) {font-size:12px;color:#666;display:flex;justify-content:space-between;align-items:center;}input[type="range"].svelte-wn2kra {width:100%;height:4px;background:#ddd;border-radius:2px;outline:none;-webkit-appearance:none;}input[type="range"].svelte-wn2kra::-webkit-slider-thumb {-webkit-appearance:none;width:14px;height:14px;background:#007bff;border-radius:50%;cursor:pointer;}` +}; +function Nd(e, t) { + de(t, !0), Je(e, vy); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), s = Oo(); + let a = Un(Tt([])); + un(async () => { + var c, f; + const u = await ((f = (c = s.provider) == null ? void 0 : c.llm) == null ? void 0 : f.call(c)); + h(a).push(...u || []); + }); + const { updateNodeData: l } = Dt(); + return dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (c) => { + var f = dy(); + L(c, f); + }, + children: (c, f) => { + var d = hy(), g = be(d), p = X(g); + Ge(p, { + level: 3, + children: (G, se) => { + Se(); + var Te = Ie("输入参数"); + L(G, Te); + }, + $$slots: { default: !0 } + }); + var x = z(p, 2); + Ke(x, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (G, se) => { + var Te = fy(); + L(G, Te); + }, + $$slots: { default: !0 } + }), Z(g); + var C = z(g, 2); + zt(C, {}); + var $ = z(C, 2); + Ge($, { + level: 3, + mt: "10px", + children: (G, se) => { + Se(); + var Te = Ie("模型设置"); + L(G, Te); + }, + $$slots: { default: !0 } + }); + var m = z($, 4), _ = X(m); + const v = /* @__PURE__ */ Me(() => n().llmId ? [n().llmId] : []); + sn(_, { + get items() { + return h(a); + }, + style: "width: 100%", + placeholder: "请选择模型", + onSelect: (G) => { + const se = G.value; + l(o, () => ({ llmId: se })); + }, + get value() { + return h(v); + } + }); + var b = z(_, 2); + Ui(b, {}), Z(m); + var N = z(m, 4), E = X(N), M = X(E), D = X(M); + Z(M); + var V = z(M, 2); + io(V), Z(E), Z(N); + var A = z(N, 2), O = X(A), R = X(O), S = X(R); + Z(R); + var T = z(R, 2); + io(T), Z(O), Z(A); + var k = z(A, 2), P = X(k), H = X(P), I = X(H); + Z(H); + var B = z(H, 2); + io(B), Z(P), Z(k); + var F = z(k, 4), K = X(F); + const ie = /* @__PURE__ */ Me(() => n().systemPrompt || ""); + $t(K, { + rows: 5, + placeholder: "请输入系统提示词", + style: "width: 100%", + get value() { + return h(ie); + }, + oninput: (G) => { + l(o, { systemPrompt: G.target.value }); + } + }), Z(F); + var ee = z(F, 4), W = X(ee); + const ue = /* @__PURE__ */ Me(() => n().userPrompt || ""); + $t(W, { + rows: 5, + placeholder: "请输入用户提示词", + style: "width: 100%", + get value() { + return h(ue); + }, + oninput: (G) => { + l(o, { userPrompt: G.target.value }); + } + }), Z(ee); + var me = z(ee, 2), Ce = X(me); + Ge(Ce, { + level: 3, + mt: "10px", + children: (G, se) => { + Se(); + var Te = Ie("输出参数"); + L(G, Te); + }, + $$slots: { default: !0 } + }); + var ge = z(Ce, 2); + Ke(ge, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o, "outputDefs"); + }, + children: (G, se) => { + var Te = gy(); + L(G, Te); + }, + $$slots: { default: !0 } + }), Z(me); + var ze = z(me, 2); + Rn(ze, {}), Ee(() => { + Rt(D, `Temperature: ${n().temperature ?? 0.5}`), Qi(V, n().temperature ?? 0.5), Rt(S, `Top P: ${n().topP ?? 0.9}`), Qi(T, n().topP ?? 0.9), Rt(I, `Top K: ${n().topK ?? 50}`), Qi(B, n().topK ?? 50); + }), Ye("mousedown", V, es(function(G) { + Ve.call(this, t, G); + })), Ye("input", V, (G) => l(o, { temperature: parseFloat(G.target.value) })), Ye("mousedown", T, es(function(G) { + Ve.call(this, t, G); + })), Ye("input", T, (G) => l(o, { topP: parseFloat(G.target.value) })), Ye("mousedown", B, es(function(G) { + Ve.call(this, t, G); + })), Ye("input", B, (G) => l(o, { topK: parseInt(G.target.value) })), L(c, d); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(u) { + n(u), y(); + } + }); +} +ae(Nd, { data: {} }, [], [], !0); +var py = /* @__PURE__ */ _e(''), my = /* @__PURE__ */ _e(''), yy = /* @__PURE__ */ _e(''), wy = /* @__PURE__ */ ne('
    执行引擎
    执行代码
    ', 1); +const _y = { + hash: "svelte-15t2v24", + code: ".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}" +}; +function Md(e, t) { + de(t, !0), Je(e, _y); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), { updateNodeData: s } = Dt(), a = [ + { label: "QLExpress", value: "qlexpress" }, + { label: "Groovy", value: "groovy" }, + { label: "JavaScript", value: "js" } + ]; + return dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (u) => { + var c = py(); + L(u, c); + }, + children: (u, c) => { + var f = wy(), d = be(f), g = X(d); + Ge(g, { + level: 3, + children: (A, O) => { + Se(); + var R = Ie("输入参数"); + L(A, R); + }, + $$slots: { default: !0 } + }); + var p = z(g, 2); + Ke(p, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (A, O) => { + var R = my(); + L(A, R); + }, + $$slots: { default: !0 } + }), Z(d); + var x = z(d, 2); + zt(x, {}); + var C = z(x, 2); + Ge(C, { + level: 3, + mt: "10px", + children: (A, O) => { + Se(); + var R = Ie("代码"); + L(A, R); + }, + $$slots: { default: !0 } + }); + var $ = z(C, 4), m = X($); + const _ = /* @__PURE__ */ Me(() => n().engine ? [n().engine] : ["qlexpress"]); + sn(m, { + items: a, + style: "width: 100%", + placeholder: "请选择执行引擎", + onSelect: (A) => { + const O = A.value; + s(o, () => ({ engine: O })); + }, + get value() { + return h(_); + } + }), Z($); + var v = z($, 4), b = X(v); + const N = /* @__PURE__ */ Me(() => n().code || ""); + $t(b, { + rows: 10, + placeholder: "请输入执行代码,注:输出内容需添加到_result中,如:_result.put(key, value)", + style: "width: 100%", + onchange: (A) => { + s(o, () => ({ code: A.target.value })); + }, + get value() { + return h(N); + } + }), Z(v); + var E = z(v, 2), M = X(E); + Ge(M, { + level: 3, + mt: "10px", + children: (A, O) => { + Se(); + var R = Ie("输出参数"); + L(A, R); + }, + $$slots: { default: !0 } + }); + var D = z(M, 2); + Ke(D, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o, "outputDefs"); + }, + children: (A, O) => { + var R = yy(); + L(A, R); + }, + $$slots: { default: !0 } + }), Z(E); + var V = z(E, 2); + Rn(V, {}), L(u, f); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(l) { + n(l), y(); + } + }); +} +ae(Md, { data: {} }, [], [], !0); +var xy = /* @__PURE__ */ _e(''), by = /* @__PURE__ */ _e(''), Cy = /* @__PURE__ */ ne('
    执行代码
    ', 1); +const ky = { + hash: "svelte-15t2v24", + code: ".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}" +}; +function Td(e, t) { + de(t, !0), Je(e, ky); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), { updateNodeData: s } = Dt(); + return Nr(() => { + (!n().outputDefs || n().outputDefs.length === 0) && i(o, "outputDefs", { + name: "output", + dataType: "String", + dataTypeDisabled: !0, + deleteDisabled: !0 + }); + }), dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (l) => { + var u = xy(); + L(l, u); + }, + children: (l, u) => { + var c = Cy(), f = be(c), d = X(f); + Ge(d, { + level: 3, + children: (N, E) => { + Se(); + var M = Ie("输入参数"); + L(N, M); + }, + $$slots: { default: !0 } + }); + var g = z(d, 2); + Ke(g, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (N, E) => { + var M = by(); + L(N, M); + }, + $$slots: { default: !0 } + }), Z(f); + var p = z(f, 2); + zt(p, {}); + var x = z(p, 2); + Ge(x, { + level: 3, + mt: "10px", + children: (N, E) => { + Se(); + var M = Ie("代码"); + L(N, M); + }, + $$slots: { default: !0 } + }); + var C = z(x, 4), $ = X(C); + const m = /* @__PURE__ */ Me(() => n().template || ""); + $t($, { + rows: 10, + placeholder: "请输入执行代码", + style: "width: 100%", + onchange: (N) => { + s(o, () => ({ template: N.target.value })); + }, + get value() { + return h(m); + } + }), Z(C); + var _ = z(C, 2), v = X(_); + Ge(v, { + level: 3, + mt: "10px", + children: (N, E) => { + Se(); + var M = Ie("输出参数"); + L(N, M); + }, + $$slots: { default: !0 } + }), Z(_); + var b = z(_, 2); + Rn(b, {}), L(l, c); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(a) { + n(a), y(); + } + }); +} +ae(Td, { data: {} }, [], [], !0); +var $y = /* @__PURE__ */ _e(''), Ey = /* @__PURE__ */ _e(''), Sy = /* @__PURE__ */ _e(''), Py = /* @__PURE__ */ _e(''), Ny = /* @__PURE__ */ ne('
    ', 1), My = /* @__PURE__ */ _e(''), Ty = /* @__PURE__ */ ne('
    ', 1), Hy = /* @__PURE__ */ ne('
    '), Vy = /* @__PURE__ */ ne('
    '), Dy = /* @__PURE__ */ _e(''), Ay = /* @__PURE__ */ ne('
    ', 1); +const Ly = { + hash: "svelte-1vtcqdz", + code: ".heading.svelte-1vtcqdz {display:flex;margin-bottom:10px;}.radio-group.svelte-1vtcqdz {display:flex;margin:10px 0;}.radio-group.svelte-1vtcqdz label:where(.svelte-1vtcqdz) {display:flex;font-size:14px;}" +}; +function Hd(e, t) { + de(t, !0), Je(e, Ly); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = [ + { value: "get", label: "GET" }, + { value: "post", label: "POST" }, + { value: "put", label: "PUT" }, + { value: "delete", label: "DELETE" }, + { value: "head", label: "HEAD" }, + { value: "patch", label: "PATCH" } + ], i = ht(), { addParameter: s } = kn(), { updateNodeData: a } = Dt(); + return dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (u) => { + var c = $y(); + L(u, c); + }, + children: (u, c) => { + var f = Ay(), d = be(f), g = X(d), p = X(g); + const x = /* @__PURE__ */ Me(() => n().method ? [n().method] : ["get"]); + sn(p, { + items: o, + style: "width: 100%", + placeholder: "请选择请求方式", + onSelect: (oe) => { + const ve = oe.value; + a(i, () => ({ method: ve })); + }, + get value() { + return h(x); + } + }), Z(g); + var C = z(g, 2), $ = X(C); + const m = /* @__PURE__ */ Me(() => n().url || ""); + xt($, { + placeholder: "请输入url", + style: "width: 100%", + onchange: (oe) => { + a(i, () => ({ url: oe.target.value })); + }, + get value() { + return h(m); + } + }), Z(C), Z(d); + var _ = z(d, 2), v = X(_); + Ge(v, { + level: 3, + children: (oe, ve) => { + Se(); + var xe = Ie("Http 头信息"); + L(oe, xe); + }, + $$slots: { default: !0 } + }); + var b = z(v, 2); + Ke(b, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + s(i, "headers"); + }, + children: (oe, ve) => { + var xe = Ey(); + L(oe, xe); + }, + $$slots: { default: !0 } + }), Z(_); + var N = z(_, 2); + zt(N, { dataKeyName: "headers" }); + var E = z(N, 2), M = X(E); + Ge(M, { + level: 3, + children: (oe, ve) => { + Se(); + var xe = Ie("参数"); + L(oe, xe); + }, + $$slots: { default: !0 } + }); + var D = z(M, 2); + Ke(D, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + s(i, "urlParameters"); + }, + children: (oe, ve) => { + var xe = Sy(); + L(oe, xe); + }, + $$slots: { default: !0 } + }), Z(E); + var V = z(E, 2); + zt(V, { dataKeyName: "urlParameters" }); + var A = z(V, 2); + Ge(A, { + level: 3, + mt: "10px", + children: (oe, ve) => { + Se(); + var xe = Ie("Body"); + L(oe, xe); + }, + $$slots: { default: !0 } + }); + var O = z(A, 2), R = X(O), S = X(R); + const T = /* @__PURE__ */ Me(() => !n().bodyType); + xt(S, { + type: "radio", + name: "bodyType", + value: "", + get checked() { + return h(T); + }, + onchange: (oe) => { + var ve; + (ve = oe.target) != null && ve.checked && a(i, { bodyType: "" }); + } + }), Se(), Z(R); + var k = z(R, 2), P = X(k); + const H = /* @__PURE__ */ Me(() => n().bodyType === "form-data"); + xt(P, { + type: "radio", + name: "bodyType", + value: "form-data", + get checked() { + return h(H); + }, + onchange: (oe) => { + var ve; + (ve = oe.target) != null && ve.checked && a(i, { bodyType: "form-data" }); + } + }), Se(), Z(k); + var I = z(k, 2), B = X(I); + const F = /* @__PURE__ */ Me(() => n().bodyType === "x-www-form-urlencoded"); + xt(B, { + type: "radio", + name: "bodyType", + value: "x-www-form-urlencoded", + get checked() { + return h(F); + }, + onchange: (oe) => { + var ve; + (ve = oe.target) != null && ve.checked && a(i, { bodyType: "x-www-form-urlencoded" }); + } + }), Se(), Z(I); + var K = z(I, 2), ie = X(K); + const ee = /* @__PURE__ */ Me(() => n().bodyType === "json"); + xt(ie, { + type: "radio", + name: "bodyType", + value: "json", + get checked() { + return h(ee); + }, + onchange: (oe) => { + var ve; + (ve = oe.target) != null && ve.checked && a(i, { bodyType: "json" }); + } + }), Se(), Z(K); + var W = z(K, 2), ue = X(W); + const me = /* @__PURE__ */ Me(() => n().bodyType === "raw"); + xt(ue, { + type: "radio", + name: "bodyType", + value: "raw", + get checked() { + return h(me); + }, + onchange: (oe) => { + var ve; + (ve = oe.target) != null && ve.checked && a(i, { bodyType: "raw" }); + } + }), Se(), Z(W), Z(O); + var Ce = z(O, 2); + { + var ge = (oe) => { + var ve = Ny(), xe = be(ve), Oe = X(xe); + Ge(Oe, { + level: 3, + children: (J, Re) => { + Se(); + var le = Ie("参数"); + L(J, le); + }, + $$slots: { default: !0 } + }); + var ct = z(Oe, 2); + Ke(ct, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + s(i, "fromData"); + }, + children: (J, Re) => { + var le = Py(); + L(J, le); + }, + $$slots: { default: !0 } + }), Z(xe); + var lt = z(xe, 2); + zt(lt, { dataKeyName: "fromData" }), L(oe, ve); + }; + ke(Ce, (oe) => { + n().bodyType === "form-data" && oe(ge); + }); + } + var ze = z(Ce, 2); + { + var G = (oe) => { + var ve = Ty(), xe = be(ve), Oe = X(xe); + Ge(Oe, { + level: 3, + children: (J, Re) => { + Se(); + var le = Ie("参数"); + L(J, le); + }, + $$slots: { default: !0 } + }); + var ct = z(Oe, 2); + Ke(ct, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + s(i, "fromUrlencoded"); + }, + children: (J, Re) => { + var le = My(); + L(J, le); + }, + $$slots: { default: !0 } + }), Z(xe); + var lt = z(xe, 2); + zt(lt, { dataKeyName: "fromUrlencoded" }), L(oe, ve); + }; + ke(ze, (oe) => { + n().bodyType === "x-www-form-urlencoded" && oe(G); + }); + } + var se = z(ze, 2); + { + var Te = (oe) => { + var ve = Hy(), xe = X(ve); + $t(xe, { + rows: "5", + style: "width: 100%", + placeholder: "请输入 json 信息", + get value() { + return n().bodyJson; + }, + oninput: (Oe) => { + a(i, { bodyJson: Oe.target.value }); + } + }), Z(ve), L(oe, ve); + }; + ke(se, (oe) => { + n().bodyType === "json" && oe(Te); + }); + } + var Ae = z(se, 2); + { + var Xe = (oe) => { + var ve = Vy(), xe = X(ve); + $t(xe, { + rows: "5", + style: "width: 100%", + placeholder: "请输入请求信息", + get value() { + return n().bodyRaw; + }, + oninput: (Oe) => { + a(i, { bodyRaw: Oe.target.value }); + } + }), Z(ve), L(oe, ve); + }; + ke(Ae, (oe) => { + n().bodyType === "raw" && oe(Xe); + }); + } + var te = z(Ae, 2), Fe = X(te); + Ge(Fe, { + level: 3, + mt: "10px", + children: (oe, ve) => { + Se(); + var xe = Ie("输出参数"); + L(oe, xe); + }, + $$slots: { default: !0 } + }); + var Le = z(Fe, 2); + Ke(Le, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + s(i, "outputDefs"); + }, + children: (oe, ve) => { + var xe = Dy(); + L(oe, xe); + }, + $$slots: { default: !0 } + }), Z(te); + var Qe = z(te, 2); + Rn(Qe, {}), L(u, f); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(l) { + n(l), y(); + } + }); +} +ae(Hd, { data: {} }, [], [], !0); +var Oy = /* @__PURE__ */ _e(''), Iy = /* @__PURE__ */ _e(''), zy = /* @__PURE__ */ ne('
    知识库
    获取数据量
    ', 1); +const Ry = { + hash: "svelte-15t2v24", + code: ".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}" +}; +function Vd(e, t) { + de(t, !0), Je(e, Ry); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), s = Oo(); + let a = Un(Tt([])); + un(async () => { + var c, f; + const u = await ((f = (c = s.provider) == null ? void 0 : c.knowledge) == null ? void 0 : f.call(c)); + h(a).push(...u || []); + }); + const { updateNodeData: l } = Dt(); + return Nr(() => { + (!n().outputDefs || n().outputDefs.length === 0) && i(o, "outputDefs", { + name: "documents", + dataType: "Array", + nameDisabled: !0, + dataTypeDisabled: !0, + addChildDisabled: !0, + children: [ + { + name: "title", + dataType: "String", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "content", + dataType: "String", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "documentId", + dataType: "Number", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "knowledgeId", + dataType: "Number", + nameDisabled: !0, + dataTypeDisabled: !0 + } + ] + }); + }), dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (c) => { + var f = Oy(); + L(c, f); + }, + children: (c, f) => { + var d = zy(), g = be(d), p = X(g); + Ge(p, { + level: 3, + children: (V, A) => { + Se(); + var O = Ie("输入参数"); + L(V, O); + }, + $$slots: { default: !0 } + }); + var x = z(p, 2); + Ke(x, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (V, A) => { + var O = Iy(); + L(V, O); + }, + $$slots: { default: !0 } + }), Z(g); + var C = z(g, 2); + zt(C, {}); + var $ = z(C, 2); + Ge($, { + level: 3, + mt: "10px", + children: (V, A) => { + Se(); + var O = Ie("知识库设置"); + L(V, O); + }, + $$slots: { default: !0 } + }); + var m = z($, 4), _ = X(m); + const v = /* @__PURE__ */ Me(() => n().knowledgeId ? [n().knowledgeId] : []); + sn(_, { + get items() { + return h(a); + }, + style: "width: 100%", + placeholder: "请选择知识库", + onSelect: (V) => { + const A = V.value; + l(o, () => ({ knowledgeId: A })); + }, + get value() { + return h(v); + } + }), Z(m); + var b = z(m, 4), N = X(b); + xt(N, { placeholder: "搜索的数据条数", style: "width: 100%" }), Z(b); + var E = z(b, 2), M = X(E); + Ge(M, { + level: 3, + mt: "10px", + children: (V, A) => { + Se(); + var O = Ie("输出参数"); + L(V, O); + }, + $$slots: { default: !0 } + }), Z(E); + var D = z(E, 2); + Rn(D, {}), L(c, d); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(u) { + n(u), y(); + } + }); +} +ae(Vd, { data: {} }, [], [], !0); +var By = /* @__PURE__ */ _e(''), Yy = /* @__PURE__ */ _e(''), Zy = /* @__PURE__ */ ne('
    API 服务商
    API Key
    关键字
    数据量
    其他参数
    ', 1); +const Xy = { + hash: "svelte-15t2v24", + code: ".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}" +}; +function Dd(e, t) { + de(t, !0), Je(e, Xy); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), s = Oo(); + let a = Un(Tt([])); + un(async () => { + var c; + const u = await ((c = s.provider) == null ? void 0 : c.knowledge()); + h(a).push(...u || []); + }); + const { updateNodeData: l } = Dt(); + return Nr(() => { + (!n().outputDefs || n().outputDefs.length === 0) && i(o, "outputDefs", { + name: "documents", + dataType: "Array", + nameDisabled: !0, + dataTypeDisabled: !0, + addChildDisabled: !0, + children: [ + { + name: "title", + dataType: "String", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "content", + dataType: "String", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "documentId", + dataType: "Number", + nameDisabled: !0, + dataTypeDisabled: !0 + }, + { + name: "knowledgeId", + dataType: "Number", + nameDisabled: !0, + dataTypeDisabled: !0 + } + ] + }); + }), dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (c) => { + var f = By(); + L(c, f); + }, + children: (c, f) => { + var d = Zy(), g = be(d), p = X(g); + Ge(p, { + level: 3, + children: (k, P) => { + Se(); + var H = Ie("输入参数"); + L(k, H); + }, + $$slots: { default: !0 } + }); + var x = z(p, 2); + Ke(x, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (k, P) => { + var H = Yy(); + L(k, H); + }, + $$slots: { default: !0 } + }), Z(g); + var C = z(g, 2); + zt(C, {}); + var $ = z(C, 2); + Ge($, { + level: 3, + mt: "10px", + children: (k, P) => { + Se(); + var H = Ie("搜索引擎设置"); + L(k, H); + }, + $$slots: { default: !0 } + }); + var m = z($, 4), _ = X(m); + const v = /* @__PURE__ */ Me(() => n().knowledgeId ? [n().knowledgeId] : []); + sn(_, { + get items() { + return h(a); + }, + style: "width: 100%", + placeholder: "请选择 API 服务商", + onSelect: (k) => { + const P = k.value; + l(o, () => ({ knowledgeId: P })); + }, + get value() { + return h(v); + } + }), Z(m); + var b = z(m, 4), N = X(b); + xt(N, { + placeholder: "请输入 API Key", + style: "width: 100%" + }), Z(b); + var E = z(b, 4), M = X(E); + xt(M, { placeholder: "请输入关键字", style: "width: 100%" }), Z(E); + var D = z(E, 4), V = X(D); + xt(V, { placeholder: "搜索的数据条数", style: "width: 100%" }), Z(D); + var A = z(D, 4), O = X(A); + $t(O, { + rows: 3, + placeholder: "请输入其他参数(Property 格式)", + style: "width: 100%" + }), Z(A); + var R = z(A, 2), S = X(R); + Ge(S, { + level: 3, + mt: "10px", + children: (k, P) => { + Se(); + var H = Ie("输出参数"); + L(k, H); + }, + $$slots: { default: !0 } + }), Z(R); + var T = z(R, 2); + Rn(T, {}), L(c, d); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(u) { + n(u), y(); + } + }); +} +ae(Dd, { data: {} }, [], [], !0); +var Fy = /* @__PURE__ */ _e(''), Wy = /* @__PURE__ */ _e(''), Ky = /* @__PURE__ */ ne('
    ', 1); +const qy = { + hash: "svelte-md8tgj", + code: ".heading.svelte-md8tgj {display:flex;margin-bottom:10px;}.loop_handle_wrapper ::after {content:'循环体';width:100px;height:20px;background:#000;color:#fff;display:flex;justify-content:center;align-items:center;}" +}; +function Ad(e, t) { + de(t, !0), Je(e, qy); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), s = Oo(); + let a = Un(Tt([])); + return un(async () => { + var u; + const l = await ((u = s.provider) == null ? void 0 : u.knowledge()); + h(a).push(...l || []); + }), dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (c) => { + var f = Fy(); + L(c, f); + }, + handle: (c) => { + Qn(c, { + type: "source", + get position() { + return $e.Bottom; + }, + id: "loop_handle", + style: "bottom: -12px;width: 100px", + class: "loop_handle_wrapper" + }); + }, + children: (c, f) => { + var d = Ky(), g = be(d), p = X(g); + Ge(p, { + level: 3, + children: (v, b) => { + Se(); + var N = Ie("循环变量"); + L(v, N); + }, + $$slots: { default: !0 } + }); + var x = z(p, 2); + Ke(x, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (v, b) => { + var N = Wy(); + L(v, N); + }, + $$slots: { default: !0 } + }), Z(g); + var C = z(g, 2); + zt(C, {}); + var $ = z(C, 2), m = X($); + Ge(m, { + level: 3, + mt: "10px", + children: (v, b) => { + Se(); + var N = Ie("输出参数"); + L(v, N); + }, + $$slots: { default: !0 } + }), Z($); + var _ = z($, 2); + Rn(_, {}), L(c, d); + }, + $$slots: { icon: !0, handle: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(l) { + n(l), y(); + } + }); +} +ae(Ad, { data: {} }, [], [], !0); +var Gy = /* @__PURE__ */ _e(''), Uy = /* @__PURE__ */ _e(''), jy = /* @__PURE__ */ _e(''), Jy = /* @__PURE__ */ ne('
    选择内部接口
    ', 1); +const Qy = { + hash: "svelte-15t2v24", + code: ".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}" +}; +function Ld(e, t) { + de(t, !0), Je(e, Qy); + const n = w(t, "data", 7), r = /* @__PURE__ */ yt(t, [ + "$$slots", + "$$events", + "$$legacy", + "$$host", + "data" + ]), o = ht(), { addParameter: i } = kn(), { updateNodeData: s } = Dt(), a = Oo(); + let l = Un(Tt([])); + return un(async () => { + var c, f; + const u = await ((f = (c = a.provider) == null ? void 0 : c.internal) == null ? void 0 : f.call(c)); + h(l).push(...u || []); + }), dn(e, ut( + { + get data() { + return n(); + } + }, + () => r, + { + icon: (c) => { + var f = Gy(); + L(c, f); + }, + children: (c, f) => { + var d = Jy(), g = be(d), p = X(g); + Ge(p, { + level: 3, + children: (D, V) => { + Se(); + var A = Ie("输入参数"); + L(D, A); + }, + $$slots: { default: !0 } + }); + var x = z(p, 2); + Ke(x, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o); + }, + children: (D, V) => { + var A = Uy(); + L(D, A); + }, + $$slots: { default: !0 } + }), Z(g); + var C = z(g, 2); + zt(C, {}); + var $ = z(C, 2); + Ge($, { + level: 3, + mt: "10px", + children: (D, V) => { + Se(); + var A = Ie("接口"); + L(D, A); + }, + $$slots: { default: !0 } + }); + var m = z($, 4), _ = X(m); + const v = /* @__PURE__ */ Me(() => n().method ? [n().method] : [""]); + sn(_, { + get items() { + return h(l); + }, + style: "width: 100%", + placeholder: "请选择内部接口", + onSelect: (D) => { + const V = D.value; + s(o, () => ({ method: V })); + }, + get value() { + return h(v); + } + }), Z(m); + var b = z(m, 2), N = X(b); + Ge(N, { + level: 3, + mt: "10px", + children: (D, V) => { + Se(); + var A = Ie("输出参数"); + L(D, A); + }, + $$slots: { default: !0 } + }); + var E = z(N, 2); + Ke(E, { + class: "input-btn-more", + style: "margin-left: auto", + onclick: () => { + i(o, "outputDefs"); + }, + children: (D, V) => { + var A = jy(); + L(D, A); + }, + $$slots: { default: !0 } + }), Z(b); + var M = z(b, 2); + Rn(M, {}), L(c, d); + }, + $$slots: { icon: !0, default: !0 } + } + )), fe({ + get data() { + return n(); + }, + set data(u) { + n(u), y(); + } + }); +} +ae(Ld, { data: {} }, [], [], !0); +const ew = { + startNode: kd, + codeNode: Md, + llmNode: Nd, + templateNode: Td, + httpNode: Hd, + knowledgeNode: Vd, + searchEngineNode: Dd, + loopNode: Ad, + internalNode: Ld, + endNode: Sd +}; +var tw = /* @__PURE__ */ ne(" ", 1); +function Od(e, t) { + de(t, !0); + const n = w(t, "icon", 7), r = w(t, "title", 7), o = w(t, "type", 7), i = w(t, "description", 7), s = w(t, "extra", 7); + return Ke(e, { + draggable: !0, + ondragstart: (l) => { + if (!l.dataTransfer) + return null; + const u = { + type: o(), + data: { + title: r(), + description: i(), + systemPrompt: "", + userPrompt: "", + ...s() + } + }; + l.dataTransfer.setData("application/tinyflow", JSON.stringify(u)), l.dataTransfer.effectAllowed = "move"; + }, + children: (l, u) => { + var c = tw(), f = be(c); + mu(f, n); + var d = z(f); + Ee(() => Rt(d, ` ${r() ?? ""}`)), L(l, c); + }, + $$slots: { default: !0 } + }), fe({ + get icon() { + return n(); + }, + set icon(l) { + n(l), y(); + }, + get title() { + return r(); + }, + set title(l) { + r(l), y(); + }, + get type() { + return o(); + }, + set type(l) { + o(l), y(); + }, + get description() { + return i(); + }, + set description(l) { + i(l), y(); + }, + get extra() { + return s(); + }, + set extra(l) { + s(l), y(); + } + }); +} +ae( + Od, + { + icon: {}, + title: {}, + type: {}, + description: {}, + extra: {} + }, + [], + [], + !0 +); +var nw = /* @__PURE__ */ _e(''), rw = /* @__PURE__ */ _e(''), ow = /* @__PURE__ */ ne('
    '); +function Id(e) { + let t = Un("base"), n = Un("show"); + const r = [ + { + icon: '', + title: "开始节点", + type: "startNode", + description: "开始定义输入参数" + }, + { + icon: '', + title: "循环", + type: "loopNode", + description: "用于循环执行任务" + }, + { + icon: '', + title: "大模型", + type: "llmNode", + description: "使用大模型处理问题" + }, + { + // icon:'', + icon: '', + title: "知识库", + type: "knowledgeNode", + description: "通过知识库获取内容" + }, + { + icon: '', + title: "搜索引擎", + type: "searchEngineNode", + description: "通过搜索引擎搜索内容" + }, + { + icon: '', + title: "Http 请求", + type: "httpNode", + description: "通过 HTTP 请求获取数据" + }, + { + icon: '', + title: "动态代码", + type: "codeNode", + description: "动态执行代码" + }, + { + icon: '', + title: "内容模板", + type: "templateNode", + description: "通过模板引擎生成内容" + }, + { + icon: '', + title: "内部接口", + type: "internalNode", + description: "执行内部提供接口" + }, + { + icon: '', + title: "结束节点", + type: "endNode", + description: "结束定义输出参数" + } + ], o = [ + { + label: "基础节点", + value: "base" + }, + { + label: "业务工具", + value: "tools" + } + ]; + var i = ow(), s = X(i), a = X(s), l = X(a); + sd(l, { + style: "width: 100%", + items: o, + onChange: (p) => { + U(t, Tt(p.value.toString())); + } + }), Z(a); + var u = z(a, 2), c = X(u); + Yt(c, 21, () => r, Li, (p, x) => { + Od(p, ut(() => h(x))); + }), Z(c); + var f = z(c, 2), d = X(f); + Ke(d, { + children: (p, x) => { + Se(); + var C = Ie("测试业务按钮"); + L(p, C); + }, + $$slots: { default: !0 } + }), Z(f), Z(u), Z(s); + var g = z(s, 2); + Ke(g, { + onclick: () => { + U(n, Tt(h(n) ? "" : "show")); + }, + children: (p, x) => { + var C = et(), $ = be(C); + { + var m = (v) => { + var b = nw(); + L(v, b); + }, _ = (v) => { + var b = rw(); + L(v, b); + }; + ke($, (v) => { + h(n) === "show" ? v(m) : v(_, !1); + }); + } + L(p, C); + }, + $$slots: { default: !0 } + }), Z(i), Ee(() => { + kt(i, 1, `tf-toolbar ${h(n) ?? ""}`), ce(c, "style", `display: ${(h(t) === "base" ? "flex" : "none") ?? ""}`), ce(f, "style", `display: ${(h(t) !== "base" ? "flex" : "none") ?? ""}`); + }), L(e, i); +} +ae(Id, {}, [], [], !0); +const iw = () => { + const { nodeLookup: e } = Ue(); + return { + getNode: (n) => { + var o; + return (o = q(e).get(n)) == null ? void 0 : o.internals.userNode; + } + }; +}, sw = () => { + const { nodes: e } = Ue(); + return { + ensureParentInNodesBefore: (n, r) => { + e.update((o) => { + let i = -1; + for (let l = 0; l < o.length; l++) + if (o[l].id === n) { + i = l; + break; + } + if (i <= 0) + return o; + let s = -1; + for (let l = 0; l < i; l++) + if (o[l].parentId === n || o[l].id === r) { + s = l; + break; + } + if (s == -1) + return o; + const a = o[i]; + for (let l = i; l > s; l--) + o[l] = o[l - 1]; + return o[s] = a, o; + }); + } + }; +}, aw = () => { + const { edges: e } = Ue(); + return { + getEdgesByTarget: (n) => q(e).filter((o) => o.target === n) + }; +}; +var lw = /* @__PURE__ */ ne('
    边属性设置
    边条件设置
    '), uw = /* @__PURE__ */ ne(" ", 1), cw = /* @__PURE__ */ ne('
    '); +const dw = { + hash: "svelte-1oe15vw", + code: ".panel-content.svelte-1oe15vw {padding:10px;background-color:#fff;border-radius:5px;box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);width:200px;border:1px solid #efefef;}.setting-title.svelte-1oe15vw {margin:10px 0;font-size:12px;color:#999;}" +}; +function zd(e, t) { + de(t, !0), Je(e, dw); + const n = w(t, "onInit", 7), r = Dt(); + n()(r); + let o = Un(!1); + const i = (_) => { + _.preventDefault(), _.dataTransfer && (_.dataTransfer.dropEffect = "move"); + }, s = (_) => { + var M; + _.preventDefault(); + const v = r.screenToFlowPosition({ + x: _.clientX - 250, + y: _.clientY - 100 + }), b = (M = _.dataTransfer) == null ? void 0 : M.getData("application/tinyflow"), N = b ? JSON.parse(b) : {}, E = { + id: `node_${Rr()}`, + position: v, + data: {}, + ...N + }; + ei.addNode(E), ei.selectNodeOnly(E.id); + }, { getNode: a } = iw(), l = (_) => { + const v = a(_.source), b = a(_.target); + if (_.sourceHandle === "loop_handle" || v.parentId) { + const N = r.getEdges(); + for (let E of N) + if (E.target === _.target) { + const M = a(E.source); + if (_.sourceHandle === "loop_handle" && M.parentId !== v.id || v.parentId && M.parentId !== v.parentId) + return !1; + } + } + return !(!v.parentId && b.parentId && b.parentId !== v.id); + }, { ensureParentInNodesBefore: u } = sw(), c = (_, v) => { + if (!v.isValid) + return; + const b = v.toNode; + if (b.parentId) + return; + const N = v.fromNode, E = v.fromHandle, M = { position: { ...b.position } }; + if (E.id === "loop_handle" ? M.parentId = N.id : N.parentId && (M.parentId = N.parentId), M.parentId) { + const D = a(M.parentId); + M.position = { + x: b.position.x - D.position.x, + y: b.position.y - D.position.y + }, u(M.parentId, b.id), r.updateNode(b.id, M); + } + }, { getEdgesByTarget: f } = aw(), d = (_) => { + _.edges.forEach((b) => { + const N = a(b.target); + if (N.parentId) { + const E = f(b.target), M = a(N.parentId); + if (E.length === 0) + r.updateNode(N.id, { + parentId: void 0, + position: { + x: N.position.x + M.position.x, + y: N.position.y + M.position.y + } + }); + else { + let D = !1; + for (let V = 0; V < E.length; V++) { + const A = E[V], O = a(A.source); + if (O.parentId || O.type === "loopNode") { + D = !0; + break; + } + } + D || r.updateNode(N.id, { + parentId: void 0, + position: { + x: N.position.x + M.position.x, + y: N.position.y + M.position.y + } + }); + } + } + }); + }, g = (_, v) => { + console.log("onconnectstart: ", _, v); + }, p = (_) => { + console.log("onconnect: ", _); + }; + var x = cw(), C = X(x); + Id(C); + var $ = z(C, 2); + const m = /* @__PURE__ */ Me(() => ({ + // animated: true, + // label: 'edge label', + markerEnd: { + type: mo.ArrowClosed, + // color: 'red', + width: 20, + height: 20 + } + })); + return Fc($, ut({ nodeTypes: ew }, ei, { + class: "tinyflow-logo", + isValidConnection: l, + onconnectend: c, + onconnectstart: g, + onconnect: p, + connectionRadius: 50, + ondelete: d, + onclick: (_) => { + const v = _.target; + v.classList.contains("svelte-flow__edge-interaction") || v.classList.contains("panel-content") || v.closest(".panel-content") || U(o, !1); + }, + get defaultEdgeOptions() { + return h(m); + }, + $$events: { + drop: s, + dragover: i, + edgeclick: () => { + U(o, !0); + } + }, + children: (_, v) => { + var b = uw(), N = be(b); + td(N, {}); + var E = z(N, 2); + Jc(E, {}); + var M = z(E, 2); + rd(M, {}); + var D = z(M, 2); + { + var V = (A) => { + Ho(A, { + children: (O, R) => { + var S = lw(), T = z(X(S), 4), k = X(T); + $t(k, { + rows: 3, + placeholder: "请输入边条件", + style: "width: 100%", + oninput: (P) => { + } + }), Z(T), Z(S), L(O, S); + }, + $$slots: { default: !0 } + }); + }; + ke(D, (A) => { + h(o) && A(V); + }); + } + L(_, b); + }, + $$slots: { default: !0 } + })), Z(x), L(e, x), fe({ + get onInit() { + return n(); + }, + set onInit(_) { + n(_), y(); + } + }); +} +ae(zd, { onInit: {} }, [], [], !0); +function fw(e, t) { + de(t, !0); + const n = w(t, "options", 7), r = w(t, "onInit", 7), { data: o } = n(); + return ei.init((o == null ? void 0 : o.nodes) || [], (o == null ? void 0 : o.edges) || []), Tr("tinyflow_options", n()), Wc(e, { + fitView: !0, + children: (i, s) => { + zd(i, { + get onInit() { + return r(); + } + }); + }, + $$slots: { default: !0 } + }), fe({ + get options() { + return n(); + }, + set options(i) { + n(i), y(); + }, + get onInit() { + return r(); + }, + set onInit(i) { + r(i), y(); + } + }); +} +customElements.define("tinyflow-component", ae(fw, { options: {}, onInit: {} }, [], [], !1)); +export { + yw as Tinyflow +}; +//# sourceMappingURL=index.js.map diff --git a/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.umd.js b/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.umd.js new file mode 100644 index 0000000..baf0ad5 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Tinyflow/ui/index.umd.js @@ -0,0 +1,9 @@ +(function(We,Je){typeof exports=="object"&&typeof module<"u"?Je(exports):typeof define=="function"&&define.amd?define(["exports"],Je):(We=typeof globalThis<"u"?globalThis:We||self,Je(We.Tinyflow={}))})(this,function(We){"use strict";var fw=Object.defineProperty;var Rd=We=>{throw TypeError(We)};var gw=(We,Je,ot)=>Je in We?fw(We,Je,{enumerable:!0,configurable:!0,writable:!0,value:ot}):We[Je]=ot;var Nt=(We,Je,ot)=>gw(We,typeof Je!="symbol"?Je+"":Je,ot),ba=(We,Je,ot)=>Je.has(We)||Rd("Cannot "+ot);var ut=(We,Je,ot)=>(ba(We,Je,"read from private field"),ot?ot.call(We):Je.get(We)),wr=(We,Je,ot)=>Je.has(We)?Rd("Cannot add the same private member more than once"):Je instanceof WeakSet?Je.add(We):Je.set(We,ot),zo=(We,Je,ot,Ro)=>(ba(We,Je,"write to private field"),Ro?Ro.call(We,ot):Je.set(We,ot),ot),Bd=(We,Je,ot)=>(ba(We,Je,"access private method"),ot);var Md,or,qr,Lo,Gi,Yd,Zn,jt;const Je="5";typeof window<"u"&&((Md=window.__svelte??(window.__svelte={})).v??(Md.v=new Set)).add(Je);let ot=!1,Ro=!1;function Zd(){ot=!0}Zd();const es=1,ts=2,Ca=4,Xd=8,Fd=16,Wd=1,Kd=2,ka=4,qd=8,Gd=16,$a=1,Ud=2,ns="[",rs="[!",os="]",_r={},Tt=Symbol(),Ea="http://www.w3.org/2000/svg",Sa=!1,Qt=2,Pa=4,Bo=8,is=16,Pn=32,xr=64,Yo=128,Kt=256,Zo=512,yt=1024,Nn=2048,ir=4096,Tn=8192,Xo=16384,jd=32768,br=65536,Jd=1<<17,Qd=1<<19,Na=1<<20,Xn=Symbol("$state"),ss=Symbol("legacy props"),ef=Symbol("");var Gr=Array.isArray,tf=Array.prototype.indexOf,as=Array.from,Fo=Object.keys,Ur=Object.defineProperty,Mn=Object.getOwnPropertyDescriptor,Ta=Object.getOwnPropertyDescriptors,nf=Object.prototype,rf=Array.prototype,ls=Object.getPrototypeOf;function jr(e){return typeof e=="function"}const gt=()=>{};function of(e){return e()}function Jr(e){for(var t=0;t"u"?e=>setTimeout(e,1):requestIdleCallback;let Qr=[],eo=[];function Ma(){var e=Qr;Qr=[],Jr(e)}function Ha(){var e=eo;eo=[],Jr(e)}function to(e){Qr.length===0&&queueMicrotask(Ma),Qr.push(e)}function af(e){eo.length===0&&sf(Ha),eo.push(e)}function Va(){Qr.length>0&&Ma(),eo.length>0&&Ha()}function Da(e){return e===this.v}function us(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function cs(e){return!us(e,this.v)}function lf(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function uf(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function cf(e){throw new Error("https://svelte.dev/e/effect_orphan")}function df(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function ff(){throw new Error("https://svelte.dev/e/hydration_failed")}function gf(e){throw new Error("https://svelte.dev/e/props_invalid_value")}function hf(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function vf(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function pf(){throw new Error("https://svelte.dev/e/state_unsafe_local_read")}function mf(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Mt(e,t){var n={f:0,v:e,reactions:null,equals:Da,rv:0,wv:0};return n}function Fn(e){return Aa(Mt(e))}function no(e,t=!1){var r;const n=Mt(e);return t||(n.equals=cs),ot&&Ye!==null&&Ye.l!==null&&((r=Ye.l).s??(r.s=[])).push(n),n}function re(e,t=!1){return Aa(no(e,t))}function Aa(e){return Qe!==null&&!en&&Qe.f&Qt&&(mn===null?_f([e]):mn.push(e)),e}function U(e,t){return Qe!==null&&!en&&ni()&&Qe.f&(Qt|is)&&(mn===null||!mn.includes(e))&&mf(),ds(e,t)}function ds(e,t){return e.equals(t)||(e.v,e.v=t,e.wv=Wa(),Oa(e,Nn),ni()&&Ke!==null&&Ke.f&yt&&!(Ke.f&(Pn|xr))&&(Vn===null?xf([e]):Vn.push(e))),t}function La(e,t=1){var n=h(e),r=t===1?n++:n--;return U(e,n),r}function Oa(e,t){var n=e.reactions;if(n!==null)for(var r=ni(),o=n.length,i=0;i=$.v&&U($,m+1)}Ra(s)}return!0},ownKeys(l){h(s);var u=Reflect.ownKeys(l).filter(d=>{var g=o.get(d);return g===void 0||g.v!==Tt});for(var[c,f]of o)f.v!==Tt&&!(c in l)&&u.push(c);return u},setPrototypeOf(){vf()}})}function Ra(e,t=1){U(e,e.v+t)}var Vt,Ba,Ya,Za;function gs(){if(Vt===void 0){Vt=window,Ba=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype;Ya=Mn(t,"firstChild").get,Za=Mn(t,"nextSibling").get,e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__styles=null,e.__e=void 0,Text.prototype.__t=void 0}}function Hn(e=""){return document.createTextNode(e)}function Ct(e){return Ya.call(e)}function pn(e){return Za.call(e)}function X(e,t){if(!Se)return Ct(e);var n=Ct(Ve);if(n===null)n=Ve.appendChild(Hn());else if(t&&n.nodeType!==3){var r=Hn();return n==null||n.before(r),bt(r),r}return bt(n),n}function xe(e,t){if(!Se){var n=Ct(e);return n instanceof Comment&&n.data===""?pn(n):n}return Ve}function z(e,t=1,n=!1){let r=Se?Ve:e;for(var o;t--;)o=r,r=pn(r);if(!Se)return r;var i=r==null?void 0:r.nodeType;if(n&&i!==3){var s=Hn();return r===null?o==null||o.after(s):r.before(s),bt(s),s}return bt(r),r}function hs(e){e.textContent=""}let Ko=!1,qo=!1,Go=null,sr=!1,vs=!1;function Xa(e){vs=e}let ro=[],hw=[],Qe=null,en=!1;function Wn(e){Qe=e}let Ke=null;function Kn(e){Ke=e}let mn=null;function _f(e){mn=e}let kt=null,zt=0,Vn=null;function xf(e){Vn=e}let Fa=1,Uo=0,qn=!1;function Wa(){return++Fa}function Cr(e){var f;var t=e.f;if(t&Nn)return!0;if(t&ir){var n=e.deps,r=(t&Kt)!==0;if(n!==null){var o,i,s=(t&Zo)!==0,a=r&&Ke!==null&&!qn,l=n.length;if(s||a){var u=e,c=u.parent;for(o=0;oe.wv)return!0}(!r||Ke!==null&&!qn)&&tn(e,yt)}return!1}function bf(e,t){for(var n=t;n!==null;){if(n.f&Yo)try{n.fn(e);return}catch{n.f^=Yo}n=n.parent}throw Ko=!1,e}function Cf(e){return(e.f&Xo)===0&&(e.parent===null||(e.parent.f&Yo)===0)}function jo(e,t,n,r){if(Ko){if(n===null&&(Ko=!1),Cf(t))throw e;return}n!==null&&(Ko=!0);{bf(e,t);return}}function Ka(e,t,n=!0){var r=e.reactions;if(r!==null)for(var o=0;o0)for(f.length=zt+kt.length,d=0;d0;){t++>1e3&&$f();var n=ro,r=n.length;ro=[];for(var o=0;o0;)qo=!0,Ga(),Va();return t}function h(e){var t=e.f,n=(t&Qt)!==0;if(Qe!==null&&!en){mn!==null&&mn.includes(e)&&pf();var r=Qe.deps;e.rv{qt(t)}}function Hf(e){const t=ar(xr,e,!0);return(n={})=>new Promise(r=>{n.outro?Er(t,()=>{qt(t),r(void 0)}):(qt(t),r(void 0))})}function Rt(e){return ar(Pa,e,!1)}function ge(e,t){var n=Ye,r={effect:null,ran:!1};n.l.r1.push(r),r.effect=$r(()=>{e(),!r.ran&&(r.ran=!0,U(n.l.r2,!0),yn(t))})}function vt(){var e=Ye;$r(()=>{if(h(e.l.r2)){for(var t of e.l.r1){var n=t.effect;n.f&yt&&tn(n,ir),Cr(n)&&Qo(n),t.ran=!1}e.l.r2.v=!1}})}function $r(e){return ar(Bo,e,!0)}function Ee(e,t=[],n=Ne){const r=t.map(n);return lr(()=>e(...r.map(h)))}function lr(e,t=0){return ar(Bo|is|t,e,!0)}function Dn(e,t=!0){return ar(Bo|Pn,e,!0,t)}function Ja(e){var t=e.teardown;if(t!==null){const n=vs,r=Qe;Xa(!0),Wn(null);try{t.call(null)}finally{Xa(n),Wn(r)}}}function Qa(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){var r=n.next;qt(n,t),n=r}}function Vf(e){for(var t=e.first;t!==null;){var n=t.next;t.f&Pn||qt(t),t=n}}function qt(e,t=!0){var n=!1;if((t||e.f&Qd)&&e.nodes_start!==null){for(var r=e.nodes_start,o=e.nodes_end;r!==null;){var i=r===o?null:pn(r);r.remove(),r=i}n=!0}Qa(e,t&&!n),Jo(e,0),tn(e,Xo);var s=e.transitions;if(s!==null)for(const l of s)l.stop();Ja(e);var a=e.parent;a!==null&&a.first!==null&&el(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes_start=e.nodes_end=null}function el(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Er(e,t){var n=[];ms(e,n,!0),tl(n,()=>{qt(e),t&&t()})}function tl(e,t){var n=e.length;if(n>0){var r=()=>--n||t();for(var o of e)o.out(r)}else t()}function ms(e,t,n){if(!(e.f&Tn)){if(e.f^=Tn,e.transitions!==null)for(const s of e.transitions)(s.is_global||n)&&t.push(s);for(var r=e.first;r!==null;){var o=r.next,i=(r.f&br)!==0||(r.f&Pn)!==0;ms(r,t,i?n:!1),r=o}}}function oo(e){nl(e,!0)}function nl(e,t){if(e.f&Tn){e.f^=Tn,e.f&yt||(e.f^=yt),Cr(e)&&(tn(e,Nn),ei(e));for(var n=e.first;n!==null;){var r=n.next,o=(n.f&br)!==0||(n.f&Pn)!==0;nl(n,o?t:!1),n=r}if(e.transitions!==null)for(const i of e.transitions)(i.is_global||t)&&i.in()}}function ti(e){throw new Error("https://svelte.dev/e/lifecycle_outside_component")}let Ye=null;function rl(e){Ye=e}function ur(e){return ys().get(e)}function Sr(e,t){return ys().set(e,t),t}function Df(e){return ys().has(e)}function ue(e,t=!1,n){Ye={p:Ye,c:null,e:null,m:!1,s:e,x:null,l:null},ot&&!t&&(Ye.l={s:null,u:null,r1:[],r2:Mt(!1)})}function ce(e){const t=Ye;if(t!==null){e!==void 0&&(t.x=e);const s=t.e;if(s!==null){var n=Ke,r=Qe;t.e=null;try{for(var o=0;o{document.activeElement===n&&e.focus()})}}function Wf(e){Se&&Ct(e)!==null&&hs(e)}let ol=!1;function Kf(){ol||(ol=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{var t;if(!e.defaultPrevented)for(const n of e.target.elements)(t=n.__on_r)==null||t.call(n)})},{capture:!0}))}function qf(e){var t=Qe,n=Ke;Wn(null),Kn(null);try{return e()}finally{Wn(t),Kn(n)}}const il=new Set,ws=new Set;function sl(e,t,n,r={}){function o(i){if(r.capture||io.call(t,i),!i.cancelBubble)return qf(()=>n==null?void 0:n.call(this,i))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?to(()=>{t.addEventListener(e,o,r)}):t.addEventListener(e,o,r),o}function Ze(e,t,n,r,o){var i={capture:r,passive:o},s=sl(e,t,n,i);(t===document.body||t===window||t===document)&&ja(()=>{t.removeEventListener(e,s,i)})}function ri(e){for(var t=0;t{throw _});throw d}}finally{e.__root=t,delete e.currentTarget,Wn(c),Kn(f)}}}function _s(e){var t=document.createElement("template");return t.innerHTML=e,t.content}function Dt(e,t){var n=Ke;n.nodes_start===null&&(n.nodes_start=e,n.nodes_end=t)}function ne(e,t){var n=(t&$a)!==0,r=(t&Ud)!==0,o,i=!e.startsWith("");return()=>{if(Se)return Dt(Ve,null),Ve;o===void 0&&(o=_s(i?e:""+e),n||(o=Ct(o)));var s=r||Ba?document.importNode(o,!0):o.cloneNode(!0);if(n){var a=Ct(s),l=s.lastChild;Dt(a,l)}else Dt(s,s);return s}}function _e(e,t,n="svg"){var r=!e.startsWith(""),o=(t&$a)!==0,i=`<${n}>${r?e:""+e}`,s;return()=>{if(Se)return Dt(Ve,null),Ve;if(!s){var a=_s(i),l=Ct(a);if(o)for(s=document.createDocumentFragment();Ct(l);)s.appendChild(Ct(l));else s=Ct(l)}var u=s.cloneNode(!0);if(o){var c=Ct(u),f=u.lastChild;Dt(c,f)}else Dt(u,u);return u}}function Ae(e=""){if(!Se){var t=Hn(e+"");return Dt(t,t),t}var n=Ve;return n.nodeType!==3&&(n.before(n=Hn()),bt(n)),Dt(n,n),n}function tt(){if(Se)return Dt(Ve,null),Ve;var e=document.createDocumentFragment(),t=document.createComment(""),n=Hn();return e.append(t,n),Dt(t,n),e}function L(e,t){if(Se){Ke.nodes_end=Ve,vn();return}e!==null&&e.before(t)}function Bt(e,t){var n=t==null?"":typeof t=="object"?t+"":t;n!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=n,e.nodeValue=n+"")}function al(e,t){return ll(e,t)}function Gf(e,t){gs(),t.intro=t.intro??!1;const n=t.target,r=Se,o=Ve;try{for(var i=Ct(n);i&&(i.nodeType!==8||i.data!==ns);)i=pn(i);if(!i)throw _r;It(!0),bt(i),vn();const s=ll(e,{...t,anchor:i});if(Ve===null||Ve.nodeType!==8||Ve.data!==os)throw Wo(),_r;return It(!1),s}catch(s){if(s===_r)return t.recover===!1&&ff(),gs(),hs(n),It(!1),al(e,t);throw s}finally{It(r),bt(o)}}const Pr=new Map;function ll(e,{target:t,anchor:n,props:r={},events:o,context:i,intro:s=!0}){gs();var a=new Set,l=f=>{for(var d=0;d{var f=n??t.appendChild(Hn());return Dn(()=>{if(i){ue({});var d=Ye;d.c=i}o&&(r.$$events=o),Se&&Dt(f,null),u=e(f,r)||{},Se&&(Ke.nodes_end=Ve),i&&ce()}),()=>{var p;for(var d of a){t.removeEventListener(d,io);var g=Pr.get(d);--g===0?(document.removeEventListener(d,io),Pr.delete(d)):Pr.set(d,g)}ws.delete(l),f!==n&&((p=f.parentNode)==null||p.removeChild(f))}});return xs.set(u,c),u}let xs=new WeakMap;function Uf(e,t){const n=xs.get(e);return n?(xs.delete(e),n(t)):Promise.resolve()}function ke(e,t,[n,r]=[0,0]){Se&&n===0&&vn();var o=e,i=null,s=null,a=Tt,l=n>0?br:0,u=!1;const c=(d,g=!0)=>{u=!0,f(g,d)},f=(d,g)=>{if(a===(a=d))return;let p=!1;if(Se&&r!==-1){if(n===0){const C=o.data;C===ns?r=0:C===rs?r=1/0:(r=parseInt(C.substring(1)),r!==r&&(r=a?1/0:-1))}const x=r>n;!!a===x&&(o=fs(),bt(o),It(!1),p=!0,r=-1)}a?(i?oo(i):g&&(i=Dn(()=>g(o))),s&&Er(s,()=>{s=null})):(s?oo(s):g&&(s=Dn(()=>g(o,[n+1,r]))),i&&Er(i,()=>{i=null})),p&&It(!0)};lr(()=>{u=!1,t(c),u||f(null,null)},l),Se&&(o=Ve)}function oi(e,t){return t}function jf(e,t,n,r){for(var o=[],i=t.length,s=0;s0&&o.length===0&&n!==null;if(a){var l=n.parentNode;hs(l),l.append(n),r.clear(),Gn(e,t[0].prev,t[i-1].next)}tl(o,()=>{for(var u=0;u{var g=n();return Gr(g)?g:g==null?[]:as(g)});lr(()=>{var g=h(d),p=g.length;if(f&&p===0)return;f=p===0;let x=!1;if(Se){var C=s.data===rs;C!==(p===0)&&(s=fs(),bt(s),It(!1),x=!0)}if(Se){for(var $=null,m,_=0;_0&&bt(fs())}Se||Jf(g,a,s,o,t,r,n),i!==null&&(p===0?c?oo(c):c=Dn(()=>i(s)):c!==null&&Er(c,()=>{c=null})),x&&It(!0),h(d)}),Se&&(s=Ve)}function Jf(e,t,n,r,o,i,s){var S,M,k,P;var a=(o&Xd)!==0,l=(o&(es|ts))!==0,u=e.length,c=t.items,f=t.first,d=f,g,p=null,x,C=[],$=[],m,_,v,b;if(a)for(b=0;b0){var R=o&Ca&&u===0?n:null;if(a){for(b=0;b{var H;if(x!==void 0)for(v of x)(H=v.a)==null||H.apply()}),Ke.first=t.first&&t.first.e,Ke.last=p&&p.e}function Qf(e,t,n,r){r&es&&ds(e.v,t),r&ts?ds(e.i,n):e.i=n}function ul(e,t,n,r,o,i,s,a,l,u){var c=(l&es)!==0,f=(l&Fd)===0,d=c?f?no(o):Mt(o):o,g=l&ts?Mt(s):s,p={i:g,v:d,k:i,a:null,e:null,prev:n,next:r};try{return p.e=Dn(()=>a(e,d,g,u),Se),p.e.prev=n&&n.e,p.e.next=r&&r.e,n===null?t.first=p:(n.next=p,n.e.next=p.e),r!==null&&(r.prev=p,r.e.prev=p.e),p}finally{}}function cl(e,t,n){for(var r=e.next?e.next.e.nodes_start:n,o=t?t.e.nodes_start:n,i=e.e.nodes_start;i!==r;){var s=pn(i);o.before(i),i=s}}function Gn(e,t,n){t===null?e.first=n:(t.next=n,t.e.next=n&&n.e),n!==null&&(n.prev=t,n.e.prev=t&&t.e)}function dl(e,t,n,r,o){var i=e,s="",a;lr(()=>{if(s===(s=t()??"")){Se&&vn();return}a!==void 0&&(qt(a),a=void 0),s!==""&&(a=Dn(()=>{if(Se){Ve.data;for(var l=vn(),u=l;l!==null&&(l.nodeType!==8||l.data!=="");)u=l,l=pn(l);if(l===null)throw Wo(),_r;Dt(Ve,u),i=bt(l);return}var c=s+"",f=_s(c);Dt(Ct(f),f.lastChild),i.before(f)}))})}function wt(e,t,n,r,o){var a;Se&&vn();var i=(a=t.$$slots)==null?void 0:a[n],s=!1;i===!0&&(i=t[n==="default"?"children":n],s=!0),i===void 0||i(e,s?()=>r:r)}function e1(e){const t={};e.children&&(t.default=!0);for(const n in e.$$slots)t[n]=!0;return t}function cr(e,t,...n){var r=e,o=gt,i;lr(()=>{o!==(o=t())&&(i&&(qt(i),i=null),i=Dn(()=>o(r,...n)))},br),Se&&(r=Ve)}function fl(e,t,n){Se&&vn();var r=e,o,i;lr(()=>{o!==(o=t())&&(i&&(Er(i),i=null),o&&(i=Dn(()=>n(r,o))))},br),Se&&(r=Ve)}function t1(e,t,n,r,o,i){let s=Se;Se&&vn();var a,l,u=null;Se&&Ve.nodeType===1&&(u=Ve,vn());var c=Se?Ve:e,f;lr(()=>{const d=t()||null;var g=d==="svg"?Ea:null;d!==a&&(f&&(d===null?Er(f,()=>{f=null,l=null}):d===l?oo(f):qt(f)),d&&d!==l&&(f=Dn(()=>{if(u=Se?u:g?document.createElementNS(g,d):document.createElement(d),Dt(u,u),r){Se&&Xf(d)&&u.append(document.createComment(""));var p=Se?Ct(u):u.appendChild(Hn());Se&&(p===null?It(!1):bt(p)),r(u,p)}Ke.nodes_end=u,c.before(u)})),a=d,a&&(l=a))},br),s&&(It(!0),bt(c))}function et(e,t){to(()=>{var n=e.getRootNode(),r=n.host?n:n.head??n.ownerDocument.head;if(!r.querySelector("#"+t.hash)){const o=document.createElement("style");o.id=t.hash,o.textContent=t.code,r.appendChild(o)}})}function _t(e,t,n){Rt(()=>{var r=yn(()=>t(e,n==null?void 0:n())||{});if(n&&(r!=null&&r.update)){var o=!1,i={};$r(()=>{var s=n();j(s),o&&us(i,s)&&(i=s,r.update(s))}),o=!0}if(r!=null&&r.destroy)return()=>r.destroy()})}function gl(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t=0;){var a=s+i;(s===0||hl.includes(r[s-1]))&&(a===r.length||hl.includes(r[a]))?r=(s===0?"":r.substring(0,s))+r.substring(a+1):s=a}}return r===""?null:r}function $t(e,t,n,r,o,i){var s=e.__className;if(Se||s!==n){var a=r1(n,r,i);(!Se||a!==e.getAttribute("class"))&&(a==null?e.removeAttribute("class"):t?e.className=a:e.setAttribute("class",a)),e.__className=n}else if(i)for(var l in i){var u=!!i[l];(o==null||u!==!!o[l])&&e.classList.toggle(l,u)}return i}const so=Symbol("class");function ao(e){if(Se){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute("value")){var r=e.value;de(e,"value",null),e.value=r}if(e.hasAttribute("checked")){var o=e.checked;de(e,"checked",null),e.checked=o}}};e.__on_r=n,af(n),Kf()}}function bs(e,t){var n=e.__attributes??(e.__attributes={});n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!=="PROGRESS")||(e.value=t??"")}function o1(e,t){t?e.hasAttribute("selected")||e.setAttribute("selected",""):e.removeAttribute("selected")}function de(e,t,n,r){var o=e.__attributes??(e.__attributes={});Se&&(o[t]=e.getAttribute(t),t==="src"||t==="srcset"||t==="href"&&e.nodeName==="LINK")||o[t]!==(o[t]=n)&&(t==="style"&&"__styles"in e&&(e.__styles={}),t==="loading"&&(e[ef]=n),n==null?e.removeAttribute(t):typeof n!="string"&&pl(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function nn(e,t,n,r,o=!1,i=!1,s=!1){let a=Se&&i;a&&It(!1);var l=t||{},u=e.tagName==="OPTION";for(var c in t)c in n||(n[c]=null);n.class?n.class=wn(n.class):(r||n[so])&&(n.class=null);var f=pl(e),d=e.__attributes??(e.__attributes={});for(const _ in n){let v=n[_];if(u&&_==="value"&&v==null){e.value=e.__value="",l[_]=v;continue}if(_==="class"){var g=e.namespaceURI==="http://www.w3.org/1999/xhtml";$t(e,g,v,r,t==null?void 0:t[so],n[so]),l[_]=v,l[so]=n[so];continue}var p=l[_];if(v!==p){l[_]=v;var x=_[0]+_[1];if(x!=="$$"){if(x==="on"){const b={},N="$$"+_;let E=_.slice(2);var C=If(E);if(Lf(E)&&(E=E.slice(0,-7),b.capture=!0),!C&&p){if(v!=null)continue;e.removeEventListener(E,l[N],b),l[N]=null}if(v!=null)if(C)e[`__${E}`]=v,ri([E]);else{let T=function(D){l[_].call(this,D)};l[N]=sl(E,e,T,b)}else C&&(e[`__${E}`]=void 0)}else if(_==="style"&&v!=null)e.style.cssText=v+"";else if(_==="autofocus")Ff(e,!!v);else if(!i&&(_==="__value"||_==="value"&&v!=null))e.value=e.__value=v;else if(_==="selected"&&u)o1(e,v);else{var $=_;o||($=Rf($));var m=$==="defaultValue"||$==="defaultChecked";if(v==null&&!i&&!m)if(d[_]=null,$==="value"||$==="checked"){let b=e;const N=t===void 0;if($==="value"){let E=b.defaultValue;b.removeAttribute($),b.defaultValue=E,b.value=b.__value=N?E:null}else{let E=b.defaultChecked;b.removeAttribute($),b.defaultChecked=E,b.checked=N?E:!1}}else e.removeAttribute(_);else m||f.includes($)&&(i||typeof v!="string")?e[$]=v:typeof v!="function"&&de(e,$,v)}_==="style"&&"__styles"in e&&(e.__styles={})}}}return a&&It(!0),l}var vl=new Map;function pl(e){var t=vl.get(e.nodeName);if(t)return t;vl.set(e.nodeName,t=[]);for(var n,r=e,o=Element.prototype;o!==r;){n=Ta(r);for(var i in n)n[i].set&&t.push(i);r=ls(r)}return t}function at(e,t,n,r){var o=e.__styles??(e.__styles={});o[t]!==n&&(o[t]=n,n==null?e.style.removeProperty(t):e.style.setProperty(t,n,""))}const Ui=class Ui{constructor(t){wr(this,Gi);wr(this,or,new WeakMap);wr(this,qr);wr(this,Lo);zo(this,Lo,t)}observe(t,n){var r=ut(this,or).get(t)||new Set;return r.add(n),ut(this,or).set(t,r),Bd(this,Gi,Yd).call(this).observe(t,ut(this,Lo)),()=>{var o=ut(this,or).get(t);o.delete(n),o.size===0&&(ut(this,or).delete(t),ut(this,qr).unobserve(t))}}};or=new WeakMap,qr=new WeakMap,Lo=new WeakMap,Gi=new WeakSet,Yd=function(){return ut(this,qr)??zo(this,qr,new ResizeObserver(t=>{for(var n of t){Ui.entries.set(n.target,n);for(var r of ut(this,or).get(n.target)||[])r(n)}}))},Nt(Ui,"entries",new WeakMap);let Cs=Ui;var i1=new Cs({box:"border-box"});function ml(e,t,n){var r=i1.observe(e,()=>n(e[t]));Rt(()=>(yn(()=>n(e[t])),r))}function yl(e,t){return e===t||(e==null?void 0:e[Xn])===t}function An(e={},t,n,r){return Rt(()=>{var o,i;return $r(()=>{o=i,i=[],yn(()=>{e!==n(...i)&&(t(e,...i),o&&yl(n(...o),e)&&t(null,...o))})}),()=>{to(()=>{i&&yl(n(...i),e)&&t(null,...i)})}}),e}function ks(e){return function(...t){var n=t[0];return n.stopPropagation(),e==null?void 0:e.apply(this,t)}}function He(e=!1){const t=Ye,n=t.l.u;if(!n)return;let r=()=>j(t.s);if(e){let o=0,i={};const s=Ne(()=>{let a=!1;const l=t.s;for(const u in l)l[u]!==i[u]&&(i[u]=l[u],a=!0);return a&&o++,o});r=()=>h(s)}n.b.length&&Tf(()=>{wl(t,r),Jr(n.b)}),kr(()=>{const o=yn(()=>n.m.map(of));return()=>{for(const i of o)typeof i=="function"&&i()}}),n.a.length&&kr(()=>{wl(t,r),Jr(n.a)})}function wl(e,t){if(e.l.s)for(const n of e.l.s)h(n);t()}function De(e,t){var i;var n=(i=e.$$events)==null?void 0:i[t.type],r=Gr(n)?n.slice():n==null?[]:[n];for(var o of r)o.call(this,t)}function rn(e){Ye===null&&ti(),ot&&Ye.l!==null?a1(Ye).m.push(e):kr(()=>{const t=yn(e);if(typeof t=="function")return t})}function $s(e){Ye===null&&ti(),rn(()=>()=>yn(e))}function s1(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function ii(){const e=Ye;return e===null&&ti(),(t,n,r)=>{var i;const o=(i=e.s.$$events)==null?void 0:i[t];if(o){const s=Gr(o)?o.slice():[o],a=s1(t,n,r);for(const l of s)l.call(e.x,a);return!a.defaultPrevented}return!0}}function a1(e){var t=e.l;return t.u??(t.u={a:[],b:[],m:[]})}function Es(e,t,n){if(e==null)return t(void 0),n&&n(void 0),gt;const r=yn(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}const Nr=[];function Gt(e,t){return{subscribe:we(e,t).subscribe}}function we(e,t=gt){let n=null;const r=new Set;function o(a){if(us(e,a)&&(e=a,n)){const l=!Nr.length;for(const u of r)u[1](),Nr.push(u,e);if(l){for(let u=0;u{r.delete(u),r.size===0&&n&&(n(),n=null)}}return{set:o,update:i,subscribe:s}}function Un(e,t,n){const r=!Array.isArray(e),o=r?[e]:e;if(!o.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const i=t.length<2;return Gt(n,(s,a)=>{let l=!1;const u=[];let c=0,f=gt;const d=()=>{if(c)return;f();const p=t(r?u[0]:u,s,a);i?s(p):f=typeof p=="function"?p:gt},g=o.map((p,x)=>Es(p,C=>{u[x]=C,c&=~(1<{c|=1<t=n)(),t}let si=!1,Ss=Symbol();function Q(e,t,n){const r=n[t]??(n[t]={store:null,source:no(void 0),unsubscribe:gt});if(r.store!==e&&!(Ss in n))if(r.unsubscribe(),r.store=e??null,e==null)r.source.v=void 0,r.unsubscribe=gt;else{var o=!0;r.unsubscribe=Es(e,i=>{o?r.source.v=i:U(r.source,i)}),o=!1}return e&&Ss in n?q(e):h(r.source)}function l1(e,t,n){let r=n[t];return r&&r.store!==e&&(r.unsubscribe(),r.unsubscribe=gt),e}function ai(e,t){return e.set(t),t}function nt(){const e={};function t(){ja(()=>{for(var n in e)e[n].unsubscribe();Ur(e,Ss,{enumerable:!1,value:!0})})}return[e,t]}function u1(e){var t=si;try{return si=!1,[e(),si]}finally{si=t}}const c1={get(e,t){if(!e.exclude.includes(t))return e.props[t]},set(e,t){return!1},getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},has(e,t){return e.exclude.includes(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))}};function xt(e,t,n){return new Proxy({props:e,exclude:t},c1)}const d1={get(e,t){if(!e.exclude.includes(t))return h(e.version),t in e.special?e.special[t]():e.props[t]},set(e,t,n){return t in e.special||(e.special[t]=w({get[t](){return e.props[t]}},t,ka)),e.special[t](n),La(e.version),!0},getOwnPropertyDescriptor(e,t){if(!e.exclude.includes(t)&&t in e.props)return{enumerable:!0,configurable:!0,value:e.props[t]}},deleteProperty(e,t){return e.exclude.includes(t)||(e.exclude.push(t),La(e.version)),!0},has(e,t){return e.exclude.includes(t)?!1:t in e.props},ownKeys(e){return Reflect.ownKeys(e.props).filter(t=>!e.exclude.includes(t))}};function it(e,t){return new Proxy({props:e,exclude:t,special:{},version:Mt(0)},d1)}const f1={get(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(jr(r)&&(r=r()),typeof r=="object"&&r!==null&&t in r)return r[t]}},set(e,t,n){let r=e.props.length;for(;r--;){let o=e.props[r];jr(o)&&(o=o());const i=Mn(o,t);if(i&&i.set)return i.set(n),!0}return!1},getOwnPropertyDescriptor(e,t){let n=e.props.length;for(;n--;){let r=e.props[n];if(jr(r)&&(r=r()),typeof r=="object"&&r!==null&&t in r){const o=Mn(r,t);return o&&!o.configurable&&(o.configurable=!0),o}}},has(e,t){if(t===Xn||t===ss)return!1;for(let n of e.props)if(jr(n)&&(n=n()),n!=null&&t in n)return!0;return!1},ownKeys(e){const t=[];for(let n of e.props){jr(n)&&(n=n());for(const r in n)t.includes(r)||t.push(r)}return t}};function ft(...e){return new Proxy({props:e},f1)}function w(e,t,n,r){var N;var o=(n&Wd)!==0,i=!ot||(n&Kd)!==0,s=(n&qd)!==0,a=(n&Gd)!==0,l=!1,u;s?[u,l]=u1(()=>e[t]):u=e[t];var c=Xn in e||ss in e,f=s&&(((N=Mn(e,t))==null?void 0:N.set)??(c&&t in e&&(E=>e[t]=E)))||void 0,d=r,g=!0,p=!1,x=()=>(p=!0,g&&(g=!1,a?d=yn(r):d=r),d);u===void 0&&r!==void 0&&(f&&i&&gf(),u=x(),f&&f(u));var C;if(i)C=()=>{var E=e[t];return E===void 0?x():(g=!0,p=!1,E)};else{var $=(o?Ne:ve)(()=>e[t]);$.f|=Jd,C=()=>{var E=h($);return E!==void 0&&(d=void 0),E===void 0?d:E}}if(!(n&ka))return C;if(f){var m=e.$$legacy;return function(E,T){return arguments.length>0?((!i||!T||m||l)&&f(T?C():E),E):C()}}var _=!1,v=no(u),b=Ne(()=>{var E=C(),T=h(v);return _?(_=!1,T):v.v=E});return o||(b.equals=cs),function(E,T){if(arguments.length>0){const D=T?h(b):i&&s?Ht(E):E;return b.equals(D)||(_=!0,U(v,D),p&&d!==void 0&&(d=D),yn(()=>h(b))),E}return h(b)}}function g1(e){return new h1(e)}class h1{constructor(t){wr(this,Zn);wr(this,jt);var i;var n=new Map,r=(s,a)=>{var l=no(a);return n.set(s,l),l};const o=new Proxy({...t.props||{},$$events:{}},{get(s,a){return h(n.get(a)??r(a,Reflect.get(s,a)))},has(s,a){return a===ss?!0:(h(n.get(a)??r(a,Reflect.get(s,a))),Reflect.has(s,a))},set(s,a,l){return U(n.get(a)??r(a,l),l),Reflect.set(s,a,l)}});zo(this,jt,(t.hydrate?Gf:al)(t.component,{target:t.target,anchor:t.anchor,props:o,context:t.context,intro:t.intro??!1,recover:t.recover})),(!((i=t==null?void 0:t.props)!=null&&i.$$host)||t.sync===!1)&&y(),zo(this,Zn,o.$$events);for(const s of Object.keys(ut(this,jt)))s==="$set"||s==="$destroy"||s==="$on"||Ur(this,s,{get(){return ut(this,jt)[s]},set(a){ut(this,jt)[s]=a},enumerable:!0});ut(this,jt).$set=s=>{Object.assign(o,s)},ut(this,jt).$destroy=()=>{Uf(ut(this,jt))}}$set(t){ut(this,jt).$set(t)}$on(t,n){ut(this,Zn)[t]=ut(this,Zn)[t]||[];const r=(...o)=>n.call(this,...o);return ut(this,Zn)[t].push(r),()=>{ut(this,Zn)[t]=ut(this,Zn)[t].filter(o=>o!==r)}}$destroy(){ut(this,jt).$destroy()}}Zn=new WeakMap,jt=new WeakMap;let _l;typeof HTMLElement=="function"&&(_l=class extends HTMLElement{constructor(t,n,r){super();Nt(this,"$$ctor");Nt(this,"$$s");Nt(this,"$$c");Nt(this,"$$cn",!1);Nt(this,"$$d",{});Nt(this,"$$r",!1);Nt(this,"$$p_d",{});Nt(this,"$$l",{});Nt(this,"$$l_u",new Map);Nt(this,"$$me");this.$$ctor=t,this.$$s=n,r&&this.attachShadow({mode:"open"})}addEventListener(t,n,r){if(this.$$l[t]=this.$$l[t]||[],this.$$l[t].push(n),this.$$c){const o=this.$$c.$on(t,n);this.$$l_u.set(n,o)}super.addEventListener(t,n,r)}removeEventListener(t,n,r){if(super.removeEventListener(t,n,r),this.$$c){const o=this.$$l_u.get(n);o&&(o(),this.$$l_u.delete(n))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let t=function(o){return i=>{const s=document.createElement("slot");o!=="default"&&(s.name=o),L(i,s)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const n={},r=v1(this);for(const o of this.$$s)o in r&&(o==="default"&&!this.$$d.children?(this.$$d.children=t(o),n.default=!0):n[o]=t(o));for(const o of this.attributes){const i=this.$$g_p(o.name);i in this.$$d||(this.$$d[i]=li(i,o.value,this.$$p_d,"toProp"))}for(const o in this.$$p_d)!(o in this.$$d)&&this[o]!==void 0&&(this.$$d[o]=this[o],delete this[o]);this.$$c=g1({component:this.$$ctor,target:this.shadowRoot||this,props:{...this.$$d,$$slots:n,$$host:this}}),this.$$me=Mf(()=>{$r(()=>{var o;this.$$r=!0;for(const i of Fo(this.$$c)){if(!((o=this.$$p_d[i])!=null&&o.reflect))continue;this.$$d[i]=this.$$c[i];const s=li(i,this.$$d[i],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[i].attribute||i):this.setAttribute(this.$$p_d[i].attribute||i,s)}this.$$r=!1})});for(const o in this.$$l)for(const i of this.$$l[o]){const s=this.$$c.$on(o,i);this.$$l_u.set(i,s)}this.$$l={}}}attributeChangedCallback(t,n,r){var o;this.$$r||(t=this.$$g_p(t),this.$$d[t]=li(t,r,this.$$p_d,"toProp"),(o=this.$$c)==null||o.$set({[t]:this.$$d[t]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)})}$$g_p(t){return Fo(this.$$p_d).find(n=>this.$$p_d[n].attribute===t||!this.$$p_d[n].attribute&&n.toLowerCase()===t)||t}});function li(e,t,n,r){var i;const o=(i=n[e])==null?void 0:i.type;if(t=o==="Boolean"&&typeof t!="boolean"?t!=null:t,!r||!n[e])return t;if(r==="toAttribute")switch(o){case"Object":case"Array":return t==null?null:JSON.stringify(t);case"Boolean":return t?"":null;case"Number":return t??null;default:return t}else switch(o){case"Object":case"Array":return t&&JSON.parse(t);case"Boolean":return t;case"Number":return t!=null?+t:t;default:return t}}function v1(e){const t={};return e.childNodes.forEach(n=>{t[n.slot||"default"]=!0}),t}function ie(e,t,n,r,o,i){let s=class extends _l{constructor(){super(e,n,o),this.$$p_d=t}static get observedAttributes(){return Fo(t).map(a=>(t[a].attribute||a).toLowerCase())}};return Fo(t).forEach(a=>{Ur(s.prototype,a,{get(){return this.$$c&&a in this.$$c?this.$$c[a]:this.$$d[a]},set(l){var f;l=li(a,l,t),this.$$d[a]=l;var u=this.$$c;if(u){var c=(f=Mn(u,a))==null?void 0:f.get;c?u[a]=l:u.$set({[a]:l})}}})}),r.forEach(a=>{Ur(s.prototype,a,{get(){var l;return(l=this.$$c)==null?void 0:l[a]}})}),e.element=s,s}function Et(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let n=0,r;n{}};function ui(){for(var e=0,t=arguments.length,n={},r;e=0&&(r=n.slice(o+1),n=n.slice(0,o)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}ci.prototype=ui.prototype={constructor:ci,on:function(e,t){var n=this._,r=m1(e+"",n),o,i=-1,s=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(o),r=0,o,i;r=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),bl.hasOwnProperty(t)?{space:bl[t],local:e}:e}function w1(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Ps&&t.documentElement.namespaceURI===Ps?t.createElement(e):t.createElementNS(n,e)}}function _1(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Cl(e){var t=di(e);return(t.local?_1:w1)(t)}function x1(){}function Ns(e){return e==null?x1:function(){return this.querySelector(e)}}function b1(e){typeof e!="function"&&(e=Ns(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o=_&&(_=m+1);!(b=C[_])&&++_=0;)(s=r[o])&&(i&&s.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(s,i),i=s);return this}function K1(e){e||(e=q1);function t(f,d){return f&&d?e(f.__data__,d.__data__):!f-!d}for(var n=this._groups,r=n.length,o=new Array(r),i=0;it?1:e>=t?0:NaN}function G1(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function U1(){return Array.from(this)}function j1(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?lg:typeof t=="function"?cg:ug)(e,t,n??"")):Tr(this.node(),e)}function Tr(e,t){return e.style.getPropertyValue(t)||Pl(e).getComputedStyle(e,null).getPropertyValue(t)}function fg(e){return function(){delete this[e]}}function gg(e,t){return function(){this[e]=t}}function hg(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function vg(e,t){return arguments.length>1?this.each((t==null?fg:typeof t=="function"?hg:gg)(e,t)):this.node()[e]}function Nl(e){return e.trim().split(/^|\s+/)}function Ts(e){return e.classList||new Tl(e)}function Tl(e){this._node=e,this._names=Nl(e.getAttribute("class")||"")}Tl.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function Ml(e,t){for(var n=Ts(e),r=-1,o=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function Zg(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,o=t.length,i;n()=>e;function Hs(e,{sourceEvent:t,subject:n,target:r,identifier:o,active:i,x:s,y:a,dx:l,dy:u,dispatch:c}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:u,enumerable:!0,configurable:!0},_:{value:c}})}Hs.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Qg(e){return!e.ctrlKey&&!e.button}function eh(){return this.parentNode}function th(e,t){return t??{x:e.x,y:e.y}}function nh(){return navigator.maxTouchPoints||"ontouchstart"in this}function rh(){var e=Qg,t=eh,n=th,r=nh,o={},i=ui("start","drag","end"),s=0,a,l,u,c,f=0;function d(v){v.on("mousedown.drag",g).filter(r).on("touchstart.drag",C).on("touchmove.drag",$,Jg).on("touchend.drag touchcancel.drag",m).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function g(v,b){if(!(c||!e.call(this,v,b))){var N=_(this,t.call(this,v,b),v,b,"mouse");N&&(Ut(v.view).on("mousemove.drag",p,uo).on("mouseup.drag",x,uo),Al(v.view),Ms(v),u=!1,a=v.clientX,l=v.clientY,N("start",v))}}function p(v){if(Mr(v),!u){var b=v.clientX-a,N=v.clientY-l;u=b*b+N*N>f}o.mouse("drag",v)}function x(v){Ut(v.view).on("mousemove.drag mouseup.drag",null),Ll(v.view,u),Mr(v),o.mouse("end",v)}function C(v,b){if(e.call(this,v,b)){var N=v.changedTouches,E=t.call(this,v,b),T=N.length,D,V;for(D=0;D>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?vi(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?vi(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=ih.exec(e))?new At(t[1],t[2],t[3],1):(t=sh.exec(e))?new At(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=ah.exec(e))?vi(t[1],t[2],t[3],t[4]):(t=lh.exec(e))?vi(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=uh.exec(e))?Xl(t[1],t[2]/100,t[3]/100,1):(t=ch.exec(e))?Xl(t[1],t[2]/100,t[3]/100,t[4]):Il.hasOwnProperty(e)?Bl(Il[e]):e==="transparent"?new At(NaN,NaN,NaN,0):null}function Bl(e){return new At(e>>16&255,e>>8&255,e&255,1)}function vi(e,t,n,r){return r<=0&&(e=t=n=NaN),new At(e,t,n,r)}function gh(e){return e instanceof co||(e=ho(e)),e?(e=e.rgb(),new At(e.r,e.g,e.b,e.opacity)):new At}function Ds(e,t,n,r){return arguments.length===1?gh(e):new At(e,t,n,r??1)}function At(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Vs(At,Ds,Ol(co,{brighter(e){return e=e==null?hi:Math.pow(hi,e),new At(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?fo:Math.pow(fo,e),new At(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new At(dr(this.r),dr(this.g),dr(this.b),pi(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Yl,formatHex:Yl,formatHex8:hh,formatRgb:Zl,toString:Zl}));function Yl(){return`#${fr(this.r)}${fr(this.g)}${fr(this.b)}`}function hh(){return`#${fr(this.r)}${fr(this.g)}${fr(this.b)}${fr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Zl(){const e=pi(this.opacity);return`${e===1?"rgb(":"rgba("}${dr(this.r)}, ${dr(this.g)}, ${dr(this.b)}${e===1?")":`, ${e})`}`}function pi(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function dr(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function fr(e){return e=dr(e),(e<16?"0":"")+e.toString(16)}function Xl(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new sn(e,t,n,r)}function Fl(e){if(e instanceof sn)return new sn(e.h,e.s,e.l,e.opacity);if(e instanceof co||(e=ho(e)),!e)return new sn;if(e instanceof sn)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),s=NaN,a=i-o,l=(i+o)/2;return a?(t===i?s=(n-r)/a+(n0&&l<1?0:s,new sn(s,a,l,e.opacity)}function vh(e,t,n,r){return arguments.length===1?Fl(e):new sn(e,t,n,r??1)}function sn(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Vs(sn,vh,Ol(co,{brighter(e){return e=e==null?hi:Math.pow(hi,e),new sn(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?fo:Math.pow(fo,e),new sn(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new At(As(e>=240?e-240:e+120,o,r),As(e,o,r),As(e<120?e+240:e-120,o,r),this.opacity)},clamp(){return new sn(Wl(this.h),mi(this.s),mi(this.l),pi(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=pi(this.opacity);return`${e===1?"hsl(":"hsla("}${Wl(this.h)}, ${mi(this.s)*100}%, ${mi(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Wl(e){return e=(e||0)%360,e<0?e+360:e}function mi(e){return Math.max(0,Math.min(1,e||0))}function As(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}const Kl=e=>()=>e;function ph(e,t){return function(n){return e+n*t}}function mh(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}function yh(e){return(e=+e)==1?ql:function(t,n){return n-t?mh(t,n,e):Kl(isNaN(t)?n:t)}}function ql(e,t){var n=t-e;return n?ph(e,n):Kl(isNaN(e)?t:e)}const Gl=function e(t){var n=yh(t);function r(o,i){var s=n((o=Ds(o)).r,(i=Ds(i)).r),a=n(o.g,i.g),l=n(o.b,i.b),u=ql(o.opacity,i.opacity);return function(c){return o.r=s(c),o.g=a(c),o.b=l(c),o.opacity=u(c),o+""}}return r.gamma=e,r}(1);function jn(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var Ls=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Os=new RegExp(Ls.source,"g");function wh(e){return function(){return e}}function _h(e){return function(t){return e(t)+""}}function xh(e,t){var n=Ls.lastIndex=Os.lastIndex=0,r,o,i,s=-1,a=[],l=[];for(e=e+"",t=t+"";(r=Ls.exec(e))&&(o=Os.exec(t));)(i=o.index)>n&&(i=t.slice(n,i),a[s]?a[s]+=i:a[++s]=i),(r=r[0])===(o=o[0])?a[s]?a[s]+=o:a[++s]=o:(a[++s]=null,l.push({i:s,x:jn(r,o)})),n=Os.lastIndex;return n180?c+=360:c-u>180&&(u+=360),d.push({i:f.push(o(f)+"rotate(",null,r)-2,x:jn(u,c)})):c&&f.push(o(f)+"rotate("+c+r)}function a(u,c,f,d){u!==c?d.push({i:f.push(o(f)+"skewX(",null,r)-2,x:jn(u,c)}):c&&f.push(o(f)+"skewX("+c+r)}function l(u,c,f,d,g,p){if(u!==f||c!==d){var x=g.push(o(g)+"scale(",null,",",null,")");p.push({i:x-4,x:jn(u,f)},{i:x-2,x:jn(c,d)})}else(f!==1||d!==1)&&g.push(o(g)+"scale("+f+","+d+")")}return function(u,c){var f=[],d=[];return u=e(u),c=e(c),i(u.translateX,u.translateY,c.translateX,c.translateY,f,d),s(u.rotate,c.rotate,f,d),a(u.skewX,c.skewX,f,d),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,d),u=c=null,function(g){for(var p=-1,x=d.length,C;++p=0&&e._call.call(void 0,t),e=e._next;--Vr}function ru(){gr=(_i=yo.now())+xi,Vr=vo=0;try{Mh()}finally{Vr=0,Vh(),gr=0}}function Hh(){var e=yo.now(),t=e-_i;t>eu&&(xi-=t,_i=e)}function Vh(){for(var e,t=wi,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:wi=n);mo=e,Rs(r)}function Rs(e){if(!Vr){vo&&(vo=clearTimeout(vo));var t=e-gr;t>24?(e<1/0&&(vo=setTimeout(ru,e-yo.now()-xi)),po&&(po=clearInterval(po))):(po||(_i=yo.now(),po=setInterval(Hh,eu)),Vr=1,tu(ru))}}function ou(e,t,n){var r=new bi;return t=t==null?0:+t,r.restart(o=>{r.stop(),e(o+t)},t,n),r}var Dh=ui("start","end","cancel","interrupt"),Ah=[],iu=0,su=1,Bs=2,Ci=3,au=4,Ys=5,ki=6;function $i(e,t,n,r,o,i){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;Lh(e,n,{name:t,index:r,group:o,on:Dh,tween:Ah,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:iu})}function Zs(e,t){var n=an(e,t);if(n.state>iu)throw new Error("too late; already scheduled");return n}function xn(e,t){var n=an(e,t);if(n.state>Ci)throw new Error("too late; already running");return n}function an(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function Lh(e,t,n){var r=e.__transition,o;r[t]=n,n.timer=nu(i,0,n.time);function i(u){n.state=su,n.timer.restart(s,n.delay,n.time),n.delay<=u&&s(u-n.delay)}function s(u){var c,f,d,g;if(n.state!==su)return l();for(c in r)if(g=r[c],g.name===n.name){if(g.state===Ci)return ou(s);g.state===au?(g.state=ki,g.timer.stop(),g.on.call("interrupt",e,e.__data__,g.index,g.group),delete r[c]):+cBs&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function fv(e,t,n){var r,o,i=dv(t)?Zs:xn;return function(){var s=i(this,e),a=s.on;a!==r&&(o=(r=a).copy()).on(t,n),s.on=o}}function gv(e,t){var n=this._id;return arguments.length<2?an(this.node(),n).on.on(e):this.each(fv(n,e,t))}function hv(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function vv(){return this.on("end.remove",hv(this._id))}function pv(e){var t=this._name,n=this._id;typeof e!="function"&&(e=Ns(e));for(var r=this._groups,o=r.length,i=new Array(o),s=0;s()=>e;function Bv(e,{sourceEvent:t,target:n,transform:r,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function In(e,t,n){this.k=e,this.x=t,this.y=n}In.prototype={constructor:In,scale:function(e){return e===1?this:new In(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new In(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Pi=new In(1,0,0);du.prototype=In.prototype;function du(e){for(;!e.__zoom;)if(!(e=e.parentNode))return Pi;return e.__zoom}function Fs(e){e.stopImmediatePropagation()}function wo(e){e.preventDefault(),e.stopImmediatePropagation()}function Yv(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Zv(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function fu(){return this.__zoom||Pi}function Xv(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Fv(){return navigator.maxTouchPoints||"ontouchstart"in this}function Wv(e,t,n){var r=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],i=e.invertY(t[0][1])-n[0][1],s=e.invertY(t[1][1])-n[1][1];return e.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),s>i?(i+s)/2:Math.min(0,i)||Math.max(0,s))}function gu(){var e=Yv,t=Zv,n=Wv,r=Xv,o=Fv,i=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=Nh,u=ui("start","zoom","end"),c,f,d,g=500,p=150,x=0,C=10;function $(S){S.property("__zoom",fu).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",D).on("dblclick.zoom",V).filter(o).on("touchstart.zoom",A).on("touchmove.zoom",O).on("touchend.zoom touchcancel.zoom",R).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}$.transform=function(S,M,k,P){var H=S.selection?S.selection():S;H.property("__zoom",fu),S!==H?b(S,M,k,P):H.interrupt().each(function(){N(this,arguments).event(P).start().zoom(null,typeof M=="function"?M.apply(this,arguments):M).end()})},$.scaleBy=function(S,M,k,P){$.scaleTo(S,function(){var H=this.__zoom.k,I=typeof M=="function"?M.apply(this,arguments):M;return H*I},k,P)},$.scaleTo=function(S,M,k,P){$.transform(S,function(){var H=t.apply(this,arguments),I=this.__zoom,B=k==null?v(H):typeof k=="function"?k.apply(this,arguments):k,F=I.invert(B),K=typeof M=="function"?M.apply(this,arguments):M;return n(_(m(I,K),B,F),H,s)},k,P)},$.translateBy=function(S,M,k,P){$.transform(S,function(){return n(this.__zoom.translate(typeof M=="function"?M.apply(this,arguments):M,typeof k=="function"?k.apply(this,arguments):k),t.apply(this,arguments),s)},null,P)},$.translateTo=function(S,M,k,P,H){$.transform(S,function(){var I=t.apply(this,arguments),B=this.__zoom,F=P==null?v(I):typeof P=="function"?P.apply(this,arguments):P;return n(Pi.translate(F[0],F[1]).scale(B.k).translate(typeof M=="function"?-M.apply(this,arguments):-M,typeof k=="function"?-k.apply(this,arguments):-k),I,s)},P,H)};function m(S,M){return M=Math.max(i[0],Math.min(i[1],M)),M===S.k?S:new In(M,S.x,S.y)}function _(S,M,k){var P=M[0]-k[0]*S.k,H=M[1]-k[1]*S.k;return P===S.x&&H===S.y?S:new In(S.k,P,H)}function v(S){return[(+S[0][0]+ +S[1][0])/2,(+S[0][1]+ +S[1][1])/2]}function b(S,M,k,P){S.on("start.zoom",function(){N(this,arguments).event(P).start()}).on("interrupt.zoom end.zoom",function(){N(this,arguments).event(P).end()}).tween("zoom",function(){var H=this,I=arguments,B=N(H,I).event(P),F=t.apply(H,I),K=k==null?v(F):typeof k=="function"?k.apply(H,I):k,se=Math.max(F[1][0]-F[0][0],F[1][1]-F[0][1]),ee=H.__zoom,W=typeof M=="function"?M.apply(H,I):M,fe=l(ee.invert(K).concat(se/ee.k),W.invert(K).concat(se/W.k));return function(me){if(me===1)me=W;else{var Ce=fe(me),he=se/Ce[2];me=new In(he,K[0]-Ce[0]*he,K[1]-Ce[1]*he)}B.zoom(null,me)}})}function N(S,M,k){return!k&&S.__zooming||new E(S,M)}function E(S,M){this.that=S,this.args=M,this.active=0,this.sourceEvent=null,this.extent=t.apply(S,M),this.taps=0}E.prototype={event:function(S){return S&&(this.sourceEvent=S),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(S,M){return this.mouse&&S!=="mouse"&&(this.mouse[1]=M.invert(this.mouse[0])),this.touch0&&S!=="touch"&&(this.touch0[1]=M.invert(this.touch0[0])),this.touch1&&S!=="touch"&&(this.touch1[1]=M.invert(this.touch1[0])),this.that.__zoom=M,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(S){var M=Ut(this.that).datum();u.call(S,this.that,new Bv(S,{sourceEvent:this.sourceEvent,target:$,transform:this.that.__zoom,dispatch:u}),M)}};function T(S,...M){if(!e.apply(this,arguments))return;var k=N(this,M).event(S),P=this.__zoom,H=Math.max(i[0],Math.min(i[1],P.k*Math.pow(2,r.apply(this,arguments)))),I=on(S);if(k.wheel)(k.mouse[0][0]!==I[0]||k.mouse[0][1]!==I[1])&&(k.mouse[1]=P.invert(k.mouse[0]=I)),clearTimeout(k.wheel);else{if(P.k===H)return;k.mouse=[I,P.invert(I)],Ei(this),k.start()}wo(S),k.wheel=setTimeout(B,p),k.zoom("mouse",n(_(m(P,H),k.mouse[0],k.mouse[1]),k.extent,s));function B(){k.wheel=null,k.end()}}function D(S,...M){if(d||!e.apply(this,arguments))return;var k=S.currentTarget,P=N(this,M,!0).event(S),H=Ut(S.view).on("mousemove.zoom",K,!0).on("mouseup.zoom",se,!0),I=on(S,k),B=S.clientX,F=S.clientY;Al(S.view),Fs(S),P.mouse=[I,this.__zoom.invert(I)],Ei(this),P.start();function K(ee){if(wo(ee),!P.moved){var W=ee.clientX-B,fe=ee.clientY-F;P.moved=W*W+fe*fe>x}P.event(ee).zoom("mouse",n(_(P.that.__zoom,P.mouse[0]=on(ee,k),P.mouse[1]),P.extent,s))}function se(ee){H.on("mousemove.zoom mouseup.zoom",null),Ll(ee.view,P.moved),wo(ee),P.event(ee).end()}}function V(S,...M){if(e.apply(this,arguments)){var k=this.__zoom,P=on(S.changedTouches?S.changedTouches[0]:S,this),H=k.invert(P),I=k.k*(S.shiftKey?.5:2),B=n(_(m(k,I),P,H),t.apply(this,M),s);wo(S),a>0?Ut(this).transition().duration(a).call(b,B,P,S):Ut(this).call($.transform,B,P,S)}}function A(S,...M){if(e.apply(this,arguments)){var k=S.touches,P=k.length,H=N(this,M,S.changedTouches.length===P).event(S),I,B,F,K;for(Fs(S),B=0;B"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,{id:t,sourceHandle:n,targetHandle:r})=>`Couldn't create edge for ${e} handle id: "${e==="source"?n:r}", edge id: ${t}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,error013:(e="react")=>`It seems that you haven't loaded the styles. Please import '@xyflow/${e}/dist/style.css' or base.css to make sure everything is working properly.`,error014:()=>"useNodeConnections: No node ID found. Call useNodeConnections inside a custom Node or provide a node ID.",error015:()=>"It seems that you are trying to drag a node that is not initialized. Please use onNodesChange as explained in the docs."},Ni=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]];var hr;(function(e){e.Strict="strict",e.Loose="loose"})(hr||(hr={}));var Jn;(function(e){e.Free="free",e.Vertical="vertical",e.Horizontal="horizontal"})(Jn||(Jn={}));var Ti;(function(e){e.Partial="partial",e.Full="full"})(Ti||(Ti={}));const Ws={inProgress:!1,isValid:null,from:null,fromHandle:null,fromPosition:null,fromNode:null,to:null,toHandle:null,toPosition:null,toNode:null};var Ar;(function(e){e.Bezier="default",e.Straight="straight",e.Step="step",e.SmoothStep="smoothstep",e.SimpleBezier="simplebezier"})(Ar||(Ar={}));var _o;(function(e){e.Arrow="arrow",e.ArrowClosed="arrowclosed"})(_o||(_o={}));var $e;(function(e){e.Left="left",e.Top="top",e.Right="right",e.Bottom="bottom"})($e||($e={}));const hu={[$e.Left]:$e.Right,[$e.Right]:$e.Left,[$e.Top]:$e.Bottom,[$e.Bottom]:$e.Top};function Kv(e,t){if(!e&&!t)return!0;if(!e||!t||e.size!==t.size)return!1;if(!e.size&&!t.size)return!0;for(const n of e.keys())if(!t.has(n))return!1;return!0}function vu(e,t,n){if(!n)return;const r=[];e.forEach((o,i)=>{t!=null&&t.has(i)||r.push(o)}),r.length&&n(r)}function qv(e){return e===null?null:e?"valid":"invalid"}const Gv=e=>"id"in e&&"source"in e&&"target"in e,Uv=e=>"id"in e&&"position"in e&&!("source"in e)&&!("target"in e),Ks=e=>"id"in e&&"internals"in e&&!("source"in e)&&!("target"in e),xo=(e,t=[0,0])=>{const{width:n,height:r}=Qn(e),o=e.origin??t,i=n*o[0],s=r*o[1];return{x:e.position.x-i,y:e.position.y-s}},jv=(e,t={nodeOrigin:[0,0],nodeLookup:void 0})=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,o)=>{const i=typeof o=="string";let s=!t.nodeLookup&&!i?o:void 0;t.nodeLookup&&(s=i?t.nodeLookup.get(o):Ks(o)?o:t.nodeLookup.get(o.id));const a=s?Vi(s,t.nodeOrigin):{x:0,y:0,x2:0,y2:0};return Mi(r,a)},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return Hi(n)},bo=(e,t={})=>{if(e.size===0)return{x:0,y:0,width:0,height:0};let n={x:1/0,y:1/0,x2:-1/0,y2:-1/0};return e.forEach(r=>{if(t.filter===void 0||t.filter(r)){const o=Vi(r);n=Mi(n,o)}}),Hi(n)},pu=(e,t,[n,r,o]=[0,0,1],i=!1,s=!1)=>{const a={...ko(t,[n,r,o]),width:t.width/o,height:t.height/o},l=[];for(const u of e.values()){const{measured:c,selectable:f=!0,hidden:d=!1}=u;if(s&&!f||d)continue;const g=c.width??u.width??u.initialWidth??null,p=c.height??u.height??u.initialHeight??null,x=Co(a,Or(u)),C=(g??0)*(p??0),$=i&&x>0;(!u.internals.handleBounds||$||x>=C||u.dragging)&&l.push(u)}return l},qs=(e,t)=>{const n=new Set;return e.forEach(r=>{n.add(r.id)}),t.filter(r=>n.has(r.source)||n.has(r.target))};function mu(e,t){const n=new Map,r=t!=null&&t.nodes?new Set(t.nodes.map(o=>o.id)):null;return e.forEach(o=>{o.measured.width&&o.measured.height&&((t==null?void 0:t.includeHiddenNodes)||!o.hidden)&&(!r||r.has(o.id))&&n.set(o.id,o)}),n}async function yu({nodes:e,width:t,height:n,panZoom:r,minZoom:o,maxZoom:i},s){if(e.size===0)return Promise.resolve(!1);const a=bo(e),l=js(a,t,n,(s==null?void 0:s.minZoom)??o,(s==null?void 0:s.maxZoom)??i,(s==null?void 0:s.padding)??.1);return await r.setViewport(l,{duration:s==null?void 0:s.duration}),Promise.resolve(!0)}function Jv({nodeId:e,nextPosition:t,nodeLookup:n,nodeOrigin:r=[0,0],nodeExtent:o,onError:i}){const s=n.get(e),a=s.parentId?n.get(s.parentId):void 0,{x:l,y:u}=a?a.internals.positionAbsolute:{x:0,y:0},c=s.origin??r;let f=o;if(s.extent==="parent"&&!s.expandParent)if(!a)i==null||i("005",Dr.error005());else{const g=a.measured.width,p=a.measured.height;g&&p&&(f=[[l,u],[l+g,u+p]])}else a&&Ir(s.extent)&&(f=[[s.extent[0][0]+l,s.extent[0][1]+u],[s.extent[1][0]+l,s.extent[1][1]+u]]);const d=Ir(f)?vr(t,f,s.measured):t;return(s.measured.width===void 0||s.measured.height===void 0)&&(i==null||i("015",Dr.error015())),{position:{x:d.x-l+(s.measured.width??0)*c[0],y:d.y-u+(s.measured.height??0)*c[1]},positionAbsolute:d}}async function wu({nodesToRemove:e=[],edgesToRemove:t=[],nodes:n,edges:r,onBeforeDelete:o}){const i=new Set(e.map(d=>d.id)),s=[];for(const d of n){if(d.deletable===!1)continue;const g=i.has(d.id),p=!g&&d.parentId&&s.find(x=>x.id===d.parentId);(g||p)&&s.push(d)}const a=new Set(t.map(d=>d.id)),l=r.filter(d=>d.deletable!==!1),c=qs(s,l);for(const d of l)a.has(d.id)&&!c.find(p=>p.id===d.id)&&c.push(d);if(!o)return{edges:c,nodes:s};const f=await o({nodes:s,edges:c});return typeof f=="boolean"?f?{edges:c,nodes:s}:{edges:[],nodes:[]}:f}const Lr=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),vr=(e={x:0,y:0},t,n)=>({x:Lr(e.x,t[0][0],t[1][0]-((n==null?void 0:n.width)??0)),y:Lr(e.y,t[0][1],t[1][1]-((n==null?void 0:n.height)??0))});function _u(e,t,n){const{width:r,height:o}=Qn(n),{x:i,y:s}=n.internals.positionAbsolute;return vr(e,[[i,s],[i+r,s+o]],t)}const xu=(e,t,n)=>en?-Lr(Math.abs(e-n),1,t)/t:0,bu=(e,t,n=15,r=40)=>{const o=xu(e.x,r,t.width-r)*n,i=xu(e.y,r,t.height-r)*n;return[o,i]},Mi=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),Gs=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),Hi=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),Or=(e,t=[0,0])=>{var o,i;const{x:n,y:r}=Ks(e)?e.internals.positionAbsolute:xo(e,t);return{x:n,y:r,width:((o=e.measured)==null?void 0:o.width)??e.width??e.initialWidth??0,height:((i=e.measured)==null?void 0:i.height)??e.height??e.initialHeight??0}},Vi=(e,t=[0,0])=>{var o,i;const{x:n,y:r}=Ks(e)?e.internals.positionAbsolute:xo(e,t);return{x:n,y:r,x2:n+(((o=e.measured)==null?void 0:o.width)??e.width??e.initialWidth??0),y2:r+(((i=e.measured)==null?void 0:i.height)??e.height??e.initialHeight??0)}},Cu=(e,t)=>Hi(Mi(Gs(e),Gs(t))),Co=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},ku=e=>zn(e.width)&&zn(e.height)&&zn(e.x)&&zn(e.y),zn=e=>!isNaN(e)&&isFinite(e),Qv=(e,t)=>{},Us=(e,t=[1,1])=>({x:t[0]*Math.round(e.x/t[0]),y:t[1]*Math.round(e.y/t[1])}),ko=({x:e,y:t},[n,r,o],i=!1,s=[1,1])=>{const a={x:(e-n)/o,y:(t-r)/o};return i?Us(a,s):a},$u=({x:e,y:t},[n,r,o])=>({x:e*o+n,y:t*o+r}),js=(e,t,n,r,o,i)=>{const s=t/(e.width*(1+i)),a=n/(e.height*(1+i)),l=Math.min(s,a),u=Lr(l,r,o),c=e.x+e.width/2,f=e.y+e.height/2,d=t/2-c*u,g=n/2-f*u;return{x:d,y:g,zoom:u}},Di=()=>{var e;return typeof navigator<"u"&&((e=navigator==null?void 0:navigator.userAgent)==null?void 0:e.indexOf("Mac"))>=0};function Ir(e){return e!==void 0&&e!=="parent"}function Qn(e){var t,n;return{width:((t=e.measured)==null?void 0:t.width)??e.width??e.initialWidth??0,height:((n=e.measured)==null?void 0:n.height)??e.height??e.initialHeight??0}}function Eu(e){var t,n;return(((t=e.measured)==null?void 0:t.width)??e.width??e.initialWidth)!==void 0&&(((n=e.measured)==null?void 0:n.height)??e.height??e.initialHeight)!==void 0}function e0(e,t={width:0,height:0},n,r,o){const i={...e},s=r.get(n);if(s){const a=s.origin||o;i.x+=s.internals.positionAbsolute.x-(t.width??0)*a[0],i.y+=s.internals.positionAbsolute.y-(t.height??0)*a[1]}return i}function Js(e,{snapGrid:t=[0,0],snapToGrid:n=!1,transform:r,containerBounds:o}){const{x:i,y:s}=Rn(e),a=ko({x:i-((o==null?void 0:o.left)??0),y:s-((o==null?void 0:o.top)??0)},r),{x:l,y:u}=n?Us(a,t):a;return{xSnapped:l,ySnapped:u,...a}}const Qs=e=>({width:e.offsetWidth,height:e.offsetHeight}),t0=e=>{var t;return((t=e==null?void 0:e.getRootNode)==null?void 0:t.call(e))||(window==null?void 0:window.document)},n0=["INPUT","SELECT","TEXTAREA"];function r0(e){var r,o;const t=((o=(r=e.composedPath)==null?void 0:r.call(e))==null?void 0:o[0])||e.target;return(t==null?void 0:t.nodeType)!==1?!1:n0.includes(t.nodeName)||t.hasAttribute("contenteditable")||!!t.closest(".nokey")}const Su=e=>"clientX"in e,Rn=(e,t)=>{var i,s;const n=Su(e),r=n?e.clientX:(i=e.touches)==null?void 0:i[0].clientX,o=n?e.clientY:(s=e.touches)==null?void 0:s[0].clientY;return{x:r-((t==null?void 0:t.left)??0),y:o-((t==null?void 0:t.top)??0)}},Pu=(e,t,n,r,o)=>{const i=t.querySelectorAll(`.${e}`);return!i||!i.length?null:Array.from(i).map(s=>{const a=s.getBoundingClientRect();return{id:s.getAttribute("data-handleid"),type:e,nodeId:o,position:s.getAttribute("data-handlepos"),x:(a.left-n.left)/r,y:(a.top-n.top)/r,...Qs(s)}})};function o0({sourceX:e,sourceY:t,targetX:n,targetY:r,sourceControlX:o,sourceControlY:i,targetControlX:s,targetControlY:a}){const l=e*.125+o*.375+s*.375+n*.125,u=t*.125+i*.375+a*.375+r*.125,c=Math.abs(l-e),f=Math.abs(u-t);return[l,u,c,f]}function Ai(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function Nu({pos:e,x1:t,y1:n,x2:r,y2:o,c:i}){switch(e){case $e.Left:return[t-Ai(t-r,i),n];case $e.Right:return[t+Ai(r-t,i),n];case $e.Top:return[t,n-Ai(n-o,i)];case $e.Bottom:return[t,n+Ai(o-n,i)]}}function Tu({sourceX:e,sourceY:t,sourcePosition:n=$e.Bottom,targetX:r,targetY:o,targetPosition:i=$e.Top,curvature:s=.25}){const[a,l]=Nu({pos:n,x1:e,y1:t,x2:r,y2:o,c:s}),[u,c]=Nu({pos:i,x1:r,y1:o,x2:e,y2:t,c:s}),[f,d,g,p]=o0({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:a,sourceControlY:l,targetControlX:u,targetControlY:c});return[`M${e},${t} C${a},${l} ${u},${c} ${r},${o}`,f,d,g,p]}function Mu({sourceX:e,sourceY:t,targetX:n,targetY:r}){const o=Math.abs(n-e)/2,i=n0}const a0=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`xy-edge__${e}${t||""}-${n}${r||""}`,l0=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),u0=(e,t)=>{if(!e.source||!e.target)return t;let n;return Gv(e)?n={...e}:n={...e,id:a0(e)},l0(n,t)?t:(n.sourceHandle===null&&delete n.sourceHandle,n.targetHandle===null&&delete n.targetHandle,t.concat(n))};function ea({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[o,i,s,a]=Mu({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,o,i,s,a]}const Hu={[$e.Left]:{x:-1,y:0},[$e.Right]:{x:1,y:0},[$e.Top]:{x:0,y:-1},[$e.Bottom]:{x:0,y:1}},c0=({source:e,sourcePosition:t=$e.Bottom,target:n})=>t===$e.Left||t===$e.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function d0({source:e,sourcePosition:t=$e.Bottom,target:n,targetPosition:r=$e.Top,center:o,offset:i}){const s=Hu[t],a=Hu[r],l={x:e.x+s.x*i,y:e.y+s.y*i},u={x:n.x+a.x*i,y:n.y+a.y*i},c=c0({source:l,sourcePosition:t,target:u}),f=c.x!==0?"x":"y",d=c[f];let g=[],p,x;const C={x:0,y:0},$={x:0,y:0},[m,_,v,b]=Mu({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[f]*a[f]===-1){p=o.x??m,x=o.y??_;const E=[{x:p,y:l.y},{x:p,y:u.y}],T=[{x:l.x,y:x},{x:u.x,y:x}];s[f]===d?g=f==="x"?E:T:g=f==="x"?T:E}else{const E=[{x:l.x,y:u.y}],T=[{x:u.x,y:l.y}];if(f==="x"?g=s.x===d?T:E:g=s.y===d?E:T,t===r){const R=Math.abs(e[f]-n[f]);if(R<=i){const S=Math.min(i-1,i-R);s[f]===d?C[f]=(l[f]>e[f]?-1:1)*S:$[f]=(u[f]>n[f]?-1:1)*S}}if(t!==r){const R=f==="x"?"y":"x",S=s[f]===a[R],M=l[R]>u[R],k=l[R]=O?(p=(D.x+V.x)/2,x=g[0].y):(p=g[0].x,x=(D.y+V.y)/2)}return[[e,{x:l.x+C.x,y:l.y+C.y},...g,{x:u.x+$.x,y:u.y+$.y},n],p,x,v,b]}function f0(e,t,n,r){const o=Math.min(Vu(e,t)/2,Vu(t,n)/2,r),{x:i,y:s}=t;if(e.x===i&&i===n.x||e.y===s&&s===n.y)return`L${i} ${s}`;if(e.y===s){const u=e.x{let _="";return m>0&&mn.id===t):e[0])||null}function ta(e,t){return e?typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`:""}function h0(e,{id:t,defaultColor:n,defaultMarkerStart:r,defaultMarkerEnd:o}){const i=new Set;return e.reduce((s,a)=>([a.markerStart||r,a.markerEnd||o].forEach(l=>{if(l&&typeof l=="object"){const u=ta(l,t);i.has(u)||(s.push({id:u,color:l.color||n,...l}),i.add(u))}}),s),[]).sort((s,a)=>s.id.localeCompare(a.id))}function v0(e,t,n,r,o){let i=.5;o==="start"?i=0:o==="end"&&(i=1);let s=[(e.x+e.width*i)*t.zoom+t.x,e.y*t.zoom+t.y-r],a=[-100*i,-100];switch(n){case $e.Right:s=[(e.x+e.width)*t.zoom+t.x+r,(e.y+e.height*i)*t.zoom+t.y],a=[0,-100*i];break;case $e.Bottom:s[1]=(e.y+e.height)*t.zoom+t.y+r,a[1]=0;break;case $e.Left:s=[e.x*t.zoom+t.x-r,(e.y+e.height*i)*t.zoom+t.y],a=[-100,-100*i];break}return`translate(${s[0]}px, ${s[1]}px) translate(${a[0]}%, ${a[1]}%)`}const na={nodeOrigin:[0,0],nodeExtent:Ni,elevateNodesOnSelect:!0,defaults:{}},p0={...na,checkEquality:!0};function ra(e,t){const n={...e};for(const r in t)t[r]!==void 0&&(n[r]=t[r]);return n}function m0(e,t,n){const r=ra(na,n);for(const o of e.values())if(o.parentId)oa(o,e,t,r);else{const i=xo(o,r.nodeOrigin),s=Ir(o.extent)?o.extent:r.nodeExtent,a=vr(i,s,Qn(o));o.internals.positionAbsolute=a}}function Ou(e,t,n,r){var a,l;const o=ra(p0,r),i=new Map(t),s=o!=null&&o.elevateNodesOnSelect?1e3:0;t.clear(),n.clear();for(const u of e){let c=i.get(u.id);if(o.checkEquality&&u===(c==null?void 0:c.internals.userNode))t.set(u.id,c);else{const f=xo(u,o.nodeOrigin),d=Ir(u.extent)?u.extent:o.nodeExtent,g=vr(f,d,Qn(u));c={...o.defaults,...u,measured:{width:(a=u.measured)==null?void 0:a.width,height:(l=u.measured)==null?void 0:l.height},internals:{positionAbsolute:g,handleBounds:u.measured?c==null?void 0:c.internals.handleBounds:void 0,z:Iu(u,s),userNode:u}},t.set(u.id,c)}u.parentId&&oa(c,t,n,r)}}function y0(e,t){if(!e.parentId)return;const n=t.get(e.parentId);n?n.set(e.id,e):t.set(e.parentId,new Map([[e.id,e]]))}function oa(e,t,n,r){const{elevateNodesOnSelect:o,nodeOrigin:i,nodeExtent:s}=ra(na,r),a=e.parentId,l=t.get(a);if(!l){console.warn(`Parent node ${a} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);return}y0(e,n);const u=o?1e3:0,{x:c,y:f,z:d}=w0(e,l,i,s,u),{positionAbsolute:g}=e.internals,p=c!==g.x||f!==g.y;(p||d!==e.internals.z)&&t.set(e.id,{...e,internals:{...e.internals,positionAbsolute:p?{x:c,y:f}:g,z:d}})}function Iu(e,t){return(zn(e.zIndex)?e.zIndex:0)+(e.selected?t:0)}function w0(e,t,n,r,o){const{x:i,y:s}=t.internals.positionAbsolute,a=Qn(e),l=xo(e,n),u=Ir(e.extent)?vr(l,e.extent,a):l;let c=vr({x:i+u.x,y:s+u.y},r,a);e.extent==="parent"&&(c=_u(c,a,t));const f=Iu(e,o),d=t.internals.z??0;return{x:c.x,y:c.y,z:d>f?d:f}}function _0(e,t,n,r=[0,0]){var s;const o=[],i=new Map;for(const a of e){const l=t.get(a.parentId);if(!l)continue;const u=((s=i.get(a.parentId))==null?void 0:s.expandedRect)??Or(l),c=Cu(u,a.rect);i.set(a.parentId,{expandedRect:c,parent:l})}return i.size>0&&i.forEach(({expandedRect:a,parent:l},u)=>{var _;const c=l.internals.positionAbsolute,f=Qn(l),d=l.origin??r,g=a.x0||p>0||$||m)&&(o.push({id:u,type:"position",position:{x:l.position.x-g+$,y:l.position.y-p+m}}),(_=n.get(u))==null||_.forEach(v=>{e.some(b=>b.id===v.id)||o.push({id:v.id,type:"position",position:{x:v.position.x+g,y:v.position.y+p}})})),(f.width0){const d=_0(f,t,n,o);l.push(...d)}return{changes:l,updatedInternals:a}}async function b0({delta:e,panZoom:t,transform:n,translateExtent:r,width:o,height:i}){if(!t||!e.x&&!e.y)return Promise.resolve(!1);const s=await t.setViewportConstrained({x:n[0]+e.x,y:n[1]+e.y,zoom:n[2]},[[0,0],[o,i]],r),a=!!s&&(s.x!==n[0]||s.y!==n[1]||s.k!==n[2]);return Promise.resolve(a)}function zu(e,t,n,r,o,i){let s=o;const a=r.get(s)||new Map;r.set(s,a.set(n,t)),s=`${o}-${e}`;const l=r.get(s)||new Map;if(r.set(s,l.set(n,t)),i){s=`${o}-${e}-${i}`;const u=r.get(s)||new Map;r.set(s,u.set(n,t))}}function Ru(e,t,n){e.clear(),t.clear();for(const r of n){const{source:o,target:i,sourceHandle:s=null,targetHandle:a=null}=r,l={edgeId:r.id,source:o,target:i,sourceHandle:s,targetHandle:a},u=`${o}-${s}--${i}-${a}`,c=`${i}-${a}--${o}-${s}`;zu("source",l,c,e,o,s),zu("target",l,u,e,i,a),t.set(r.id,r)}}function C0(e,t){if(e===null||t===null)return!1;const n=Array.isArray(e)?e:[e],r=Array.isArray(t)?t:[t];if(n.length!==r.length)return!1;for(let o=0;o"u")){const a=e.get(i);a&&o.set(i,{id:i,position:a.position||{x:0,y:0},distance:{x:n.x-a.internals.positionAbsolute.x,y:n.y-a.internals.positionAbsolute.y},extent:a.extent,parentId:a.parentId,origin:a.origin,expandParent:a.expandParent,internals:{positionAbsolute:a.internals.positionAbsolute||{x:0,y:0}},measured:{width:a.measured.width??0,height:a.measured.height??0}})}return o}function ia({nodeId:e,dragItems:t,nodeLookup:n,dragging:r=!0}){var s,a,l;const o=[];for(const[u,c]of t){const f=(s=n.get(u))==null?void 0:s.internals.userNode;f&&o.push({...f,position:c.position,dragging:r})}if(!e)return[o[0],o];const i=(a=n.get(e))==null?void 0:a.internals.userNode;return[i?{...i,position:((l=t.get(e))==null?void 0:l.position)||i.position,dragging:r}:o[0],o]}function $0({onNodeMouseDown:e,getStoreItems:t,onDragStart:n,onDrag:r,onDragStop:o}){let i={x:null,y:null},s=0,a=new Map,l=!1,u={x:0,y:0},c=null,f=!1,d=null,g=!1;function p({noDragClassName:C,handleSelector:$,domNode:m,isSelectable:_,nodeId:v,nodeClickDistance:b=0}){d=Ut(m);function N({x:V,y:A},O){const{nodeLookup:R,nodeExtent:S,snapGrid:M,snapToGrid:k,nodeOrigin:P,onNodeDrag:H,onSelectionDrag:I,onError:B,updateNodePositions:F}=t();i={x:V,y:A};let K=!1,se={x:0,y:0,x2:0,y2:0};if(a.size>1&&S){const ee=bo(a);se=Gs(ee)}for(const[ee,W]of a){if(!R.has(ee))continue;let fe={x:V-W.distance.x,y:A-W.distance.y};k&&(fe=Us(fe,M));let me=[[S[0][0],S[0][1]],[S[1][0],S[1][1]]];if(a.size>1&&S&&!W.extent){const{positionAbsolute:ze}=W.internals,G=ze.x-se.x+S[0][0],ae=ze.x+W.measured.width-se.x2+S[1][0],Me=ze.y-se.y+S[0][1],Le=ze.y+W.measured.height-se.y2+S[1][1];me=[[G,Me],[ae,Le]]}const{position:Ce,positionAbsolute:he}=Jv({nodeId:ee,nextPosition:fe,nodeLookup:R,nodeExtent:me,nodeOrigin:P,onError:B});K=K||W.position.x!==Ce.x||W.position.y!==Ce.y,W.position=Ce,W.internals.positionAbsolute=he}if(K&&(F(a,!0),O&&(r||H||!v&&I))){const[ee,W]=ia({nodeId:v,dragItems:a,nodeLookup:R});r==null||r(O,a,ee,W),H==null||H(O,ee,W),v||I==null||I(O,W)}}async function E(){if(!c)return;const{transform:V,panBy:A,autoPanSpeed:O,autoPanOnNodeDrag:R}=t();if(!R){l=!1,cancelAnimationFrame(s);return}const[S,M]=bu(u,c,O);(S!==0||M!==0)&&(i.x=(i.x??0)-S/V[2],i.y=(i.y??0)-M/V[2],await A({x:S,y:M})&&N(i,null)),s=requestAnimationFrame(E)}function T(V){var K;const{nodeLookup:A,multiSelectionActive:O,nodesDraggable:R,transform:S,snapGrid:M,snapToGrid:k,selectNodesOnDrag:P,onNodeDragStart:H,onSelectionDragStart:I,unselectNodesAndEdges:B}=t();f=!0,(!P||!_)&&!O&&v&&((K=A.get(v))!=null&&K.selected||B()),_&&P&&v&&(e==null||e(v));const F=Js(V.sourceEvent,{transform:S,snapGrid:M,snapToGrid:k,containerBounds:c});if(i=F,a=k0(A,R,F,v),a.size>0&&(n||H||!v&&I)){const[se,ee]=ia({nodeId:v,dragItems:a,nodeLookup:A});n==null||n(V.sourceEvent,a,se,ee),H==null||H(V.sourceEvent,se,ee),v||I==null||I(V.sourceEvent,ee)}}const D=rh().clickDistance(b).on("start",V=>{const{domNode:A,nodeDragThreshold:O,transform:R,snapGrid:S,snapToGrid:M}=t();c=(A==null?void 0:A.getBoundingClientRect())||null,g=!1,O===0&&T(V),i=Js(V.sourceEvent,{transform:R,snapGrid:S,snapToGrid:M,containerBounds:c}),u=Rn(V.sourceEvent,c)}).on("drag",V=>{const{autoPanOnNodeDrag:A,transform:O,snapGrid:R,snapToGrid:S,nodeDragThreshold:M,nodeLookup:k}=t(),P=Js(V.sourceEvent,{transform:O,snapGrid:R,snapToGrid:S,containerBounds:c});if((V.sourceEvent.type==="touchmove"&&V.sourceEvent.touches.length>1||v&&!k.has(v))&&(g=!0),!g){if(!l&&A&&f&&(l=!0,E()),!f){const H=P.xSnapped-(i.x??0),I=P.ySnapped-(i.y??0);Math.sqrt(H*H+I*I)>M&&T(V)}(i.x!==P.xSnapped||i.y!==P.ySnapped)&&a&&f&&(u=Rn(V.sourceEvent,c),N(P,V.sourceEvent))}}).on("end",V=>{if(!(!f||g)&&(l=!1,f=!1,cancelAnimationFrame(s),a.size>0)){const{nodeLookup:A,updateNodePositions:O,onNodeDragStop:R,onSelectionDragStop:S}=t();if(O(a,!1),o||R||!v&&S){const[M,k]=ia({nodeId:v,dragItems:a,nodeLookup:A,dragging:!1});o==null||o(V.sourceEvent,a,M,k),R==null||R(V.sourceEvent,M,k),v||S==null||S(V.sourceEvent,k)}}}).filter(V=>{const A=V.target;return!V.button&&(!C||!Yu(A,`.${C}`,m))&&(!$||Yu(A,$,m))});d.call(D)}function x(){d==null||d.on(".drag",null)}return{update:p,destroy:x}}function E0(e,t,n){const r=[],o={x:e.x-n,y:e.y-n,width:n*2,height:n*2};for(const i of t.values())Co(o,Or(i))>0&&r.push(i);return r}const S0=250;function P0(e,t,n,r){var a,l;let o=[],i=1/0;const s=E0(e,n,t+S0);for(const u of s){const c=[...((a=u.internals.handleBounds)==null?void 0:a.source)??[],...((l=u.internals.handleBounds)==null?void 0:l.target)??[]];for(const f of c){if(r.nodeId===f.nodeId&&r.type===f.type&&r.id===f.id)continue;const{x:d,y:g}=$o(u,f,f.position,!0),p=Math.sqrt(Math.pow(d-e.x,2)+Math.pow(g-e.y,2));p>t||(p1){const u=r.type==="source"?"target":"source";return o.find(c=>c.type===u)??o[0]}return o[0]}function Zu(e,t,n,r,o,i=!1){var u,c,f;const s=r.get(e);if(!s)return null;const a=o==="strict"?(u=s.internals.handleBounds)==null?void 0:u[t]:[...((c=s.internals.handleBounds)==null?void 0:c.source)??[],...((f=s.internals.handleBounds)==null?void 0:f.target)??[]],l=(n?a==null?void 0:a.find(d=>d.id===n):a==null?void 0:a[0])??null;return l&&i?{...l,...$o(s,l,l.position,!0)}:l}function Xu(e,t){return e||(t!=null&&t.classList.contains("target")?"target":t!=null&&t.classList.contains("source")?"source":null)}function N0(e,t){let n=null;return t?n=!0:e&&!t&&(n=!1),n}const Fu=()=>!0;function T0(e,{connectionMode:t,connectionRadius:n,handleId:r,nodeId:o,edgeUpdaterType:i,isTarget:s,domNode:a,nodeLookup:l,lib:u,autoPanOnConnect:c,flowId:f,panBy:d,cancelConnection:g,onConnectStart:p,onConnect:x,onConnectEnd:C,isValidConnection:$=Fu,onReconnectEnd:m,updateConnection:_,getTransform:v,getFromHandle:b,autoPanSpeed:N}){const E=t0(e.target);let T=0,D;const{x:V,y:A}=Rn(e),O=E==null?void 0:E.elementFromPoint(V,A),R=Xu(i,O),S=a==null?void 0:a.getBoundingClientRect();if(!S||!R)return;const M=Zu(o,R,r,l,t);if(!M)return;let k=Rn(e,S),P=!1,H=null,I=!1,B=null;function F(){if(!c||!S)return;const[he,ze]=bu(k,S,N);d({x:he,y:ze}),T=requestAnimationFrame(F)}const K={...M,nodeId:o,type:R,position:M.position},se=l.get(o),W={inProgress:!0,isValid:null,from:$o(se,K,$e.Left,!0),fromHandle:K,fromPosition:K.position,fromNode:se,to:k,toHandle:null,toPosition:hu[K.position],toNode:null};_(W);let fe=W;p==null||p(e,{nodeId:o,handleId:r,handleType:R});function me(he){if(!b()||!K){Ce(he);return}const ze=v();k=Rn(he,S),D=P0(ko(k,ze,!1,[1,1]),n,l,K),P||(F(),P=!0);const G=Wu(he,{handle:D,connectionMode:t,fromNodeId:o,fromHandleId:r,fromType:s?"target":"source",isValidConnection:$,doc:E,lib:u,flowId:f,nodeLookup:l});B=G.handleDomNode,H=G.connection,I=N0(!!D,G.isValid);const ae={...fe,isValid:I,to:D&&I?$u({x:D.x,y:D.y},ze):k,toHandle:G.toHandle,toPosition:I&&G.toHandle?G.toHandle.position:hu[K.position],toNode:G.toHandle?l.get(G.toHandle.nodeId):null};I&&D&&fe.toHandle&&ae.toHandle&&fe.toHandle.type===ae.toHandle.type&&fe.toHandle.nodeId===ae.toHandle.nodeId&&fe.toHandle.id===ae.toHandle.id&&fe.to.x===ae.to.x&&fe.to.y===ae.to.y||(_(ae),fe=ae)}function Ce(he){(D||B)&&H&&I&&(x==null||x(H));const{inProgress:ze,...G}=fe,ae={...G,toPosition:fe.toHandle?fe.toPosition:null};C==null||C(he,ae),i&&(m==null||m(he,ae)),g(),cancelAnimationFrame(T),P=!1,I=!1,H=null,B=null,E.removeEventListener("mousemove",me),E.removeEventListener("mouseup",Ce),E.removeEventListener("touchmove",me),E.removeEventListener("touchend",Ce)}E.addEventListener("mousemove",me),E.addEventListener("mouseup",Ce),E.addEventListener("touchmove",me),E.addEventListener("touchend",Ce)}function Wu(e,{handle:t,connectionMode:n,fromNodeId:r,fromHandleId:o,fromType:i,doc:s,lib:a,flowId:l,isValidConnection:u=Fu,nodeLookup:c}){const f=i==="target",d=t?s.querySelector(`.${a}-flow__handle[data-id="${l}-${t==null?void 0:t.nodeId}-${t==null?void 0:t.id}-${t==null?void 0:t.type}"]`):null,{x:g,y:p}=Rn(e),x=s.elementFromPoint(g,p),C=x!=null&&x.classList.contains(`${a}-flow__handle`)?x:d,$={handleDomNode:C,isValid:!1,connection:null,toHandle:null};if(C){const m=Xu(void 0,C),_=C.getAttribute("data-nodeid"),v=C.getAttribute("data-handleid"),b=C.classList.contains("connectable"),N=C.classList.contains("connectableend");if(!_||!m)return $;const E={source:f?_:r,sourceHandle:f?v:o,target:f?r:_,targetHandle:f?o:v};$.connection=E;const D=b&&N&&(n===hr.Strict?f&&m==="source"||!f&&m==="target":_!==r||v!==o);$.isValid=D&&u(E),$.toHandle=Zu(_,m,v,c,n,!1)}return $}const M0={onPointerDown:T0,isValid:Wu};function H0({domNode:e,panZoom:t,getTransform:n,getViewScale:r}){const o=Ut(e);function i({translateExtent:a,width:l,height:u,zoomStep:c=10,pannable:f=!0,zoomable:d=!0,inversePan:g=!1}){const p=_=>{const v=n();if(_.sourceEvent.type!=="wheel"||!t)return;const b=-_.sourceEvent.deltaY*(_.sourceEvent.deltaMode===1?.05:_.sourceEvent.deltaMode?1:.002)*c,N=v[2]*Math.pow(2,b);t.scaleTo(N)};let x=[0,0];const C=_=>{(_.sourceEvent.type==="mousedown"||_.sourceEvent.type==="touchstart")&&(x=[_.sourceEvent.clientX??_.sourceEvent.touches[0].clientX,_.sourceEvent.clientY??_.sourceEvent.touches[0].clientY])},$=_=>{const v=n();if(_.sourceEvent.type!=="mousemove"&&_.sourceEvent.type!=="touchmove"||!t)return;const b=[_.sourceEvent.clientX??_.sourceEvent.touches[0].clientX,_.sourceEvent.clientY??_.sourceEvent.touches[0].clientY],N=[b[0]-x[0],b[1]-x[1]];x=b;const E=r()*Math.max(v[2],Math.log(v[2]))*(g?-1:1),T={x:v[0]-N[0]*E,y:v[1]-N[1]*E},D=[[0,0],[l,u]];t.setViewportConstrained({x:T.x,y:T.y,zoom:v[2]},D,a)},m=gu().on("start",C).on("zoom",f?$:null).on("zoom.wheel",d?p:null);o.call(m,{})}function s(){o.on("zoom",null)}return{update:i,destroy:s,pointer:on}}const V0=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,Oi=e=>({x:e.x,y:e.y,zoom:e.k}),sa=({x:e,y:t,zoom:n})=>Pi.translate(e,t).scale(n),zr=(e,t)=>e.target.closest(`.${t}`),Ku=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),aa=(e,t=0,n=()=>{})=>{const r=typeof t=="number"&&t>0;return r||n(),r?e.transition().duration(t).on("end",n):e},qu=e=>{const t=e.ctrlKey&&Di()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t};function D0({zoomPanValues:e,noWheelClassName:t,d3Selection:n,d3Zoom:r,panOnScrollMode:o,panOnScrollSpeed:i,zoomOnPinch:s,onPanZoomStart:a,onPanZoom:l,onPanZoomEnd:u}){return c=>{if(zr(c,t))return!1;c.preventDefault(),c.stopImmediatePropagation();const f=n.property("__zoom").k||1;if(c.ctrlKey&&s){const C=on(c),$=qu(c),m=f*Math.pow(2,$);r.scaleTo(n,m,C,c);return}const d=c.deltaMode===1?20:1;let g=o===Jn.Vertical?0:c.deltaX*d,p=o===Jn.Horizontal?0:c.deltaY*d;!Di()&&c.shiftKey&&o!==Jn.Vertical&&(g=c.deltaY*d,p=0),r.translateBy(n,-(g/f)*i,-(p/f)*i,{internal:!0});const x=Oi(n.property("__zoom"));clearTimeout(e.panScrollTimeout),e.isPanScrolling||(e.isPanScrolling=!0,a==null||a(c,x)),e.isPanScrolling&&(l==null||l(c,x),e.panScrollTimeout=setTimeout(()=>{u==null||u(c,x),e.isPanScrolling=!1},150))}}function A0({noWheelClassName:e,preventScrolling:t,d3ZoomHandler:n}){return function(r,o){if(!t&&r.type==="wheel"&&!r.ctrlKey||zr(r,e))return null;r.preventDefault(),n.call(this,r,o)}}function L0({zoomPanValues:e,onDraggingChange:t,onPanZoomStart:n}){return r=>{var i,s,a;if((i=r.sourceEvent)!=null&&i.internal)return;const o=Oi(r.transform);e.mouseButton=((s=r.sourceEvent)==null?void 0:s.button)||0,e.isZoomingOrPanning=!0,e.prevViewport=o,((a=r.sourceEvent)==null?void 0:a.type)==="mousedown"&&t(!0),n&&(n==null||n(r.sourceEvent,o))}}function O0({zoomPanValues:e,panOnDrag:t,onPaneContextMenu:n,onTransformChange:r,onPanZoom:o}){return i=>{var s,a;e.usedRightMouseButton=!!(n&&Ku(t,e.mouseButton??0)),(s=i.sourceEvent)!=null&&s.sync||r([i.transform.x,i.transform.y,i.transform.k]),o&&!((a=i.sourceEvent)!=null&&a.internal)&&(o==null||o(i.sourceEvent,Oi(i.transform)))}}function I0({zoomPanValues:e,panOnDrag:t,panOnScroll:n,onDraggingChange:r,onPanZoomEnd:o,onPaneContextMenu:i}){return s=>{var a;if(!((a=s.sourceEvent)!=null&&a.internal)&&(e.isZoomingOrPanning=!1,i&&Ku(t,e.mouseButton??0)&&!e.usedRightMouseButton&&s.sourceEvent&&i(s.sourceEvent),e.usedRightMouseButton=!1,r(!1),o&&V0(e.prevViewport,s.transform))){const l=Oi(s.transform);e.prevViewport=l,clearTimeout(e.timerId),e.timerId=setTimeout(()=>{o==null||o(s.sourceEvent,l)},n?150:0)}}}function z0({zoomActivationKeyPressed:e,zoomOnScroll:t,zoomOnPinch:n,panOnDrag:r,panOnScroll:o,zoomOnDoubleClick:i,userSelectionActive:s,noWheelClassName:a,noPanClassName:l,lib:u}){return c=>{var p;const f=e||t,d=n&&c.ctrlKey;if(c.button===1&&c.type==="mousedown"&&(zr(c,`${u}-flow__node`)||zr(c,`${u}-flow__edge`)))return!0;if(!r&&!f&&!o&&!i&&!n||s||zr(c,a)&&c.type==="wheel"||zr(c,l)&&(c.type!=="wheel"||o&&c.type==="wheel"&&!e)||!n&&c.ctrlKey&&c.type==="wheel")return!1;if(!n&&c.type==="touchstart"&&((p=c.touches)==null?void 0:p.length)>1)return c.preventDefault(),!1;if(!f&&!o&&!d&&c.type==="wheel"||!r&&(c.type==="mousedown"||c.type==="touchstart")||Array.isArray(r)&&!r.includes(c.button)&&c.type==="mousedown")return!1;const g=Array.isArray(r)&&r.includes(c.button)||!c.button||c.button<=1;return(!c.ctrlKey||c.type==="wheel")&&g}}function R0({domNode:e,minZoom:t,maxZoom:n,paneClickDistance:r,translateExtent:o,viewport:i,onPanZoom:s,onPanZoomStart:a,onPanZoomEnd:l,onDraggingChange:u}){const c={isZoomingOrPanning:!1,usedRightMouseButton:!1,prevViewport:{x:0,y:0,zoom:0},mouseButton:0,timerId:void 0,panScrollTimeout:void 0,isPanScrolling:!1},f=e.getBoundingClientRect(),d=gu().clickDistance(!zn(r)||r<0?0:r).scaleExtent([t,n]).translateExtent(o),g=Ut(e).call(d);_({x:i.x,y:i.y,zoom:Lr(i.zoom,t,n)},[[0,0],[f.width,f.height]],o);const p=g.on("wheel.zoom"),x=g.on("dblclick.zoom");d.wheelDelta(qu);function C(O,R){return g?new Promise(S=>{d==null||d.transform(aa(g,R==null?void 0:R.duration,()=>S(!0)),O)}):Promise.resolve(!1)}function $({noWheelClassName:O,noPanClassName:R,onPaneContextMenu:S,userSelectionActive:M,panOnScroll:k,panOnDrag:P,panOnScrollMode:H,panOnScrollSpeed:I,preventScrolling:B,zoomOnPinch:F,zoomOnScroll:K,zoomOnDoubleClick:se,zoomActivationKeyPressed:ee,lib:W,onTransformChange:fe}){M&&!c.isZoomingOrPanning&&m();const Ce=k&&!ee&&!M?D0({zoomPanValues:c,noWheelClassName:O,d3Selection:g,d3Zoom:d,panOnScrollMode:H,panOnScrollSpeed:I,zoomOnPinch:F,onPanZoomStart:a,onPanZoom:s,onPanZoomEnd:l}):A0({noWheelClassName:O,preventScrolling:B,d3ZoomHandler:p});if(g.on("wheel.zoom",Ce,{passive:!1}),!M){const ze=L0({zoomPanValues:c,onDraggingChange:u,onPanZoomStart:a});d.on("start",ze);const G=O0({zoomPanValues:c,panOnDrag:P,onPaneContextMenu:!!S,onPanZoom:s,onTransformChange:fe});d.on("zoom",G);const ae=I0({zoomPanValues:c,panOnDrag:P,panOnScroll:k,onPaneContextMenu:S,onPanZoomEnd:l,onDraggingChange:u});d.on("end",ae)}const he=z0({zoomActivationKeyPressed:ee,panOnDrag:P,zoomOnScroll:K,panOnScroll:k,zoomOnDoubleClick:se,zoomOnPinch:F,userSelectionActive:M,noPanClassName:R,noWheelClassName:O,lib:W});d.filter(he),se?g.on("dblclick.zoom",x):g.on("dblclick.zoom",null)}function m(){d.on("zoom",null)}async function _(O,R,S){const M=sa(O),k=d==null?void 0:d.constrain()(M,R,S);return k&&await C(k),new Promise(P=>P(k))}async function v(O,R){const S=sa(O);return await C(S,R),new Promise(M=>M(S))}function b(O){if(g){const R=sa(O),S=g.property("__zoom");(S.k!==O.zoom||S.x!==O.x||S.y!==O.y)&&(d==null||d.transform(g,R,null,{sync:!0}))}}function N(){const O=g?du(g.node()):{x:0,y:0,k:1};return{x:O.x,y:O.y,zoom:O.k}}function E(O,R){return g?new Promise(S=>{d==null||d.scaleTo(aa(g,R==null?void 0:R.duration,()=>S(!0)),O)}):Promise.resolve(!1)}function T(O,R){return g?new Promise(S=>{d==null||d.scaleBy(aa(g,R==null?void 0:R.duration,()=>S(!0)),O)}):Promise.resolve(!1)}function D(O){d==null||d.scaleExtent(O)}function V(O){d==null||d.translateExtent(O)}function A(O){const R=!zn(O)||O<0?0:O;d==null||d.clickDistance(R)}return{update:$,destroy:m,setViewport:v,setViewportConstrained:_,getViewport:N,scaleTo:E,scaleBy:T,setScaleExtent:D,setTranslateExtent:V,syncViewport:b,setClickDistance:A}}var Gu;(function(e){e.Line="line",e.Handle="handle"})(Gu||(Gu={}));var B0=ne('
    ');function er(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(se,"$connectable",n),i=()=>Q(Ce,"$connectionRadius",n),s=()=>Q(fe,"$domNode",n),a=()=>Q(me,"$nodeLookup",n),l=()=>Q(W,"$connectionMode",n),u=()=>Q(G,"$lib",n),c=()=>Q(Fe,"$autoPanOnConnect",n),f=()=>Q(Ie,"$flowId",n),d=()=>Q(ze,"$isValidConnectionStore",n),g=()=>Q(Me,"$onedgecreate",n),p=()=>Q(oe,"$onConnectAction",n),x=()=>Q(pe,"$onConnectStartAction",n),C=()=>Q(be,"$onConnectEndAction",n),$=()=>Q(he,"$viewport",n),m=()=>Q(ht,"$connection",n),_=()=>Q(Oe,"$edges",n),v=()=>Q(rt,"$connectionLookup",n),b=re(),N=re(),E=re(),T=re(),D=re(),V=re(),A=re(),O=re();let R=w(t,"id",12,void 0),S=w(t,"type",12,"source"),M=w(t,"position",28,()=>$e.Top),k=w(t,"style",12,void 0),P=w(t,"isValidConnection",12,void 0),H=w(t,"onconnect",12,void 0),I=w(t,"ondisconnect",12,void 0),B=w(t,"isConnectable",12,void 0),F=w(t,"class",12,void 0);const K=ur("svelteflow__node_id"),se=ur("svelteflow__node_connectable"),ee=Ue(),{connectionMode:W,domNode:fe,nodeLookup:me,connectionRadius:Ce,viewport:he,isValidConnection:ze,lib:G,addEdge:ae,onedgecreate:Me,panBy:Le,cancelConnection:Xe,updateConnection:te,autoPanOnConnect:Fe,edges:Oe,connectionLookup:rt,onconnect:oe,onconnectstart:pe,onconnectend:be,flowId:Ie,connection:ht}=ee;function dt(Te){const st=Su(Te);(st&&Te.button===0||!st)&&M0.onPointerDown(Te,{handleId:h(E),nodeId:K,isTarget:h(b),connectionRadius:i(),domNode:s(),nodeLookup:a(),connectionMode:l(),lib:u(),autoPanOnConnect:c(),flowId:f(),isValidConnection:P()??d(),updateConnection:te,cancelConnection:Xe,panBy:Le,onConnect:ye=>{var ct;const lt=g()?g()(ye):ye;lt&&(ae(lt),(ct=p())==null||ct(ye))},onConnectStart:(ye,lt)=>{var ct;(ct=x())==null||ct(ye,{nodeId:lt.nodeId,handleId:lt.handleId,handleType:lt.handleType})},onConnectEnd:(ye,lt)=>{var ct;(ct=C())==null||ct(ye,lt)},getTransform:()=>[$().x,$().y,$().zoom],getFromHandle:()=>m().fromHandle})}let J=re(null),Re=re();ge(()=>j(S()),()=>{U(b,S()==="target")}),ge(()=>(j(B()),o()),()=>{U(N,B()!==void 0?B():o())}),ge(()=>j(R()),()=>{U(E,R()||null)}),ge(()=>(j(H()),j(I()),_(),v(),j(S()),j(R())),()=>{(H()||I())&&(_(),U(Re,v().get(`${K}-${S()}${R()?`-${R()}`:""}`)))}),ge(()=>(h(J),h(Re),j(I()),j(H())),()=>{if(h(J)&&!Kv(h(Re),h(J))){const Te=h(Re)??new Map;vu(h(J),Te,I()),vu(Te,h(J),H())}U(J,h(Re)??new Map)}),ge(()=>m(),()=>{U(T,!!m().fromHandle)}),ge(()=>(m(),j(S()),h(E)),()=>{var Te,st,ye;U(D,((Te=m().fromHandle)==null?void 0:Te.nodeId)===K&&((st=m().fromHandle)==null?void 0:st.type)===S()&&((ye=m().fromHandle)==null?void 0:ye.id)===h(E))}),ge(()=>(m(),j(S()),h(E)),()=>{var Te,st,ye;U(V,((Te=m().toHandle)==null?void 0:Te.nodeId)===K&&((st=m().toHandle)==null?void 0:st.type)===S()&&((ye=m().toHandle)==null?void 0:ye.id)===h(E))}),ge(()=>(l(),m(),j(S()),h(E)),()=>{var Te,st,ye;U(A,l()===hr.Strict?((Te=m().fromHandle)==null?void 0:Te.type)!==S():K!==((st=m().fromHandle)==null?void 0:st.nodeId)||h(E)!==((ye=m().fromHandle)==null?void 0:ye.id))}),ge(()=>(h(V),m()),()=>{U(O,h(V)&&m().isValid)}),vt(),He();var le=B0();de(le,"data-nodeid",K);let $n;var fn=X(le);wt(fn,t,"default",{}),Z(le),Ee(Te=>{de(le,"data-handleid",h(E)),de(le,"data-handlepos",M()),de(le,"data-id",`${f()??""}-${K??""}-${R()||""}-${S()??""}`),$n=$t(le,1,wn(Te),null,$n,{valid:h(O),connectingto:h(V),connectingfrom:h(D),source:!h(b),target:h(b),connectablestart:h(N),connectableend:h(N),connectable:h(N),connectionindicator:h(N)&&(!h(T)||h(A))}),de(le,"style",k())},[()=>Et(["svelte-flow__handle",`svelte-flow__handle-${M()}`,"nodrag","nopan",M(),F()])],ve),Ze("mousedown",le,dt),Ze("touchstart",le,dt),L(e,le);var En=ce({get id(){return R()},set id(Te){R(Te),y()},get type(){return S()},set type(Te){S(Te),y()},get position(){return M()},set position(Te){M(Te),y()},get style(){return k()},set style(Te){k(Te),y()},get isValidConnection(){return P()},set isValidConnection(Te){P(Te),y()},get onconnect(){return H()},set onconnect(Te){H(Te),y()},get ondisconnect(){return I()},set ondisconnect(Te){I(Te),y()},get isConnectable(){return B()},set isConnectable(Te){B(Te),y()},get class(){return F()},set class(Te){F(Te),y()}});return r(),En}ie(er,{id:{},type:{},position:{},style:{},isValidConnection:{},onconnect:{},ondisconnect:{},isConnectable:{},class:{}},["default"],[],!0);var Y0=ne(" ",1);function Ii(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["data","targetPosition","sourcePosition"]),ue(t,!1);let r=w(t,"data",28,()=>({label:"Node"})),o=w(t,"targetPosition",12,void 0),i=w(t,"sourcePosition",12,void 0);He();var s=Y0(),a=xe(s);const l=ve(()=>o()??$e.Top);er(a,{type:"target",get position(){return h(l)}});var u=z(a),c=z(u);const f=ve(()=>i()??$e.Bottom);return er(c,{type:"source",get position(){return h(f)}}),Ee(()=>{var d;return Bt(u,` ${((d=r())==null?void 0:d.label)??""} `)}),L(e,s),ce({get data(){return r()},set data(d){r(d),y()},get targetPosition(){return o()},set targetPosition(d){o(d),y()},get sourcePosition(){return i()},set sourcePosition(d){i(d),y()}})}ie(Ii,{data:{},targetPosition:{},sourcePosition:{}},[],[],!0);var Z0=ne(" ",1);function Uu(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["data","sourcePosition"]),ue(t,!1);let r=w(t,"data",28,()=>({label:"Node"})),o=w(t,"sourcePosition",12,void 0);He(),Pe();var i=Z0(),s=xe(i),a=z(s);const l=ve(()=>o()??$e.Bottom);return er(a,{type:"source",get position(){return h(l)}}),Ee(()=>{var u;return Bt(s,`${((u=r())==null?void 0:u.label)??""} `)}),L(e,i),ce({get data(){return r()},set data(u){r(u),y()},get sourcePosition(){return o()},set sourcePosition(u){o(u),y()}})}ie(Uu,{data:{},sourcePosition:{}},[],[],!0);var X0=ne(" ",1);function ju(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["data","targetPosition"]),ue(t,!1);let r=w(t,"data",28,()=>({label:"Node"})),o=w(t,"targetPosition",12,void 0);He(),Pe();var i=X0(),s=xe(i),a=z(s);const l=ve(()=>o()??$e.Top);return er(a,{type:"target",get position(){return h(l)}}),Ee(()=>{var u;return Bt(s,`${((u=r())==null?void 0:u.label)??""} `)}),L(e,i),ce({get data(){return r()},set data(u){r(u),y()},get targetPosition(){return o()},set targetPosition(u){o(u),y()}})}ie(ju,{data:{},targetPosition:{}},[],[],!0);function Ju(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,[])}ie(Ju,{},[],[],!0);function Qu(e,t,n){if(!t)return;const r=n?t.querySelector(n):t;r&&r.appendChild(e)}function Rr(e,{target:t,domNode:n}){return Qu(e,n,t),{async update({target:r,domNode:o}){Qu(e,o,r)},destroy(){e.parentNode&&e.parentNode.removeChild(e)}}}var F0=ne("
    ");function ec(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(i,"$domNode",n),{domNode:i}=Ue();He();var s=F0(),a=X(s);wt(a,t,"default",{}),Z(s),_t(s,(l,u)=>Rr==null?void 0:Rr(l,u),()=>({target:".svelte-flow__edgelabel-renderer",domNode:o()})),L(e,s),ce(),r()}ie(ec,{},["default"],[],!0);function tc(){const{edgeLookup:e,selectionRect:t,selectionRectMode:n,multiselectionKeyPressed:r,addSelectedEdges:o,unselectNodesAndEdges:i,elementsSelectable:s}=Ue();return a=>{const l=q(e).get(a);if(!l){console.warn("012",Dr.error012(a));return}(l.selectable||q(s)&&typeof l.selectable>"u")&&(t.set(null),n.set(null),l.selected?l.selected&&q(r)&&i({nodes:[],edges:[l]}):o([a]))}}var W0=ne('
    ');function nc(e,t){ue(t,!1);let n=w(t,"style",12,void 0),r=w(t,"x",12,void 0),o=w(t,"y",12,void 0);const i=tc(),s=ur("svelteflow__edge_id");return He(),ec(e,{children:(a,l)=>{var u=W0(),c=X(u);wt(c,t,"default",{}),Z(u),Ee(()=>{de(u,"style","pointer-events: all;"+n()),at(u,"transform",`translate(-50%, -50%) translate(${r()??""}px,${o()??""}px)`)}),Ze("keyup",u,()=>{}),Ze("click",u,()=>{s&&i(s)}),L(a,u)},$$slots:{default:!0}}),ce({get style(){return n()},set style(a){n(a),y()},get x(){return r()},set x(a){r(a),y()},get y(){return o()},set y(a){o(a),y()}})}ie(nc,{style:{},x:{},y:{}},["default"],[],!0);var K0=_e(''),q0=_e('',1);function Eo(e,t){ue(t,!1);let n=w(t,"id",12,void 0),r=w(t,"path",12),o=w(t,"label",12,void 0),i=w(t,"labelX",12,void 0),s=w(t,"labelY",12,void 0),a=w(t,"labelStyle",12,void 0),l=w(t,"markerStart",12,void 0),u=w(t,"markerEnd",12,void 0),c=w(t,"style",12,void 0),f=w(t,"interactionWidth",12,20),d=w(t,"class",12,void 0),g=f()===void 0?20:f();He();var p=q0(),x=xe(p),C=z(x);{var $=v=>{var b=K0();de(b,"stroke-opacity",0),de(b,"stroke-width",g),Ee(()=>de(b,"d",r())),L(v,b)};ke(C,v=>{g&&v($)})}var m=z(C);{var _=v=>{nc(v,{get x(){return i()},get y(){return s()},get style(){return a()},children:(b,N)=>{Pe();var E=Ae();Ee(()=>Bt(E,o())),L(b,E)},$$slots:{default:!0}})};ke(m,v=>{o()&&v(_)})}return Ee(v=>{de(x,"id",n()),de(x,"d",r()),$t(x,0,wn(v)),de(x,"marker-start",l()),de(x,"marker-end",u()),de(x,"style",c())},[()=>Et(["svelte-flow__edge-path",d()])],ve),L(e,p),ce({get id(){return n()},set id(v){n(v),y()},get path(){return r()},set path(v){r(v),y()},get label(){return o()},set label(v){o(v),y()},get labelX(){return i()},set labelX(v){i(v),y()},get labelY(){return s()},set labelY(v){s(v),y()},get labelStyle(){return a()},set labelStyle(v){a(v),y()},get markerStart(){return l()},set markerStart(v){l(v),y()},get markerEnd(){return u()},set markerEnd(v){u(v),y()},get style(){return c()},set style(v){c(v),y()},get interactionWidth(){return f()},set interactionWidth(v){f(v),y()},get class(){return d()},set class(v){d(v),y()}})}ie(Eo,{id:{},path:{},label:{},labelX:{},labelY:{},labelStyle:{},markerStart:{},markerEnd:{},style:{},interactionWidth:{},class:{}},[],[],!0);function zi(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["label","labelStyle","style","markerStart","markerEnd","interactionWidth","sourceX","sourceY","sourcePosition","targetX","targetY","targetPosition"]),ue(t,!1);const r=re(),o=re(),i=re();let s=w(t,"label",12,void 0),a=w(t,"labelStyle",12,void 0),l=w(t,"style",12,void 0),u=w(t,"markerStart",12,void 0),c=w(t,"markerEnd",12,void 0),f=w(t,"interactionWidth",12,void 0),d=w(t,"sourceX",12),g=w(t,"sourceY",12),p=w(t,"sourcePosition",12),x=w(t,"targetX",12),C=w(t,"targetY",12),$=w(t,"targetPosition",12);return ge(()=>(h(r),h(o),h(i),j(d()),j(g()),j(x()),j(C()),j(p()),j($())),()=>{(m=>(U(r,m[0]),U(o,m[1]),U(i,m[2])))(Tu({sourceX:d(),sourceY:g(),targetX:x(),targetY:C(),sourcePosition:p(),targetPosition:$()}))}),vt(),He(),Eo(e,{get path(){return h(r)},get labelX(){return h(o)},get labelY(){return h(i)},get label(){return s()},get labelStyle(){return a()},get markerStart(){return u()},get markerEnd(){return c()},get interactionWidth(){return f()},get style(){return l()}}),ce({get label(){return s()},set label(m){s(m),y()},get labelStyle(){return a()},set labelStyle(m){a(m),y()},get style(){return l()},set style(m){l(m),y()},get markerStart(){return u()},set markerStart(m){u(m),y()},get markerEnd(){return c()},set markerEnd(m){c(m),y()},get interactionWidth(){return f()},set interactionWidth(m){f(m),y()},get sourceX(){return d()},set sourceX(m){d(m),y()},get sourceY(){return g()},set sourceY(m){g(m),y()},get sourcePosition(){return p()},set sourcePosition(m){p(m),y()},get targetX(){return x()},set targetX(m){x(m),y()},get targetY(){return C()},set targetY(m){C(m),y()},get targetPosition(){return $()},set targetPosition(m){$(m),y()}})}ie(zi,{label:{},labelStyle:{},style:{},markerStart:{},markerEnd:{},interactionWidth:{},sourceX:{},sourceY:{},sourcePosition:{},targetX:{},targetY:{},targetPosition:{}},[],[],!0);function rc(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["label","labelStyle","style","markerStart","markerEnd","interactionWidth","sourceX","sourceY","sourcePosition","targetX","targetY","targetPosition"]),ue(t,!1);const r=re(),o=re(),i=re();let s=w(t,"label",12,void 0),a=w(t,"labelStyle",12,void 0),l=w(t,"style",12,void 0),u=w(t,"markerStart",12,void 0),c=w(t,"markerEnd",12,void 0),f=w(t,"interactionWidth",12,void 0),d=w(t,"sourceX",12),g=w(t,"sourceY",12),p=w(t,"sourcePosition",12),x=w(t,"targetX",12),C=w(t,"targetY",12),$=w(t,"targetPosition",12);return ge(()=>(h(r),h(o),h(i),j(d()),j(g()),j(x()),j(C()),j(p()),j($())),()=>{(m=>(U(r,m[0]),U(o,m[1]),U(i,m[2])))(Li({sourceX:d(),sourceY:g(),targetX:x(),targetY:C(),sourcePosition:p(),targetPosition:$()}))}),vt(),He(),Eo(e,{get path(){return h(r)},get labelX(){return h(o)},get labelY(){return h(i)},get label(){return s()},get labelStyle(){return a()},get markerStart(){return u()},get markerEnd(){return c()},get interactionWidth(){return f()},get style(){return l()}}),ce({get label(){return s()},set label(m){s(m),y()},get labelStyle(){return a()},set labelStyle(m){a(m),y()},get style(){return l()},set style(m){l(m),y()},get markerStart(){return u()},set markerStart(m){u(m),y()},get markerEnd(){return c()},set markerEnd(m){c(m),y()},get interactionWidth(){return f()},set interactionWidth(m){f(m),y()},get sourceX(){return d()},set sourceX(m){d(m),y()},get sourceY(){return g()},set sourceY(m){g(m),y()},get sourcePosition(){return p()},set sourcePosition(m){p(m),y()},get targetX(){return x()},set targetX(m){x(m),y()},get targetY(){return C()},set targetY(m){C(m),y()},get targetPosition(){return $()},set targetPosition(m){$(m),y()}})}ie(rc,{label:{},labelStyle:{},style:{},markerStart:{},markerEnd:{},interactionWidth:{},sourceX:{},sourceY:{},sourcePosition:{},targetX:{},targetY:{},targetPosition:{}},[],[],!0);function oc(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["label","labelStyle","style","markerStart","markerEnd","interactionWidth","sourceX","sourceY","targetX","targetY"]),ue(t,!1);const r=re(),o=re(),i=re();let s=w(t,"label",12,void 0),a=w(t,"labelStyle",12,void 0),l=w(t,"style",12,void 0),u=w(t,"markerStart",12,void 0),c=w(t,"markerEnd",12,void 0),f=w(t,"interactionWidth",12,void 0),d=w(t,"sourceX",12),g=w(t,"sourceY",12),p=w(t,"targetX",12),x=w(t,"targetY",12);return ge(()=>(h(r),h(o),h(i),j(d()),j(g()),j(p()),j(x())),()=>{(C=>(U(r,C[0]),U(o,C[1]),U(i,C[2])))(ea({sourceX:d(),sourceY:g(),targetX:p(),targetY:x()}))}),vt(),He(),Eo(e,{get path(){return h(r)},get labelX(){return h(o)},get labelY(){return h(i)},get label(){return s()},get labelStyle(){return a()},get markerStart(){return u()},get markerEnd(){return c()},get interactionWidth(){return f()},get style(){return l()}}),ce({get label(){return s()},set label(C){s(C),y()},get labelStyle(){return a()},set labelStyle(C){a(C),y()},get style(){return l()},set style(C){l(C),y()},get markerStart(){return u()},set markerStart(C){u(C),y()},get markerEnd(){return c()},set markerEnd(C){c(C),y()},get interactionWidth(){return f()},set interactionWidth(C){f(C),y()},get sourceX(){return d()},set sourceX(C){d(C),y()},get sourceY(){return g()},set sourceY(C){g(C),y()},get targetX(){return p()},set targetX(C){p(C),y()},get targetY(){return x()},set targetY(C){x(C),y()}})}ie(oc,{label:{},labelStyle:{},style:{},markerStart:{},markerEnd:{},interactionWidth:{},sourceX:{},sourceY:{},targetX:{},targetY:{}},[],[],!0);function ic(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]);it(n,["label","labelStyle","style","markerStart","markerEnd","interactionWidth","sourceX","sourceY","sourcePosition","targetX","targetY","targetPosition"]),ue(t,!1);const r=re(),o=re(),i=re();let s=w(t,"label",12,void 0),a=w(t,"labelStyle",12,void 0),l=w(t,"style",12,void 0),u=w(t,"markerStart",12,void 0),c=w(t,"markerEnd",12,void 0),f=w(t,"interactionWidth",12,void 0),d=w(t,"sourceX",12),g=w(t,"sourceY",12),p=w(t,"sourcePosition",12),x=w(t,"targetX",12),C=w(t,"targetY",12),$=w(t,"targetPosition",12);return ge(()=>(h(r),h(o),h(i),j(d()),j(g()),j(x()),j(C()),j(p()),j($())),()=>{(m=>(U(r,m[0]),U(o,m[1]),U(i,m[2])))(Li({sourceX:d(),sourceY:g(),targetX:x(),targetY:C(),sourcePosition:p(),targetPosition:$(),borderRadius:0}))}),vt(),He(),Eo(e,{get path(){return h(r)},get labelX(){return h(o)},get labelY(){return h(i)},get label(){return s()},get labelStyle(){return a()},get markerStart(){return u()},get markerEnd(){return c()},get interactionWidth(){return f()},get style(){return l()}}),ce({get label(){return s()},set label(m){s(m),y()},get labelStyle(){return a()},set labelStyle(m){a(m),y()},get style(){return l()},set style(m){l(m),y()},get markerStart(){return u()},set markerStart(m){u(m),y()},get markerEnd(){return c()},set markerEnd(m){c(m),y()},get interactionWidth(){return f()},set interactionWidth(m){f(m),y()},get sourceX(){return d()},set sourceX(m){d(m),y()},get sourceY(){return g()},set sourceY(m){g(m),y()},get sourcePosition(){return p()},set sourcePosition(m){p(m),y()},get targetX(){return x()},set targetX(m){x(m),y()},get targetY(){return C()},set targetY(m){C(m),y()},get targetPosition(){return $()},set targetPosition(m){$(m),y()}})}ie(ic,{label:{},labelStyle:{},style:{},markerStart:{},markerEnd:{},interactionWidth:{},sourceX:{},sourceY:{},sourcePosition:{},targetX:{},targetY:{},targetPosition:{}},[],[],!0);function G0(e,t){const n=e.set,r=t.set,o=q(e),i=q(t);let a=o.length===0&&i.length>0?i:o;e.set(a);const l=u=>{const c=n(u);return a=c,r(a),c};e.set=t.set=l,e.update=t.update=u=>l(u(a))}function U0(e,t){const n=e.set,r=t.set;let o=q(t);e.set(o);const i=s=>{n(s),r(s),o=s};e.set=t.set=i,e.update=t.update=s=>i(s(o))}const j0=(e,t,n)=>{if(!n)return;const r=q(e),o=t.set,i=n.set;let s=n?q(n):{x:0,y:0,zoom:1};t.set(s),t.set=a=>(o(a),i(a),s=a,a),n.set=a=>(r==null||r.syncViewport(a),o(a),i(a),s=a,a),t.update=a=>{t.set(a(s))},n.update=a=>{n.set(a(s))}},J0=(e,t,n,r=[0,0],o=Ni)=>{const{subscribe:i,set:s,update:a}=we([]);let l=e,u={},c=!0;const f=x=>(Ou(x,t,n,{elevateNodesOnSelect:c,nodeOrigin:r,nodeExtent:o,defaults:u,checkEquality:!1}),l=x,s(l),l),d=x=>f(x(l)),g=x=>{u=x},p=x=>{c=x.elevateNodesOnSelect??c};return f(l),{subscribe:i,set:f,update:d,setDefaultOptions:g,setOptions:p}},Q0=(e,t,n,r)=>{const{subscribe:o,set:i,update:s}=we([]);let a=e,l={};const u=d=>{const g=l?d.map(p=>({...l,...p})):d;Ru(t,n,g),a=g,i(a)},c=d=>u(d(a)),f=d=>{l=d};return u(a),{subscribe:o,set:u,update:c,setDefaultOptions:f}},sc={input:Uu,output:ju,default:Ii,group:Ju},ac={straight:oc,smoothstep:rc,default:zi,step:ic},e2=({nodes:e=[],edges:t=[],width:n,height:r,fitView:o,nodeOrigin:i,nodeExtent:s})=>{const a=new Map,l=new Map,u=new Map,c=new Map,f=i??[0,0],d=s??Ni;Ou(e,a,l,{nodeExtent:d,nodeOrigin:f,elevateNodesOnSelect:!1,checkEquality:!1}),Ru(u,c,t);let g={x:0,y:0,zoom:1};if(o&&n&&r){const p=bo(a,{filter:x=>!!((x.width||x.initialWidth)&&(x.height||x.initialHeight))});g=js(p,n,r,.5,2,.1)}return{flowId:we(null),nodes:J0(e,a,l,f,d),nodeLookup:Gt(a),parentLookup:Gt(l),edgeLookup:Gt(c),visibleNodes:Gt([]),edges:Q0(t,u,c),visibleEdges:Gt([]),connectionLookup:Gt(u),height:we(500),width:we(500),minZoom:we(.5),maxZoom:we(2),nodeOrigin:we(f),nodeDragThreshold:we(1),nodeExtent:we(d),translateExtent:we(Ni),autoPanOnNodeDrag:we(!0),autoPanOnConnect:we(!0),fitViewOnInit:we(!1),fitViewOnInitDone:we(!1),fitViewOptions:we(void 0),panZoom:we(null),snapGrid:we(null),dragging:we(!1),selectionRect:we(null),selectionKeyPressed:we(!1),multiselectionKeyPressed:we(!1),deleteKeyPressed:we(!1),panActivationKeyPressed:we(!1),zoomActivationKeyPressed:we(!1),selectionRectMode:we(null),selectionMode:we(Ti.Partial),nodeTypes:we(sc),edgeTypes:we(ac),viewport:we(g),connectionMode:we(hr.Strict),domNode:we(null),connection:Gt(Ws),connectionLineType:we(Ar.Bezier),connectionRadius:we(20),isValidConnection:we(()=>!0),nodesDraggable:we(!0),nodesConnectable:we(!0),elementsSelectable:we(!0),selectNodesOnDrag:we(!0),markers:Gt([]),defaultMarkerColor:we("#b1b1b7"),lib:Gt("svelte"),onlyRenderVisibleElements:we(!1),onerror:we(Qv),ondelete:we(void 0),onedgecreate:we(void 0),onconnect:we(void 0),onconnectstart:we(void 0),onconnectend:we(void 0),onbeforedelete:we(void 0),nodesInitialized:we(!1),edgesInitialized:we(!1),viewportInitialized:we(!1),initialized:Gt(!1)}};function t2(e){const t=Un([e.edges,e.nodes,e.nodeLookup,e.onlyRenderVisibleElements,e.viewport,e.width,e.height],([n,,r,o,i,s,a])=>o&&s&&a?n.filter(u=>{const c=r.get(u.source),f=r.get(u.target);return c&&f&&s0({sourceNode:c,targetNode:f,width:s,height:a,transform:[i.x,i.y,i.zoom]})}):n);return Un([t,e.nodes,e.nodeLookup,e.connectionMode,e.onerror],([n,,r,o,i])=>n.reduce((a,l)=>{const u=r.get(l.source),c=r.get(l.target);if(!u||!c)return a;const f=g0({id:l.id,sourceNode:u,targetNode:c,sourceHandle:l.sourceHandle||null,targetHandle:l.targetHandle||null,connectionMode:o,onError:i});return f&&a.push({...l,zIndex:i0({selected:l.selected,zIndex:l.zIndex,sourceNode:u,targetNode:c,elevateOnSelect:!1}),...f}),a},[]))}function n2(e){return Un([e.nodeLookup,e.onlyRenderVisibleElements,e.width,e.height,e.viewport,e.nodes],([t,n,r,o,i])=>{const s=[i.x,i.y,i.zoom];return n?pu(t,{x:0,y:0,width:r,height:o},s,!0):Array.from(t.values())})}const Ri=Symbol();function lc({nodes:e,edges:t,width:n,height:r,fitView:o,nodeOrigin:i,nodeExtent:s}){const a=e2({nodes:e,edges:t,width:n,height:r,fitView:o,nodeOrigin:i,nodeExtent:s});function l(k){a.nodeTypes.set({...sc,...k})}function u(k){a.edgeTypes.set({...ac,...k})}function c(k){const P=q(a.edges);a.edges.set(u0(k,P))}const f=(k,P=!1)=>{var I;const H=q(a.nodeLookup);for(const[B,F]of k){const K=(I=H.get(B))==null?void 0:I.internals.userNode;K&&(K.position=F.position,K.dragging=P)}a.nodes.update(B=>B)};function d(k){var F,K,se;const P=q(a.nodeLookup),H=q(a.parentLookup),{changes:I,updatedInternals:B}=x0(k,P,q(a.parentLookup),q(a.domNode),q(a.nodeOrigin));if(B){if(m0(P,H,{nodeOrigin:i,nodeExtent:s}),!q(a.fitViewOnInitDone)&&q(a.fitViewOnInit)){const ee=q(a.fitViewOptions),W=p({...ee,nodes:ee==null?void 0:ee.nodes});a.fitViewOnInitDone.set(W)}for(const ee of I){const W=(F=P.get(ee.id))==null?void 0:F.internals.userNode;if(W)switch(ee.type){case"dimensions":{const fe={...W.measured,...ee.dimensions};ee.setAttributes&&(W.width=((K=ee.dimensions)==null?void 0:K.width)??W.width,W.height=((se=ee.dimensions)==null?void 0:se.height)??W.height),W.measured=fe;break}case"position":W.position=ee.position??W.position;break}}a.nodes.update(ee=>ee),q(a.nodesInitialized)||a.nodesInitialized.set(!0)}}function g(k){const P=q(a.panZoom),H=q(a.domNode);if(!P||!H)return Promise.resolve(!1);const{width:I,height:B}=Qs(H),F=mu(q(a.nodeLookup),k);return yu({nodes:F,width:I,height:B,minZoom:q(a.minZoom),maxZoom:q(a.maxZoom),panZoom:P},k)}function p(k){const P=q(a.panZoom);if(!P)return!1;const H=mu(q(a.nodeLookup),k);return yu({nodes:H,width:q(a.width),height:q(a.height),minZoom:q(a.minZoom),maxZoom:q(a.maxZoom),panZoom:P},k),H.size>0}function x(k,P){const H=q(a.panZoom);return H?H.scaleBy(k,P):Promise.resolve(!1)}function C(k){return x(1.2,k)}function $(k){return x(1/1.2,k)}function m(k){const P=q(a.panZoom);P&&(P.setScaleExtent([k,q(a.maxZoom)]),a.minZoom.set(k))}function _(k){const P=q(a.panZoom);P&&(P.setScaleExtent([q(a.minZoom),k]),a.maxZoom.set(k))}function v(k){const P=q(a.panZoom);P&&(P.setTranslateExtent(k),a.translateExtent.set(k))}function b(k){let P=!1;return k.forEach(H=>{H.selected&&(H.selected=!1,P=!0)}),P}function N(k){var P;(P=q(a.panZoom))==null||P.setClickDistance(k)}function E(k){b((k==null?void 0:k.nodes)||q(a.nodes))&&a.nodes.set(q(a.nodes)),b((k==null?void 0:k.edges)||q(a.edges))&&a.edges.set(q(a.edges))}a.deleteKeyPressed.subscribe(async k=>{var P;if(k){const H=q(a.nodes),I=q(a.edges),B=H.filter(ee=>ee.selected),F=I.filter(ee=>ee.selected),{nodes:K,edges:se}=await wu({nodesToRemove:B,edgesToRemove:F,nodes:H,edges:I,onBeforeDelete:q(a.onbeforedelete)});(K.length||se.length)&&(a.nodes.update(ee=>ee.filter(W=>!K.some(fe=>fe.id===W.id))),a.edges.update(ee=>ee.filter(W=>!se.some(fe=>fe.id===W.id))),(P=q(a.ondelete))==null||P({nodes:K,edges:se}))}});function T(k){const P=q(a.multiselectionKeyPressed);a.nodes.update(H=>H.map(I=>{const B=k.includes(I.id),F=P&&I.selected||B;return I.selected=F,I})),P||a.edges.update(H=>H.map(I=>(I.selected=!1,I)))}function D(k){const P=q(a.multiselectionKeyPressed);a.edges.update(H=>H.map(I=>{const B=k.includes(I.id),F=P&&I.selected||B;return I.selected=F,I})),P||a.nodes.update(H=>H.map(I=>(I.selected=!1,I)))}function V(k){var H;const P=(H=q(a.nodes))==null?void 0:H.find(I=>I.id===k);if(!P){console.warn("012",Dr.error012(k));return}a.selectionRect.set(null),a.selectionRectMode.set(null),P.selected?P.selected&&q(a.multiselectionKeyPressed)&&E({nodes:[P],edges:[]}):T([k])}function A(k){const P=q(a.viewport);return b0({delta:k,panZoom:q(a.panZoom),transform:[P.x,P.y,P.zoom],translateExtent:q(a.translateExtent),width:q(a.width),height:q(a.height)})}const O=we(Ws),R=k=>{O.set({...k})};function S(){O.set(Ws)}function M(){a.fitViewOnInitDone.set(!1),a.selectionRect.set(null),a.selectionRectMode.set(null),a.snapGrid.set(null),a.isValidConnection.set(()=>!0),E(),S()}return{...a,visibleEdges:t2(a),visibleNodes:n2(a),connection:Un([O,a.viewport],([k,P])=>k.inProgress?{...k,to:ko(k.to,[P.x,P.y,P.zoom])}:{...k}),markers:Un([a.edges,a.defaultMarkerColor,a.flowId],([k,P,H])=>h0(k,{defaultColor:P,id:H})),initialized:(()=>{let k=!1;const P=q(a.nodes).length,H=q(a.edges).length;return Un([a.nodesInitialized,a.edgesInitialized,a.viewportInitialized],([I,B,F])=>k||(P===0?k=F:H===0?k=F&&I:k=F&&I&&B,k))})(),syncNodeStores:k=>G0(a.nodes,k),syncEdgeStores:k=>U0(a.edges,k),syncViewport:k=>j0(a.panZoom,a.viewport,k),setNodeTypes:l,setEdgeTypes:u,addEdge:c,updateNodePositions:f,updateNodeInternals:d,zoomIn:C,zoomOut:$,fitView:k=>g(k),setMinZoom:m,setMaxZoom:_,setTranslateExtent:v,setPaneClickDistance:N,unselectNodesAndEdges:E,addSelectedNodes:T,addSelectedEdges:D,handleNodeSelection:V,panBy:A,updateConnection:R,cancelConnection:S,reset:M}}function Ue(){const e=ur(Ri);if(!e)throw new Error("In order to use useStore you need to wrap your component in a ");return e.getStore()}function r2({nodes:e,edges:t,width:n,height:r,fitView:o,nodeOrigin:i,nodeExtent:s}){const a=lc({nodes:e,edges:t,width:n,height:r,fitView:o,nodeOrigin:i,nodeExtent:s});return Sr(Ri,{getStore:()=>a}),a}function la(e,t){const{panZoom:n,minZoom:r,maxZoom:o,initialViewport:i,viewport:s,dragging:a,translateExtent:l,paneClickDistance:u}=t,c=R0({domNode:e,minZoom:r,maxZoom:o,translateExtent:l,viewport:i,paneClickDistance:u,onDraggingChange:a.set}),f=c.getViewport();return s.set(f),n.set(c),c.update(t),{update(d){c.update(d)}}}var o2=ne('
    ');const i2={hash:"svelte-4xkw84",code:".svelte-flow__zoom.svelte-4xkw84 {width:100%;height:100%;position:absolute;top:0;left:0;z-index:4;}"};function uc(e,t){ue(t,!1),et(e,i2);const[n,r]=nt(),o=()=>Q(H,"$panActivationKeyPressed",n),i=()=>Q(R,"$minZoom",n),s=()=>Q(S,"$maxZoom",n),a=()=>Q(I,"$zoomActivationKeyPressed",n),l=()=>Q(O,"$selectionRect",n),u=()=>Q(k,"$translateExtent",n),c=()=>Q(P,"$lib",n),f=re(),d=re(),g=re();let p=w(t,"initialViewport",12,void 0),x=w(t,"onMoveStart",12,void 0),C=w(t,"onMove",12,void 0),$=w(t,"onMoveEnd",12,void 0),m=w(t,"panOnScrollMode",12),_=w(t,"preventScrolling",12),v=w(t,"zoomOnScroll",12),b=w(t,"zoomOnDoubleClick",12),N=w(t,"zoomOnPinch",12),E=w(t,"panOnDrag",12),T=w(t,"panOnScroll",12),D=w(t,"paneClickDistance",12);const{viewport:V,panZoom:A,selectionRect:O,minZoom:R,maxZoom:S,dragging:M,translateExtent:k,lib:P,panActivationKeyPressed:H,zoomActivationKeyPressed:I,viewportInitialized:B}=Ue(),F=W=>V.set({x:W[0],y:W[1],zoom:W[2]});rn(()=>{ai(B,!0)}),ge(()=>j(p()),()=>{U(f,p()||{x:0,y:0,zoom:1})}),ge(()=>(o(),j(E())),()=>{U(d,o()||E())}),ge(()=>(o(),j(T())),()=>{U(g,o()||T())}),vt(),He();var K=o2(),se=X(K);wt(se,t,"default",{}),Z(K),_t(K,(W,fe)=>la==null?void 0:la(W,fe),()=>({viewport:V,minZoom:i(),maxZoom:s(),initialViewport:h(f),dragging:M,panZoom:A,onPanZoomStart:x(),onPanZoom:C(),onPanZoomEnd:$(),zoomOnScroll:v(),zoomOnDoubleClick:b(),zoomOnPinch:N(),panOnScroll:h(g),panOnDrag:h(d),panOnScrollSpeed:.5,panOnScrollMode:m()||Jn.Free,zoomActivationKeyPressed:a(),preventScrolling:typeof _()=="boolean"?_():!0,noPanClassName:"nopan",noWheelClassName:"nowheel",userSelectionActive:!!l(),translateExtent:u(),lib:c(),paneClickDistance:D(),onTransformChange:F})),L(e,K);var ee=ce({get initialViewport(){return p()},set initialViewport(W){p(W),y()},get onMoveStart(){return x()},set onMoveStart(W){x(W),y()},get onMove(){return C()},set onMove(W){C(W),y()},get onMoveEnd(){return $()},set onMoveEnd(W){$(W),y()},get panOnScrollMode(){return m()},set panOnScrollMode(W){m(W),y()},get preventScrolling(){return _()},set preventScrolling(W){_(W),y()},get zoomOnScroll(){return v()},set zoomOnScroll(W){v(W),y()},get zoomOnDoubleClick(){return b()},set zoomOnDoubleClick(W){b(W),y()},get zoomOnPinch(){return N()},set zoomOnPinch(W){N(W),y()},get panOnDrag(){return E()},set panOnDrag(W){E(W),y()},get panOnScroll(){return T()},set panOnScroll(W){T(W),y()},get paneClickDistance(){return D()},set paneClickDistance(W){D(W),y()}});return r(),ee}ie(uc,{initialViewport:{},onMoveStart:{},onMove:{},onMoveEnd:{},panOnScrollMode:{},preventScrolling:{},zoomOnScroll:{},zoomOnDoubleClick:{},zoomOnPinch:{},panOnDrag:{},panOnScroll:{},paneClickDistance:{}},["default"],[],!0);function cc(e,t){return n=>{n.target===t&&(e==null||e(n))}}function dc(e){return t=>{const n=e.includes(t.id);return t.selected!==n&&(t.selected=n),t}}var s2=ne("
    ");const a2={hash:"svelte-1esy7hx",code:".svelte-flow__pane.svelte-1esy7hx {position:absolute;top:0;left:0;width:100%;height:100%;}"};function fc(e,t){ue(t,!1),et(e,a2);const[n,r]=nt(),o=()=>Q(S,"$panActivationKeyPressed",n),i=()=>Q(O,"$selectionKeyPressed",n),s=()=>Q(V,"$selectionRect",n),a=()=>Q(D,"$elementsSelectable",n),l=()=>Q(A,"$selectionRectMode",n),u=()=>Q(N,"$edges",n),c=()=>Q(b,"$nodeLookup",n),f=()=>Q(E,"$viewport",n),d=()=>Q(R,"$selectionMode",n),g=()=>Q(T,"$dragging",n),p=re(),x=re(),C=re();let $=w(t,"panOnDrag",12,void 0),m=w(t,"selectionOnDrag",12,void 0);const _=ii(),{nodes:v,nodeLookup:b,edges:N,viewport:E,dragging:T,elementsSelectable:D,selectionRect:V,selectionRectMode:A,selectionKeyPressed:O,selectionMode:R,panActivationKeyPressed:S,unselectNodesAndEdges:M}=Ue();let k=re(),P=null,H=[],I=!1;function B(G){if(I){I=!1;return}_("paneclick",{event:G}),M(),A.set(null)}function F(G){var Le,Xe;if(P=h(k).getBoundingClientRect(),!D||!h(x)||G.button!==0||G.target!==h(k)||!P)return;(Xe=(Le=G.target)==null?void 0:Le.setPointerCapture)==null||Xe.call(Le,G.pointerId);const{x:ae,y:Me}=Rn(G,P);M(),V.set({width:0,height:0,startX:ae,startY:Me,x:ae,y:Me})}function K(G){if(!h(x)||!P||!s())return;I=!0;const ae=Rn(G,P),Me=s().startX??0,Le=s().startY??0,Xe={...s(),x:ae.xoe.id),Fe=qs(H,u()).map(oe=>oe.id);H=pu(c(),Xe,[f().x,f().y,f().zoom],d()===Ti.Partial,!0);const Oe=qs(H,u()).map(oe=>oe.id),rt=H.map(oe=>oe.id);(te.length!==rt.length||rt.some(oe=>!te.includes(oe)))&&v.update(oe=>oe.map(dc(rt))),(Fe.length!==Oe.length||Oe.some(oe=>!Fe.includes(oe)))&&N.update(oe=>oe.map(dc(Oe))),A.set("user"),V.set(Xe)}function se(G){var ae,Me;G.button===0&&((Me=(ae=G.target)==null?void 0:ae.releasePointerCapture)==null||Me.call(ae,G.pointerId),!h(x)&&l()==="user"&&G.target===h(k)&&(B==null||B(G)),V.set(null),H.length>0&&ai(A,"nodes"),i()&&(I=!1))}const ee=G=>{var ae;if(Array.isArray(h(p))&&((ae=h(p))!=null&&ae.includes(2))){G.preventDefault();return}_("panecontextmenu",{event:G})};ge(()=>(o(),j($())),()=>{U(p,o()||$())}),ge(()=>(i(),s(),j(m()),h(p)),()=>{U(x,i()||s()||m()&&h(p)!==!0)}),ge(()=>(a(),h(x),l()),()=>{U(C,a()&&(h(x)||l()==="user"))}),vt(),He();var W=s2(),fe=Ne(()=>h(C)?void 0:cc(B,h(k))),me=Ne(()=>cc(ee,h(k)));let Ce;var he=X(W);wt(he,t,"default",{}),Z(W),An(W,G=>U(k,G),()=>h(k)),Ee(G=>Ce=$t(W,1,"svelte-flow__pane svelte-1esy7hx",null,Ce,{draggable:G,dragging:g(),selection:h(x)}),[()=>$()===!0||Array.isArray($())&&$().includes(0)],ve),Ze("click",W,function(...G){var ae;(ae=h(fe))==null||ae.apply(this,G)}),Ze("pointerdown",W,function(...G){var ae;(ae=h(C)?F:void 0)==null||ae.apply(this,G)}),Ze("pointermove",W,function(...G){var ae;(ae=h(C)?K:void 0)==null||ae.apply(this,G)}),Ze("pointerup",W,function(...G){var ae;(ae=h(C)?se:void 0)==null||ae.apply(this,G)}),Ze("contextmenu",W,function(...G){var ae;(ae=h(me))==null||ae.apply(this,G)}),L(e,W);var ze=ce({get panOnDrag(){return $()},set panOnDrag(G){$(G),y()},get selectionOnDrag(){return m()},set selectionOnDrag(G){m(G),y()}});return r(),ze}ie(fc,{panOnDrag:{},selectionOnDrag:{}},["default"],[],!0);var l2=ne('
    ');const u2={hash:"svelte-1floaup",code:".svelte-flow__viewport.svelte-1floaup {width:100%;height:100%;position:absolute;top:0;left:0;}"};function gc(e,t){ue(t,!1),et(e,u2);const[n,r]=nt(),o=()=>Q(i,"$viewport",n),{viewport:i}=Ue();He();var s=l2(),a=X(s);wt(a,t,"default",{}),Z(s),Ee(()=>de(s,"style",`transform: translate(${o().x??""}px, ${o().y??""}px) scale(${o().zoom??""})`)),L(e,s),ce(),r()}ie(gc,{},["default"],[],!0);function Br(e,t){const{store:n,onDrag:r,onDragStart:o,onDragStop:i,onNodeMouseDown:s}=t,a=$0({onDrag:r,onDragStart:o,onDragStop:i,onNodeMouseDown:s,getStoreItems:()=>{const u=q(n.snapGrid),c=q(n.viewport);return{nodes:q(n.nodes),nodeLookup:q(n.nodeLookup),edges:q(n.edges),nodeExtent:q(n.nodeExtent),snapGrid:u||[0,0],snapToGrid:!!u,nodeOrigin:q(n.nodeOrigin),multiSelectionActive:q(n.multiselectionKeyPressed),domNode:q(n.domNode),transform:[c.x,c.y,c.zoom],autoPanOnNodeDrag:q(n.autoPanOnNodeDrag),nodesDraggable:q(n.nodesDraggable),selectNodesOnDrag:q(n.selectNodesOnDrag),nodeDragThreshold:q(n.nodeDragThreshold),unselectNodesAndEdges:n.unselectNodesAndEdges,updateNodePositions:n.updateNodePositions,panBy:n.panBy}}});function l(u,c){if(c.disabled){a.destroy();return}a.update({domNode:u,noDragClassName:c.noDragClass,handleSelector:c.handleSelector,nodeId:c.nodeId,isSelectable:c.isSelectable,nodeClickDistance:c.nodeClickDistance})}return l(e,t),{update(u){l(e,u)},destroy(){a.destroy()}}}function c2({width:e,height:t,initialWidth:n,initialHeight:r,measuredWidth:o,measuredHeight:i}){if(o===void 0&&i===void 0){const s=e??n,a=t??r;return{width:s?`width:${s}px;`:"",height:a?`height:${a}px;`:""}}return{width:e?`width:${e}px;`:"",height:t?`height:${t}px;`:""}}var d2=ne("
    ");function hc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(me,"$nodeTypes",n),i=()=>Q(ae,"$elementsSelectable",n),s=()=>Q(Me,"$nodesDraggable",n),a=()=>Q(Fe,"$connectableStore",n),l=re(void 0,!0),u=re(void 0,!0),c=re(void 0,!0),f=re(void 0,!0);let d=w(t,"node",13),g=w(t,"id",13),p=w(t,"data",29,()=>({})),x=w(t,"selected",13,!1),C=w(t,"draggable",13,void 0),$=w(t,"selectable",13,void 0),m=w(t,"connectable",13,!0),_=w(t,"deletable",13,!0),v=w(t,"hidden",13,!1),b=w(t,"dragging",13,!1),N=w(t,"resizeObserver",13,null),E=w(t,"style",13,void 0),T=w(t,"type",13,"default"),D=w(t,"isParent",13,!1),V=w(t,"positionX",13),A=w(t,"positionY",13),O=w(t,"sourcePosition",13,void 0),R=w(t,"targetPosition",13,void 0),S=w(t,"zIndex",13),M=w(t,"measuredWidth",13,void 0),k=w(t,"measuredHeight",13,void 0),P=w(t,"initialWidth",13,void 0),H=w(t,"initialHeight",13,void 0),I=w(t,"width",13,void 0),B=w(t,"height",13,void 0),F=w(t,"dragHandle",13,void 0),K=w(t,"initialized",13,!1),se=w(t,"parentId",13,void 0),ee=w(t,"nodeClickDistance",13,void 0),W=w(t,"class",13,"");const fe=Ue(),{nodeTypes:me,nodeDragThreshold:Ce,selectNodesOnDrag:he,handleNodeSelection:ze,updateNodeInternals:G,elementsSelectable:ae,nodesDraggable:Me}=fe;let Le=re(void 0,!0),Xe=re(null,!0);const te=ii(),Fe=we(m());let Oe=re(void 0,!0),rt=re(void 0,!0),oe=re(void 0,!0);Sr("svelteflow__node_id",g()),Sr("svelteflow__node_connectable",Fe),$s(()=>{var J;h(Xe)&&((J=N())==null||J.unobserve(h(Xe)))});function pe(J){$()&&(!q(he)||!C()||q(Ce)>0)&&ze(g()),te("nodeclick",{node:d().internals.userNode,event:J})}ge(()=>j(T()),()=>{U(l,T()||"default")}),ge(()=>(o(),h(l)),()=>{U(u,!!o()[h(l)])}),ge(()=>(o(),h(l),Ii),()=>{U(c,o()[h(l)]||Ii)}),ge(()=>(h(u),j(T())),()=>{h(u)||console.warn("003",Dr.error003(T()))}),ge(()=>(j(I()),j(B()),j(P()),j(H()),j(M()),j(k())),()=>{U(f,c2({width:I(),height:B(),initialWidth:P(),initialHeight:H(),measuredWidth:M(),measuredHeight:k()}))}),ge(()=>j(m()),()=>{Fe.set(!!m())}),ge(()=>(h(Oe),h(l),h(rt),j(O()),h(oe),j(R()),j(g()),h(Le)),()=>{(h(Oe)&&h(l)!==h(Oe)||h(rt)&&O()!==h(rt)||h(oe)&&R()!==h(oe))&&requestAnimationFrame(()=>G(new Map([[g(),{id:g(),nodeElement:h(Le),force:!0}]]))),U(Oe,h(l)),U(rt,O()),U(oe,R())}),ge(()=>(j(N()),h(Le),h(Xe),j(K())),()=>{N()&&(h(Le)!==h(Xe)||!K())&&(h(Xe)&&N().unobserve(h(Xe)),h(Le)&&N().observe(h(Le)),U(Xe,h(Le)))}),vt(),He(!0);var be=tt(),Ie=xe(be);{var ht=J=>{var Re=d2();let le;var $n=X(Re);const fn=ve(()=>x()??!1),En=ve(()=>$()??i()??!0),Te=ve(()=>_()??!0),st=ve(()=>C()??s()??!0);fl($n,()=>h(c),(ye,lt)=>{lt(ye,{get data(){return p()},get id(){return g()},get selected(){return h(fn)},get selectable(){return h(En)},get deletable(){return h(Te)},get sourcePosition(){return O()},get targetPosition(){return R()},get zIndex(){return S()},get dragging(){return b()},get draggable(){return h(st)},get dragHandle(){return F()},get parentId(){return se()},get type(){return h(l)},get isConnectable(){return a()},get positionAbsoluteX(){return V()},get positionAbsoluteY(){return A()},get width(){return I()},get height(){return B()}})}),Z(Re),_t(Re,(ye,lt)=>Br==null?void 0:Br(ye,lt),()=>({nodeId:g(),isSelectable:$(),disabled:!1,handleSelector:F(),noDragClass:"nodrag",nodeClickDistance:ee(),onNodeMouseDown:ze,onDrag:(ye,lt,ct,Jt)=>{te("nodedrag",{event:ye,targetNode:ct,nodes:Jt})},onDragStart:(ye,lt,ct,Jt)=>{te("nodedragstart",{event:ye,targetNode:ct,nodes:Jt})},onDragStop:(ye,lt,ct,Jt)=>{te("nodedragstop",{event:ye,targetNode:ct,nodes:Jt})},store:fe})),An(Re,ye=>U(Le,ye),()=>h(Le)),Rt(()=>Ze("click",Re,pe)),Rt(()=>Ze("mouseenter",Re,ye=>te("nodemouseenter",{node:d(),event:ye}))),Rt(()=>Ze("mouseleave",Re,ye=>te("nodemouseleave",{node:d(),event:ye}))),Rt(()=>Ze("mousemove",Re,ye=>te("nodemousemove",{node:d(),event:ye}))),Rt(()=>Ze("contextmenu",Re,ye=>te("nodecontextmenu",{node:d(),event:ye}))),Ee(ye=>{de(Re,"data-id",g()),le=$t(Re,1,wn(ye),null,le,{dragging:b(),selected:x(),draggable:C(),connectable:m(),selectable:$(),nopan:C(),parent:D()}),de(Re,"style",`${E()??""};${h(f).width??""}${h(f).height??""}`),at(Re,"z-index",S()),at(Re,"transform",`translate(${V()??""}px, ${A()??""}px)`),at(Re,"visibility",K()?"visible":"hidden")},[()=>Et(["svelte-flow__node",`svelte-flow__node-${h(l)}`,W()])],ve),L(J,Re)};ke(Ie,J=>{v()||J(ht)})}L(e,be);var dt=ce({get node(){return d()},set node(J){d(J),y()},get id(){return g()},set id(J){g(J),y()},get data(){return p()},set data(J){p(J),y()},get selected(){return x()},set selected(J){x(J),y()},get draggable(){return C()},set draggable(J){C(J),y()},get selectable(){return $()},set selectable(J){$(J),y()},get connectable(){return m()},set connectable(J){m(J),y()},get deletable(){return _()},set deletable(J){_(J),y()},get hidden(){return v()},set hidden(J){v(J),y()},get dragging(){return b()},set dragging(J){b(J),y()},get resizeObserver(){return N()},set resizeObserver(J){N(J),y()},get style(){return E()},set style(J){E(J),y()},get type(){return T()},set type(J){T(J),y()},get isParent(){return D()},set isParent(J){D(J),y()},get positionX(){return V()},set positionX(J){V(J),y()},get positionY(){return A()},set positionY(J){A(J),y()},get sourcePosition(){return O()},set sourcePosition(J){O(J),y()},get targetPosition(){return R()},set targetPosition(J){R(J),y()},get zIndex(){return S()},set zIndex(J){S(J),y()},get measuredWidth(){return M()},set measuredWidth(J){M(J),y()},get measuredHeight(){return k()},set measuredHeight(J){k(J),y()},get initialWidth(){return P()},set initialWidth(J){P(J),y()},get initialHeight(){return H()},set initialHeight(J){H(J),y()},get width(){return I()},set width(J){I(J),y()},get height(){return B()},set height(J){B(J),y()},get dragHandle(){return F()},set dragHandle(J){F(J),y()},get initialized(){return K()},set initialized(J){K(J),y()},get parentId(){return se()},set parentId(J){se(J),y()},get nodeClickDistance(){return ee()},set nodeClickDistance(J){ee(J),y()},get class(){return W()},set class(J){W(J),y()}});return r(),dt}ie(hc,{node:{},id:{},data:{},selected:{},draggable:{},selectable:{},connectable:{},deletable:{},hidden:{},dragging:{},resizeObserver:{},style:{},type:{},isParent:{},positionX:{},positionY:{},sourcePosition:{},targetPosition:{},zIndex:{},measuredWidth:{},measuredHeight:{},initialWidth:{},initialHeight:{},width:{},height:{},dragHandle:{},initialized:{},parentId:{},nodeClickDistance:{},class:{}},[],[],!0);var f2=ne('
    ');const g2={hash:"svelte-tf4uy4",code:".svelte-flow__nodes.svelte-tf4uy4 {width:100%;height:100%;position:absolute;left:0;top:0;}"};function vc(e,t){ue(t,!1),et(e,g2);const[n,r]=nt(),o=()=>Q(c,"$visibleNodes",n),i=()=>Q(f,"$nodesDraggable",n),s=()=>Q(g,"$elementsSelectable",n),a=()=>Q(d,"$nodesConnectable",n),l=()=>Q(x,"$parentLookup",n);let u=w(t,"nodeClickDistance",12,0);const{visibleNodes:c,nodesDraggable:f,nodesConnectable:d,elementsSelectable:g,updateNodeInternals:p,parentLookup:x}=Ue(),C=typeof ResizeObserver>"u"?null:new ResizeObserver(_=>{const v=new Map;_.forEach(b=>{const N=b.target.getAttribute("data-id");v.set(N,{id:N,nodeElement:b.target,force:!0})}),p(v)});$s(()=>{C==null||C.disconnect()}),He();var $=f2();Yt($,5,o,_=>_.id,(_,v)=>{const b=ve(()=>!!h(v).selected),N=ve(()=>!!h(v).hidden),E=ve(()=>!!(h(v).draggable||i()&&typeof h(v).draggable>"u")),T=ve(()=>!!(h(v).selectable||s()&&typeof h(v).selectable>"u")),D=ve(()=>!!(h(v).connectable||a()&&typeof h(v).connectable>"u")),V=ve(()=>h(v).deletable??!0),A=ve(()=>l().has(h(v).id)),O=ve(()=>h(v).type??"default"),R=ve(()=>h(v).internals.z??0),S=ve(()=>Eu(h(v)));hc(_,{get node(){return h(v)},get id(){return h(v).id},get data(){return h(v).data},get selected(){return h(b)},get hidden(){return h(N)},get draggable(){return h(E)},get selectable(){return h(T)},get connectable(){return h(D)},get deletable(){return h(V)},get positionX(){return h(v).internals.positionAbsolute.x},get positionY(){return h(v).internals.positionAbsolute.y},get isParent(){return h(A)},get style(){return h(v).style},get class(){return h(v).class},get type(){return h(O)},get sourcePosition(){return h(v).sourcePosition},get targetPosition(){return h(v).targetPosition},get dragging(){return h(v).dragging},get zIndex(){return h(R)},get dragHandle(){return h(v).dragHandle},get initialized(){return h(S)},get width(){return h(v).width},get height(){return h(v).height},get initialWidth(){return h(v).initialWidth},get initialHeight(){return h(v).initialHeight},get measuredWidth(){return h(v).measured.width},get measuredHeight(){return h(v).measured.height},get parentId(){return h(v).parentId},resizeObserver:C,get nodeClickDistance(){return u()},$$events:{nodeclick(M){De.call(this,t,M)},nodemouseenter(M){De.call(this,t,M)},nodemousemove(M){De.call(this,t,M)},nodemouseleave(M){De.call(this,t,M)},nodedrag(M){De.call(this,t,M)},nodedragstart(M){De.call(this,t,M)},nodedragstop(M){De.call(this,t,M)},nodecontextmenu(M){De.call(this,t,M)}}})}),Z($),L(e,$);var m=ce({get nodeClickDistance(){return u()},set nodeClickDistance(_){u(_),y()}});return r(),m}ie(vc,{nodeClickDistance:{}},[],[],!0);var h2=_e('');function pc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(W,"$edgeTypes",n),i=()=>Q(fe,"$flowId",n),s=()=>Q(me,"$elementsSelectable",n),a=()=>Q(ee,"$edgeLookup",n),l=re(void 0,!0),u=re(void 0,!0),c=re(void 0,!0),f=re(void 0,!0),d=re(void 0,!0);let g=w(t,"id",13),p=w(t,"type",13,"default"),x=w(t,"source",13,""),C=w(t,"target",13,""),$=w(t,"data",29,()=>({})),m=w(t,"style",13,void 0),_=w(t,"zIndex",13,void 0),v=w(t,"animated",13,!1),b=w(t,"selected",13,!1),N=w(t,"selectable",13,void 0),E=w(t,"deletable",13,void 0),T=w(t,"hidden",13,!1),D=w(t,"label",13,void 0),V=w(t,"labelStyle",13,void 0),A=w(t,"markerStart",13,void 0),O=w(t,"markerEnd",13,void 0),R=w(t,"sourceHandle",13,void 0),S=w(t,"targetHandle",13,void 0),M=w(t,"sourceX",13),k=w(t,"sourceY",13),P=w(t,"targetX",13),H=w(t,"targetY",13),I=w(t,"sourcePosition",13),B=w(t,"targetPosition",13),F=w(t,"ariaLabel",13,void 0),K=w(t,"interactionWidth",13,void 0),se=w(t,"class",13,"");Sr("svelteflow__edge_id",g());const{edgeLookup:ee,edgeTypes:W,flowId:fe,elementsSelectable:me}=Ue(),Ce=ii(),he=tc();function ze(te){const Fe=a().get(g());Fe&&(he(g()),Ce("edgeclick",{event:te,edge:Fe}))}function G(te,Fe){const Oe=a().get(g());Oe&&Ce(Fe,{event:te,edge:Oe})}ge(()=>j(p()),()=>{U(l,p()||"default")}),ge(()=>(o(),h(l),zi),()=>{U(u,o()[h(l)]||zi)}),ge(()=>(j(A()),i()),()=>{U(c,A()?`url('#${ta(A(),i())}')`:void 0)}),ge(()=>(j(O()),i()),()=>{U(f,O()?`url('#${ta(O(),i())}')`:void 0)}),ge(()=>(j(N()),s()),()=>{U(d,N()??s())}),vt(),He(!0);var ae=tt(),Me=xe(ae);{var Le=te=>{var Fe=h2(),Oe=X(Fe);let rt;var oe=X(Oe);const pe=ve(()=>E()??!0);fl(oe,()=>h(u),(be,Ie)=>{Ie(be,{get id(){return g()},get source(){return x()},get target(){return C()},get sourceX(){return M()},get sourceY(){return k()},get targetX(){return P()},get targetY(){return H()},get sourcePosition(){return I()},get targetPosition(){return B()},get animated(){return v()},get selected(){return b()},get label(){return D()},get labelStyle(){return V()},get data(){return $()},get style(){return m()},get interactionWidth(){return K()},get selectable(){return h(d)},get deletable(){return h(pe)},get type(){return h(l)},get sourceHandleId(){return R()},get targetHandleId(){return S()},get markerStart(){return h(c)},get markerEnd(){return h(f)}})}),Z(Oe),Z(Fe),Ee(be=>{at(Fe,"z-index",_()),rt=$t(Oe,0,wn(be),null,rt,{animated:v(),selected:b(),selectable:h(d)}),de(Oe,"data-id",g()),de(Oe,"aria-label",F()===null?void 0:F()?F():`Edge from ${x()} to ${C()}`)},[()=>Et(["svelte-flow__edge",se()])],ve),Ze("click",Oe,ze),Ze("contextmenu",Oe,be=>{G(be,"edgecontextmenu")}),Ze("mouseenter",Oe,be=>{G(be,"edgemouseenter")}),Ze("mouseleave",Oe,be=>{G(be,"edgemouseleave")}),L(te,Fe)};ke(Me,te=>{T()||te(Le)})}L(e,ae);var Xe=ce({get id(){return g()},set id(te){g(te),y()},get type(){return p()},set type(te){p(te),y()},get source(){return x()},set source(te){x(te),y()},get target(){return C()},set target(te){C(te),y()},get data(){return $()},set data(te){$(te),y()},get style(){return m()},set style(te){m(te),y()},get zIndex(){return _()},set zIndex(te){_(te),y()},get animated(){return v()},set animated(te){v(te),y()},get selected(){return b()},set selected(te){b(te),y()},get selectable(){return N()},set selectable(te){N(te),y()},get deletable(){return E()},set deletable(te){E(te),y()},get hidden(){return T()},set hidden(te){T(te),y()},get label(){return D()},set label(te){D(te),y()},get labelStyle(){return V()},set labelStyle(te){V(te),y()},get markerStart(){return A()},set markerStart(te){A(te),y()},get markerEnd(){return O()},set markerEnd(te){O(te),y()},get sourceHandle(){return R()},set sourceHandle(te){R(te),y()},get targetHandle(){return S()},set targetHandle(te){S(te),y()},get sourceX(){return M()},set sourceX(te){M(te),y()},get sourceY(){return k()},set sourceY(te){k(te),y()},get targetX(){return P()},set targetX(te){P(te),y()},get targetY(){return H()},set targetY(te){H(te),y()},get sourcePosition(){return I()},set sourcePosition(te){I(te),y()},get targetPosition(){return B()},set targetPosition(te){B(te),y()},get ariaLabel(){return F()},set ariaLabel(te){F(te),y()},get interactionWidth(){return K()},set interactionWidth(te){K(te),y()},get class(){return se()},set class(te){se(te),y()}});return r(),Xe}ie(pc,{id:{},type:{},source:{},target:{},data:{},style:{},zIndex:{},animated:{},selected:{},selectable:{},deletable:{},hidden:{},label:{},labelStyle:{},markerStart:{},markerEnd:{},sourceHandle:{},targetHandle:{},sourceX:{},sourceY:{},targetX:{},targetY:{},sourcePosition:{},targetPosition:{},ariaLabel:{},interactionWidth:{},class:{}},[],[],!0);function mc(e,t){ue(t,!1);let n=w(t,"onMount",12,void 0),r=w(t,"onDestroy",12,void 0);return rn(()=>{var o;return(o=n())==null||o(),r()}),He(),ce({get onMount(){return n()},set onMount(o){n(o),y()},get onDestroy(){return r()},set onDestroy(o){r(o),y()}})}ie(mc,{onMount:{},onDestroy:{}},[],[],!0);var v2=_e("");function yc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(i,"$markers",n),{markers:i}=Ue();He();var s=v2();Yt(s,5,o,a=>a.id,(a,l)=>{wc(a,ft(()=>h(l)))}),Z(s),L(e,s),ce(),r()}ie(yc,{},[],[],!0);var p2=_e(''),m2=_e(''),y2=_e('');function wc(e,t){ue(t,!1);let n=w(t,"id",12),r=w(t,"type",12),o=w(t,"width",12,12.5),i=w(t,"height",12,12.5),s=w(t,"markerUnits",12,"strokeWidth"),a=w(t,"orient",12,"auto-start-reverse"),l=w(t,"color",12,void 0),u=w(t,"strokeWidth",12,void 0);He();var c=y2(),f=X(c);{var d=p=>{var x=p2();Ee(()=>{de(x,"stroke",l()),de(x,"stroke-width",u())}),L(p,x)},g=(p,x)=>{{var C=$=>{var m=m2();Ee(()=>{de(m,"stroke",l()),de(m,"stroke-width",u()),de(m,"fill",l())}),L($,m)};ke(p,$=>{r()===_o.ArrowClosed&&$(C)},x)}};ke(f,p=>{r()===_o.Arrow?p(d):p(g,!1)})}return Z(c),Ee(()=>{de(c,"id",n()),de(c,"markerWidth",`${o()}`),de(c,"markerHeight",`${i()}`),de(c,"markerUnits",s()),de(c,"orient",a())}),L(e,c),ce({get id(){return n()},set id(p){n(p),y()},get type(){return r()},set type(p){r(p),y()},get width(){return o()},set width(p){o(p),y()},get height(){return i()},set height(p){i(p),y()},get markerUnits(){return s()},set markerUnits(p){s(p),y()},get orient(){return a()},set orient(p){a(p),y()},get color(){return l()},set color(p){l(p),y()},get strokeWidth(){return u()},set strokeWidth(p){u(p),y()}})}ie(wc,{id:{},type:{},width:{},height:{},markerUnits:{},orient:{},color:{},strokeWidth:{}},[],[],!0);var w2=ne('
    ');function _c(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(a,"$visibleEdges",n),i=()=>Q(c,"$elementsSelectable",n);let s=w(t,"defaultEdgeOptions",12);const{visibleEdges:a,edgesInitialized:l,edges:{setDefaultOptions:u},elementsSelectable:c}=Ue();rn(()=>{s()&&u(s())}),He();var f=w2(),d=X(f),g=X(d);yc(g,{}),Z(d);var p=z(d,2);Yt(p,1,o,m=>m.id,(m,_)=>{const v=ve(()=>h(_).selectable??i()),b=ve(()=>h(_).type||"default");pc(m,{get id(){return h(_).id},get source(){return h(_).source},get target(){return h(_).target},get data(){return h(_).data},get style(){return h(_).style},get animated(){return h(_).animated},get selected(){return h(_).selected},get selectable(){return h(v)},get deletable(){return h(_).deletable},get hidden(){return h(_).hidden},get label(){return h(_).label},get labelStyle(){return h(_).labelStyle},get markerStart(){return h(_).markerStart},get markerEnd(){return h(_).markerEnd},get sourceHandle(){return h(_).sourceHandle},get targetHandle(){return h(_).targetHandle},get sourceX(){return h(_).sourceX},get sourceY(){return h(_).sourceY},get targetX(){return h(_).targetX},get targetY(){return h(_).targetY},get sourcePosition(){return h(_).sourcePosition},get targetPosition(){return h(_).targetPosition},get ariaLabel(){return h(_).ariaLabel},get interactionWidth(){return h(_).interactionWidth},get class(){return h(_).class},get type(){return h(b)},get zIndex(){return h(_).zIndex},$$events:{edgeclick(N){De.call(this,t,N)},edgecontextmenu(N){De.call(this,t,N)},edgemouseenter(N){De.call(this,t,N)},edgemouseleave(N){De.call(this,t,N)}}})});var x=z(p,2);{var C=m=>{mc(m,{onMount:()=>{ai(l,!0)},onDestroy:()=>{ai(l,!1)}})};ke(x,m=>{o().length>0&&m(C)})}Z(f),L(e,f);var $=ce({get defaultEdgeOptions(){return s()},set defaultEdgeOptions(m){s(m),y()}});return r(),$}ie(_c,{defaultEdgeOptions:{}},[],[],!0);var _2=ne('
    ');const x2={hash:"svelte-1iugwpu",code:".svelte-flow__selection.svelte-1iugwpu {position:absolute;top:0;left:0;}"};function ua(e,t){ue(t,!1),et(e,x2);let n=w(t,"x",12,0),r=w(t,"y",12,0),o=w(t,"width",12,0),i=w(t,"height",12,0),s=w(t,"isVisible",12,!0);var a=tt(),l=xe(a);{var u=c=>{var f=_2();Ee(()=>{at(f,"width",typeof o()=="string"?o():`${o()}px`),at(f,"height",typeof i()=="string"?i():`${i()}px`),at(f,"transform",`translate(${n()}px, ${r()}px)`)}),L(c,f)};ke(l,c=>{s()&&c(u)})}return L(e,a),ce({get x(){return n()},set x(c){n(c),y()},get y(){return r()},set y(c){r(c),y()},get width(){return o()},set width(c){o(c),y()},get height(){return i()},set height(c){i(c),y()},get isVisible(){return s()},set isVisible(c){s(c),y()}})}ie(ua,{x:{},y:{},width:{},height:{},isVisible:{}},[],[],!0);function xc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(s,"$selectionRect",n),i=()=>Q(a,"$selectionRectMode",n),{selectionRect:s,selectionRectMode:a}=Ue();He();const l=ve(()=>!!(o()&&i()==="user")),u=ve(()=>{var g;return(g=o())==null?void 0:g.width}),c=ve(()=>{var g;return(g=o())==null?void 0:g.height}),f=ve(()=>{var g;return(g=o())==null?void 0:g.x}),d=ve(()=>{var g;return(g=o())==null?void 0:g.y});ua(e,{get isVisible(){return h(l)},get width(){return h(u)},get height(){return h(c)},get x(){return h(f)},get y(){return h(d)}}),ce(),r()}ie(xc,{},[],[],!0);var b2=ne('
    ');const C2={hash:"svelte-5pxri",code:".selection-wrapper.svelte-5pxri {position:absolute;top:0;left:0;z-index:7;pointer-events:all;}"};function bc(e,t){ue(t,!1),et(e,C2);const[n,r]=nt(),o=()=>Q(l,"$selectionRectMode",n),i=()=>Q(c,"$nodeLookup",n),s=()=>Q(u,"$nodes",n),a=Ue(),{selectionRectMode:l,nodes:u,nodeLookup:c}=a,f=ii();let d=re(null);function g(m){const _=s().filter(v=>v.selected);f("selectioncontextmenu",{nodes:_,event:m})}function p(m){const _=s().filter(v=>v.selected);f("selectionclick",{nodes:_,event:m})}ge(()=>(o(),i(),s()),()=>{o()==="nodes"&&(U(d,bo(i(),{filter:m=>!!m.selected})),s())}),vt(),He();var x=tt(),C=xe(x);{var $=m=>{var _=b2(),v=X(_);ua(v,{width:"100%",height:"100%",x:0,y:0}),Z(_),_t(_,(b,N)=>Br==null?void 0:Br(b,N),()=>({disabled:!1,store:a,onDrag:(b,N,E,T)=>{f("nodedrag",{event:b,targetNode:null,nodes:T})},onDragStart:(b,N,E,T)=>{f("nodedragstart",{event:b,targetNode:null,nodes:T})},onDragStop:(b,N,E,T)=>{f("nodedragstop",{event:b,targetNode:null,nodes:T})}})),Rt(()=>Ze("contextmenu",_,g)),Rt(()=>Ze("click",_,p)),Rt(()=>Ze("keyup",_,()=>{})),Ee(()=>de(_,"style",`width: ${h(d).width??""}px; height: ${h(d).height??""}px; transform: translate(${h(d).x??""}px, ${h(d).y??""}px)`)),L(m,_)};ke(C,m=>{o()==="nodes"&&h(d)&&zn(h(d).x)&&zn(h(d).y)&&m($)})}L(e,x),ce(),r()}ie(bc,{},[],[],!0);function qe(e,t){let{enabled:n=!0,trigger:r,type:o="keydown"}=t;function i(s){const a=Array.isArray(r)?r:[r],l={alt:s.altKey,ctrl:s.ctrlKey,shift:s.shiftKey,meta:s.metaKey};for(const u of a){const c={modifier:[],preventDefault:!1,enabled:!0,...u},{modifier:f,key:d,callback:g,preventDefault:p,enabled:x}=c;if(x){if(f.length&&!(Array.isArray(f)?f:[f]).map(m=>typeof m=="string"?[m]:m).some(m=>m.every(_=>l[_])))continue;if(s.key===d){p&&s.preventDefault();const C={node:e,trigger:c,originalEvent:s};e.dispatchEvent(new CustomEvent("shortcut",{detail:C})),g==null||g(C)}}}}return n&&e.addEventListener(o,i),{update:s=>{const{enabled:a=!0,type:l="keydown"}=s;n&&(!a||o!==l)?e.removeEventListener(o,i):!n&&a&&e.addEventListener(l,i),n=a,o=l,r=s.trigger},destroy:()=>{e.removeEventListener(o,i)}}}function Cc(e,t){ue(t,!1);let n=w(t,"selectionKey",12,"Shift"),r=w(t,"multiSelectionKey",28,()=>Di()?"Meta":"Control"),o=w(t,"deleteKey",12,"Backspace"),i=w(t,"panActivationKey",12," "),s=w(t,"zoomActivationKey",28,()=>Di()?"Meta":"Control");const{selectionKeyPressed:a,multiselectionKeyPressed:l,deleteKeyPressed:u,panActivationKeyPressed:c,zoomActivationKeyPressed:f,selectionRect:d}=Ue();function g(m){return m!==null&&typeof m=="object"}function p(m){return g(m)?m.modifier||[]:[]}function x(m){return m==null?"":g(m)?m.key:m}function C(m,_){return(Array.isArray(m)?m:[m]).map(b=>{const N=x(b);return{key:N,modifier:p(b),enabled:N!==null,callback:_}})}function $(){d.set(null),a.set(!1),l.set(!1),u.set(!1),c.set(!1),f.set(!1)}return He(),Ze("blur",Vt,$),Ze("contextmenu",Vt,$),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(n(),()=>a.set(!0)),type:"keydown"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(n(),()=>a.set(!1)),type:"keyup"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(r(),()=>l.set(!0)),type:"keydown"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(r(),()=>l.set(!1)),type:"keyup"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(o(),m=>{!(m.originalEvent.ctrlKey||m.originalEvent.metaKey||m.originalEvent.shiftKey)&&!r0(m.originalEvent)&&u.set(!0)}),type:"keydown"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(o(),()=>u.set(!1)),type:"keyup"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(i(),()=>c.set(!0)),type:"keydown"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(i(),()=>c.set(!1)),type:"keyup"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(s(),()=>f.set(!0)),type:"keydown"})),_t(Vt,(m,_)=>qe==null?void 0:qe(m,_),()=>({trigger:C(s(),()=>f.set(!1)),type:"keyup"})),ce({get selectionKey(){return n()},set selectionKey(m){n(m),y()},get multiSelectionKey(){return r()},set multiSelectionKey(m){r(m),y()},get deleteKey(){return o()},set deleteKey(m){o(m),y()},get panActivationKey(){return i()},set panActivationKey(m){i(m),y()},get zoomActivationKey(){return s()},set zoomActivationKey(m){s(m),y()}})}ie(Cc,{selectionKey:{},multiSelectionKey:{},deleteKey:{},panActivationKey:{},zoomActivationKey:{}},[],[],!0);var k2=_e(''),$2=_e('');function kc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(g,"$connection",n),i=()=>Q(p,"$connectionLineType",n),s=()=>Q(f,"$width",n),a=()=>Q(d,"$height",n);let l=w(t,"containerStyle",12,""),u=w(t,"style",12,""),c=w(t,"isCustomComponent",12,!1);const{width:f,height:d,connection:g,connectionLineType:p}=Ue();let x=re(null);ge(()=>(o(),j(c()),i(),h(x),ea),()=>{if(o().inProgress&&!c()){const{from:v,to:b,fromPosition:N,toPosition:E}=o(),T={sourceX:v.x,sourceY:v.y,sourcePosition:N,targetX:b.x,targetY:b.y,targetPosition:E};switch(i()){case Ar.Bezier:(D=>U(x,D[0]))(Tu(T));break;case Ar.Step:(D=>U(x,D[0]))(Li({...T,borderRadius:0}));break;case Ar.SmoothStep:(D=>U(x,D[0]))(Li(T));break;default:(D=>U(x,D[0]))(ea(T))}}}),vt(),He();var C=tt(),$=xe(C);{var m=v=>{var b=$2(),N=X(b),E=X(N);wt(E,t,"connectionLine",{});var T=z(E);{var D=V=>{var A=k2();Ee(()=>{de(A,"d",h(x)),de(A,"style",u())}),L(V,A)};ke(T,V=>{c()||V(D)})}Z(N),Z(b),Ee(V=>{de(b,"width",s()),de(b,"height",a()),de(b,"style",l()),$t(N,0,wn(V))},[()=>Et(["svelte-flow__connection",qv(o().isValid)])],ve),L(v,b)};ke($,v=>{o().inProgress&&v(m)})}L(e,C);var _=ce({get containerStyle(){return l()},set containerStyle(v){l(v),y()},get style(){return u()},set style(v){u(v),y()},get isCustomComponent(){return c()},set isCustomComponent(v){c(v),y()}});return r(),_}ie(kc,{containerStyle:{},style:{},isCustomComponent:{}},["connectionLine"],[],!0);var E2=ne("
    ");function So(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]),r=it(n,["position","style","class"]);ue(t,!1);const[o,i]=nt(),s=()=>Q(f,"$selectionRectMode",o),a=re();let l=w(t,"position",12,"top-right"),u=w(t,"style",12,void 0),c=w(t,"class",12,void 0);const{selectionRectMode:f}=Ue();ge(()=>j(l()),()=>{U(a,`${l()}`.split("-"))}),vt(),He();var d=E2();let g;var p=X(d);wt(p,t,"default",{}),Z(d),Ee(C=>{g=nn(d,g,{class:C,style:u(),...r}),at(d,"pointer-events",s()?"none":"")},[()=>Et(["svelte-flow__panel",c(),...h(a)])],ve),L(e,d);var x=ce({get position(){return l()},set position(C){l(C),y()},get style(){return u()},set style(C){u(C),y()},get class(){return c()},set class(C){c(C),y()}});return i(),x}ie(So,{position:{},style:{},class:{}},["default"],[],!0);var S2=ne('Svelte Flow');function $c(e,t){ue(t,!1);let n=w(t,"proOptions",12,void 0),r=w(t,"position",12,"bottom-right");He();var o=tt(),i=xe(o);{var s=a=>{So(a,{get position(){return r()},class:"svelte-flow__attribution","data-message":"Feel free to remove the attribution or check out how you could support us: https://svelteflow.dev/support-us",children:(l,u)=>{var c=S2();L(l,c)},$$slots:{default:!0}})};ke(i,a=>{var l;(l=n())!=null&&l.hideAttribution||a(s)})}return L(e,o),ce({get proOptions(){return n()},set proOptions(a){n(a),y()},get position(){return r()},set position(a){r(a),y()}})}ie($c,{proOptions:{},position:{}},[],[],!0);function Ec(e,{nodeTypes:t,edgeTypes:n,minZoom:r,maxZoom:o,translateExtent:i,paneClickDistance:s}){t!==void 0&&e.setNodeTypes(t),n!==void 0&&e.setEdgeTypes(n),r!==void 0&&e.setMinZoom(r),o!==void 0&&e.setMaxZoom(o),i!==void 0&&e.setTranslateExtent(i),s!==void 0&&e.setPaneClickDistance(s)}const P2=e=>Object.keys(e);function Sc(e,t){P2(t).forEach(n=>{const r=t[n];r!==void 0&&e[n].set(r)})}function N2(){return typeof window>"u"||!window.matchMedia?null:window.matchMedia("(prefers-color-scheme: dark)")}function T2(e="light"){return Gt("light",n=>{if(e!=="system"){n(e);return}const r=N2(),o=()=>n(r!=null&&r.matches?"dark":"light");return n(r!=null&&r.matches?"dark":"light"),r==null||r.addEventListener("change",o),()=>{r==null||r.removeEventListener("change",o)}})}var M2=ne('
    ',1),H2=ne(" ",1),V2=ne("
    ");const D2={hash:"svelte-12wlba6",code:".svelte-flow.svelte-12wlba6 {width:100%;height:100%;overflow:hidden;position:relative;z-index:0;background-color:var(--background-color, var(--background-color-default));}:root {--background-color-default: #fff;--background-pattern-color-default: #ddd;--minimap-mask-color-default: rgb(240, 240, 240, 0.6);--minimap-mask-stroke-color-default: none;--minimap-mask-stroke-width-default: 1;--controls-button-background-color-default: #fefefe;--controls-button-background-color-hover-default: #f4f4f4;--controls-button-color-default: inherit;--controls-button-color-hover-default: inherit;--controls-button-border-color-default: #eee;}"};function Pc(e,t){const n=e1(t),r=it(t,["children","$$slots","$$events","$$legacy","$$host"]),o=it(r,["id","nodes","edges","fitView","fitViewOptions","minZoom","maxZoom","initialViewport","viewport","nodeTypes","edgeTypes","selectionKey","selectionMode","panActivationKey","multiSelectionKey","zoomActivationKey","nodesDraggable","nodesConnectable","nodeDragThreshold","elementsSelectable","snapGrid","deleteKey","connectionRadius","connectionLineType","connectionMode","connectionLineStyle","connectionLineContainerStyle","onMoveStart","onMove","onMoveEnd","isValidConnection","translateExtent","nodeExtent","onlyRenderVisibleElements","panOnScrollMode","preventScrolling","zoomOnScroll","zoomOnDoubleClick","zoomOnPinch","panOnScroll","panOnDrag","selectionOnDrag","autoPanOnConnect","autoPanOnNodeDrag","onerror","ondelete","onedgecreate","attributionPosition","proOptions","defaultEdgeOptions","width","height","colorMode","onconnect","onconnectstart","onconnectend","onbeforedelete","oninit","nodeOrigin","paneClickDistance","nodeClickDistance","defaultMarkerColor","style","class"]);ue(t,!1),et(e,D2);const[i,s]=nt(),a=()=>Q(_(),"$viewport",i),l=()=>Q(xa,"$initialized",i),u=()=>Q(h(c),"$colorModeClass",i),c=re();let f=w(t,"id",12,"1"),d=w(t,"nodes",12),g=w(t,"edges",12),p=w(t,"fitView",12,void 0),x=w(t,"fitViewOptions",12,void 0),C=w(t,"minZoom",12,void 0),$=w(t,"maxZoom",12,void 0),m=w(t,"initialViewport",12,void 0),_=w(t,"viewport",12,void 0),v=w(t,"nodeTypes",12,void 0),b=w(t,"edgeTypes",12,void 0),N=w(t,"selectionKey",12,void 0),E=w(t,"selectionMode",12,void 0),T=w(t,"panActivationKey",12,void 0),D=w(t,"multiSelectionKey",12,void 0),V=w(t,"zoomActivationKey",12,void 0),A=w(t,"nodesDraggable",12,void 0),O=w(t,"nodesConnectable",12,void 0),R=w(t,"nodeDragThreshold",12,void 0),S=w(t,"elementsSelectable",12,void 0),M=w(t,"snapGrid",12,void 0),k=w(t,"deleteKey",12,void 0),P=w(t,"connectionRadius",12,void 0),H=w(t,"connectionLineType",12,void 0),I=w(t,"connectionMode",28,()=>hr.Strict),B=w(t,"connectionLineStyle",12,""),F=w(t,"connectionLineContainerStyle",12,""),K=w(t,"onMoveStart",12,void 0),se=w(t,"onMove",12,void 0),ee=w(t,"onMoveEnd",12,void 0),W=w(t,"isValidConnection",12,void 0),fe=w(t,"translateExtent",12,void 0),me=w(t,"nodeExtent",12,void 0),Ce=w(t,"onlyRenderVisibleElements",12,void 0),he=w(t,"panOnScrollMode",28,()=>Jn.Free),ze=w(t,"preventScrolling",12,!0),G=w(t,"zoomOnScroll",12,!0),ae=w(t,"zoomOnDoubleClick",12,!0),Me=w(t,"zoomOnPinch",12,!0),Le=w(t,"panOnScroll",12,!1),Xe=w(t,"panOnDrag",12,!0),te=w(t,"selectionOnDrag",12,void 0),Fe=w(t,"autoPanOnConnect",12,!0),Oe=w(t,"autoPanOnNodeDrag",12,!0),rt=w(t,"onerror",12,void 0),oe=w(t,"ondelete",12,void 0),pe=w(t,"onedgecreate",12,void 0),be=w(t,"attributionPosition",12,void 0),Ie=w(t,"proOptions",12,void 0),ht=w(t,"defaultEdgeOptions",12,void 0),dt=w(t,"width",12,void 0),J=w(t,"height",12,void 0),Re=w(t,"colorMode",12,"light"),le=w(t,"onconnect",12,void 0),$n=w(t,"onconnectstart",12,void 0),fn=w(t,"onconnectend",12,void 0),En=w(t,"onbeforedelete",12,void 0),Te=w(t,"oninit",12,void 0),st=w(t,"nodeOrigin",12,void 0),ye=w(t,"paneClickDistance",12,0),lt=w(t,"nodeClickDistance",12,0),ct=w(t,"defaultMarkerColor",12,"#b1b1b7"),Jt=w(t,"style",12,void 0),Oo=w(t,"class",12,void 0),Wt=re(),Ot=re(),Sn=re();const gn=a()||m(),mt=Df(Ri)?Ue():r2({nodes:q(d()),edges:q(g()),width:dt(),height:J(),fitView:p(),nodeOrigin:st(),nodeExtent:me()});rn(()=>(mt.width.set(h(Ot)),mt.height.set(h(Sn)),mt.domNode.set(h(Wt)),mt.syncNodeStores(d()),mt.syncEdgeStores(g()),mt.syncViewport(_()),p()!==void 0&&mt.fitViewOnInit.set(p()),x()&&mt.fitViewOptions.set(x()),Ec(mt,{nodeTypes:v(),edgeTypes:b(),minZoom:C(),maxZoom:$(),translateExtent:fe(),paneClickDistance:ye()}),()=>{mt.reset()}));const{initialized:xa}=mt;let yr=re(!1);ge(()=>(h(Ot),h(Sn)),()=>{h(Ot)!==void 0&&h(Sn)!==void 0&&(mt.width.set(h(Ot)),mt.height.set(h(Sn)))}),ge(()=>(h(yr),l(),j(Te())),()=>{var Y;!h(yr)&&l()&&((Y=Te())==null||Y(),U(yr,!0))}),ge(()=>(j(f()),j(H()),j(P()),j(E()),j(M()),j(ct()),j(A()),j(O()),j(S()),j(Ce()),j(W()),j(Fe()),j(Oe()),j(rt()),j(oe()),j(pe()),j(I()),j(R()),j(le()),j($n()),j(fn()),j(En()),j(st()),Sc),()=>{const Y={flowId:f(),connectionLineType:H(),connectionRadius:P(),selectionMode:E(),snapGrid:M(),defaultMarkerColor:ct(),nodesDraggable:A(),nodesConnectable:O(),elementsSelectable:S(),onlyRenderVisibleElements:Ce(),isValidConnection:W(),autoPanOnConnect:Fe(),autoPanOnNodeDrag:Oe(),onerror:rt(),ondelete:oe(),onedgecreate:pe(),connectionMode:I(),nodeDragThreshold:R(),onconnect:le(),onconnectstart:$n(),onconnectend:fn(),onbeforedelete:En(),nodeOrigin:st()};Sc(mt,Y)}),ge(()=>(j(v()),j(b()),j(C()),j($()),j(fe()),j(ye())),()=>{Ec(mt,{nodeTypes:v(),edgeTypes:b(),minZoom:C(),maxZoom:$(),translateExtent:fe(),paneClickDistance:ye()})}),ge(()=>j(Re()),()=>{l1(U(c,T2(Re())),"$colorModeClass",i)}),vt(),He();var hn=V2();let ji;var Ji=X(hn);Cc(Ji,{get selectionKey(){return N()},get deleteKey(){return k()},get panActivationKey(){return T()},get multiSelectionKey(){return D()},get zoomActivationKey(){return V()}});var Qi=z(Ji,2);const jy=ve(()=>he()===void 0?Jn.Free:he()),Jy=ve(()=>ze()===void 0?!0:ze()),Qy=ve(()=>G()===void 0?!0:G()),ew=ve(()=>ae()===void 0?!0:ae()),tw=ve(()=>Me()===void 0?!0:Me()),nw=ve(()=>Le()===void 0?!1:Le()),rw=ve(()=>Xe()===void 0?!0:Xe()),ow=ve(()=>ye()===void 0?0:ye());uc(Qi,{initialViewport:gn,get onMoveStart(){return K()},get onMove(){return se()},get onMoveEnd(){return ee()},get panOnScrollMode(){return h(jy)},get preventScrolling(){return h(Jy)},get zoomOnScroll(){return h(Qy)},get zoomOnDoubleClick(){return h(ew)},get zoomOnPinch(){return h(tw)},get panOnScroll(){return h(nw)},get panOnDrag(){return h(rw)},get paneClickDistance(){return h(ow)},children:(Y,pw)=>{const aw=ve(()=>Xe()===void 0?!0:Xe());fc(Y,{get panOnDrag(){return h(aw)},get selectionOnDrag(){return te()},$$events:{paneclick(Io){De.call(this,t,Io)},panecontextmenu(Io){De.call(this,t,Io)}},children:(Io,mw)=>{var Vd=H2(),Dd=xe(Vd);gc(Dd,{children:(uw,yw)=>{var Ad=M2(),Ld=xe(Ad);_c(Ld,{get defaultEdgeOptions(){return ht()},$$events:{edgeclick(Be){De.call(this,t,Be)},edgecontextmenu(Be){De.call(this,t,Be)},edgemouseenter(Be){De.call(this,t,Be)},edgemouseleave(Be){De.call(this,t,Be)}}});var Od=z(Ld,2);kc(Od,{get containerStyle(){return F()},get style(){return B()},isCustomComponent:n.connectionLine,$$slots:{connectionLine:(Be,ww)=>{var zd=tt(),dw=xe(zd);wt(dw,t,"connectionLine",{}),L(Be,zd)}}});var Id=z(Od,6);vc(Id,{get nodeClickDistance(){return lt()},$$events:{nodeclick(Be){De.call(this,t,Be)},nodemouseenter(Be){De.call(this,t,Be)},nodemousemove(Be){De.call(this,t,Be)},nodemouseleave(Be){De.call(this,t,Be)},nodedragstart(Be){De.call(this,t,Be)},nodedrag(Be){De.call(this,t,Be)},nodedragstop(Be){De.call(this,t,Be)},nodecontextmenu(Be){De.call(this,t,Be)}}});var cw=z(Id,2);bc(cw,{$$events:{selectionclick(Be){De.call(this,t,Be)},selectioncontextmenu(Be){De.call(this,t,Be)},nodedragstart(Be){De.call(this,t,Be)},nodedrag(Be){De.call(this,t,Be)},nodedragstop(Be){De.call(this,t,Be)}}}),L(uw,Ad)},$$slots:{default:!0}});var lw=z(Dd,2);xc(lw,{}),L(Io,Vd)},$$slots:{default:!0}})},$$slots:{default:!0}});var Hd=z(Qi,2);$c(Hd,{get proOptions(){return Ie()},get position(){return be()}});var iw=z(Hd,2);wt(iw,t,"default",{}),Z(hn),An(hn,Y=>U(Wt,Y),()=>h(Wt)),Ee(Y=>ji=nn(hn,ji,{style:Jt(),class:Y,"data-testid":"svelte-flow__wrapper",...o,role:"application"},"svelte-12wlba6"),[()=>Et(["svelte-flow",Oo(),u()])],ve),ml(hn,"clientWidth",Y=>U(Ot,Y)),ml(hn,"clientHeight",Y=>U(Sn,Y)),Ze("dragover",hn,function(Y){De.call(this,t,Y)}),Ze("drop",hn,function(Y){De.call(this,t,Y)}),L(e,hn);var sw=ce({get id(){return f()},set id(Y){f(Y),y()},get nodes(){return d()},set nodes(Y){d(Y),y()},get edges(){return g()},set edges(Y){g(Y),y()},get fitView(){return p()},set fitView(Y){p(Y),y()},get fitViewOptions(){return x()},set fitViewOptions(Y){x(Y),y()},get minZoom(){return C()},set minZoom(Y){C(Y),y()},get maxZoom(){return $()},set maxZoom(Y){$(Y),y()},get initialViewport(){return m()},set initialViewport(Y){m(Y),y()},get viewport(){return _()},set viewport(Y){_(Y),y()},get nodeTypes(){return v()},set nodeTypes(Y){v(Y),y()},get edgeTypes(){return b()},set edgeTypes(Y){b(Y),y()},get selectionKey(){return N()},set selectionKey(Y){N(Y),y()},get selectionMode(){return E()},set selectionMode(Y){E(Y),y()},get panActivationKey(){return T()},set panActivationKey(Y){T(Y),y()},get multiSelectionKey(){return D()},set multiSelectionKey(Y){D(Y),y()},get zoomActivationKey(){return V()},set zoomActivationKey(Y){V(Y),y()},get nodesDraggable(){return A()},set nodesDraggable(Y){A(Y),y()},get nodesConnectable(){return O()},set nodesConnectable(Y){O(Y),y()},get nodeDragThreshold(){return R()},set nodeDragThreshold(Y){R(Y),y()},get elementsSelectable(){return S()},set elementsSelectable(Y){S(Y),y()},get snapGrid(){return M()},set snapGrid(Y){M(Y),y()},get deleteKey(){return k()},set deleteKey(Y){k(Y),y()},get connectionRadius(){return P()},set connectionRadius(Y){P(Y),y()},get connectionLineType(){return H()},set connectionLineType(Y){H(Y),y()},get connectionMode(){return I()},set connectionMode(Y){I(Y),y()},get connectionLineStyle(){return B()},set connectionLineStyle(Y){B(Y),y()},get connectionLineContainerStyle(){return F()},set connectionLineContainerStyle(Y){F(Y),y()},get onMoveStart(){return K()},set onMoveStart(Y){K(Y),y()},get onMove(){return se()},set onMove(Y){se(Y),y()},get onMoveEnd(){return ee()},set onMoveEnd(Y){ee(Y),y()},get isValidConnection(){return W()},set isValidConnection(Y){W(Y),y()},get translateExtent(){return fe()},set translateExtent(Y){fe(Y),y()},get nodeExtent(){return me()},set nodeExtent(Y){me(Y),y()},get onlyRenderVisibleElements(){return Ce()},set onlyRenderVisibleElements(Y){Ce(Y),y()},get panOnScrollMode(){return he()},set panOnScrollMode(Y){he(Y),y()},get preventScrolling(){return ze()},set preventScrolling(Y){ze(Y),y()},get zoomOnScroll(){return G()},set zoomOnScroll(Y){G(Y),y()},get zoomOnDoubleClick(){return ae()},set zoomOnDoubleClick(Y){ae(Y),y()},get zoomOnPinch(){return Me()},set zoomOnPinch(Y){Me(Y),y()},get panOnScroll(){return Le()},set panOnScroll(Y){Le(Y),y()},get panOnDrag(){return Xe()},set panOnDrag(Y){Xe(Y),y()},get selectionOnDrag(){return te()},set selectionOnDrag(Y){te(Y),y()},get autoPanOnConnect(){return Fe()},set autoPanOnConnect(Y){Fe(Y),y()},get autoPanOnNodeDrag(){return Oe()},set autoPanOnNodeDrag(Y){Oe(Y),y()},get onerror(){return rt()},set onerror(Y){rt(Y),y()},get ondelete(){return oe()},set ondelete(Y){oe(Y),y()},get onedgecreate(){return pe()},set onedgecreate(Y){pe(Y),y()},get attributionPosition(){return be()},set attributionPosition(Y){be(Y),y()},get proOptions(){return Ie()},set proOptions(Y){Ie(Y),y()},get defaultEdgeOptions(){return ht()},set defaultEdgeOptions(Y){ht(Y),y()},get width(){return dt()},set width(Y){dt(Y),y()},get height(){return J()},set height(Y){J(Y),y()},get colorMode(){return Re()},set colorMode(Y){Re(Y),y()},get onconnect(){return le()},set onconnect(Y){le(Y),y()},get onconnectstart(){return $n()},set onconnectstart(Y){$n(Y),y()},get onconnectend(){return fn()},set onconnectend(Y){fn(Y),y()},get onbeforedelete(){return En()},set onbeforedelete(Y){En(Y),y()},get oninit(){return Te()},set oninit(Y){Te(Y),y()},get nodeOrigin(){return st()},set nodeOrigin(Y){st(Y),y()},get paneClickDistance(){return ye()},set paneClickDistance(Y){ye(Y),y()},get nodeClickDistance(){return lt()},set nodeClickDistance(Y){lt(Y),y()},get defaultMarkerColor(){return ct()},set defaultMarkerColor(Y){ct(Y),y()},get style(){return Jt()},set style(Y){Jt(Y),y()},get class(){return Oo()},set class(Y){Oo(Y),y()}});return s(),sw}ie(Pc,{id:{},nodes:{},edges:{},fitView:{},fitViewOptions:{},minZoom:{},maxZoom:{},initialViewport:{},viewport:{},nodeTypes:{},edgeTypes:{},selectionKey:{},selectionMode:{},panActivationKey:{},multiSelectionKey:{},zoomActivationKey:{},nodesDraggable:{},nodesConnectable:{},nodeDragThreshold:{},elementsSelectable:{},snapGrid:{},deleteKey:{},connectionRadius:{},connectionLineType:{},connectionMode:{},connectionLineStyle:{},connectionLineContainerStyle:{},onMoveStart:{},onMove:{},onMoveEnd:{},isValidConnection:{},translateExtent:{},nodeExtent:{},onlyRenderVisibleElements:{},panOnScrollMode:{},preventScrolling:{},zoomOnScroll:{},zoomOnDoubleClick:{},zoomOnPinch:{},panOnScroll:{},panOnDrag:{},selectionOnDrag:{},autoPanOnConnect:{},autoPanOnNodeDrag:{},onerror:{},ondelete:{},onedgecreate:{},attributionPosition:{},proOptions:{},defaultEdgeOptions:{},width:{},height:{},colorMode:{},onconnect:{},onconnectstart:{},onconnectend:{},onbeforedelete:{},oninit:{},nodeOrigin:{},paneClickDistance:{},nodeClickDistance:{},defaultMarkerColor:{},style:{},class:{}},["connectionLine","default"],[],!0);function Nc(e,t){ue(t,!1);let n=w(t,"initialNodes",12,void 0),r=w(t,"initialEdges",12,void 0),o=w(t,"initialWidth",12,void 0),i=w(t,"initialHeight",12,void 0),s=w(t,"fitView",12,void 0),a=w(t,"nodeOrigin",12,void 0);const l=lc({nodes:n(),edges:r(),width:o(),height:i(),nodeOrigin:a(),fitView:s()});Sr(Ri,{getStore:()=>l}),$s(()=>{l.reset()}),He();var u=tt(),c=xe(u);return wt(c,t,"default",{}),L(e,u),ce({get initialNodes(){return n()},set initialNodes(f){n(f),y()},get initialEdges(){return r()},set initialEdges(f){r(f),y()},get initialWidth(){return o()},set initialWidth(f){o(f),y()},get initialHeight(){return i()},set initialHeight(f){i(f),y()},get fitView(){return s()},set fitView(f){s(f),y()},get nodeOrigin(){return a()},set nodeOrigin(f){a(f),y()}})}ie(Nc,{initialNodes:{},initialEdges:{},initialWidth:{},initialHeight:{},fitView:{},nodeOrigin:{}},["default"],[],!0);var A2=ne("");function Po(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]),r=it(n,["class","bgColor","bgColorHover","color","colorHover","borderColor"]);ue(t,!1);let o=w(t,"class",12,void 0),i=w(t,"bgColor",12,void 0),s=w(t,"bgColorHover",12,void 0),a=w(t,"color",12,void 0),l=w(t,"colorHover",12,void 0),u=w(t,"borderColor",12,void 0);He();var c=A2();let f;var d=X(c);return wt(d,t,"default",{class:"button-svg"}),Z(c),Ee(g=>{f=nn(c,f,{type:"button",class:g,...r}),at(c,"--xy-controls-button-background-color-props",i()),at(c,"--xy-controls-button-background-color-hover-props",s()),at(c,"--xy-controls-button-color-props",a()),at(c,"--xy-controls-button-color-hover-props",l()),at(c,"--xy-controls-button-border-color-props",u())},[()=>Et(["svelte-flow__controls-button",o()])],ve),Ze("click",c,function(g){De.call(this,t,g)}),L(e,c),ce({get class(){return o()},set class(g){o(g),y()},get bgColor(){return i()},set bgColor(g){i(g),y()},get bgColorHover(){return s()},set bgColorHover(g){s(g),y()},get color(){return a()},set color(g){a(g),y()},get colorHover(){return l()},set colorHover(g){l(g),y()},get borderColor(){return u()},set borderColor(g){u(g),y()}})}ie(Po,{class:{},bgColor:{},bgColorHover:{},color:{},colorHover:{},borderColor:{}},["default"],[],!0);var L2=_e('');function Tc(e){var t=L2();L(e,t)}ie(Tc,{},[],[],!0);var O2=_e('');function Mc(e){var t=O2();L(e,t)}ie(Mc,{},[],[],!0);var I2=_e('');function Hc(e){var t=I2();L(e,t)}ie(Hc,{},[],[],!0);var z2=_e('');function Vc(e){var t=z2();L(e,t)}ie(Vc,{},[],[],!0);var R2=_e('');function Dc(e){var t=R2();L(e,t)}ie(Dc,{},[],[],!0);var B2=ne(" ",1),Y2=ne(" ",1);function Ac(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(H,"$nodesDraggable",n),i=()=>Q(I,"$nodesConnectable",n),s=()=>Q(B,"$elementsSelectable",n),a=()=>Q(M,"$viewport",n),l=()=>Q(k,"$minZoom",n),u=()=>Q(P,"$maxZoom",n),c=re(),f=re(),d=re(),g=re();let p=w(t,"position",12,"bottom-left"),x=w(t,"showZoom",12,!0),C=w(t,"showFitView",12,!0),$=w(t,"showLock",12,!0),m=w(t,"buttonBgColor",12,void 0),_=w(t,"buttonBgColorHover",12,void 0),v=w(t,"buttonColor",12,void 0),b=w(t,"buttonColorHover",12,void 0),N=w(t,"buttonBorderColor",12,void 0),E=w(t,"ariaLabel",12,void 0),T=w(t,"style",12,void 0),D=w(t,"orientation",12,"vertical"),V=w(t,"fitViewOptions",12,void 0),A=w(t,"class",12,"");const{zoomIn:O,zoomOut:R,fitView:S,viewport:M,minZoom:k,maxZoom:P,nodesDraggable:H,nodesConnectable:I,elementsSelectable:B}=Ue(),F={bgColor:m(),bgColorHover:_(),color:v(),colorHover:b(),borderColor:N()},K=()=>{O()},se=()=>{R()},ee=()=>{S(V())},W=()=>{U(c,!h(c)),H.set(h(c)),I.set(h(c)),B.set(h(c))};ge(()=>(o(),i(),s()),()=>{U(c,o()||i()||s())}),ge(()=>(a(),l()),()=>{U(f,a().zoom<=l())}),ge(()=>(a(),u()),()=>{U(d,a().zoom>=u())}),ge(()=>j(D()),()=>{U(g,D()==="horizontal"?"horizontal":"vertical")}),vt(),He();const fe=ve(()=>Et(["svelte-flow__controls",h(g),A()])),me=ve(()=>E()??"Svelte Flow controls");So(e,{get class(){return h(fe)},get position(){return p()},"data-testid":"svelte-flow__controls",get"aria-label"(){return h(me)},get style(){return T()},children:(he,ze)=>{var G=Y2(),ae=xe(G);wt(ae,t,"before",{});var Me=z(ae,2);{var Le=pe=>{var be=B2(),Ie=xe(be);Po(Ie,ft({class:"svelte-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",get disabled(){return h(d)}},F,{$$events:{click:K},children:(dt,J)=>{Tc(dt)},$$slots:{default:!0}}));var ht=z(Ie,2);Po(ht,ft({class:"svelte-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",get disabled(){return h(f)}},F,{$$events:{click:se},children:(dt,J)=>{Mc(dt)},$$slots:{default:!0}})),L(pe,be)};ke(Me,pe=>{x()&&pe(Le)})}var Xe=z(Me,2);{var te=pe=>{Po(pe,ft({class:"svelte-flow__controls-fitview",title:"fit view","aria-label":"fit view"},F,{$$events:{click:ee},children:(be,Ie)=>{Hc(be)},$$slots:{default:!0}}))};ke(Xe,pe=>{C()&&pe(te)})}var Fe=z(Xe,2);{var Oe=pe=>{Po(pe,ft({class:"svelte-flow__controls-interactive",title:"toggle interactivity","aria-label":"toggle interactivity"},F,{$$events:{click:W},children:(be,Ie)=>{var ht=tt(),dt=xe(ht);{var J=le=>{Dc(le)},Re=le=>{Vc(le)};ke(dt,le=>{h(c)?le(J):le(Re,!1)})}L(be,ht)},$$slots:{default:!0}}))};ke(Fe,pe=>{$()&&pe(Oe)})}var rt=z(Fe,2);wt(rt,t,"default",{});var oe=z(rt,2);wt(oe,t,"after",{}),L(he,G)},$$slots:{default:!0}});var Ce=ce({get position(){return p()},set position(he){p(he),y()},get showZoom(){return x()},set showZoom(he){x(he),y()},get showFitView(){return C()},set showFitView(he){C(he),y()},get showLock(){return $()},set showLock(he){$(he),y()},get buttonBgColor(){return m()},set buttonBgColor(he){m(he),y()},get buttonBgColorHover(){return _()},set buttonBgColorHover(he){_(he),y()},get buttonColor(){return v()},set buttonColor(he){v(he),y()},get buttonColorHover(){return b()},set buttonColorHover(he){b(he),y()},get buttonBorderColor(){return N()},set buttonBorderColor(he){N(he),y()},get ariaLabel(){return E()},set ariaLabel(he){E(he),y()},get style(){return T()},set style(he){T(he),y()},get orientation(){return D()},set orientation(he){D(he),y()},get fitViewOptions(){return V()},set fitViewOptions(he){V(he),y()},get class(){return A()},set class(he){A(he),y()}});return r(),Ce}ie(Ac,{position:{},showZoom:{},showFitView:{},showLock:{},buttonBgColor:{},buttonBgColorHover:{},buttonColor:{},buttonColorHover:{},buttonBorderColor:{},ariaLabel:{},style:{},orientation:{},fitViewOptions:{},class:{}},["before","default","after"],[],!0);var tr;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(tr||(tr={}));var Z2=_e("");function Lc(e,t){ue(t,!1);let n=w(t,"radius",12,5),r=w(t,"class",12,"");He();var o=Z2();return Ee(i=>{de(o,"cx",n()),de(o,"cy",n()),de(o,"r",n()),$t(o,0,wn(i))},[()=>Et(["svelte-flow__background-pattern","dots",r()])],ve),L(e,o),ce({get radius(){return n()},set radius(i){n(i),y()},get class(){return r()},set class(i){r(i),y()}})}ie(Lc,{radius:{},class:{}},[],[],!0);var X2=_e("");function Oc(e,t){ue(t,!1);let n=w(t,"lineWidth",12,1),r=w(t,"dimensions",12),o=w(t,"variant",12,void 0),i=w(t,"class",12,"");He();var s=X2();return Ee(a=>{de(s,"stroke-width",n()),de(s,"d",`M${r()[0]/2} 0 V${r()[1]} M0 ${r()[1]/2} H${r()[0]}`),$t(s,0,wn(a))},[()=>Et(["svelte-flow__background-pattern",o(),i()])],ve),L(e,s),ce({get lineWidth(){return n()},set lineWidth(a){n(a),y()},get dimensions(){return r()},set dimensions(a){r(a),y()},get variant(){return o()},set variant(a){o(a),y()},get class(){return i()},set class(a){i(a),y()}})}ie(Oc,{lineWidth:{},dimensions:{},variant:{},class:{}},[],[],!0);const F2={[tr.Dots]:1,[tr.Lines]:1,[tr.Cross]:6};var W2=_e('');const K2={hash:"svelte-1r7pe8d",code:".svelte-flow__background.svelte-1r7pe8d {position:absolute;width:100%;height:100%;top:0;left:0;}"};function Ic(e,t){ue(t,!1),et(e,K2);const[n,r]=nt(),o=()=>Q(b,"$flowId",n),i=()=>Q(v,"$viewport",n),s=re(),a=re(),l=re(),u=re(),c=re();let f=w(t,"id",12,void 0),d=w(t,"variant",28,()=>tr.Dots),g=w(t,"gap",12,20),p=w(t,"size",12,1),x=w(t,"lineWidth",12,1),C=w(t,"bgColor",12,void 0),$=w(t,"patternColor",12,void 0),m=w(t,"patternClass",12,void 0),_=w(t,"class",12,"");const{viewport:v,flowId:b}=Ue(),N=p()||F2[d()],E=d()===tr.Dots,T=d()===tr.Cross,D=Array.isArray(g())?g():[g(),g()];ge(()=>(o(),j(f())),()=>{U(s,`background-pattern-${o()}-${f()?f():""}`)}),ge(()=>i(),()=>{U(a,[D[0]*i().zoom||1,D[1]*i().zoom||1])}),ge(()=>i(),()=>{U(l,N*i().zoom)}),ge(()=>(h(l),h(a)),()=>{U(u,T?[h(l),h(l)]:h(a))}),ge(()=>(h(l),h(u)),()=>{U(c,E?[h(l)/2,h(l)/2]:[h(u)[0]/2,h(u)[1]/2])}),vt(),He();var V=W2(),A=X(V),O=X(A);{var R=P=>{const H=ve(()=>h(l)/2);Lc(P,{get radius(){return h(H)},get class(){return m()}})},S=P=>{Oc(P,{get dimensions(){return h(u)},get variant(){return d()},get lineWidth(){return x()},get class(){return m()}})};ke(O,P=>{E?P(R):P(S,!1)})}Z(A);var M=z(A);Z(V),Ee(P=>{$t(V,0,wn(P),"svelte-1r7pe8d"),at(V,"--xy-background-color-props",C()),at(V,"--xy-background-pattern-color-props",$()),de(A,"id",h(s)),de(A,"x",i().x%h(a)[0]),de(A,"y",i().y%h(a)[1]),de(A,"width",h(a)[0]),de(A,"height",h(a)[1]),de(A,"patternTransform",`translate(-${h(c)[0]},-${h(c)[1]})`),de(M,"fill",`url(#${h(s)})`)},[()=>Et(["svelte-flow__background",_()])],ve),L(e,V);var k=ce({get id(){return f()},set id(P){f(P),y()},get variant(){return d()},set variant(P){d(P),y()},get gap(){return g()},set gap(P){g(P),y()},get size(){return p()},set size(P){p(P),y()},get lineWidth(){return x()},set lineWidth(P){x(P),y()},get bgColor(){return C()},set bgColor(P){C(P),y()},get patternColor(){return $()},set patternColor(P){$(P),y()},get patternClass(){return m()},set patternClass(P){m(P),y()},get class(){return _()},set class(P){_(P),y()}});return r(),k}ie(Ic,{id:{},variant:{},gap:{},size:{},lineWidth:{},bgColor:{},patternColor:{},patternClass:{},class:{}},[],[],!0);var q2=_e("");function zc(e,t){ue(t,!1);let n=w(t,"x",12),r=w(t,"y",12),o=w(t,"width",12,0),i=w(t,"height",12,0),s=w(t,"borderRadius",12,5),a=w(t,"color",12,void 0),l=w(t,"shapeRendering",12),u=w(t,"strokeColor",12,void 0),c=w(t,"strokeWidth",12,2),f=w(t,"selected",12,!1),d=w(t,"class",12,"");He();var g=q2();let p;return Ee(x=>{p=$t(g,0,wn(x),null,p,{selected:f()}),de(g,"x",n()),de(g,"y",r()),de(g,"rx",s()),de(g,"ry",s()),de(g,"width",o()),de(g,"height",i()),de(g,"style",`${a()?`fill: ${a()};`:""}${u()?`stroke: ${u()};`:""}${c()?`stroke-width: ${c()};`:""}`),de(g,"shape-rendering",l())},[()=>Et(["svelte-flow__minimap-node",d()])],ve),L(e,g),ce({get x(){return n()},set x(x){n(x),y()},get y(){return r()},set y(x){r(x),y()},get width(){return o()},set width(x){o(x),y()},get height(){return i()},set height(x){i(x),y()},get borderRadius(){return s()},set borderRadius(x){s(x),y()},get color(){return a()},set color(x){a(x),y()},get shapeRendering(){return l()},set shapeRendering(x){l(x),y()},get strokeColor(){return u()},set strokeColor(x){u(x),y()},get strokeWidth(){return c()},set strokeWidth(x){c(x),y()},get selected(){return f()},set selected(x){f(x),y()},get class(){return d()},set class(x){d(x),y()}})}ie(zc,{x:{},y:{},width:{},height:{},borderRadius:{},color:{},shapeRendering:{},strokeColor:{},strokeWidth:{},selected:{},class:{}},[],[],!0);function ca(e,t){const n=H0({domNode:e,panZoom:t.panZoom,getTransform:()=>{const o=q(t.viewport);return[o.x,o.y,o.zoom]},getViewScale:t.getViewScale});function r(o){n.update({translateExtent:o.translateExtent,width:o.width,height:o.height,inversePan:o.inversePan,zoomStep:o.zoomStep,pannable:o.pannable,zoomable:o.zoomable})}return{update:r,destroy(){n.destroy()}}}const da=e=>e instanceof Function?e:()=>e;var G2=_e(" "),U2=_e('');function Rc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(Xe,"$flowId",n),i=()=>Q(ae,"$viewport",n),s=()=>Q(Me,"$containerWidth",n),a=()=>Q(Le,"$containerHeight",n),l=()=>Q(G,"$nodeLookup",n),u=()=>Q(ze,"$nodes",n),c=()=>Q(te,"$panZoom",n),f=()=>Q(Fe,"$translateExtent",n),d=re(),g=re(),p=re(),x=re(),C=re(),$=re(),m=re(),_=re(),v=re(),b=re(),N=re(),E=re(),T=re();let D=w(t,"position",12,"bottom-right"),V=w(t,"ariaLabel",12,"Mini map"),A=w(t,"nodeStrokeColor",12,"transparent"),O=w(t,"nodeColor",12,void 0),R=w(t,"nodeClass",12,""),S=w(t,"nodeBorderRadius",12,5),M=w(t,"nodeStrokeWidth",12,2),k=w(t,"bgColor",12,void 0),P=w(t,"maskColor",12,void 0),H=w(t,"maskStrokeColor",12,void 0),I=w(t,"maskStrokeWidth",12,void 0),B=w(t,"width",12,void 0),F=w(t,"height",12,void 0),K=w(t,"pannable",12,!0),se=w(t,"zoomable",12,!0),ee=w(t,"inversePan",12,void 0),W=w(t,"zoomStep",12,void 0),fe=w(t,"style",12,""),me=w(t,"class",12,"");const Ce=200,he=150,{nodes:ze,nodeLookup:G,viewport:ae,width:Me,height:Le,flowId:Xe,panZoom:te,translateExtent:Fe}=Ue(),Oe=O()===void 0?void 0:da(O()),rt=da(A()),oe=da(R()),pe=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision",be=`svelte-flow__minimap-desc-${o()}`;let Ie=re(h(d));const ht=()=>h($);ge(()=>(i(),s(),a()),()=>{U(d,{x:-i().x/i().zoom,y:-i().y/i().zoom,width:s()/i().zoom,height:a()/i().zoom})}),ge(()=>(l(),h(d),u()),()=>{U(Ie,l().size>0?Cu(bo(l()),h(d)):h(d)),u()}),ge(()=>j(B()),()=>{U(g,B()??Ce)}),ge(()=>j(F()),()=>{U(p,F()??he)}),ge(()=>(h(Ie),h(g)),()=>{U(x,h(Ie).width/h(g))}),ge(()=>(h(Ie),h(p)),()=>{U(C,h(Ie).height/h(p))}),ge(()=>(h(x),h(C)),()=>{U($,Math.max(h(x),h(C)))}),ge(()=>(h($),h(g)),()=>{U(m,h($)*h(g))}),ge(()=>(h($),h(p)),()=>{U(_,h($)*h(p))}),ge(()=>h($),()=>{U(v,5*h($))}),ge(()=>(h(Ie),h(m),h(v)),()=>{U(b,h(Ie).x-(h(m)-h(Ie).width)/2-h(v))}),ge(()=>(h(Ie),h(_),h(v)),()=>{U(N,h(Ie).y-(h(_)-h(Ie).height)/2-h(v))}),ge(()=>(h(m),h(v)),()=>{U(E,h(m)+h(v)*2)}),ge(()=>(h(_),h(v)),()=>{U(T,h(_)+h(v)*2)}),vt(),He();const dt=ve(()=>fe()+(k()?`;--xy-minimap-background-color-props:${k()}`:"")),J=ve(()=>Et(["svelte-flow__minimap",me()]));So(e,{get position(){return D()},get style(){return h(dt)},get class(){return h(J)},"data-testid":"svelte-flow__minimap",children:(le,$n)=>{var fn=tt(),En=xe(fn);{var Te=st=>{var ye=U2();de(ye,"aria-labelledby",be);var lt=X(ye);{var ct=Wt=>{var Ot=G2();de(Ot,"id",be);var Sn=X(Ot,!0);Z(Ot),Ee(()=>Bt(Sn,V())),L(Wt,Ot)};ke(lt,Wt=>{V()&&Wt(ct)})}var Jt=z(lt);Yt(Jt,1,u,Wt=>Wt.id,(Wt,Ot)=>{var Sn=tt();const gn=ve(()=>l().get(h(Ot).id));var mt=xe(Sn);{var xa=yr=>{const hn=ve(()=>Qn(h(gn))),ji=ve(()=>Oe==null?void 0:Oe(h(gn))),Ji=ve(()=>rt(h(gn))),Qi=ve(()=>oe(h(gn)));zc(yr,ft({get x(){return h(gn).internals.positionAbsolute.x},get y(){return h(gn).internals.positionAbsolute.y}},()=>h(hn),{get selected(){return h(gn).selected},get color(){return h(ji)},get borderRadius(){return S()},get strokeColor(){return h(Ji)},get strokeWidth(){return M()},shapeRendering:pe,get class(){return h(Qi)}}))};ke(mt,yr=>{h(gn)&&Eu(h(gn))&&yr(xa)})}L(Wt,Sn)});var Oo=z(Jt);Z(ye),_t(ye,(Wt,Ot)=>ca==null?void 0:ca(Wt,Ot),()=>({panZoom:c(),viewport:ae,getViewScale:ht,translateExtent:f(),width:s(),height:a(),inversePan:ee(),zoomStep:W(),pannable:K(),zoomable:se()})),Ee(()=>{de(ye,"width",h(g)),de(ye,"height",h(p)),de(ye,"viewBox",`${h(b)??""} ${h(N)??""} ${h(E)??""} ${h(T)??""}`),at(ye,"--xy-minimap-mask-background-color-props",P()),at(ye,"--xy-minimap-mask-stroke-color-props",H()),at(ye,"--xy-minimap-mask-stroke-width-props",I()?I()*h($):void 0),de(Oo,"d",`M${h(b)-h(v)},${h(N)-h(v)}h${h(E)+h(v)*2}v${h(T)+h(v)*2}h${-h(E)-h(v)*2}z + M${h(d).x??""},${h(d).y??""}h${h(d).width??""}v${h(d).height??""}h${-h(d).width}z`)}),L(st,ye)};ke(En,st=>{c()&&st(Te)})}L(le,fn)},$$slots:{default:!0}});var Re=ce({get position(){return D()},set position(le){D(le),y()},get ariaLabel(){return V()},set ariaLabel(le){V(le),y()},get nodeStrokeColor(){return A()},set nodeStrokeColor(le){A(le),y()},get nodeColor(){return O()},set nodeColor(le){O(le),y()},get nodeClass(){return R()},set nodeClass(le){R(le),y()},get nodeBorderRadius(){return S()},set nodeBorderRadius(le){S(le),y()},get nodeStrokeWidth(){return M()},set nodeStrokeWidth(le){M(le),y()},get bgColor(){return k()},set bgColor(le){k(le),y()},get maskColor(){return P()},set maskColor(le){P(le),y()},get maskStrokeColor(){return H()},set maskStrokeColor(le){H(le),y()},get maskStrokeWidth(){return I()},set maskStrokeWidth(le){I(le),y()},get width(){return B()},set width(le){B(le),y()},get height(){return F()},set height(le){F(le),y()},get pannable(){return K()},set pannable(le){K(le),y()},get zoomable(){return se()},set zoomable(le){se(le),y()},get inversePan(){return ee()},set inversePan(le){ee(le),y()},get zoomStep(){return W()},set zoomStep(le){W(le),y()},get style(){return fe()},set style(le){fe(le),y()},get class(){return me()},set class(le){me(le),y()}});return r(),Re}ie(Rc,{position:{},ariaLabel:{},nodeStrokeColor:{},nodeColor:{},nodeClass:{},nodeBorderRadius:{},nodeStrokeWidth:{},bgColor:{},maskColor:{},maskStrokeColor:{},maskStrokeWidth:{},width:{},height:{},pannable:{},zoomable:{},inversePan:{},zoomStep:{},style:{},class:{}},[],[],!0);const Bc=e=>Uv(e);function Lt(){const{zoomIn:e,zoomOut:t,fitView:n,onbeforedelete:r,snapGrid:o,viewport:i,width:s,height:a,minZoom:l,maxZoom:u,panZoom:c,nodes:f,edges:d,domNode:g,nodeLookup:p,nodeOrigin:x,edgeLookup:C,connectionLookup:$}=Ue(),m=b=>{var V,A;const N=q(p),E=Bc(b)?b:N.get(b.id),T=E.parentId?e0(E.position,E.measured,E.parentId,N,q(x)):E.position,D={...E,position:T,width:((V=E.measured)==null?void 0:V.width)??E.width,height:((A=E.measured)==null?void 0:A.height)??E.height};return Or(D)},_=(b,N,E={replace:!1})=>{var V;const T=(V=q(p).get(b))==null?void 0:V.internals.userNode;if(!T)return;const D=typeof N=="function"?N(T):N;E.replace?f.update(A=>A.map(O=>O.id===b?Bc(D)?D:{...O,...D}:O)):(Object.assign(T,D),f.update(A=>A))},v=b=>q(p).get(b);return{zoomIn:e,zoomOut:t,getInternalNode:v,getNode:b=>{var N;return(N=v(b))==null?void 0:N.internals.userNode},getNodes:b=>b===void 0?q(f):Yc(q(p),b),getEdge:b=>q(C).get(b),getEdges:b=>b===void 0?q(d):Yc(q(C),b),setZoom:(b,N)=>{const E=q(c);return E?E.scaleTo(b,{duration:N==null?void 0:N.duration}):Promise.resolve(!1)},getZoom:()=>q(i).zoom,setViewport:async(b,N)=>{const E=q(i),T=q(c);return T?(await T.setViewport({x:b.x??E.x,y:b.y??E.y,zoom:b.zoom??E.zoom},{duration:N==null?void 0:N.duration}),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>q(i),setCenter:async(b,N,E)=>{const T=typeof(E==null?void 0:E.zoom)<"u"?E.zoom:q(u),D=q(c);return D?(await D.setViewport({x:q(s)/2-b*T,y:q(a)/2-N*T,zoom:T},{duration:E==null?void 0:E.duration}),Promise.resolve(!0)):Promise.resolve(!1)},fitView:n,fitBounds:async(b,N)=>{const E=q(c);if(!E)return Promise.resolve(!1);const T=js(b,q(s),q(a),q(l),q(u),(N==null?void 0:N.padding)??.1);return await E.setViewport(T,{duration:N==null?void 0:N.duration}),Promise.resolve(!0)},getIntersectingNodes:(b,N=!0,E)=>{const T=ku(b),D=T?b:m(b);return D?(E||q(f)).filter(V=>{const A=q(p).get(V.id);if(!A||!T&&V.id===b.id)return!1;const O=Or(A),R=Co(O,D);return N&&R>0||R>=D.width*D.height}):[]},isNodeIntersecting:(b,N,E=!0)=>{const D=ku(b)?b:m(b);if(!D)return!1;const V=Co(D,N);return E&&V>0||V>=D.width*D.height},deleteElements:async({nodes:b=[],edges:N=[]})=>{const{nodes:E,edges:T}=await wu({nodesToRemove:b,edgesToRemove:N,nodes:q(f),edges:q(d),onBeforeDelete:q(r)});return E&&f.update(D=>D.filter(V=>!E.some(({id:A})=>A===V.id))),T&&d.update(D=>D.filter(V=>!T.some(({id:A})=>A===V.id))),{deletedNodes:E,deletedEdges:T}},screenToFlowPosition:(b,N={snapToGrid:!0})=>{const E=q(g);if(!E)return b;const T=N.snapToGrid?q(o):!1,{x:D,y:V,zoom:A}=q(i),{x:O,y:R}=E.getBoundingClientRect(),S={x:b.x-O,y:b.y-R};return ko(S,[D,V,A],T!==null,T||[1,1])},flowToScreenPosition:b=>{const N=q(g);if(!N)return b;const{x:E,y:T,zoom:D}=q(i),{x:V,y:A}=N.getBoundingClientRect(),O=$u(b,[E,T,D]);return{x:O.x+V,y:O.y+A}},toObject:()=>({nodes:q(f).map(b=>({...b,position:{...b.position},data:{...b.data}})),edges:q(d).map(b=>({...b})),viewport:{...q(i)}}),updateNode:_,updateNodeData:(b,N,E)=>{var V;const T=(V=q(p).get(b))==null?void 0:V.internals.userNode;if(!T)return;const D=typeof N=="function"?N(T):N;T.data=E!=null&&E.replace?D:{...T.data,...D},f.update(A=>A)},getNodesBounds:b=>{const N=q(p),E=q(x);return jv(b,{nodeLookup:N,nodeOrigin:E})},getHandleConnections:({type:b,id:N,nodeId:E})=>{var T;return Array.from(((T=q($).get(`${E}-${b}-${N??null}`))==null?void 0:T.values())??[])},viewport:i}}function Yc(e,t){var r;const n=[];for(const o of t){const i=e.get(o);if(i){const s="internals"in i?(r=i.internals)==null?void 0:r.userNode:i;n.push(s)}}return n}var j2=ne('
    ');function Zc(e,t){ue(t,!1);const[n,r]=nt(),o=()=>Q(_,"$nodes",n),i=()=>Q(m,"$nodeLookup",n),s=()=>Q($,"$viewport",n),a=()=>Q(C,"$domNode",n),l=re(),u=re(),c=re();let f=w(t,"nodeId",12,void 0),d=w(t,"position",12,void 0),g=w(t,"align",12,void 0),p=w(t,"offset",12,void 0),x=w(t,"isVisible",12,void 0);const{domNode:C,viewport:$,nodeLookup:m,nodes:_}=Ue(),{getNodesBounds:v}=Lt(),b=ur("svelteflow__node_id");let N=re(),E=re([]),T=p()!==void 0?p():10,D=d()!==void 0?d():$e.Top,V=g()!==void 0?g():"center";ge(()=>(o(),j(f()),i()),()=>{o();const M=Array.isArray(f())?f():[f()||b];U(E,M.reduce((k,P)=>{const H=i().get(P);return H&&k.push(H),k},[]))}),ge(()=>(h(E),s()),()=>{const M=v(h(E));M&&U(N,v0(M,s(),D,T,V))}),ge(()=>h(E),()=>{U(l,h(E).length===0?1:Math.max(...h(E).map(M=>(M.internals.z||5)+1)))}),ge(()=>o(),()=>{U(u,o().filter(M=>M.selected).length)}),ge(()=>(j(x()),h(E),h(u)),()=>{U(c,typeof x()=="boolean"?x():h(E).length===1&&h(E)[0].selected&&h(u)===1)}),vt(),He();var A=tt(),O=xe(A);{var R=M=>{var k=j2(),P=X(k);wt(P,t,"default",{}),Z(k),_t(k,(H,I)=>Rr==null?void 0:Rr(H,I),()=>({domNode:a()})),Ee(H=>{de(k,"data-id",H),at(k,"position","absolute"),at(k,"transform",h(N)),at(k,"z-index",h(l))},[()=>h(E).reduce((H,I)=>`${H}${I.id} `,"").trim()],ve),L(M,k)};ke(O,M=>{a()&&h(c)&&h(E)&&M(R)})}L(e,A);var S=ce({get nodeId(){return f()},set nodeId(M){f(M),y()},get position(){return d()},set position(M){d(M),y()},get align(){return g()},set align(M){g(M),y()},get offset(){return p()},set offset(M){p(M),y()},get isVisible(){return x()},set isVisible(M){x(M),y()}});return r(),S}ie(Zc,{nodeId:{},position:{},align:{},offset:{},isVisible:{}},["default"],[],!0);function pr(e){const{nodes:t,nodeLookup:n}=Ue();let r=[],o=!0;return Un([t,n],([,i],s)=>{var c;const a=[],l=Array.isArray(e),u=l?e:[e];for(const f of u){const d=(c=i.get(f))==null?void 0:c.internals.userNode;d&&a.push({id:d.id,type:d.type,data:d.data})}(!C0(a,r)||o)&&(r=a,s(l?a:a[0]??null),o=!1)})}const Xc="tinyflow-component";class J2{constructor(t){Nt(this,"options");Nt(this,"rootEl");Nt(this,"svelteFlowInstance");if(typeof t.element!="string"&&!(t.element instanceof Element))throw new Error("element must be a string or Element");this._setOptions(t),this._init()}_init(){if(typeof this.options.element=="string"){if(this.rootEl=document.querySelector(this.options.element),!this.rootEl)throw new Error(`element not found by document.querySelector('${this.options.element}')`)}else if(this.options.element instanceof Element)this.rootEl=this.options.element;else throw new Error("element must be a string or Element");const t=document.createElement(Xc);t.style.display="block",t.style.width="100%",t.style.height="100%",t.classList.add("tf-theme-light"),t.options=this.options,t.onInit=n=>{this.svelteFlowInstance=n},this.rootEl.appendChild(t)}_setOptions(t){this.options={...t}}getOptions(){return this.options}getData(){return this.svelteFlowInstance.toObject()}setData(t){this.options.data=t;const n=document.createElement(Xc);n.style.display="block",n.style.width="100%",n.style.height="100%",n.classList.add("tf-theme-light"),n.options=this.options,n.onInit=r=>{this.svelteFlowInstance=r},this.destroy(),this.rootEl.appendChild(n)}destroy(){for(;this.rootEl.firstChild;)this.rootEl.removeChild(this.rootEl.firstChild)}}const Bi=(()=>{const e=we([]),t=we([]),n=we({x:250,y:100,zoom:1});return{nodes:e,edges:t,viewport:n,init:(r,o)=>{e.set(r),t.set(o)},addNode:r=>{e.update(o=>[...o,r])},removeNode:r=>{e.update(o=>o.filter(i=>i.id!==r))},updateNode:(r,o)=>{e.update(i=>i.map(s=>s.id===r?o:s))},updateNodeData:(r,o)=>{e.update(i=>i.map(s=>s.id===r?{...s,data:{...s.data,...o}}:s))},selectNodeOnly:r=>{e.update(o=>o.map(i=>i.id===r?{...i,selected:!0}:{...i,selected:!1}))},addEdge:r=>{t.update(o=>[...o,r])},removeEdge:r=>{t.update(o=>o.filter(i=>i.id!==r))},updateEdge:(r,o)=>{t.update(i=>i.map(s=>s.id===r?o:s))},updateEdgeData:(r,o)=>{t.update(i=>i.map(s=>s.id===r?{...s,data:o}:s))}}})();var Q2=ne("");function Ge(e,t){ue(t,!0);const n=w(t,"children",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","children"]);var o=Q2();let i;var s=X(o);return cr(s,()=>n()??gt),Z(o),Ee(()=>i=nn(o,i,{type:"button",...r,class:`tf-btn nopan nodrag ${t.class??""}`})),L(e,o),ce({get children(){return n()},set children(a){n(a),y()}})}ie(Ge,{children:{}},[],[],!0);var ep=ne("");function Fc(e,t){ue(t,!0);const n=xt(t,["$$slots","$$events","$$legacy","$$host"]);var r=ep();ao(r);let o;Ee(()=>o=nn(r,o,{type:"checkbox",...n,class:`tf-checkbox nopan nodrag ${t.class??""}`})),L(e,r),ce()}ie(Fc,{},[],[],!0);var tp=ne("");function St(e,t){ue(t,!0);const n=xt(t,["$$slots","$$events","$$legacy","$$host"]);var r=tp();ao(r);let o;Ee(()=>o=nn(r,o,{type:"text",...n,class:`tf-input nopan nodrag ${t.class??""}`})),L(e,r),ce()}ie(St,{},[],[],!0);var np=ne("");function Pt(e,t){ue(t,!0);const n=xt(t,["$$slots","$$events","$$legacy","$$host"]);var r=np();Wf(r);let o;Ee(()=>o=nn(r,o,{...n,class:`tf-textarea nodrag ${t.class??""}`})),L(e,r),ce()}ie(Pt,{},[],[],!0);var rp=ne('
    '),op=ne("
    ");function Wc(e,t){const n=it(t,["children","$$slots","$$events","$$legacy","$$host"]),r=it(n,["items","onChange","activeIndex"]);ue(t,!1);let o=w(t,"items",28,()=>[]),i=w(t,"onChange",12,()=>{}),s=w(t,"activeIndex",12,0);function a(c,f){var d;s(f),(d=i())==null||d(c,f)}He();var l=op();let u;return Yt(l,5,o,oi,(c,f,d)=>{var g=rp();de(g,"tabindex",d),g.__click=()=>a(h(f),d),g.__keydown=$=>{($.key==="Enter"||$.key===" ")&&($.preventDefault(),a(h(f),d))};var p=X(g);{var x=$=>{var m=Ae();Ee(()=>Bt(m,h(f).label)),L($,m)},C=$=>{var m=tt(),_=xe(m);cr(_,()=>h(f).label??gt),L($,m)};ke(p,$=>{typeof h(f).label=="string"?$(x):$(C,!1)})}Z(g),Ee(()=>$t(g,1,`tf-tabs-item ${(d===s()?"active":"")??""}`)),L(c,g)}),Z(l),Ee(()=>u=nn(l,u,{...r,class:`tf-tabs ${r.class??""}`})),L(e,l),ce({get items(){return o()},set items(c){o(c),y()},get onChange(){return i()},set onChange(c){i(c),y()},get activeIndex(){return s()},set activeIndex(c){s(c),y()}})}ri(["click","keydown"]),ie(Wc,{items:{},onChange:{},activeIndex:{}},[],[],!0);var ip=(e,t,n)=>t(h(n)),sp=(e,t,n)=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),t(h(n)))},ap=ne(''),lp=ne('
    '),up=ne('
    '),cp=ne('
    '),dp=ne("
    ");const fp={hash:"svelte-1jfktzw",code:`\r + /* 定义旋转的 CSS 类 */.rotate-90.svelte-1jfktzw {transform:rotate(90deg);transition:transform 0.3s ease;}`};function Kc(e,t){ue(t,!0),et(e,fp);let n=w(t,"items",7),r=w(t,"onChange",7),o=w(t,"activeKeys",31,()=>Ht([]));function i(a){var l;o().includes(a.key)?o(o().filter(u=>u!==a.key)):(o().push(a.key),o(o())),(l=r())==null||l(a,o())}var s=dp();return Yt(s,21,n,oi,(a,l,u)=>{var c=cp(),f=X(c);de(f,"tabindex",u),f.__click=[ip,i,l],f.__keydown=[sp,i,l];var d=X(f);{var g=v=>{var b=ap(),N=X(b);nr(N,{get target(){return h(l).icon}}),Z(b),L(v,b)};ke(d,v=>{h(l).icon&&v(g)})}var p=z(d,2);nr(p,{get target(){return h(l).title}});var x=z(p,2);Z(f);var C=z(f,2);{var $=v=>{var b=lp(),N=X(b);nr(N,{get target(){return h(l).description}}),Z(b),L(v,b)};ke(C,v=>{h(l).description&&v($)})}var m=z(C,2);{var _=v=>{var b=up(),N=X(b);nr(N,{get target(){return h(l).content}}),Z(b),L(v,b)};ke(m,v=>{o().includes(h(l).key)&&v(_)})}Z(c),Ee(v=>$t(x,1,`tf-collapse-item-title-arrow ${v??""}`,"svelte-1jfktzw"),[()=>o().includes(h(l).key)?"rotate-90":""]),L(a,c)}),Z(s),Ee(()=>{de(s,"style",t.style),$t(s,1,`tf-collapse ${t.class??""}`,"svelte-1jfktzw")}),L(e,s),ce({get items(){return n()},set items(a){n(a),y()},get onChange(){return r()},set onChange(a){r(a),y()},get activeKeys(){return o()},set activeKeys(a=[]){o(a),y()}})}ri(["click","keydown"]),ie(Kc,{items:{},onChange:{},activeKeys:{}},[],[],!0);function nr(e,t){ue(t,!0);let n=w(t,"target",7);typeof n()>"u"&&n("undefined");var r=tt(),o=xe(r);{var i=a=>{var l=tt(),u=xe(l);cr(u,()=>n()??gt),L(a,l)},s=a=>{var l=tt(),u=xe(l);dl(u,n),L(a,l)};ke(o,a=>{typeof n()=="function"?a(i):a(s,!1)})}return L(e,r),ce({get target(){return n()},set target(a){n(a),y()}})}ie(nr,{target:{}},[],[],!0);var gp=(e,t,n)=>t(h(n)),hp=_e(''),vp=ne('
    '),pp=ne(' ',1),mp=ne('
    '),yp=ne(" ",1),wp=ne('
    '),_p=ne(''),xp=ne("
    ");function ln(e,t){ue(t,!0);const n=(_,v=gt)=>{var b=tt(),N=xe(b);Yt(N,19,v,(E,T)=>`${T}_${E.value}`,(E,T)=>{var D=pp(),V=xe(D);V.__click=[gp,x,T];var A=X(V),O=X(A);{var R=P=>{var H=hp();L(P,H)};ke(O,P=>{h(T).children&&h(T).children.length>0&&P(R)})}Z(A);var S=z(A,2);nr(S,{get target(){return h(T).label}}),Z(V);var M=z(V,2);{var k=P=>{var H=vp(),I=X(H);n(I,()=>h(T).children),Z(H),L(P,H)};ke(M,P=>{h(T).children&&h(T).children.length>0&&(l()||c().includes(h(T).value))&&P(k)})}L(E,D)}),L(_,b)};let r=w(t,"items",7),o=w(t,"onExpand",7),i=w(t,"onSelect",7),s=w(t,"value",23,()=>[]),a=w(t,"defaultValue",23,()=>[]),l=w(t,"expandAll",7,!0),u=w(t,"multiple",7,!1),c=w(t,"expandValue",23,()=>[]),f=w(t,"placeholder",7),d=xt(t,["$$slots","$$events","$$legacy","$$host","items","onExpand","onSelect","value","defaultValue","expandAll","multiple","expandValue","placeholder"]),g=Ne(()=>{const _=[],v=b=>{for(let N of b)s().length>0?s().includes(N.value)&&_.push(N):a().includes(N.value)&&_.push(N),N.children&&N.children.length>0&&v(N.children)};return v(r()),_}),p;function x(_){var v,b;if(_.children&&_.children.length>0){(v=o())==null||v(_);return}else p==null||p.hide(),(b=i())==null||b(_)}var C=xp();let $;var m=X(C);return An(Do(m,{floating:v=>{var b=mp(),N=X(b);n(N,r),Z(b),L(v,b)},children:(v,b)=>{var N=_p();let E;var T=X(N);Yt(T,23,()=>h(g),(D,V)=>`${V}_${D.value}`,(D,V,A)=>{var O=tt(),R=xe(O);{var S=k=>{var P=tt(),H=xe(P);{var I=B=>{nr(B,{get target(){return h(V).label}})};ke(H,B=>{h(A)===0&&B(I)})}L(k,P)},M=k=>{var P=yp(),H=xe(P);nr(H,{get target(){return h(V).label}});var I=z(H,2);{var B=F=>{var K=Ae(",");L(F,K)};ke(I,F=>{h(A){u()?k(M,!1):k(S)})}L(D,O)},D=>{var V=wp(),A=X(V,!0);Z(V),Ee(()=>Bt(A,f())),L(D,V)}),Z(T),Pe(2),Z(N),Ee(()=>E=nn(N,E,{class:"tf-select-input nopan nodrag",...d})),L(v,N)},$$slots:{floating:!0,default:!0}}),v=>p=v,()=>p),Z(C),Ee(()=>$=nn(C,$,{...d,class:`tf-select ${d.class??""}`})),L(e,C),ce({get items(){return r()},set items(_){r(_),y()},get onExpand(){return o()},set onExpand(_){o(_),y()},get onSelect(){return i()},set onSelect(_){i(_),y()},get value(){return s()},set value(_=[]){s(_),y()},get defaultValue(){return a()},set defaultValue(_=[]){a(_),y()},get expandAll(){return l()},set expandAll(_=!0){l(_),y()},get multiple(){return u()},set multiple(_=!1){u(_),y()},get expandValue(){return c()},set expandValue(_=[]){c(_),y()},get placeholder(){return f()},set placeholder(_){f(_),y()}})}ri(["click"]),ie(ln,{items:{},onExpand:{},onSelect:{},value:{},defaultValue:{},expandAll:{},multiple:{},expandValue:{},placeholder:{}},[],[],!0);const No=Math.min,Yr=Math.max,Yi=Math.round,bn=e=>({x:e,y:e}),bp={left:"right",right:"left",bottom:"top",top:"bottom"},Cp={start:"end",end:"start"};function fa(e,t,n){return Yr(e,No(t,n))}function To(e,t){return typeof e=="function"?e(t):e}function mr(e){return e.split("-")[0]}function Mo(e){return e.split("-")[1]}function qc(e){return e==="x"?"y":"x"}function ga(e){return e==="y"?"height":"width"}function Zr(e){return["top","bottom"].includes(mr(e))?"y":"x"}function ha(e){return qc(Zr(e))}function kp(e,t,n){n===void 0&&(n=!1);const r=Mo(e),o=ha(e),i=ga(o);let s=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=Zi(s)),[s,Zi(s)]}function $p(e){const t=Zi(e);return[va(e),t,va(t)]}function va(e){return e.replace(/start|end/g,t=>Cp[t])}function Ep(e,t,n){const r=["left","right"],o=["right","left"],i=["top","bottom"],s=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?i:s;default:return[]}}function Sp(e,t,n,r){const o=Mo(e);let i=Ep(mr(e),n==="start",r);return o&&(i=i.map(s=>s+"-"+o),t&&(i=i.concat(i.map(va)))),i}function Zi(e){return e.replace(/left|right|bottom|top/g,t=>bp[t])}function Pp(e){return{top:0,right:0,bottom:0,left:0,...e}}function Gc(e){return typeof e!="number"?Pp(e):{top:e,right:e,bottom:e,left:e}}function Xi(e){const{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function Uc(e,t,n){let{reference:r,floating:o}=e;const i=Zr(t),s=ha(t),a=ga(s),l=mr(t),u=i==="y",c=r.x+r.width/2-o.width/2,f=r.y+r.height/2-o.height/2,d=r[a]/2-o[a]/2;let g;switch(l){case"top":g={x:c,y:r.y-o.height};break;case"bottom":g={x:c,y:r.y+r.height};break;case"right":g={x:r.x+r.width,y:f};break;case"left":g={x:r.x-o.width,y:f};break;default:g={x:r.x,y:r.y}}switch(Mo(t)){case"start":g[s]-=d*(n&&u?-1:1);break;case"end":g[s]+=d*(n&&u?-1:1);break}return g}const Np=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:s}=n,a=i.filter(Boolean),l=await(s.isRTL==null?void 0:s.isRTL(t));let u=await s.getElementRects({reference:e,floating:t,strategy:o}),{x:c,y:f}=Uc(u,r,l),d=r,g={},p=0;for(let x=0;x({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:i,platform:s,elements:a,middlewareData:l}=t,{element:u,padding:c=0}=To(e,t)||{};if(u==null)return{};const f=Gc(c),d={x:n,y:r},g=ha(o),p=ga(g),x=await s.getDimensions(u),C=g==="y",$=C?"top":"left",m=C?"bottom":"right",_=C?"clientHeight":"clientWidth",v=i.reference[p]+i.reference[g]-d[g]-i.floating[p],b=d[g]-i.reference[g],N=await(s.getOffsetParent==null?void 0:s.getOffsetParent(u));let E=N?N[_]:0;(!E||!await(s.isElement==null?void 0:s.isElement(N)))&&(E=a.floating[_]||i.floating[p]);const T=v/2-b/2,D=E/2-x[p]/2-1,V=No(f[$],D),A=No(f[m],D),O=V,R=E-x[p]-A,S=E/2-x[p]/2+T,M=fa(O,S,R),k=!l.arrow&&Mo(o)!=null&&S!==M&&i.reference[p]/2-(SS<=0)){var A,O;const S=(((A=i.flip)==null?void 0:A.index)||0)+1,M=E[S];if(M)return{data:{index:S,overflows:V},reset:{placement:M}};let k=(O=V.filter(P=>P.overflows[0]<=0).sort((P,H)=>P.overflows[1]-H.overflows[1])[0])==null?void 0:O.placement;if(!k)switch(g){case"bestFit":{var R;const P=(R=V.filter(H=>{if(N){const I=Zr(H.placement);return I===m||I==="y"}return!0}).map(H=>[H.placement,H.overflows.filter(I=>I>0).reduce((I,B)=>I+B,0)]).sort((H,I)=>H[1]-I[1])[0])==null?void 0:R[0];P&&(k=P);break}case"initialPlacement":k=a;break}if(o!==k)return{reset:{placement:k}}}return{}}}};async function Hp(e,t){const{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),s=mr(n),a=Mo(n),l=Zr(n)==="y",u=["left","top"].includes(s)?-1:1,c=i&&l?-1:1,f=To(t,e);let{mainAxis:d,crossAxis:g,alignmentAxis:p}=typeof f=="number"?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&typeof p=="number"&&(g=a==="end"?p*-1:p),l?{x:g*c,y:d*u}:{x:d*u,y:g*c}}const Vp=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:i,placement:s,middlewareData:a}=t,l=await Hp(t,e);return s===((n=a.offset)==null?void 0:n.placement)&&(r=a.arrow)!=null&&r.alignmentOffset?{}:{x:o+l.x,y:i+l.y,data:{...l,placement:s}}}}},Dp=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:s=!1,limiter:a={fn:C=>{let{x:$,y:m}=C;return{x:$,y:m}}},...l}=To(e,t),u={x:n,y:r},c=await jc(t,l),f=Zr(mr(o)),d=qc(f);let g=u[d],p=u[f];if(i){const C=d==="y"?"top":"left",$=d==="y"?"bottom":"right",m=g+c[C],_=g-c[$];g=fa(m,g,_)}if(s){const C=f==="y"?"top":"left",$=f==="y"?"bottom":"right",m=p+c[C],_=p-c[$];p=fa(m,p,_)}const x=a.fn({...t,[d]:g,[f]:p});return{...x,data:{x:x.x-n,y:x.y-r,enabled:{[d]:i,[f]:s}}}}}};function Fi(){return typeof window<"u"}function Xr(e){return Jc(e)?(e.nodeName||"").toLowerCase():"#document"}function Xt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Bn(e){var t;return(t=(Jc(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Jc(e){return Fi()?e instanceof Node||e instanceof Xt(e).Node:!1}function un(e){return Fi()?e instanceof Element||e instanceof Xt(e).Element:!1}function Cn(e){return Fi()?e instanceof HTMLElement||e instanceof Xt(e).HTMLElement:!1}function Qc(e){return!Fi()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Xt(e).ShadowRoot}function Ho(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=cn(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Ap(e){return["table","td","th"].includes(Xr(e))}function Wi(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch{return!1}})}function pa(e){const t=ma(),n=un(e)?cn(e):e;return["transform","translate","scale","rotate","perspective"].some(r=>n[r]?n[r]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","translate","scale","rotate","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function Lp(e){let t=rr(e);for(;Cn(t)&&!Fr(t);){if(pa(t))return t;if(Wi(t))return null;t=rr(t)}return null}function ma(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Fr(e){return["html","body","#document"].includes(Xr(e))}function cn(e){return Xt(e).getComputedStyle(e)}function Ki(e){return un(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function rr(e){if(Xr(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Qc(e)&&e.host||Bn(e);return Qc(t)?t.host:t}function ed(e){const t=rr(e);return Fr(t)?e.ownerDocument?e.ownerDocument.body:e.body:Cn(t)&&Ho(t)?t:ed(t)}function td(e,t,n){var r;t===void 0&&(t=[]);const o=ed(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),s=Xt(o);return i?(ya(s),t.concat(s,s.visualViewport||[],Ho(o)?o:[],[])):t.concat(o,td(o,[]))}function ya(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function nd(e){const t=cn(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Cn(e),i=o?e.offsetWidth:n,s=o?e.offsetHeight:r,a=Yi(n)!==i||Yi(r)!==s;return a&&(n=i,r=s),{width:n,height:r,$:a}}function rd(e){return un(e)?e:e.contextElement}function Wr(e){const t=rd(e);if(!Cn(t))return bn(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:i}=nd(t);let s=(i?Yi(n.width):n.width)/r,a=(i?Yi(n.height):n.height)/o;return(!s||!Number.isFinite(s))&&(s=1),(!a||!Number.isFinite(a))&&(a=1),{x:s,y:a}}const Op=bn(0);function od(e){const t=Xt(e);return!ma()||!t.visualViewport?Op:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Ip(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Xt(e)?!1:t}function Vo(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),i=rd(e);let s=bn(1);t&&(r?un(r)&&(s=Wr(r)):s=Wr(e));const a=Ip(i,n,r)?od(i):bn(0);let l=(o.left+a.x)/s.x,u=(o.top+a.y)/s.y,c=o.width/s.x,f=o.height/s.y;if(i){const d=Xt(i),g=r&&un(r)?Xt(r):r;let p=d,x=ya(p);for(;x&&r&&g!==p;){const C=Wr(x),$=x.getBoundingClientRect(),m=cn(x),_=$.left+(x.clientLeft+parseFloat(m.paddingLeft))*C.x,v=$.top+(x.clientTop+parseFloat(m.paddingTop))*C.y;l*=C.x,u*=C.y,c*=C.x,f*=C.y,l+=_,u+=v,p=Xt(x),x=ya(p)}}return Xi({width:c,height:f,x:l,y:u})}function wa(e,t){const n=Ki(e).scrollLeft;return t?t.left+n:Vo(Bn(e)).left+n}function id(e,t,n){n===void 0&&(n=!1);const r=e.getBoundingClientRect(),o=r.left+t.scrollLeft-(n?0:wa(e,r)),i=r.top+t.scrollTop;return{x:o,y:i}}function zp(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const i=o==="fixed",s=Bn(r),a=t?Wi(t.floating):!1;if(r===s||a&&i)return n;let l={scrollLeft:0,scrollTop:0},u=bn(1);const c=bn(0),f=Cn(r);if((f||!f&&!i)&&((Xr(r)!=="body"||Ho(s))&&(l=Ki(r)),Cn(r))){const g=Vo(r);u=Wr(r),c.x=g.x+r.clientLeft,c.y=g.y+r.clientTop}const d=s&&!f&&!i?id(s,l,!0):bn(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+c.x+d.x,y:n.y*u.y-l.scrollTop*u.y+c.y+d.y}}function Rp(e){return Array.from(e.getClientRects())}function Bp(e){const t=Bn(e),n=Ki(e),r=e.ownerDocument.body,o=Yr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=Yr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let s=-n.scrollLeft+wa(e);const a=-n.scrollTop;return cn(r).direction==="rtl"&&(s+=Yr(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:s,y:a}}function Yp(e,t){const n=Xt(e),r=Bn(e),o=n.visualViewport;let i=r.clientWidth,s=r.clientHeight,a=0,l=0;if(o){i=o.width,s=o.height;const u=ma();(!u||u&&t==="fixed")&&(a=o.offsetLeft,l=o.offsetTop)}return{width:i,height:s,x:a,y:l}}function Zp(e,t){const n=Vo(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=Cn(e)?Wr(e):bn(1),s=e.clientWidth*i.x,a=e.clientHeight*i.y,l=o*i.x,u=r*i.y;return{width:s,height:a,x:l,y:u}}function sd(e,t,n){let r;if(t==="viewport")r=Yp(e,n);else if(t==="document")r=Bp(Bn(e));else if(un(t))r=Zp(t,n);else{const o=od(e);r={x:t.x-o.x,y:t.y-o.y,width:t.width,height:t.height}}return Xi(r)}function ad(e,t){const n=rr(e);return n===t||!un(n)||Fr(n)?!1:cn(n).position==="fixed"||ad(n,t)}function Xp(e,t){const n=t.get(e);if(n)return n;let r=td(e,[]).filter(a=>un(a)&&Xr(a)!=="body"),o=null;const i=cn(e).position==="fixed";let s=i?rr(e):e;for(;un(s)&&!Fr(s);){const a=cn(s),l=pa(s);!l&&a.position==="fixed"&&(o=null),(i?!l&&!o:!l&&a.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||Ho(s)&&!l&&ad(e,s))?r=r.filter(c=>c!==s):o=a,s=rr(s)}return t.set(e,r),r}function Fp(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const s=[...n==="clippingAncestors"?Wi(t)?[]:Xp(t,this._c):[].concat(n),r],a=s[0],l=s.reduce((u,c)=>{const f=sd(t,c,o);return u.top=Yr(f.top,u.top),u.right=No(f.right,u.right),u.bottom=No(f.bottom,u.bottom),u.left=Yr(f.left,u.left),u},sd(t,a,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function Wp(e){const{width:t,height:n}=nd(e);return{width:t,height:n}}function Kp(e,t,n){const r=Cn(t),o=Bn(t),i=n==="fixed",s=Vo(e,!0,i,t);let a={scrollLeft:0,scrollTop:0};const l=bn(0);if(r||!r&&!i)if((Xr(t)!=="body"||Ho(o))&&(a=Ki(t)),r){const d=Vo(t,!0,i,t);l.x=d.x+t.clientLeft,l.y=d.y+t.clientTop}else o&&(l.x=wa(o));const u=o&&!r&&!i?id(o,a):bn(0),c=s.left+a.scrollLeft-l.x-u.x,f=s.top+a.scrollTop-l.y-u.y;return{x:c,y:f,width:s.width,height:s.height}}function _a(e){return cn(e).position==="static"}function ld(e,t){if(!Cn(e)||cn(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return Bn(e)===n&&(n=n.ownerDocument.body),n}function ud(e,t){const n=Xt(e);if(Wi(e))return n;if(!Cn(e)){let o=rr(e);for(;o&&!Fr(o);){if(un(o)&&!_a(o))return o;o=rr(o)}return n}let r=ld(e,t);for(;r&&Ap(r)&&_a(r);)r=ld(r,t);return r&&Fr(r)&&_a(r)&&!pa(r)?n:r||Lp(e)||n}const qp=async function(e){const t=this.getOffsetParent||ud,n=this.getDimensions,r=await n(e.floating);return{reference:Kp(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Gp(e){return cn(e).direction==="rtl"}const Up={convertOffsetParentRelativeRectToViewportRelativeRect:zp,getDocumentElement:Bn,getClippingRect:Fp,getOffsetParent:ud,getElementRects:qp,getClientRects:Rp,getDimensions:Wp,getScale:Wr,isElement:un,isRTL:Gp},jp=Vp,Jp=Dp,Qp=Mp,em=Tp,tm=(e,t,n)=>{const r=new Map,o={platform:Up,...n},i={...o.platform,_c:r};return Np(e,t,{...o,platform:i})},nm=({trigger:e,triggerEvent:t,floatContent:n,placement:r="bottom",offsetOptions:o,flipOptions:i,shiftOptions:s,interactive:a,showArrow:l})=>{if(typeof e=="string"){const $=document.querySelector(e);if($)e=$;else throw new Error("element not found by document.querySelector('"+e+"')")}let u;if(typeof n=="string"){const $=document.querySelector(n);if($)u=$;else throw new Error("element not found by document.querySelector('"+n+"')")}else u=n;let c;l&&(c=document.createElement("div"),c.style.position="absolute",c.style.backgroundColor="#222",c.style.width="8px",c.style.height="8px",c.style.transform="rotate(45deg)",c.style.display="none",u.firstElementChild.before(c));function f(){tm(e,u,{placement:r,middleware:[jp(o),Qp(i),Jp(s),...l?[em({element:c})]:[]]}).then(({x:$,y:m,placement:_,middlewareData:v})=>{if(Object.assign(u.style,{left:`${$}px`,top:`${m}px`}),l){const{x:b,y:N}=v.arrow,E={top:"bottom",right:"left",bottom:"top",left:"right"}[_.split("-")[0]];Object.assign(c.style,{zIndex:-1,left:b!=null?`${b}px`:"",top:N!=null?`${N}px`:"",right:"",bottom:"",[E]:"2px"})}})}let d=!1;function g(){u.style.display="block",u.style.visibility="block",u.style.position="absolute",l&&(c.style.display="block"),d=!0,f()}function p(){u.style.display="none",l&&(c.style.display="none"),d=!1}function x($){$.stopPropagation(),d?p():g()}function C($){u.contains($.target)||p()}return(!t||t.length==0)&&(t=["click"]),t.forEach($=>{e.addEventListener($,x)}),document.addEventListener("click",C),{destroy(){t.forEach($=>{e.removeEventListener($,x)}),document.removeEventListener("click",C)},hide(){p()},isVisible(){return d}}};var rm=ne('
    ');function Do(e,t){ue(t,!0);const n=w(t,"children",7),r=w(t,"floating",7),o=w(t,"placement",7,"bottom");let i,s,a;rn(()=>(a=nm({trigger:i,floatContent:s,interactive:!0,placement:o()}),()=>{a.destroy()}));function l(){a.hide()}var u=rm(),c=X(u),f=X(c);cr(f,n),Z(c),An(c,p=>i=p,()=>i);var d=z(c,2),g=X(d);return cr(g,r),Z(d),An(d,p=>s=p,()=>s),Z(u),L(e,u),ce({hide:l,get children(){return n()},set children(p){n(p),y()},get floating(){return r()},set floating(p){r(p),y()},get placement(){return o()},set placement(p="bottom"){o(p),y()}})}ie(Do,{children:{},floating:{},placement:{}},[],["hide"],!0);function je(e,t){ue(t,!0);const n=w(t,"children",7),r=w(t,"level",7,1),o=w(t,"mt",7),i=w(t,"mb",7);var s=tt(),a=xe(s);return t1(a,()=>`h${r()}`,!1,(l,u)=>{let c;Ee(()=>c=nn(l,c,{class:"tf-heading",style:`margin-top:${o()||"0"};margin-bottom:${i()||"0"}`},void 0,l.namespaceURI===Ea,l.nodeName.includes("-")));var f=tt(),d=xe(f);cr(d,()=>n()??gt),L(u,f)}),L(e,s),ce({get children(){return n()},set children(l){n(l),y()},get level(){return r()},set level(l=1){r(l),y()},get mt(){return o()},set mt(l){o(l),y()},get mb(){return i()},set mb(l){i(l),y()}})}ie(je,{children:{},level:{},mt:{},mb:{}},[],[],!0);var om=_e('');const im={hash:"svelte-1rvn4a8",code:".input-btn-more {border:1px solid transparent;padding:3px;&:hover {background:#eee;border:1px solid transparent;}}"};function qi(e,t){ue(t,!0),et(e,im);const n=xt(t,["$$slots","$$events","$$legacy","$$host"]);Ge(e,ft(()=>n,{get class(){return`input-btn-more ${t.class??""}`},children:(r,o)=>{var i=om();L(r,i)},$$slots:{default:!0}})),ce()}ie(qi,{},[],[],!0);const sm=()=>{const e=Ue();return{deleteNode:n=>{e.nodes.update(r=>r.filter(o=>o.id!==n)),e.edges.update(r=>r.filter(o=>o.source!==n&&o.target!==n))}}},Kr=(e=16)=>{const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=new Uint8Array(e);return crypto.getRandomValues(n),Array.from(n,r=>t[r%t.length]).join("")},am=()=>{const{nodes:e,nodeLookup:t}=Ue();return{copyNode:r=>{var s;const i=(s=q(t).get(r))==null?void 0:s.internals.userNode;if(i){const a=Kr(),l={...i,id:a,position:{x:i.position.x+50,y:i.position.y+50}};e.update(u=>[...u,l]),e.update(u=>u.map(c=>c.id===a?{...c,selected:!0}:{...c,selected:!1}))}}}};var lm=_e(''),um=_e(''),cm=_e(''),dm=ne('
    '),fm=ne('
    TinyFlow.ai
    ',1);const gm={hash:"svelte-44dmwv",code:".tf-node-toolbar.svelte-44dmwv {display:flex;gap:5px;padding:5px;border-radius:5px;background:#fff;border:1px solid #eee;box-shadow:0 0 5px rgba(0, 0, 0, 0.1);}.tf-node-toolbar-item {border:1px solid transparent;}"};function dn(e,t){ue(t,!0),et(e,gm);const n=w(t,"data",7),r=w(t,"id",7,""),o=w(t,"icon",7),i=w(t,"handle",7),s=w(t,"children",7),a=w(t,"allowExecute",7,!0),l=w(t,"allowCopy",7,!0),u=w(t,"allowDelete",7,!0),c=w(t,"showSourceHandle",7,!0),f=w(t,"showTargetHandle",7,!0);let d=n().expand?["key"]:[];const{updateNodeData:g}=Lt(),p=[{key:"key",icon:o(),title:n().title,description:n().description,content:s()}],{deleteNode:x}=sm(),{copyNode:C}=am();var $=fm(),m=xe($);{var _=O=>{Zc(O,{get position(){return $e.Top},align:"end",children:(R,S)=>{var M=dm(),k=X(M);{var P=K=>{Ge(K,{class:"tf-node-toolbar-item",children:(se,ee)=>{var W=lm();L(se,W)},$$slots:{default:!0}})};ke(k,K=>{a()&&K(P)})}var H=z(k,2);{var I=K=>{Ge(K,{class:"tf-node-toolbar-item",onclick:()=>{C(r())},children:(se,ee)=>{var W=um();L(se,W)},$$slots:{default:!0}})};ke(H,K=>{l()&&K(I)})}var B=z(H,2);{var F=K=>{Ge(K,{class:"tf-node-toolbar-item",onclick:()=>{x(r())},children:(se,ee)=>{var W=cm();L(se,W)},$$slots:{default:!0}})};ke(B,K=>{u()&&K(F)})}Z(M),L(R,M)},$$slots:{default:!0}})};ke(m,O=>{(a()||l()||u())&&O(_)})}var v=z(m,2),b=z(X(v),2),N=X(b);Kc(N,{items:p,activeKeys:d,onChange:(O,R)=>{g(r(),{expand:R==null?void 0:R.includes("key")})}}),Z(b),Z(v);var E=z(v,2);{var T=O=>{er(O,{type:"target",get position(){return $e.Left},style:" left: -12px;top: 20px"})};ke(E,O=>{f()&&O(T)})}var D=z(E,2);{var V=O=>{er(O,{type:"source",get position(){return $e.Right},style:"right: -12px;top: 20px"})};ke(D,O=>{c()&&O(V)})}var A=z(D,2);return cr(A,()=>i()??gt),L(e,$),ce({get data(){return n()},set data(O){n(O),y()},get id(){return r()},set id(O=""){r(O),y()},get icon(){return o()},set icon(O){o(O),y()},get handle(){return i()},set handle(O){i(O),y()},get children(){return s()},set children(O){s(O),y()},get allowExecute(){return a()},set allowExecute(O=!0){a(O),y()},get allowCopy(){return l()},set allowCopy(O=!0){l(O),y()},get allowDelete(){return u()},set allowDelete(O=!0){u(O),y()},get showSourceHandle(){return c()},set showSourceHandle(O=!0){c(O),y()},get showTargetHandle(){return f()},set showTargetHandle(O=!0){f(O),y()}})}ie(dn,{data:{},id:{},icon:{},handle:{},children:{},allowExecute:{},allowCopy:{},allowDelete:{},showSourceHandle:{},showTargetHandle:{}},[],[],!0);function pt(){return ur("svelteflow__node_id")}const cd=[{value:"String",label:"String"},{value:"Number",label:"Number"},{value:"Boolean",label:"Boolean"},{value:"File",label:"File"},{value:"Object",label:"Object"},{value:"Array",label:"Array"}],hm=[{value:"ref",label:"引用"},{value:"input",label:"固定值"}];var vm=ne('
    参数类型:
    默认值:
    参数描述:
    '),pm=_e(''),mm=ne('
    ',1);const ym={hash:"svelte-laou7w",code:".input-item.svelte-laou7w {display:flex;align-items:center;}.input-more-setting.svelte-laou7w {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-laou7w .input-more-item:where(.svelte-laou7w) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}"};function dd(e,t){ue(t,!0),et(e,ym);const[n,r]=nt(),o=()=>Q(h(l),"$node",n),i=w(t,"parameter",7),s=w(t,"index",7);let a=pt(),l=Ne(()=>pr(a)),u=Ne(()=>{var T,D;return{...i(),...(D=(T=o())==null?void 0:T.data)==null?void 0:D.parameters[s()]}});const{updateNodeData:c}=Lt(),f=T=>{const D=T.target.value;c(a,V=>{let A=V.data.parameters;return A[s()].name=D,{parameters:A}})},d=T=>{const D=T.target.checked;c(a,V=>{let A=V.data.parameters;return A[s()].required=D,{parameters:A}})},g=T=>{const D=T.value;D&&c(a,V=>{let A=V.data.parameters;return A[s()].dataType=D,{parameters:A}})};let p;const x=()=>{c(a,T=>{let D=T.data.parameters;return D.splice(s(),1),{parameters:[...D]}}),p==null||p.hide()};var C=mm(),$=xe(C),m=X($);St(m,{style:"width: 100%;",get value(){return h(u).name},placeholder:"请输入参数名称",oninput:f}),Z($);var _=z($,2),v=X(_);Fc(v,{get checked(){return h(u).required},onchange:d}),Z(_);var b=z(_,2),N=X(b);An(Do(N,{placement:"bottom",floating:D=>{var V=vm(),A=X(V),O=z(X(A));const R=Ne(()=>h(u).dataType?[h(u).dataType]:["String"]);ln(O,{items:cd,style:"width: 100%",onSelect:g,get value(){return h(R)}}),Z(A);var S=z(A,2),M=z(X(S));Pt(M,{rows:1,style:"width: 100%;"}),Z(S);var k=z(S,2),P=z(X(k));Pt(P,{rows:3,style:"width: 100%;"}),Z(k);var H=z(k,2),I=X(H);Ge(I,{onclick:x,children:(B,F)=>{Pe();var K=Ae("删除");L(B,K)},$$slots:{default:!0}}),Z(H),Z(V),L(D,V)},children:(D,V)=>{Ge(D,{class:"input-btn-more",children:(A,O)=>{var R=pm();L(A,R)},$$slots:{default:!0}})},$$slots:{floating:!0,default:!0}}),D=>p=D,()=>p),Z(b),L(e,C);var E=ce({get parameter(){return i()},set parameter(T){i(T),y()},get index(){return s()},set index(T){s(T),y()}});return r(),E}ie(dd,{parameter:{},index:{}},[],[],!0);var wm=ne('
    参数名称
    必填
    ',1),_m=ne('
    无输入参数
    '),xm=ne('
    ');const bm={hash:"svelte-3n0wca",code:`.input-container.svelte-3n0wca {display:grid;grid-template-columns:80% 10% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-3n0wca .none-params:where(.svelte-3n0wca) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-3n0wca .input-header:where(.svelte-3n0wca) {font-size:12px;color:#666;}`};function fd(e,t){ue(t,!0),et(e,bm);const[n,r]=nt(),o=()=>Q(h(s),"$node",n);let i=pt(),s=Ne(()=>pr(i)),a=Ne(()=>{var d,g;return[...((g=(d=o())==null?void 0:d.data)==null?void 0:g.parameters)||[]]});var l=xm(),u=X(l);{var c=d=>{var g=wm();Pe(4),L(d,g)};ke(u,d=>{h(a).length!==0&&d(c)})}var f=z(u,2);Yt(f,19,()=>h(a),d=>d.id,(d,g,p)=>{dd(d,{get parameter(){return h(g)},get index(){return h(p)}})},d=>{var g=_m();L(d,g)}),Z(l),L(e,l),ce(),r()}ie(fd,{},[],[],!0);const gd=e=>{!e||e.length==0||e.forEach(t=>{t.id||(t.id=Kr()),gd(t.children)})},kn=()=>{const{updateNodeData:e}=Lt();return{addParameter:(t,n="parameters",r)=>{gd(r==null?void 0:r.children);const o={...r,id:Kr()};e(t,i=>{let s=i.data[n];return s?s.push(o):s=[o],{[n]:[...s]}})}}};var Cm=_e(''),km=_e(''),$m=ne('
    ',1);const Em={hash:"svelte-r5g35l",code:".heading.svelte-r5g35l {display:flex;margin-bottom:10px;}.input-btn-more {border:1px solid transparent;padding:3px;}.input-btn-more:hover {background:#eee;border:1px solid transparent;}"};function hd(e,t){ue(t,!0),et(e,Em);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn();return dn(e,ft(()=>r,{get data(){return n()},allowExecute:!1,showTargetHandle:!1,icon:a=>{var l=Cm();L(a,l)},children:(a,l)=>{var u=$m(),c=xe(u),f=X(c);je(f,{level:3,children:(p,x)=>{Pe();var C=Ae("输入参数");L(p,C)},$$slots:{default:!0}});var d=z(f,2);Ge(d,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(p,x)=>{var C=km();L(p,C)},$$slots:{default:!0}}),Z(c);var g=z(c,2);fd(g,{}),L(a,u)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(s){n(s),y()}})}ie(hd,{data:{}},[],[],!0);const vd=(e,t,n)=>{for(let r of n)r.target===t&&r.source&&(e.push(r.source),vd(e,r.source,n))},pd=(e,t)=>{if(e.type==="startNode"){const n=e.data.parameters,r=[];if(n)for(const o of n)r.push({label:o.name+(t?` (Array<${o.dataType||"String"}>)`:` (${o.dataType||"String"})`),value:e.id+"."+o.name});return{label:e.data.title,value:e.id,children:r}}else{if(e.type==="loopNode"&&t)return{label:e.data.title,value:e.id,children:[{label:"loopItem",value:e.id+".loop"},{label:"index (Number)",value:e.id+".index"}]};{const n=e.data.outputDefs;if(n){const r=(o,i)=>!o||o.length===0?[]:o.map(s=>({label:s.name+(t?` (Array<${s.dataType||"String"}>)`:` (${s.dataType||"String"})`),value:i+"."+s.name,children:r(s.children,i+"."+s.name)}));return{label:e.data.title,value:e.id,children:r(n,e.id)}}}}},Sm=(e=!1)=>{const t=pt(),n=pr(t),{nodes:r,edges:o}=Ue();return Un([n,r,o],([i,s,a])=>{const l=[];if(e){for(let u of s)if(u.parentId===i.id){const c=pd(u,u.parentId===i.id);c&&l.push(c)}}else{const u=[];vd(u,t,a);for(let c of s)if(u.includes(c.id)){const f=pd(c,c.parentId===i.id);f&&l.push(f)}}return l})};var Pm=ne('
    数据来源:
    默认值:
    参数描述:
    '),Nm=ne('
    ',1);const Tm={hash:"svelte-laou7w",code:".input-item.svelte-laou7w {display:flex;align-items:center;}.input-more-setting.svelte-laou7w {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-laou7w .input-more-item:where(.svelte-laou7w) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}"};function md(e,t){ue(t,!0),et(e,Tm);const[n,r]=nt(),o=()=>Q(h(c),"$node",n),i=()=>Q(v,"$selectItems",n),s=w(t,"parameter",7),a=w(t,"index",7),l=w(t,"dataKeyName",7);let u=pt(),c=Ne(()=>pr(u)),f=Ne(()=>{var M;return{...s(),...(M=o())==null?void 0:M.data[l()][a()]}});const{updateNodeData:d}=Lt(),g=(M,k)=>{d(u,P=>{let H=P.data[l()];return H[a()]={...H[a()],[M]:k},{[l()]:H}})},p=M=>{const k=M.target.value;g("name",k)},x=M=>{const k=M.target.value;g("value",k)},C=M=>{const k=M.value;g("ref",k)},$=M=>{const k=M.value;g("refType",k)};let m;const _=()=>{d(u,M=>{let k=M.data[l()];return k.splice(a(),1),{[l()]:[...k]}}),m==null||m.hide()},v=Sm();var b=Nm(),N=xe(b),E=X(N);St(E,{style:"width: 100%;",get value(){return h(f).name},placeholder:"请输入参数名称",oninput:p}),Z(N);var T=z(N,2),D=X(T);{var V=M=>{St(M,{get value(){return h(f).value},placeholder:"请输入参数值",oninput:x})},A=M=>{const k=Ne(()=>[h(f).ref]);ln(M,{get items(){return i()},style:"width: 100%",defaultValue:["ref"],get value(){return h(k)},expandAll:!0,onSelect:C})};ke(D,M=>{h(f).refType==="input"?M(V):M(A,!1)})}Z(T);var O=z(T,2),R=X(O);An(Do(R,{placement:"bottom",floating:k=>{var P=Pm(),H=X(P),I=z(X(H));const B=Ne(()=>h(f).refType?[h(f).refType]:[]);ln(I,{items:hm,style:"width: 100%",defaultValue:["ref"],get value(){return h(B)},onSelect:$}),Z(H);var F=z(H,2),K=z(X(F));Pt(K,{rows:1,style:"width: 100%;",onchange:me=>{const Ce=me.target.value;g("defaultValue",Ce)}}),Z(F);var se=z(F,2),ee=z(X(se));Pt(ee,{rows:3,style:"width: 100%;",onchange:me=>{const Ce=me.target.value;g("description",Ce)}}),Z(se);var W=z(se,2),fe=X(W);Ge(fe,{onclick:_,children:(me,Ce)=>{Pe();var he=Ae("删除");L(me,he)},$$slots:{default:!0}}),Z(W),Z(P),L(k,P)},children:(k,P)=>{qi(k,{})},$$slots:{floating:!0,default:!0}}),k=>m=k,()=>m),Z(O),L(e,b);var S=ce({get parameter(){return s()},set parameter(M){s(M),y()},get index(){return a()},set index(M){a(M),y()},get dataKeyName(){return l()},set dataKeyName(M){l(M),y()}});return r(),S}ie(md,{parameter:{},index:{},dataKeyName:{}},[],[],!0);var Mm=ne('
    参数名称
    参数值
    ',1),Hm=ne('
    '),Vm=ne('
    ');const Dm={hash:"svelte-1sm1mgi",code:`.input-container.svelte-1sm1mgi {display:grid;grid-template-columns:40% 50% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-1sm1mgi .none-params:where(.svelte-1sm1mgi) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-1sm1mgi .input-header:where(.svelte-1sm1mgi) {font-size:12px;color:#666;}`};function Ft(e,t){ue(t,!0),et(e,Dm);const[n,r]=nt(),o=()=>Q(h(l),"$node",n),i=w(t,"noneParameterText",7,"无输入参数"),s=w(t,"dataKeyName",7,"parameters");let a=pt(),l=Ne(()=>pr(a)),u=Ne(()=>{var x;return[...((x=o())==null?void 0:x.data[s()])||[]]});var c=Vm(),f=X(c);{var d=x=>{var C=Mm();Pe(4),L(x,C)};ke(f,x=>{h(u).length!==0&&x(d)})}var g=z(f,2);Yt(g,19,()=>h(u),x=>x.id,(x,C,$)=>{md(x,{get parameter(){return h(C)},get index(){return h($)},get dataKeyName(){return s()}})},x=>{var C=Hm(),$=X(C,!0);Z(C),Ee(()=>Bt($,i())),L(x,C)}),Z(c),L(e,c);var p=ce({get noneParameterText(){return i()},set noneParameterText(x="无输入参数"){i(x),y()},get dataKeyName(){return s()},set dataKeyName(x="parameters"){s(x),y()}});return r(),p}ie(Ft,{noneParameterText:{},dataKeyName:{}},[],[],!0);var Am=_e(''),Lm=_e(''),Om=ne('
    ',1);const Im={hash:"svelte-11h445j",code:".heading.svelte-11h445j {display:flex;margin-bottom:10px;}"};function yd(e,t){ue(t,!0),et(e,Im);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn();return dn(e,ft({get data(){return n()}},()=>r,{allowExecute:!1,showSourceHandle:!1,icon:a=>{var l=Am();L(a,l)},children:(a,l)=>{var u=Om(),c=xe(u),f=X(c);je(f,{level:3,children:(p,x)=>{Pe();var C=Ae("输出参数");L(p,C)},$$slots:{default:!0}});var d=z(f,2);Ge(d,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o,"outputDefs")},children:(p,x)=>{var C=Lm();L(p,C)},$$slots:{default:!0}}),Z(c);var g=z(c,2);Ft(g,{noneParameterText:"无输出参数",dataKeyName:"outputDefs"}),L(a,u)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(s){n(s),y()}})}ie(yd,{data:{}},[],[],!0);const Ao=()=>ur("tinyflow_options");var zm=_e(''),Rm=ne('
    '),Bm=ne('
    默认值:
    参数描述:
    '),Ym=ne('
    ',1);const Zm={hash:"svelte-1cfeest",code:".input-item.svelte-1cfeest {display:flex;align-items:center;gap:2px;}.input-more-setting.svelte-1cfeest {display:flex;flex-direction:column;gap:10px;padding:10px;background:#fff;border:1px solid #ddd;border-radius:5px;width:200px;box-shadow:0 0 10px 2px rgba(0, 0, 0, 0.1);}.input-more-setting.svelte-1cfeest .input-more-item:where(.svelte-1cfeest) {display:flex;flex-direction:column;gap:3px;font-size:12px;color:#666;}"};function wd(e,t){ue(t,!0),et(e,Zm);const[n,r]=nt(),o=()=>Q(h(u),"$node",n),i=w(t,"parameter",7),s=w(t,"position",7),a=w(t,"dataKeyName",7);let l=pt(),u=Ne(()=>pr(l)),c=Ne(()=>{var I;let P=(I=o())==null?void 0:I.data[a()],H;if(P&&s().length>0){let B=P;for(let F=0;F{f(l,I=>{const B=I.data[a()];if(B&&s().length>0){let F=B;for(let K=0;K{const H=P.target.value;d("name",H)},p=P=>{const H=P.value;d("dataType",H)};let x;const C=()=>{f(l,P=>{let H=P.data[a()];if(H&&s().length>0){let I=H;for(let B=0;B{f(l,P=>{let H=P.data[a()];if(H&&s().length>0){let I=H;for(let B=0;B{var H=tt(),I=xe(H);Yt(I,17,s,oi,(B,F)=>{Pe();var K=Ae(" ");L(B,K)}),L(P,H)};ke(v,P=>{s().length>1&&P(b)})}var N=z(v,2);const E=Ne(()=>h(c).nameDisabled===!0);St(N,{style:"width: 100%;",get value(){return h(c).name},placeholder:"请输入参数名称",oninput:g,get disabled(){return h(E)}}),Z(_);var T=z(_,2),D=X(T);const V=Ne(()=>h(c).dataType?[h(c).dataType]:[]),A=Ne(()=>h(c).dataTypeDisabled===!0);ln(D,{items:cd,style:"width: 100%",defaultValue:["String"],get value(){return h(V)},get disabled(){return h(A)},onSelect:p});var O=z(D,2);{var R=P=>{Ge(P,{class:"input-btn-more",style:"margin-left: auto",onclick:$,children:(H,I)=>{var B=zm();L(H,B)},$$slots:{default:!0}})};ke(O,P=>{(h(c).dataType==="Object"||h(c).dataType==="Array")&&h(c).addChildDisabled!==!0&&P(R)})}Z(T);var S=z(T,2),M=X(S);An(Do(M,{placement:"bottom",floating:H=>{var I=Bm(),B=X(I),F=z(X(B));Pt(F,{rows:1,style:"width: 100%;",onchange:fe=>{const me=fe.target.value;d("defaultValue",me)}}),Z(B);var K=z(B,2),se=z(X(K));Pt(se,{rows:3,style:"width: 100%;",onchange:fe=>{const me=fe.target.value;d("description",me)}}),Z(K);var ee=z(K,2);{var W=fe=>{var me=Rm(),Ce=X(me);Ge(Ce,{onclick:C,children:(he,ze)=>{Pe();var G=Ae("删除");L(he,G)},$$slots:{default:!0}}),Z(me),L(fe,me)};ke(ee,fe=>{h(c).deleteDisabled!==!0&&fe(W)})}Z(I),L(H,I)},children:(H,I)=>{qi(H,{})},$$slots:{floating:!0,default:!0}}),H=>x=H,()=>x),Z(S),L(e,m);var k=ce({get parameter(){return i()},set parameter(P){i(P),y()},get position(){return s()},set position(P){s(P),y()},get dataKeyName(){return a()},set dataKeyName(P){a(P),y()}});return r(),k}ie(wd,{parameter:{},position:{},dataKeyName:{}},[],[],!0);var Xm=ne(" ",1),Fm=ne('
    '),Wm=ne('
    参数名称
    参数类型
    ',1),Km=ne('
    ');const qm={hash:"svelte-1sm1mgi",code:`.input-container.svelte-1sm1mgi {display:grid;grid-template-columns:40% 50% 10%;row-gap:5px;column-gap:3px;}.input-container.svelte-1sm1mgi .none-params:where(.svelte-1sm1mgi) {font-size:12px;background:#f8f8f8;height:40px;display:flex;justify-content:center;align-items:center;border-radius:5px;width:calc(100% - 5px);grid-column:1 / -1; + /* 从第一列开始到最后一列结束 */}.input-container.svelte-1sm1mgi .input-header:where(.svelte-1sm1mgi) {font-size:12px;color:#666;}`};function Yn(e,t){ue(t,!0),et(e,qm);const[n,r]=nt(),o=()=>Q(h(u),"$node",n),i=(C,$=gt,m=gt)=>{var _=tt(),v=xe(_);Yt(v,19,$,b=>`${b.id}_${b.children?b.children.length:0}`,(b,N,E)=>{var T=Xm(),D=xe(T);const V=Ne(()=>[...m(),h(E)]);wd(D,{get parameter(){return h(N)},get position(){return h(V)},get dataKeyName(){return a()}});var A=z(D,2);{var O=R=>{var S=ve(()=>[...m(),h(E)]);i(R,()=>h(N).children,()=>h(S))};ke(A,R=>{h(N).children&&R(O)})}L(b,T)},b=>{var N=tt(),E=xe(N);{var T=D=>{var V=Fm(),A=X(V,!0);Z(V),Ee(()=>Bt(A,s())),L(D,V)};ke(E,D=>{m().length===0&&D(T)})}L(b,N)}),L(C,_)},s=w(t,"noneParameterText",7,"无输出参数"),a=w(t,"dataKeyName",7,"outputDefs");let l=pt(),u=Ne(()=>pr(l)),c=Ne(()=>{var C;return[...((C=o())==null?void 0:C.data[a()])||[]]});var f=Km(),d=X(f);{var g=C=>{var $=Wm();Pe(4),L(C,$)};ke(d,C=>{h(c).length!==0&&C(g)})}var p=z(d,2);i(p,()=>h(c)||[],()=>[]),Z(f),L(e,f);var x=ce({get noneParameterText(){return s()},set noneParameterText(C="无输出参数"){s(C),y()},get dataKeyName(){return a()},set dataKeyName(C="outputDefs"){a(C),y()}});return r(),x}ie(Yn,{noneParameterText:{},dataKeyName:{}},[],[],!0);var Gm=_e(''),Um=_e(''),jm=_e(''),Jm=ne('
    模型
    采样参数
    系统提示词
    用户提示词
    ',1);const Qm={hash:"svelte-wn2kra",code:`.heading.svelte-wn2kra {display:flex;margin-bottom:10px;}.setting-title.svelte-wn2kra {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-wn2kra {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}\r + /* 新增样式 */.slider-container.svelte-wn2kra {width:100%;display:flex;flex-direction:column;gap:4px;}.slider-container.svelte-wn2kra label:where(.svelte-wn2kra) {font-size:12px;color:#666;display:flex;justify-content:space-between;align-items:center;}input[type="range"].svelte-wn2kra {width:100%;height:4px;background:#ddd;border-radius:2px;outline:none;-webkit-appearance:none;}input[type="range"].svelte-wn2kra::-webkit-slider-thumb {-webkit-appearance:none;width:14px;height:14px;background:#007bff;border-radius:50%;cursor:pointer;}`};function _d(e,t){ue(t,!0),et(e,Qm);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),s=Ao();let a=Fn(Ht([]));rn(async()=>{var c,f;const u=await((f=(c=s.provider)==null?void 0:c.llm)==null?void 0:f.call(c));h(a).push(...u||[])});const{updateNodeData:l}=Lt();return dn(e,ft({get data(){return n()}},()=>r,{icon:c=>{var f=Gm();L(c,f)},children:(c,f)=>{var d=Jm(),g=xe(d),p=X(g);je(p,{level:3,children:(G,ae)=>{Pe();var Me=Ae("输入参数");L(G,Me)},$$slots:{default:!0}});var x=z(p,2);Ge(x,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(G,ae)=>{var Me=Um();L(G,Me)},$$slots:{default:!0}}),Z(g);var C=z(g,2);Ft(C,{});var $=z(C,2);je($,{level:3,mt:"10px",children:(G,ae)=>{Pe();var Me=Ae("模型设置");L(G,Me)},$$slots:{default:!0}});var m=z($,4),_=X(m);const v=Ne(()=>n().llmId?[n().llmId]:[]);ln(_,{get items(){return h(a)},style:"width: 100%",placeholder:"请选择模型",onSelect:G=>{const ae=G.value;l(o,()=>({llmId:ae}))},get value(){return h(v)}});var b=z(_,2);qi(b,{}),Z(m);var N=z(m,4),E=X(N),T=X(E),D=X(T);Z(T);var V=z(T,2);ao(V),Z(E),Z(N);var A=z(N,2),O=X(A),R=X(O),S=X(R);Z(R);var M=z(R,2);ao(M),Z(O),Z(A);var k=z(A,2),P=X(k),H=X(P),I=X(H);Z(H);var B=z(H,2);ao(B),Z(P),Z(k);var F=z(k,4),K=X(F);const se=Ne(()=>n().systemPrompt||"");Pt(K,{rows:5,placeholder:"请输入系统提示词",style:"width: 100%",get value(){return h(se)},oninput:G=>{l(o,{systemPrompt:G.target.value})}}),Z(F);var ee=z(F,4),W=X(ee);const fe=Ne(()=>n().userPrompt||"");Pt(W,{rows:5,placeholder:"请输入用户提示词",style:"width: 100%",get value(){return h(fe)},oninput:G=>{l(o,{userPrompt:G.target.value})}}),Z(ee);var me=z(ee,2),Ce=X(me);je(Ce,{level:3,mt:"10px",children:(G,ae)=>{Pe();var Me=Ae("输出参数");L(G,Me)},$$slots:{default:!0}});var he=z(Ce,2);Ge(he,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o,"outputDefs")},children:(G,ae)=>{var Me=jm();L(G,Me)},$$slots:{default:!0}}),Z(me);var ze=z(me,2);Yn(ze,{}),Ee(()=>{Bt(D,`Temperature: ${n().temperature??.5}`),bs(V,n().temperature??.5),Bt(S,`Top P: ${n().topP??.9}`),bs(M,n().topP??.9),Bt(I,`Top K: ${n().topK??50}`),bs(B,n().topK??50)}),Ze("mousedown",V,ks(function(G){De.call(this,t,G)})),Ze("input",V,G=>l(o,{temperature:parseFloat(G.target.value)})),Ze("mousedown",M,ks(function(G){De.call(this,t,G)})),Ze("input",M,G=>l(o,{topP:parseFloat(G.target.value)})),Ze("mousedown",B,ks(function(G){De.call(this,t,G)})),Ze("input",B,G=>l(o,{topK:parseInt(G.target.value)})),L(c,d)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(u){n(u),y()}})}ie(_d,{data:{}},[],[],!0);var ey=_e(''),ty=_e(''),ny=_e(''),ry=ne('
    执行引擎
    执行代码
    ',1);const oy={hash:"svelte-15t2v24",code:".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}"};function xd(e,t){ue(t,!0),et(e,oy);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),{updateNodeData:s}=Lt(),a=[{label:"QLExpress",value:"qlexpress"},{label:"Groovy",value:"groovy"},{label:"JavaScript",value:"js"}];return dn(e,ft({get data(){return n()}},()=>r,{icon:u=>{var c=ey();L(u,c)},children:(u,c)=>{var f=ry(),d=xe(f),g=X(d);je(g,{level:3,children:(A,O)=>{Pe();var R=Ae("输入参数");L(A,R)},$$slots:{default:!0}});var p=z(g,2);Ge(p,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(A,O)=>{var R=ty();L(A,R)},$$slots:{default:!0}}),Z(d);var x=z(d,2);Ft(x,{});var C=z(x,2);je(C,{level:3,mt:"10px",children:(A,O)=>{Pe();var R=Ae("代码");L(A,R)},$$slots:{default:!0}});var $=z(C,4),m=X($);const _=Ne(()=>n().engine?[n().engine]:["qlexpress"]);ln(m,{items:a,style:"width: 100%",placeholder:"请选择执行引擎",onSelect:A=>{const O=A.value;s(o,()=>({engine:O}))},get value(){return h(_)}}),Z($);var v=z($,4),b=X(v);const N=Ne(()=>n().code||"");Pt(b,{rows:10,placeholder:"请输入执行代码,注:输出内容需添加到_result中,如:_result.put(key, value)",style:"width: 100%",onchange:A=>{s(o,()=>({code:A.target.value}))},get value(){return h(N)}}),Z(v);var E=z(v,2),T=X(E);je(T,{level:3,mt:"10px",children:(A,O)=>{Pe();var R=Ae("输出参数");L(A,R)},$$slots:{default:!0}});var D=z(T,2);Ge(D,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o,"outputDefs")},children:(A,O)=>{var R=ny();L(A,R)},$$slots:{default:!0}}),Z(E);var V=z(E,2);Yn(V,{}),L(u,f)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(l){n(l),y()}})}ie(xd,{data:{}},[],[],!0);var iy=_e(''),sy=_e(''),ay=ne('
    执行代码
    ',1);const ly={hash:"svelte-15t2v24",code:".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}"};function bd(e,t){ue(t,!0),et(e,ly);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),{updateNodeData:s}=Lt();return kr(()=>{(!n().outputDefs||n().outputDefs.length===0)&&i(o,"outputDefs",{name:"output",dataType:"String",dataTypeDisabled:!0,deleteDisabled:!0})}),dn(e,ft({get data(){return n()}},()=>r,{icon:l=>{var u=iy();L(l,u)},children:(l,u)=>{var c=ay(),f=xe(c),d=X(f);je(d,{level:3,children:(N,E)=>{Pe();var T=Ae("输入参数");L(N,T)},$$slots:{default:!0}});var g=z(d,2);Ge(g,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(N,E)=>{var T=sy();L(N,T)},$$slots:{default:!0}}),Z(f);var p=z(f,2);Ft(p,{});var x=z(p,2);je(x,{level:3,mt:"10px",children:(N,E)=>{Pe();var T=Ae("代码");L(N,T)},$$slots:{default:!0}});var C=z(x,4),$=X(C);const m=Ne(()=>n().template||"");Pt($,{rows:10,placeholder:"请输入执行代码",style:"width: 100%",onchange:N=>{s(o,()=>({template:N.target.value}))},get value(){return h(m)}}),Z(C);var _=z(C,2),v=X(_);je(v,{level:3,mt:"10px",children:(N,E)=>{Pe();var T=Ae("输出参数");L(N,T)},$$slots:{default:!0}}),Z(_);var b=z(_,2);Yn(b,{}),L(l,c)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(a){n(a),y()}})}ie(bd,{data:{}},[],[],!0);var uy=_e(''),cy=_e(''),dy=_e(''),fy=_e(''),gy=ne('
    ',1),hy=_e(''),vy=ne('
    ',1),py=ne('
    '),my=ne('
    '),yy=_e(''),wy=ne('
    ',1);const _y={hash:"svelte-1vtcqdz",code:".heading.svelte-1vtcqdz {display:flex;margin-bottom:10px;}.radio-group.svelte-1vtcqdz {display:flex;margin:10px 0;}.radio-group.svelte-1vtcqdz label:where(.svelte-1vtcqdz) {display:flex;font-size:14px;}"};function Cd(e,t){ue(t,!0),et(e,_y);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=[{value:"get",label:"GET"},{value:"post",label:"POST"},{value:"put",label:"PUT"},{value:"delete",label:"DELETE"},{value:"head",label:"HEAD"},{value:"patch",label:"PATCH"}],i=pt(),{addParameter:s}=kn(),{updateNodeData:a}=Lt();return dn(e,ft({get data(){return n()}},()=>r,{icon:u=>{var c=uy();L(u,c)},children:(u,c)=>{var f=wy(),d=xe(f),g=X(d),p=X(g);const x=Ne(()=>n().method?[n().method]:["get"]);ln(p,{items:o,style:"width: 100%",placeholder:"请选择请求方式",onSelect:oe=>{const pe=oe.value;a(i,()=>({method:pe}))},get value(){return h(x)}}),Z(g);var C=z(g,2),$=X(C);const m=Ne(()=>n().url||"");St($,{placeholder:"请输入url",style:"width: 100%",onchange:oe=>{a(i,()=>({url:oe.target.value}))},get value(){return h(m)}}),Z(C),Z(d);var _=z(d,2),v=X(_);je(v,{level:3,children:(oe,pe)=>{Pe();var be=Ae("Http 头信息");L(oe,be)},$$slots:{default:!0}});var b=z(v,2);Ge(b,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{s(i,"headers")},children:(oe,pe)=>{var be=cy();L(oe,be)},$$slots:{default:!0}}),Z(_);var N=z(_,2);Ft(N,{dataKeyName:"headers"});var E=z(N,2),T=X(E);je(T,{level:3,children:(oe,pe)=>{Pe();var be=Ae("参数");L(oe,be)},$$slots:{default:!0}});var D=z(T,2);Ge(D,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{s(i,"urlParameters")},children:(oe,pe)=>{var be=dy();L(oe,be)},$$slots:{default:!0}}),Z(E);var V=z(E,2);Ft(V,{dataKeyName:"urlParameters"});var A=z(V,2);je(A,{level:3,mt:"10px",children:(oe,pe)=>{Pe();var be=Ae("Body");L(oe,be)},$$slots:{default:!0}});var O=z(A,2),R=X(O),S=X(R);const M=Ne(()=>!n().bodyType);St(S,{type:"radio",name:"bodyType",value:"",get checked(){return h(M)},onchange:oe=>{var pe;(pe=oe.target)!=null&&pe.checked&&a(i,{bodyType:""})}}),Pe(),Z(R);var k=z(R,2),P=X(k);const H=Ne(()=>n().bodyType==="form-data");St(P,{type:"radio",name:"bodyType",value:"form-data",get checked(){return h(H)},onchange:oe=>{var pe;(pe=oe.target)!=null&&pe.checked&&a(i,{bodyType:"form-data"})}}),Pe(),Z(k);var I=z(k,2),B=X(I);const F=Ne(()=>n().bodyType==="x-www-form-urlencoded");St(B,{type:"radio",name:"bodyType",value:"x-www-form-urlencoded",get checked(){return h(F)},onchange:oe=>{var pe;(pe=oe.target)!=null&&pe.checked&&a(i,{bodyType:"x-www-form-urlencoded"})}}),Pe(),Z(I);var K=z(I,2),se=X(K);const ee=Ne(()=>n().bodyType==="json");St(se,{type:"radio",name:"bodyType",value:"json",get checked(){return h(ee)},onchange:oe=>{var pe;(pe=oe.target)!=null&&pe.checked&&a(i,{bodyType:"json"})}}),Pe(),Z(K);var W=z(K,2),fe=X(W);const me=Ne(()=>n().bodyType==="raw");St(fe,{type:"radio",name:"bodyType",value:"raw",get checked(){return h(me)},onchange:oe=>{var pe;(pe=oe.target)!=null&&pe.checked&&a(i,{bodyType:"raw"})}}),Pe(),Z(W),Z(O);var Ce=z(O,2);{var he=oe=>{var pe=gy(),be=xe(pe),Ie=X(be);je(Ie,{level:3,children:(J,Re)=>{Pe();var le=Ae("参数");L(J,le)},$$slots:{default:!0}});var ht=z(Ie,2);Ge(ht,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{s(i,"fromData")},children:(J,Re)=>{var le=fy();L(J,le)},$$slots:{default:!0}}),Z(be);var dt=z(be,2);Ft(dt,{dataKeyName:"fromData"}),L(oe,pe)};ke(Ce,oe=>{n().bodyType==="form-data"&&oe(he)})}var ze=z(Ce,2);{var G=oe=>{var pe=vy(),be=xe(pe),Ie=X(be);je(Ie,{level:3,children:(J,Re)=>{Pe();var le=Ae("参数");L(J,le)},$$slots:{default:!0}});var ht=z(Ie,2);Ge(ht,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{s(i,"fromUrlencoded")},children:(J,Re)=>{var le=hy();L(J,le)},$$slots:{default:!0}}),Z(be);var dt=z(be,2);Ft(dt,{dataKeyName:"fromUrlencoded"}),L(oe,pe)};ke(ze,oe=>{n().bodyType==="x-www-form-urlencoded"&&oe(G)})}var ae=z(ze,2);{var Me=oe=>{var pe=py(),be=X(pe);Pt(be,{rows:"5",style:"width: 100%",placeholder:"请输入 json 信息",get value(){return n().bodyJson},oninput:Ie=>{a(i,{bodyJson:Ie.target.value})}}),Z(pe),L(oe,pe)};ke(ae,oe=>{n().bodyType==="json"&&oe(Me)})}var Le=z(ae,2);{var Xe=oe=>{var pe=my(),be=X(pe);Pt(be,{rows:"5",style:"width: 100%",placeholder:"请输入请求信息",get value(){return n().bodyRaw},oninput:Ie=>{a(i,{bodyRaw:Ie.target.value})}}),Z(pe),L(oe,pe)};ke(Le,oe=>{n().bodyType==="raw"&&oe(Xe)})}var te=z(Le,2),Fe=X(te);je(Fe,{level:3,mt:"10px",children:(oe,pe)=>{Pe();var be=Ae("输出参数");L(oe,be)},$$slots:{default:!0}});var Oe=z(Fe,2);Ge(Oe,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{s(i,"outputDefs")},children:(oe,pe)=>{var be=yy();L(oe,be)},$$slots:{default:!0}}),Z(te);var rt=z(te,2);Yn(rt,{}),L(u,f)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(l){n(l),y()}})}ie(Cd,{data:{}},[],[],!0);var xy=_e(''),by=_e(''),Cy=ne('
    知识库
    获取数据量
    ',1);const ky={hash:"svelte-15t2v24",code:".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}"};function kd(e,t){ue(t,!0),et(e,ky);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),s=Ao();let a=Fn(Ht([]));rn(async()=>{var c,f;const u=await((f=(c=s.provider)==null?void 0:c.knowledge)==null?void 0:f.call(c));h(a).push(...u||[])});const{updateNodeData:l}=Lt();return kr(()=>{(!n().outputDefs||n().outputDefs.length===0)&&i(o,"outputDefs",{name:"documents",dataType:"Array",nameDisabled:!0,dataTypeDisabled:!0,addChildDisabled:!0,children:[{name:"title",dataType:"String",nameDisabled:!0,dataTypeDisabled:!0},{name:"content",dataType:"String",nameDisabled:!0,dataTypeDisabled:!0},{name:"documentId",dataType:"Number",nameDisabled:!0,dataTypeDisabled:!0},{name:"knowledgeId",dataType:"Number",nameDisabled:!0,dataTypeDisabled:!0}]})}),dn(e,ft({get data(){return n()}},()=>r,{icon:c=>{var f=xy();L(c,f)},children:(c,f)=>{var d=Cy(),g=xe(d),p=X(g);je(p,{level:3,children:(V,A)=>{Pe();var O=Ae("输入参数");L(V,O)},$$slots:{default:!0}});var x=z(p,2);Ge(x,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(V,A)=>{var O=by();L(V,O)},$$slots:{default:!0}}),Z(g);var C=z(g,2);Ft(C,{});var $=z(C,2);je($,{level:3,mt:"10px",children:(V,A)=>{Pe();var O=Ae("知识库设置");L(V,O)},$$slots:{default:!0}});var m=z($,4),_=X(m);const v=Ne(()=>n().knowledgeId?[n().knowledgeId]:[]);ln(_,{get items(){return h(a)},style:"width: 100%",placeholder:"请选择知识库",onSelect:V=>{const A=V.value;l(o,()=>({knowledgeId:A}))},get value(){return h(v)}}),Z(m);var b=z(m,4),N=X(b);St(N,{placeholder:"搜索的数据条数",style:"width: 100%"}),Z(b);var E=z(b,2),T=X(E);je(T,{level:3,mt:"10px",children:(V,A)=>{Pe();var O=Ae("输出参数");L(V,O)},$$slots:{default:!0}}),Z(E);var D=z(E,2);Yn(D,{}),L(c,d)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(u){n(u),y()}})}ie(kd,{data:{}},[],[],!0);var $y=_e(''),Ey=_e(''),Sy=ne('
    API 服务商
    API Key
    关键字
    数据量
    其他参数
    ',1);const Py={hash:"svelte-15t2v24",code:".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}"};function $d(e,t){ue(t,!0),et(e,Py);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),s=Ao();let a=Fn(Ht([]));rn(async()=>{var c;const u=await((c=s.provider)==null?void 0:c.knowledge());h(a).push(...u||[])});const{updateNodeData:l}=Lt();return kr(()=>{(!n().outputDefs||n().outputDefs.length===0)&&i(o,"outputDefs",{name:"documents",dataType:"Array",nameDisabled:!0,dataTypeDisabled:!0,addChildDisabled:!0,children:[{name:"title",dataType:"String",nameDisabled:!0,dataTypeDisabled:!0},{name:"content",dataType:"String",nameDisabled:!0,dataTypeDisabled:!0},{name:"documentId",dataType:"Number",nameDisabled:!0,dataTypeDisabled:!0},{name:"knowledgeId",dataType:"Number",nameDisabled:!0,dataTypeDisabled:!0}]})}),dn(e,ft({get data(){return n()}},()=>r,{icon:c=>{var f=$y();L(c,f)},children:(c,f)=>{var d=Sy(),g=xe(d),p=X(g);je(p,{level:3,children:(k,P)=>{Pe();var H=Ae("输入参数");L(k,H)},$$slots:{default:!0}});var x=z(p,2);Ge(x,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(k,P)=>{var H=Ey();L(k,H)},$$slots:{default:!0}}),Z(g);var C=z(g,2);Ft(C,{});var $=z(C,2);je($,{level:3,mt:"10px",children:(k,P)=>{Pe();var H=Ae("搜索引擎设置");L(k,H)},$$slots:{default:!0}});var m=z($,4),_=X(m);const v=Ne(()=>n().knowledgeId?[n().knowledgeId]:[]);ln(_,{get items(){return h(a)},style:"width: 100%",placeholder:"请选择 API 服务商",onSelect:k=>{const P=k.value;l(o,()=>({knowledgeId:P}))},get value(){return h(v)}}),Z(m);var b=z(m,4),N=X(b);St(N,{placeholder:"请输入 API Key",style:"width: 100%"}),Z(b);var E=z(b,4),T=X(E);St(T,{placeholder:"请输入关键字",style:"width: 100%"}),Z(E);var D=z(E,4),V=X(D);St(V,{placeholder:"搜索的数据条数",style:"width: 100%"}),Z(D);var A=z(D,4),O=X(A);Pt(O,{rows:3,placeholder:"请输入其他参数(Property 格式)",style:"width: 100%"}),Z(A);var R=z(A,2),S=X(R);je(S,{level:3,mt:"10px",children:(k,P)=>{Pe();var H=Ae("输出参数");L(k,H)},$$slots:{default:!0}}),Z(R);var M=z(R,2);Yn(M,{}),L(c,d)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(u){n(u),y()}})}ie($d,{data:{}},[],[],!0);var Ny=_e(''),Ty=_e(''),My=ne('
    ',1);const Hy={hash:"svelte-md8tgj",code:".heading.svelte-md8tgj {display:flex;margin-bottom:10px;}.loop_handle_wrapper ::after {content:'循环体';width:100px;height:20px;background:#000;color:#fff;display:flex;justify-content:center;align-items:center;}"};function Ed(e,t){ue(t,!0),et(e,Hy);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),s=Ao();let a=Fn(Ht([]));return rn(async()=>{var u;const l=await((u=s.provider)==null?void 0:u.knowledge());h(a).push(...l||[])}),dn(e,ft({get data(){return n()}},()=>r,{icon:c=>{var f=Ny();L(c,f)},handle:c=>{er(c,{type:"source",get position(){return $e.Bottom},id:"loop_handle",style:"bottom: -12px;width: 100px",class:"loop_handle_wrapper"})},children:(c,f)=>{var d=My(),g=xe(d),p=X(g);je(p,{level:3,children:(v,b)=>{Pe();var N=Ae("循环变量");L(v,N)},$$slots:{default:!0}});var x=z(p,2);Ge(x,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(v,b)=>{var N=Ty();L(v,N)},$$slots:{default:!0}}),Z(g);var C=z(g,2);Ft(C,{});var $=z(C,2),m=X($);je(m,{level:3,mt:"10px",children:(v,b)=>{Pe();var N=Ae("输出参数");L(v,N)},$$slots:{default:!0}}),Z($);var _=z($,2);Yn(_,{}),L(c,d)},$$slots:{icon:!0,handle:!0,default:!0}})),ce({get data(){return n()},set data(l){n(l),y()}})}ie(Ed,{data:{}},[],[],!0);var Vy=_e(''),Dy=_e(''),Ay=_e(''),Ly=ne('
    选择内部接口
    ',1);const Oy={hash:"svelte-15t2v24",code:".heading.svelte-15t2v24 {display:flex;margin-bottom:10px;}.setting-title.svelte-15t2v24 {font-size:12px;color:#999;margin-bottom:4px;margin-top:10px;}.setting-item.svelte-15t2v24 {display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;}"};function Sd(e,t){ue(t,!0),et(e,Oy);const n=w(t,"data",7),r=xt(t,["$$slots","$$events","$$legacy","$$host","data"]),o=pt(),{addParameter:i}=kn(),{updateNodeData:s}=Lt(),a=Ao();let l=Fn(Ht([]));return rn(async()=>{var c,f;const u=await((f=(c=a.provider)==null?void 0:c.internal)==null?void 0:f.call(c));h(l).push(...u||[])}),dn(e,ft({get data(){return n()}},()=>r,{icon:c=>{var f=Vy();L(c,f)},children:(c,f)=>{var d=Ly(),g=xe(d),p=X(g);je(p,{level:3,children:(D,V)=>{Pe();var A=Ae("输入参数");L(D,A)},$$slots:{default:!0}});var x=z(p,2);Ge(x,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o)},children:(D,V)=>{var A=Dy();L(D,A)},$$slots:{default:!0}}),Z(g);var C=z(g,2);Ft(C,{});var $=z(C,2);je($,{level:3,mt:"10px",children:(D,V)=>{Pe();var A=Ae("接口");L(D,A)},$$slots:{default:!0}});var m=z($,4),_=X(m);const v=Ne(()=>n().method?[n().method]:[""]);ln(_,{get items(){return h(l)},style:"width: 100%",placeholder:"请选择内部接口",onSelect:D=>{const V=D.value;s(o,()=>({method:V}))},get value(){return h(v)}}),Z(m);var b=z(m,2),N=X(b);je(N,{level:3,mt:"10px",children:(D,V)=>{Pe();var A=Ae("输出参数");L(D,A)},$$slots:{default:!0}});var E=z(N,2);Ge(E,{class:"input-btn-more",style:"margin-left: auto",onclick:()=>{i(o,"outputDefs")},children:(D,V)=>{var A=Ay();L(D,A)},$$slots:{default:!0}}),Z(b);var T=z(b,2);Yn(T,{}),L(c,d)},$$slots:{icon:!0,default:!0}})),ce({get data(){return n()},set data(u){n(u),y()}})}ie(Sd,{data:{}},[],[],!0);const Iy={startNode:hd,codeNode:xd,llmNode:_d,templateNode:bd,httpNode:Cd,knowledgeNode:kd,searchEngineNode:$d,loopNode:Ed,internalNode:Sd,endNode:yd};var zy=ne(" ",1);function Pd(e,t){ue(t,!0);const n=w(t,"icon",7),r=w(t,"title",7),o=w(t,"type",7),i=w(t,"description",7),s=w(t,"extra",7);return Ge(e,{draggable:!0,ondragstart:l=>{if(!l.dataTransfer)return null;const u={type:o(),data:{title:r(),description:i(),systemPrompt:"",userPrompt:"",...s()}};l.dataTransfer.setData("application/tinyflow",JSON.stringify(u)),l.dataTransfer.effectAllowed="move"},children:(l,u)=>{var c=zy(),f=xe(c);dl(f,n);var d=z(f);Ee(()=>Bt(d,` ${r()??""}`)),L(l,c)},$$slots:{default:!0}}),ce({get icon(){return n()},set icon(l){n(l),y()},get title(){return r()},set title(l){r(l),y()},get type(){return o()},set type(l){o(l),y()},get description(){return i()},set description(l){i(l),y()},get extra(){return s()},set extra(l){s(l),y()}})}ie(Pd,{icon:{},title:{},type:{},description:{},extra:{}},[],[],!0);var Ry=_e(''),By=_e(''),Yy=ne('
    ');function Nd(e){let t=Fn("base"),n=Fn("show");const r=[{icon:'',title:"开始节点",type:"startNode",description:"开始定义输入参数"},{icon:'',title:"循环",type:"loopNode",description:"用于循环执行任务"},{icon:'',title:"大模型",type:"llmNode",description:"使用大模型处理问题"},{icon:'',title:"知识库",type:"knowledgeNode",description:"通过知识库获取内容"},{icon:'',title:"搜索引擎",type:"searchEngineNode",description:"通过搜索引擎搜索内容"},{icon:'',title:"Http 请求",type:"httpNode",description:"通过 HTTP 请求获取数据"},{icon:'',title:"动态代码",type:"codeNode",description:"动态执行代码"},{icon:'',title:"内容模板",type:"templateNode",description:"通过模板引擎生成内容"},{icon:'',title:"内部接口",type:"internalNode",description:"执行内部提供接口"},{icon:'',title:"结束节点",type:"endNode",description:"结束定义输出参数"}],o=[{label:"基础节点",value:"base"},{label:"业务工具",value:"tools"}];var i=Yy(),s=X(i),a=X(s),l=X(a);Wc(l,{style:"width: 100%",items:o,onChange:p=>{U(t,Ht(p.value.toString()))}}),Z(a);var u=z(a,2),c=X(u);Yt(c,21,()=>r,oi,(p,x)=>{Pd(p,ft(()=>h(x)))}),Z(c);var f=z(c,2),d=X(f);Ge(d,{children:(p,x)=>{Pe();var C=Ae("测试业务按钮");L(p,C)},$$slots:{default:!0}}),Z(f),Z(u),Z(s);var g=z(s,2);Ge(g,{onclick:()=>{U(n,Ht(h(n)?"":"show"))},children:(p,x)=>{var C=tt(),$=xe(C);{var m=v=>{var b=Ry();L(v,b)},_=v=>{var b=By();L(v,b)};ke($,v=>{h(n)==="show"?v(m):v(_,!1)})}L(p,C)},$$slots:{default:!0}}),Z(i),Ee(()=>{$t(i,1,`tf-toolbar ${h(n)??""}`),de(c,"style",`display: ${(h(t)==="base"?"flex":"none")??""}`),de(f,"style",`display: ${(h(t)!=="base"?"flex":"none")??""}`)}),L(e,i)}ie(Nd,{},[],[],!0);const Zy=()=>{const{nodeLookup:e}=Ue();return{getNode:n=>{var o;return(o=q(e).get(n))==null?void 0:o.internals.userNode}}},Xy=()=>{const{nodes:e}=Ue();return{ensureParentInNodesBefore:(n,r)=>{e.update(o=>{let i=-1;for(let l=0;ls;l--)o[l]=o[l-1];return o[s]=a,o})}}},Fy=()=>{const{edges:e}=Ue();return{getEdgesByTarget:n=>q(e).filter(o=>o.target===n)}};var Wy=ne('
    边属性设置
    边条件设置
    '),Ky=ne(" ",1),qy=ne('
    ');const Gy={hash:"svelte-1oe15vw",code:".panel-content.svelte-1oe15vw {padding:10px;background-color:#fff;border-radius:5px;box-shadow:0 2px 4px rgba(0, 0, 0, 0.1);width:200px;border:1px solid #efefef;}.setting-title.svelte-1oe15vw {margin:10px 0;font-size:12px;color:#999;}"};function Td(e,t){ue(t,!0),et(e,Gy);const n=w(t,"onInit",7),r=Lt();n()(r);let o=Fn(!1);const i=_=>{_.preventDefault(),_.dataTransfer&&(_.dataTransfer.dropEffect="move")},s=_=>{var T;_.preventDefault();const v=r.screenToFlowPosition({x:_.clientX-250,y:_.clientY-100}),b=(T=_.dataTransfer)==null?void 0:T.getData("application/tinyflow"),N=b?JSON.parse(b):{},E={id:`node_${Kr()}`,position:v,data:{},...N};Bi.addNode(E),Bi.selectNodeOnly(E.id)},{getNode:a}=Zy(),l=_=>{const v=a(_.source),b=a(_.target);if(_.sourceHandle==="loop_handle"||v.parentId){const N=r.getEdges();for(let E of N)if(E.target===_.target){const T=a(E.source);if(_.sourceHandle==="loop_handle"&&T.parentId!==v.id||v.parentId&&T.parentId!==v.parentId)return!1}}return!(!v.parentId&&b.parentId&&b.parentId!==v.id)},{ensureParentInNodesBefore:u}=Xy(),c=(_,v)=>{if(!v.isValid)return;const b=v.toNode;if(b.parentId)return;const N=v.fromNode,E=v.fromHandle,T={position:{...b.position}};if(E.id==="loop_handle"?T.parentId=N.id:N.parentId&&(T.parentId=N.parentId),T.parentId){const D=a(T.parentId);T.position={x:b.position.x-D.position.x,y:b.position.y-D.position.y},u(T.parentId,b.id),r.updateNode(b.id,T)}},{getEdgesByTarget:f}=Fy(),d=_=>{_.edges.forEach(b=>{const N=a(b.target);if(N.parentId){const E=f(b.target),T=a(N.parentId);if(E.length===0)r.updateNode(N.id,{parentId:void 0,position:{x:N.position.x+T.position.x,y:N.position.y+T.position.y}});else{let D=!1;for(let V=0;V{console.log("onconnectstart: ",_,v)},p=_=>{console.log("onconnect: ",_)};var x=qy(),C=X(x);Nd(C);var $=z(C,2);const m=Ne(()=>({markerEnd:{type:_o.ArrowClosed,width:20,height:20}}));return Pc($,ft({nodeTypes:Iy},Bi,{class:"tinyflow-logo",isValidConnection:l,onconnectend:c,onconnectstart:g,onconnect:p,connectionRadius:50,ondelete:d,onclick:_=>{const v=_.target;v.classList.contains("svelte-flow__edge-interaction")||v.classList.contains("panel-content")||v.closest(".panel-content")||U(o,!1)},get defaultEdgeOptions(){return h(m)},$$events:{drop:s,dragover:i,edgeclick:()=>{U(o,!0)}},children:(_,v)=>{var b=Ky(),N=xe(b);Ic(N,{});var E=z(N,2);Ac(E,{});var T=z(E,2);Rc(T,{});var D=z(T,2);{var V=A=>{So(A,{children:(O,R)=>{var S=Wy(),M=z(X(S),4),k=X(M);Pt(k,{rows:3,placeholder:"请输入边条件",style:"width: 100%",oninput:P=>{}}),Z(M),Z(S),L(O,S)},$$slots:{default:!0}})};ke(D,A=>{h(o)&&A(V)})}L(_,b)},$$slots:{default:!0}})),Z(x),L(e,x),ce({get onInit(){return n()},set onInit(_){n(_),y()}})}ie(Td,{onInit:{}},[],[],!0);function Uy(e,t){ue(t,!0);const n=w(t,"options",7),r=w(t,"onInit",7),{data:o}=n();return Bi.init((o==null?void 0:o.nodes)||[],(o==null?void 0:o.edges)||[]),Sr("tinyflow_options",n()),Nc(e,{fitView:!0,children:(i,s)=>{Td(i,{get onInit(){return r()}})},$$slots:{default:!0}}),ce({get options(){return n()},set options(i){n(i),y()},get onInit(){return r()},set onInit(i){r(i),y()}})}customElements.define("tinyflow-component",ie(Uy,{options:{},onInit:{}},[],[],!1)),We.Tinyflow=J2,Object.defineProperty(We,Symbol.toStringTag,{value:"Module"})}); +//# sourceMappingURL=index.umd.js.map diff --git a/marketing-ui/admin-ui/src/components/Tooltip/index.ts b/marketing-ui/admin-ui/src/components/Tooltip/index.ts new file mode 100644 index 0000000..ab66ddf --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Tooltip/index.ts @@ -0,0 +1,3 @@ +import Tooltip from './src/Tooltip.vue' + +export { Tooltip } diff --git a/marketing-ui/admin-ui/src/components/Tooltip/src/Tooltip.vue b/marketing-ui/admin-ui/src/components/Tooltip/src/Tooltip.vue new file mode 100644 index 0000000..1a2e09c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Tooltip/src/Tooltip.vue @@ -0,0 +1,17 @@ + + diff --git a/marketing-ui/admin-ui/src/components/UploadFile/index.ts b/marketing-ui/admin-ui/src/components/UploadFile/index.ts new file mode 100644 index 0000000..97c1d66 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/UploadFile/index.ts @@ -0,0 +1,5 @@ +import UploadImg from './src/UploadImg.vue' +import UploadImgs from './src/UploadImgs.vue' +import UploadFile from './src/UploadFile.vue' + +export { UploadImg, UploadImgs, UploadFile } diff --git a/marketing-ui/admin-ui/src/components/UploadFile/src/UploadFile.vue b/marketing-ui/admin-ui/src/components/UploadFile/src/UploadFile.vue new file mode 100644 index 0000000..9d0a904 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/UploadFile/src/UploadFile.vue @@ -0,0 +1,230 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/UploadFile/src/UploadImg.vue b/marketing-ui/admin-ui/src/components/UploadFile/src/UploadImg.vue new file mode 100644 index 0000000..ac0c162 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/UploadFile/src/UploadImg.vue @@ -0,0 +1,271 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/UploadFile/src/UploadImgs.vue b/marketing-ui/admin-ui/src/components/UploadFile/src/UploadImgs.vue new file mode 100644 index 0000000..59857a9 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/UploadFile/src/UploadImgs.vue @@ -0,0 +1,318 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/UploadFile/src/useUpload.ts b/marketing-ui/admin-ui/src/components/UploadFile/src/useUpload.ts new file mode 100644 index 0000000..2981e12 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/UploadFile/src/useUpload.ts @@ -0,0 +1,106 @@ +import * as FileApi from '@/api/infra/file' +import CryptoJS from 'crypto-js' +import { UploadRawFile, UploadRequestOptions } from 'element-plus/es/components/upload/src/upload' +import axios from 'axios' + +/** + * 获得上传 URL + */ +export const getUploadUrl = (): string => { + return import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL + '/infra/file/upload' +} + +export const useUpload = () => { + // 后端上传地址 + const uploadUrl = getUploadUrl() + // 是否使用前端直连上传 + const isClientUpload = UPLOAD_TYPE.CLIENT === import.meta.env.VITE_UPLOAD_TYPE + // 重写ElUpload上传方法 + const httpRequest = async (options: UploadRequestOptions) => { + // 模式一:前端上传 + if (isClientUpload) { + // 1.1 生成文件名称 + const fileName = await generateFileName(options.file) + // 1.2 获取文件预签名地址 + const presignedInfo = await FileApi.getFilePresignedUrl(fileName) + // 1.3 上传文件(不能使用 ElUpload 的 ajaxUpload 方法的原因:其使用的是 FormData 上传,Minio 不支持) + return axios + .put(presignedInfo.uploadUrl, options.file, { + headers: { + 'Content-Type': options.file.type + } + }) + .then(() => { + // 1.4. 记录文件信息到后端(异步) + createFile(presignedInfo, fileName, options.file) + // 通知成功,数据格式保持与后端上传的返回结果一致 + return { data: presignedInfo.url } + }) + } else { + // 模式二:后端上传 + // 重写 el-upload httpRequest 文件上传成功会走成功的钩子,失败走失败的钩子 + return new Promise((resolve, reject) => { + FileApi.updateFile({ file: options.file }) + .then((res) => { + if (res.code === 0) { + resolve(res) + } else { + reject(res) + } + }) + .catch((res) => { + reject(res) + }) + }) + } + } + + return { + uploadUrl, + httpRequest + } +} + +/** + * 创建文件信息 + * @param vo 文件预签名信息 + * @param name 文件名称 + * @param file 文件 + */ +function createFile(vo: FileApi.FilePresignedUrlRespVO, name: string, file: UploadRawFile) { + const fileVo = { + configId: vo.configId, + url: vo.url, + path: name, + name: file.name, + type: file.type, + size: file.size + } + FileApi.createFile(fileVo) + return fileVo +} + +/** + * 生成文件名称(使用算法SHA256) + * @param file 要上传的文件 + */ +async function generateFileName(file: UploadRawFile) { + // 读取文件内容 + const data = await file.arrayBuffer() + const wordArray = CryptoJS.lib.WordArray.create(data) + // 计算SHA256 + const sha256 = CryptoJS.SHA256(wordArray).toString() + // 拼接后缀 + const ext = file.name.substring(file.name.lastIndexOf('.')) + return `${sha256}${ext}` +} + +/** + * 上传类型 + */ +enum UPLOAD_TYPE { + // 客户端直接上传(只支持S3服务) + CLIENT = 'client', + // 客户端发送到后端上传 + SERVER = 'server' +} diff --git a/marketing-ui/admin-ui/src/components/UserSelectForm/index.vue b/marketing-ui/admin-ui/src/components/UserSelectForm/index.vue new file mode 100644 index 0000000..5ed99f8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/UserSelectForm/index.vue @@ -0,0 +1,171 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/Verifition/index.ts b/marketing-ui/admin-ui/src/components/Verifition/index.ts new file mode 100644 index 0000000..bcfe6d9 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Verifition/index.ts @@ -0,0 +1,3 @@ +import Verify from './src/Verify.vue' + +export { Verify } diff --git a/marketing-ui/admin-ui/src/components/Verifition/src/Verify.vue b/marketing-ui/admin-ui/src/components/Verifition/src/Verify.vue new file mode 100644 index 0000000..b7b5048 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Verifition/src/Verify.vue @@ -0,0 +1,441 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/Verifition/src/Verify/VerifyPoints.vue b/marketing-ui/admin-ui/src/components/Verifition/src/Verify/VerifyPoints.vue new file mode 100644 index 0000000..9d04f29 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Verifition/src/Verify/VerifyPoints.vue @@ -0,0 +1,250 @@ + + diff --git a/marketing-ui/admin-ui/src/components/Verifition/src/Verify/VerifySlide.vue b/marketing-ui/admin-ui/src/components/Verifition/src/Verify/VerifySlide.vue new file mode 100644 index 0000000..f3c7bfe --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Verifition/src/Verify/VerifySlide.vue @@ -0,0 +1,376 @@ + + diff --git a/marketing-ui/admin-ui/src/components/Verifition/src/Verify/index.ts b/marketing-ui/admin-ui/src/components/Verifition/src/Verify/index.ts new file mode 100644 index 0000000..0daa63a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Verifition/src/Verify/index.ts @@ -0,0 +1,4 @@ +import VerifySlide from './VerifySlide.vue' +import VerifyPoints from './VerifyPoints.vue' + +export { VerifySlide, VerifyPoints } diff --git a/marketing-ui/admin-ui/src/components/Verifition/src/utils/ase.ts b/marketing-ui/admin-ui/src/components/Verifition/src/utils/ase.ts new file mode 100644 index 0000000..d2e6b98 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Verifition/src/utils/ase.ts @@ -0,0 +1,14 @@ +import CryptoJS from 'crypto-js' +/** + * @word 要加密的内容 + * @keyWord String 服务器随机返回的关键字 + * */ +export function aesEncrypt(word, keyWord = 'XwKsGlMcdPMEhR1B') { + const key = CryptoJS.enc.Utf8.parse(keyWord) + const srcs = CryptoJS.enc.Utf8.parse(word) + const encrypted = CryptoJS.AES.encrypt(srcs, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }) + return encrypted.toString() +} diff --git a/marketing-ui/admin-ui/src/components/Verifition/src/utils/util.ts b/marketing-ui/admin-ui/src/components/Verifition/src/utils/util.ts new file mode 100644 index 0000000..15c1627 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/Verifition/src/utils/util.ts @@ -0,0 +1,97 @@ +export function resetSize(vm) { + let img_width, img_height, bar_width, bar_height //图片的宽度、高度,移动条的宽度、高度 + const EmployeeWindow = window as any + const parentWidth = vm.$el.parentNode.offsetWidth || EmployeeWindow.offsetWidth + const parentHeight = vm.$el.parentNode.offsetHeight || EmployeeWindow.offsetHeight + if (vm.imgSize.width.indexOf('%') != -1) { + img_width = (parseInt(vm.imgSize.width) / 100) * parentWidth + 'px' + } else { + img_width = vm.imgSize.width + } + + if (vm.imgSize.height.indexOf('%') != -1) { + img_height = (parseInt(vm.imgSize.height) / 100) * parentHeight + 'px' + } else { + img_height = vm.imgSize.height + } + + if (vm.barSize.width.indexOf('%') != -1) { + bar_width = (parseInt(vm.barSize.width) / 100) * parentWidth + 'px' + } else { + bar_width = vm.barSize.width + } + + if (vm.barSize.height.indexOf('%') != -1) { + bar_height = (parseInt(vm.barSize.height) / 100) * parentHeight + 'px' + } else { + bar_height = vm.barSize.height + } + + return { imgWidth: img_width, imgHeight: img_height, barWidth: bar_width, barHeight: bar_height } +} + +export const _code_chars = [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 'a', + 'b', + 'c', + 'd', + 'e', + 'f', + 'g', + 'h', + 'i', + 'j', + 'k', + 'l', + 'm', + 'n', + 'o', + 'p', + 'q', + 'r', + 's', + 't', + 'u', + 'v', + 'w', + 'x', + 'y', + 'z', + 'A', + 'B', + 'C', + 'D', + 'E', + 'F', + 'G', + 'H', + 'I', + 'J', + 'K', + 'L', + 'M', + 'N', + 'O', + 'P', + 'Q', + 'R', + 'S', + 'T', + 'U', + 'V', + 'W', + 'X', + 'Y', + 'Z' +] +export const _code_color1 = ['#fffff0', '#f0ffff', '#f0fff0', '#fff0f0'] +export const _code_color2 = ['#FF0033', '#006699', '#993366', '#FF9900', '#66CC66', '#FF33CC'] diff --git a/marketing-ui/admin-ui/src/components/VerticalButtonGroup/index.vue b/marketing-ui/admin-ui/src/components/VerticalButtonGroup/index.vue new file mode 100644 index 0000000..9c78ea2 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/VerticalButtonGroup/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/XButton/index.ts b/marketing-ui/admin-ui/src/components/XButton/index.ts new file mode 100644 index 0000000..be0f0d4 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/XButton/index.ts @@ -0,0 +1,4 @@ +import XButton from './src/XButton.vue' +import XTextButton from './src/XTextButton.vue' + +export { XButton, XTextButton } diff --git a/marketing-ui/admin-ui/src/components/XButton/src/XButton.vue b/marketing-ui/admin-ui/src/components/XButton/src/XButton.vue new file mode 100644 index 0000000..40cba1a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/XButton/src/XButton.vue @@ -0,0 +1,50 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/XButton/src/XTextButton.vue b/marketing-ui/admin-ui/src/components/XButton/src/XTextButton.vue new file mode 100644 index 0000000..b1a922b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/XButton/src/XTextButton.vue @@ -0,0 +1,49 @@ + + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue new file mode 100644 index 0000000..00e887c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue @@ -0,0 +1,655 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue new file mode 100644 index 0000000..34a54c8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue @@ -0,0 +1,379 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/index.ts b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/index.ts new file mode 100644 index 0000000..8522846 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/index.ts @@ -0,0 +1,8 @@ +import MyProcessDesigner from './ProcessDesigner.vue' + +MyProcessDesigner.install = function (Vue) { + Vue.component(MyProcessDesigner.name, MyProcessDesigner) +} + +// 流程图的设计器,可编辑 +export default MyProcessDesigner diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/index2.ts b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/index2.ts new file mode 100644 index 0000000..ebe8ca7 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/index2.ts @@ -0,0 +1,8 @@ +import MyProcessViewer from './ProcessViewer.vue' + +MyProcessViewer.install = function (Vue) { + Vue.component(MyProcessViewer.name, MyProcessViewer) +} + +// 流程图的查看器,不可编辑 +export default MyProcessViewer diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js new file mode 100644 index 0000000..8783493 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/contentPadProvider.js @@ -0,0 +1,423 @@ +import { assign, forEach, isArray } from 'min-dash' + +import { is } from 'bpmn-js/lib/util/ModelUtil' + +import { isExpanded, isEventSubProcess } from 'bpmn-js/lib/util/DiUtil' + +import { isAny } from 'bpmn-js/lib/features/modeling/util/ModelingUtil' + +import { getChildLanes } from 'bpmn-js/lib/features/modeling/util/LaneUtil' + +import { hasPrimaryModifier } from 'diagram-js/lib/util/Mouse' + +/** + * A provider for BPMN 2.0 elements context pad + */ +export default function ContextPadProvider( + config, + injector, + eventBus, + contextPad, + modeling, + elementFactory, + connect, + create, + popupMenu, + canvas, + rules, + translate +) { + config = config || {} + + contextPad.registerProvider(this) + + this._contextPad = contextPad + + this._modeling = modeling + + this._elementFactory = elementFactory + this._connect = connect + this._create = create + this._popupMenu = popupMenu + this._canvas = canvas + this._rules = rules + this._translate = translate + + if (config.autoPlace !== false) { + this._autoPlace = injector.get('autoPlace', false) + } + + eventBus.on('create.end', 250, function (event) { + const context = event.context, + shape = context.shape + + if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) { + return + } + + const entries = contextPad.getEntries(shape) + + if (entries.replace) { + entries.replace.action.click(event, shape) + } + }) +} + +ContextPadProvider.$inject = [ + 'config.contextPad', + 'injector', + 'eventBus', + 'contextPad', + 'modeling', + 'elementFactory', + 'connect', + 'create', + 'popupMenu', + 'canvas', + 'rules', + 'translate', + 'elementRegistry' +] + +ContextPadProvider.prototype.getContextPadEntries = function (element) { + const contextPad = this._contextPad, + modeling = this._modeling, + elementFactory = this._elementFactory, + connect = this._connect, + create = this._create, + popupMenu = this._popupMenu, + canvas = this._canvas, + rules = this._rules, + autoPlace = this._autoPlace, + translate = this._translate + + const actions = {} + + if (element.type === 'label') { + return actions + } + + const businessObject = element.businessObject + + function startConnect(event, element) { + connect.start(event, element) + } + + function removeElement() { + modeling.removeElements([element]) + } + + function getReplaceMenuPosition(element) { + const Y_OFFSET = 5 + + const diagramContainer = canvas.getContainer(), + pad = contextPad.getPad(element).html + + const diagramRect = diagramContainer.getBoundingClientRect(), + padRect = pad.getBoundingClientRect() + + const top = padRect.top - diagramRect.top + const left = padRect.left - diagramRect.left + + const pos = { + x: left, + y: top + padRect.height + Y_OFFSET + } + + return pos + } + + /** + * Create an append action + * + * @param {string} type + * @param {string} className + * @param {string} [title] + * @param {Object} [options] + * + * @return {Object} descriptor + */ + function appendAction(type, className, title, options) { + if (typeof title !== 'string') { + options = title + title = translate('Append {type}', { type: type.replace(/^bpmn:/, '') }) + } + + function appendStart(event, element) { + const shape = elementFactory.createShape(assign({ type: type }, options)) + create.start(event, shape, { + source: element + }) + } + + const append = autoPlace + ? function (event, element) { + const shape = elementFactory.createShape(assign({ type: type }, options)) + + autoPlace.append(element, shape) + } + : appendStart + + return { + group: 'model', + className: className, + title: title, + action: { + dragstart: appendStart, + click: append + } + } + } + + function splitLaneHandler(count) { + return function (event, element) { + // actual split + modeling.splitLane(element, count) + + // refresh context pad after split to + // get rid of split icons + contextPad.open(element, true) + } + } + + if (isAny(businessObject, ['bpmn:Lane', 'bpmn:Participant']) && isExpanded(businessObject)) { + const childLanes = getChildLanes(element) + + assign(actions, { + 'lane-insert-above': { + group: 'lane-insert-above', + className: 'bpmn-icon-lane-insert-above', + title: translate('Add Lane above'), + action: { + click: function (event, element) { + modeling.addLane(element, 'top') + } + } + } + }) + + if (childLanes.length < 2) { + if (element.height >= 120) { + assign(actions, { + 'lane-divide-two': { + group: 'lane-divide', + className: 'bpmn-icon-lane-divide-two', + title: translate('Divide into two Lanes'), + action: { + click: splitLaneHandler(2) + } + } + }) + } + + if (element.height >= 180) { + assign(actions, { + 'lane-divide-three': { + group: 'lane-divide', + className: 'bpmn-icon-lane-divide-three', + title: translate('Divide into three Lanes'), + action: { + click: splitLaneHandler(3) + } + } + }) + } + } + + assign(actions, { + 'lane-insert-below': { + group: 'lane-insert-below', + className: 'bpmn-icon-lane-insert-below', + title: translate('Add Lane below'), + action: { + click: function (event, element) { + modeling.addLane(element, 'bottom') + } + } + } + }) + } + + if (is(businessObject, 'bpmn:FlowNode')) { + if (is(businessObject, 'bpmn:EventBasedGateway')) { + assign(actions, { + 'append.receive-task': appendAction( + 'bpmn:ReceiveTask', + 'bpmn-icon-receive-task', + translate('Append ReceiveTask') + ), + 'append.message-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-message', + translate('Append MessageIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:MessageEventDefinition' } + ), + 'append.timer-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-timer', + translate('Append TimerIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:TimerEventDefinition' } + ), + 'append.condition-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-condition', + translate('Append ConditionIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:ConditionalEventDefinition' } + ), + 'append.signal-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-signal', + translate('Append SignalIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:SignalEventDefinition' } + ) + }) + } else if ( + isEventType(businessObject, 'bpmn:BoundaryEvent', 'bpmn:CompensateEventDefinition') + ) { + assign(actions, { + 'append.compensation-activity': appendAction( + 'bpmn:Task', + 'bpmn-icon-task', + translate('Append compensation activity'), + { + isForCompensation: true + } + ) + }) + } else if ( + !is(businessObject, 'bpmn:EndEvent') && + !businessObject.isForCompensation && + !isEventType(businessObject, 'bpmn:IntermediateThrowEvent', 'bpmn:LinkEventDefinition') && + !isEventSubProcess(businessObject) + ) { + assign(actions, { + 'append.end-event': appendAction( + 'bpmn:EndEvent', + 'bpmn-icon-end-event-none', + translate('Append EndEvent') + ), + 'append.gateway': appendAction( + 'bpmn:ExclusiveGateway', + 'bpmn-icon-gateway-none', + translate('Append Gateway') + ), + 'append.append-task': appendAction( + 'bpmn:UserTask', + 'bpmn-icon-user-task', + translate('Append Task') + ), + 'append.intermediate-event': appendAction( + 'bpmn:IntermediateThrowEvent', + 'bpmn-icon-intermediate-event-none', + translate('Append Intermediate/Boundary Event') + ) + }) + } + } + + if (!popupMenu.isEmpty(element, 'bpmn-replace')) { + // Replace menu entry + assign(actions, { + replace: { + group: 'edit', + className: 'bpmn-icon-screw-wrench', + title: '修改类型', + action: { + click: function (event, element) { + const position = assign(getReplaceMenuPosition(element), { + cursor: { x: event.x, y: event.y } + }) + + popupMenu.open(element, 'bpmn-replace', position) + } + } + } + }) + } + + if ( + isAny(businessObject, [ + 'bpmn:FlowNode', + 'bpmn:InteractionNode', + 'bpmn:DataObjectReference', + 'bpmn:DataStoreReference' + ]) + ) { + assign(actions, { + 'append.text-annotation': appendAction('bpmn:TextAnnotation', 'bpmn-icon-text-annotation'), + + connect: { + group: 'connect', + className: 'bpmn-icon-connection-multi', + title: translate( + 'Connect using ' + + (businessObject.isForCompensation ? '' : 'Sequence/MessageFlow or ') + + 'Association' + ), + action: { + click: startConnect, + dragstart: startConnect + } + } + }) + } + + if (isAny(businessObject, ['bpmn:DataObjectReference', 'bpmn:DataStoreReference'])) { + assign(actions, { + connect: { + group: 'connect', + className: 'bpmn-icon-connection-multi', + title: translate('Connect using DataInputAssociation'), + action: { + click: startConnect, + dragstart: startConnect + } + } + }) + } + + if (is(businessObject, 'bpmn:Group')) { + assign(actions, { + 'append.text-annotation': appendAction('bpmn:TextAnnotation', 'bpmn-icon-text-annotation') + }) + } + + // delete element entry, only show if allowed by rules + let deleteAllowed = rules.allowed('elements.delete', { elements: [element] }) + + if (isArray(deleteAllowed)) { + // was the element returned as a deletion candidate? + deleteAllowed = deleteAllowed[0] === element + } + + if (deleteAllowed) { + assign(actions, { + delete: { + group: 'edit', + className: 'bpmn-icon-trash', + title: translate('Remove'), + action: { + click: removeElement + } + } + }) + } + + return actions +} + +// helpers ///////// + +function isEventType(eventBo, type, definition) { + const isType = eventBo.$instanceOf(type) + let isDefinition = false + + const definitions = eventBo.eventDefinitions || [] + forEach(definitions, function (def) { + if (def.$type === definition) { + isDefinition = true + } + }) + + return isType && isDefinition +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js new file mode 100644 index 0000000..80009ef --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/content-pad/index.js @@ -0,0 +1,6 @@ +import CustomContextPadProvider from './contentPadProvider' + +export default { + __init__: ['contextPadProvider'], + contextPadProvider: ['type', CustomContextPadProvider] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js new file mode 100644 index 0000000..f3bc894 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/defaultEmpty.js @@ -0,0 +1,24 @@ +export default (key, name, type) => { + if (!type) type = 'camunda' + const TYPE_TARGET = { + activiti: 'http://activiti.org/bpmn', + camunda: 'http://bpmn.io/schema/bpmn', + flowable: 'http://flowable.org/bpmn' + } + return ` + + + + + + + +` +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json new file mode 100644 index 0000000..94ba8f6 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/activitiDescriptor.json @@ -0,0 +1,1004 @@ +{ + "name": "Activiti", + "uri": "http://activiti.org/bpmn", + "prefix": "activiti", + "xml": { + "tagAlias": "lowerCase" + }, + "associations": [], + "types": [ + { + "name": "Definitions", + "isAbstract": true, + "extends": ["bpmn:Definitions"], + "properties": [ + { + "name": "diagramRelationId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "InOutBinding", + "superClass": ["Element"], + "isAbstract": true, + "properties": [ + { + "name": "source", + "isAttr": true, + "type": "String" + }, + { + "name": "sourceExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "target", + "isAttr": true, + "type": "String" + }, + { + "name": "businessKey", + "isAttr": true, + "type": "String" + }, + { + "name": "local", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "variables", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "In", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "Out", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "AsyncCapable", + "isAbstract": true, + "extends": ["bpmn:Activity", "bpmn:Gateway", "bpmn:Event"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncBefore", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncAfter", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "exclusive", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "JobPriorized", + "isAbstract": true, + "extends": ["bpmn:Process", "activiti:AsyncCapable"], + "properties": [ + { + "name": "jobPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "SignalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:SignalEventDefinition"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + } + ] + }, + { + "name": "ErrorEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ErrorEventDefinition"], + "properties": [ + { + "name": "errorCodeVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "errorMessageVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Error", + "isAbstract": true, + "extends": ["bpmn:Error"], + "properties": [ + { + "name": "activiti:errorMessage", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "PotentialStarter", + "superClass": ["Element"], + "properties": [ + { + "name": "resourceAssignmentExpression", + "type": "bpmn:ResourceAssignmentExpression" + } + ] + }, + { + "name": "FormSupported", + "isAbstract": true, + "extends": ["bpmn:StartEvent", "bpmn:UserTask"], + "properties": [ + { + "name": "formHandlerClass", + "isAttr": true, + "type": "String" + }, + { + "name": "formKey", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TemplateSupported", + "isAbstract": true, + "extends": ["bpmn:Process", "bpmn:FlowElement"], + "properties": [ + { + "name": "modelerTemplate", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Initiator", + "isAbstract": true, + "extends": ["bpmn:StartEvent"], + "properties": [ + { + "name": "initiator", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ScriptTask", + "isAbstract": true, + "extends": ["bpmn:ScriptTask"], + "properties": [ + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Process", + "isAbstract": true, + "extends": ["bpmn:Process"], + "properties": [ + { + "name": "candidateStarterGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStarterUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "versionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "historyTimeToLive", + "isAttr": true, + "type": "String" + }, + { + "name": "isStartableInTasklist", + "isAttr": true, + "type": "Boolean", + "default": true + }, + { + "name": "executionListener", + "isAbstract": true, + "type": "Expression" + } + ] + }, + { + "name": "EscalationEventDefinition", + "isAbstract": true, + "extends": ["bpmn:EscalationEventDefinition"], + "properties": [ + { + "name": "escalationCodeVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FormalExpression", + "isAbstract": true, + "extends": ["bpmn:FormalExpression"], + "properties": [ + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "multiinstance_type", + "superClass": ["Element"] + }, + { + "name": "multiinstance_condition", + "superClass": ["Element"] + }, + { + "name": "Assignable", + "extends": ["bpmn:UserTask"], + "properties": [ + { + "name": "assignee", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "dueDate", + "isAttr": true, + "type": "String" + }, + { + "name": "followUpDate", + "isAttr": true, + "type": "String" + }, + { + "name": "priority", + "isAttr": true, + "type": "String" + }, + { + "name": "multiinstance_condition", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStrategy", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateParam", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "CallActivity", + "extends": ["bpmn:CallActivity"], + "properties": [ + { + "name": "calledElementBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "calledElementVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementVersionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "caseRef", + "isAttr": true, + "type": "String" + }, + { + "name": "caseBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "caseVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "caseTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingClass", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingDelegateExpression", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ServiceTaskLike", + "extends": [ + "bpmn:ServiceTask", + "bpmn:BusinessRuleTask", + "bpmn:SendTask", + "bpmn:MessageEventDefinition" + ], + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "DmnCapable", + "extends": ["bpmn:BusinessRuleTask"], + "properties": [ + { + "name": "decisionRef", + "isAttr": true, + "type": "String" + }, + { + "name": "decisionRefBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "decisionRefVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "mapDecisionResult", + "isAttr": true, + "type": "String", + "default": "resultList" + }, + { + "name": "decisionRefTenantId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ExternalCapable", + "extends": ["activiti:ServiceTaskLike"], + "properties": [ + { + "name": "type", + "isAttr": true, + "type": "String" + }, + { + "name": "topic", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TaskPriorized", + "extends": ["bpmn:Process", "activiti:ExternalCapable"], + "properties": [ + { + "name": "taskPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Properties", + "superClass": ["Element"], + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "values", + "type": "Property", + "isMany": true + } + ] + }, + { + "name": "Property", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "Connector", + "superClass": ["Element"], + "meta": { + "allowedIn": ["activiti:ServiceTaskLike"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + } + ] + }, + { + "name": "InputOutput", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:FlowNode", "activiti:Connector"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + }, + { + "name": "inputParameters", + "isMany": true, + "type": "InputParameter" + }, + { + "name": "outputParameters", + "isMany": true, + "type": "OutputParameter" + } + ] + }, + { + "name": "InputOutputParameter", + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "InputOutputParameterDefinition", + "isAbstract": true + }, + { + "name": "List", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "items", + "isMany": true, + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Map", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "entries", + "isMany": true, + "type": "Entry" + } + ] + }, + { + "name": "Entry", + "properties": [ + { + "name": "key", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Value", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "id", + "isAttr": true, + "type": "String" + }, + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Script", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "scriptFormat", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Field", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "activiti:ServiceTaskLike", + "activiti:ExecutionListener", + "activiti:TaskListener" + ] + }, + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "expression", + "type": "String" + }, + { + "name": "stringValue", + "isAttr": true, + "type": "String" + }, + { + "name": "string", + "type": "String" + } + ] + }, + { + "name": "InputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "OutputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "Collectable", + "isAbstract": true, + "extends": ["bpmn:MultiInstanceLoopCharacteristics"], + "superClass": ["activiti:AsyncCapable"], + "properties": [ + { + "name": "collection", + "isAttr": true, + "type": "String" + }, + { + "name": "elementVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FailedJobRetryTimeCycle", + "superClass": ["Element"], + "meta": { + "allowedIn": ["activiti:AsyncCapable", "bpmn:MultiInstanceLoopCharacteristics"] + }, + "properties": [ + { + "name": "body", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "ExecutionListener", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "bpmn:Task", + "bpmn:ServiceTask", + "bpmn:UserTask", + "bpmn:BusinessRuleTask", + "bpmn:ScriptTask", + "bpmn:ReceiveTask", + "bpmn:ManualTask", + "bpmn:ExclusiveGateway", + "bpmn:SequenceFlow", + "bpmn:ParallelGateway", + "bpmn:InclusiveGateway", + "bpmn:EventBasedGateway", + "bpmn:StartEvent", + "bpmn:IntermediateCatchEvent", + "bpmn:IntermediateThrowEvent", + "bpmn:EndEvent", + "bpmn:BoundaryEvent", + "bpmn:CallActivity", + "bpmn:SubProcess", + "bpmn:Process" + ] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "TaskListener", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "FormProperty", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "required", + "type": "String", + "isAttr": true + }, + { + "name": "readable", + "type": "String", + "isAttr": true + }, + { + "name": "writable", + "type": "String", + "isAttr": true + }, + { + "name": "variable", + "type": "String", + "isAttr": true + }, + { + "name": "expression", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "default", + "type": "String", + "isAttr": true + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "FormProperty", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "defaultValue", + "type": "String", + "isAttr": true + }, + { + "name": "properties", + "type": "Properties" + }, + { + "name": "validation", + "type": "Validation" + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "Validation", + "superClass": ["Element"], + "properties": [ + { + "name": "constraints", + "type": "Constraint", + "isMany": true + } + ] + }, + { + "name": "Constraint", + "superClass": ["Element"], + "properties": [ + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "config", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "ConditionalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ConditionalEventDefinition"], + "properties": [ + { + "name": "variableName", + "isAttr": true, + "type": "String" + }, + { + "name": "variableEvent", + "isAttr": true, + "type": "String" + } + ] + } + ], + "emumerations": [] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json new file mode 100644 index 0000000..8322561 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/camundaDescriptor.json @@ -0,0 +1,1020 @@ +{ + "name": "Camunda", + "uri": "http://camunda.org/schema/1.0/bpmn", + "prefix": "camunda", + "xml": { + "tagAlias": "lowerCase" + }, + "associations": [], + "types": [ + { + "name": "Definitions", + "isAbstract": true, + "extends": ["bpmn:Definitions"], + "properties": [ + { + "name": "diagramRelationId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "InOutBinding", + "superClass": ["Element"], + "isAbstract": true, + "properties": [ + { + "name": "source", + "isAttr": true, + "type": "String" + }, + { + "name": "sourceExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "target", + "isAttr": true, + "type": "String" + }, + { + "name": "businessKey", + "isAttr": true, + "type": "String" + }, + { + "name": "local", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "variables", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "In", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity", "bpmn:SignalEventDefinition"] + } + }, + { + "name": "Out", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "AsyncCapable", + "isAbstract": true, + "extends": ["bpmn:Activity", "bpmn:Gateway", "bpmn:Event"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncBefore", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncAfter", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "exclusive", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "JobPriorized", + "isAbstract": true, + "extends": ["bpmn:Process", "camunda:AsyncCapable"], + "properties": [ + { + "name": "jobPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "SignalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:SignalEventDefinition"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + } + ] + }, + { + "name": "ErrorEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ErrorEventDefinition"], + "properties": [ + { + "name": "errorCodeVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "errorMessageVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Error", + "isAbstract": true, + "extends": ["bpmn:Error"], + "properties": [ + { + "name": "camunda:errorMessage", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "PotentialStarter", + "superClass": ["Element"], + "properties": [ + { + "name": "resourceAssignmentExpression", + "type": "bpmn:ResourceAssignmentExpression" + } + ] + }, + { + "name": "FormSupported", + "isAbstract": true, + "extends": ["bpmn:StartEvent", "bpmn:UserTask"], + "properties": [ + { + "name": "formHandlerClass", + "isAttr": true, + "type": "String" + }, + { + "name": "formKey", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TemplateSupported", + "isAbstract": true, + "extends": ["bpmn:Process", "bpmn:FlowElement"], + "properties": [ + { + "name": "modelerTemplate", + "isAttr": true, + "type": "String" + }, + { + "name": "modelerTemplateVersion", + "isAttr": true, + "type": "Integer" + } + ] + }, + { + "name": "Initiator", + "isAbstract": true, + "extends": ["bpmn:StartEvent"], + "properties": [ + { + "name": "initiator", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ScriptTask", + "isAbstract": true, + "extends": ["bpmn:ScriptTask"], + "properties": [ + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Process", + "isAbstract": true, + "extends": ["bpmn:Process"], + "properties": [ + { + "name": "candidateStarterGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStarterUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "versionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "historyTimeToLive", + "isAttr": true, + "type": "String" + }, + { + "name": "isStartableInTasklist", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "EscalationEventDefinition", + "isAbstract": true, + "extends": ["bpmn:EscalationEventDefinition"], + "properties": [ + { + "name": "escalationCodeVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FormalExpression", + "isAbstract": true, + "extends": ["bpmn:FormalExpression"], + "properties": [ + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Assignable", + "extends": ["bpmn:UserTask"], + "properties": [ + { + "name": "assignee", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "dueDate", + "isAttr": true, + "type": "String" + }, + { + "name": "followUpDate", + "isAttr": true, + "type": "String" + }, + { + "name": "priority", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStrategy", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateParam", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "CallActivity", + "extends": ["bpmn:CallActivity"], + "properties": [ + { + "name": "calledElementBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "calledElementVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementVersionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "caseRef", + "isAttr": true, + "type": "String" + }, + { + "name": "caseBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "caseVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "caseTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingClass", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingDelegateExpression", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ServiceTaskLike", + "extends": [ + "bpmn:ServiceTask", + "bpmn:BusinessRuleTask", + "bpmn:SendTask", + "bpmn:MessageEventDefinition" + ], + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "DmnCapable", + "extends": ["bpmn:BusinessRuleTask"], + "properties": [ + { + "name": "decisionRef", + "isAttr": true, + "type": "String" + }, + { + "name": "decisionRefBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "decisionRefVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "mapDecisionResult", + "isAttr": true, + "type": "String", + "default": "resultList" + }, + { + "name": "decisionRefTenantId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ExternalCapable", + "extends": ["camunda:ServiceTaskLike"], + "properties": [ + { + "name": "type", + "isAttr": true, + "type": "String" + }, + { + "name": "topic", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TaskPriorized", + "extends": ["bpmn:Process", "camunda:ExternalCapable"], + "properties": [ + { + "name": "taskPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Properties", + "superClass": ["Element"], + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "values", + "type": "Property", + "isMany": true + } + ] + }, + { + "name": "Property", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "Connector", + "superClass": ["Element"], + "meta": { + "allowedIn": ["camunda:ServiceTaskLike"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + } + ] + }, + { + "name": "InputOutput", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:FlowNode", "camunda:Connector"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + }, + { + "name": "inputParameters", + "isMany": true, + "type": "InputParameter" + }, + { + "name": "outputParameters", + "isMany": true, + "type": "OutputParameter" + } + ] + }, + { + "name": "InputOutputParameter", + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "InputOutputParameterDefinition", + "isAbstract": true + }, + { + "name": "List", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "items", + "isMany": true, + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Map", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "entries", + "isMany": true, + "type": "Entry" + } + ] + }, + { + "name": "Entry", + "properties": [ + { + "name": "key", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Value", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "id", + "isAttr": true, + "type": "String" + }, + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Script", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "scriptFormat", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Field", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "camunda:ServiceTaskLike", + "camunda:ExecutionListener", + "camunda:TaskListener" + ] + }, + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "expression", + "type": "String" + }, + { + "name": "stringValue", + "isAttr": true, + "type": "String" + }, + { + "name": "string", + "type": "String" + } + ] + }, + { + "name": "InputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "OutputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "Collectable", + "isAbstract": true, + "extends": ["bpmn:MultiInstanceLoopCharacteristics"], + "superClass": ["camunda:AsyncCapable"], + "properties": [ + { + "name": "collection", + "isAttr": true, + "type": "String" + }, + { + "name": "elementVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FailedJobRetryTimeCycle", + "superClass": ["Element"], + "meta": { + "allowedIn": ["camunda:AsyncCapable", "bpmn:MultiInstanceLoopCharacteristics"] + }, + "properties": [ + { + "name": "body", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "ExecutionListener", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "bpmn:Task", + "bpmn:ServiceTask", + "bpmn:UserTask", + "bpmn:BusinessRuleTask", + "bpmn:ScriptTask", + "bpmn:ReceiveTask", + "bpmn:ManualTask", + "bpmn:ExclusiveGateway", + "bpmn:SequenceFlow", + "bpmn:ParallelGateway", + "bpmn:InclusiveGateway", + "bpmn:EventBasedGateway", + "bpmn:StartEvent", + "bpmn:IntermediateCatchEvent", + "bpmn:IntermediateThrowEvent", + "bpmn:EndEvent", + "bpmn:BoundaryEvent", + "bpmn:CallActivity", + "bpmn:SubProcess", + "bpmn:Process" + ] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "TaskListener", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + }, + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "eventDefinitions", + "type": "bpmn:TimerEventDefinition", + "isMany": true + } + ] + }, + { + "name": "FormProperty", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "required", + "type": "String", + "isAttr": true + }, + { + "name": "readable", + "type": "String", + "isAttr": true + }, + { + "name": "writable", + "type": "String", + "isAttr": true + }, + { + "name": "variable", + "type": "String", + "isAttr": true + }, + { + "name": "expression", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "default", + "type": "String", + "isAttr": true + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "FormData", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "fields", + "type": "FormField", + "isMany": true + }, + { + "name": "businessKey", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "FormField", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "defaultValue", + "type": "String", + "isAttr": true + }, + { + "name": "properties", + "type": "Properties" + }, + { + "name": "validation", + "type": "Validation" + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "Validation", + "superClass": ["Element"], + "properties": [ + { + "name": "constraints", + "type": "Constraint", + "isMany": true + } + ] + }, + { + "name": "Constraint", + "superClass": ["Element"], + "properties": [ + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "config", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "ConditionalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ConditionalEventDefinition"], + "properties": [ + { + "name": "variableName", + "isAttr": true, + "type": "String" + }, + { + "name": "variableEvents", + "isAttr": true, + "type": "String" + } + ] + } + ], + "emumerations": [] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json new file mode 100644 index 0000000..130b594 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/descriptor/flowableDescriptor.json @@ -0,0 +1,1483 @@ +{ + "name": "Flowable", + "uri": "http://flowable.org/bpmn", + "prefix": "flowable", + "xml": { + "tagAlias": "lowerCase" + }, + "associations": [], + "types": [ + { + "name": "InOutBinding", + "superClass": ["Element"], + "isAbstract": true, + "properties": [ + { + "name": "source", + "isAttr": true, + "type": "String" + }, + { + "name": "sourceExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "target", + "isAttr": true, + "type": "String" + }, + { + "name": "businessKey", + "isAttr": true, + "type": "String" + }, + { + "name": "local", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "variables", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "In", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "Out", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "AsyncCapable", + "isAbstract": true, + "extends": ["bpmn:Activity", "bpmn:Gateway", "bpmn:Event"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncBefore", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncAfter", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "exclusive", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "JobPriorized", + "isAbstract": true, + "extends": ["bpmn:Process", "flowable:AsyncCapable"], + "properties": [ + { + "name": "jobPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "SignalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:SignalEventDefinition"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + } + ] + }, + { + "name": "ErrorEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ErrorEventDefinition"], + "properties": [ + { + "name": "errorCodeVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "errorMessageVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Error", + "isAbstract": true, + "extends": ["bpmn:Error"], + "properties": [ + { + "name": "flowable:errorMessage", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "PotentialStarter", + "superClass": ["Element"], + "properties": [ + { + "name": "resourceAssignmentExpression", + "type": "bpmn:ResourceAssignmentExpression" + } + ] + }, + { + "name": "FormSupported", + "isAbstract": true, + "extends": ["bpmn:StartEvent", "bpmn:UserTask"], + "properties": [ + { + "name": "formHandlerClass", + "isAttr": true, + "type": "String" + }, + { + "name": "formKey", + "isAttr": true, + "type": "String" + }, + { + "name": "formType", + "isAttr": true, + "type": "String" + }, + { + "name": "formReadOnly", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "formInit", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "TemplateSupported", + "isAbstract": true, + "extends": ["bpmn:Process", "bpmn:FlowElement"], + "properties": [ + { + "name": "modelerTemplate", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Initiator", + "isAbstract": true, + "extends": ["bpmn:StartEvent"], + "properties": [ + { + "name": "initiator", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ScriptTask", + "isAbstract": true, + "extends": ["bpmn:ScriptTask"], + "properties": [ + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Process", + "isAbstract": true, + "extends": ["bpmn:Process"], + "properties": [ + { + "name": "candidateStarterGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStarterUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "versionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "historyTimeToLive", + "isAttr": true, + "type": "String" + }, + { + "name": "isStartableInTasklist", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "EscalationEventDefinition", + "isAbstract": true, + "extends": ["bpmn:EscalationEventDefinition"], + "properties": [ + { + "name": "escalationCodeVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FormalExpression", + "isAbstract": true, + "extends": ["bpmn:FormalExpression"], + "properties": [ + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Assignable", + "extends": ["bpmn:UserTask"], + "properties": [ + { + "name": "assignee", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "dueDate", + "isAttr": true, + "type": "String" + }, + { + "name": "followUpDate", + "isAttr": true, + "type": "String" + }, + { + "name": "priority", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStrategy", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateParam", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Assignee", + "supperClass": "Element", + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "viewId", + "type": "Number", + "isAttr": true + } + ] + }, + { + "name": "CallActivity", + "extends": ["bpmn:CallActivity"], + "properties": [ + { + "name": "calledElementBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "calledElementVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementVersionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "caseRef", + "isAttr": true, + "type": "String" + }, + { + "name": "caseBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "caseVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "caseTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingClass", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingDelegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementType", + "isAttr": true, + "type": "String" + }, + { + "name": "processInstanceName", + "isAttr": true, + "type": "String" + }, + { + "name": "inheritBusinessKey", + "isAttr": true, + "type": "Boolean" + }, + { + "name": "businessKey", + "isAttr": true, + "type": "String" + }, + { + "name": "inheritVariables", + "isAttr": true, + "type": "Boolean" + } + ] + }, + { + "name": "ServiceTaskLike", + "extends": [ + "bpmn:ServiceTask", + "bpmn:BusinessRuleTask", + "bpmn:SendTask", + "bpmn:MessageEventDefinition" + ], + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "DmnCapable", + "extends": ["bpmn:BusinessRuleTask"], + "properties": [ + { + "name": "decisionRef", + "isAttr": true, + "type": "String" + }, + { + "name": "decisionRefBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "decisionRefVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "mapDecisionResult", + "isAttr": true, + "type": "String", + "default": "resultList" + }, + { + "name": "decisionRefTenantId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ExternalCapable", + "extends": ["flowable:ServiceTaskLike"], + "properties": [ + { + "name": "type", + "isAttr": true, + "type": "String" + }, + { + "name": "topic", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TaskPriorized", + "extends": ["bpmn:Process", "flowable:ExternalCapable"], + "properties": [ + { + "name": "taskPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Properties", + "superClass": ["Element"], + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "values", + "type": "Property", + "isMany": true + } + ] + }, + { + "name": "Property", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "Button", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "code", + "type": "String", + "isAttr": true + }, + { + "name": "isHide", + "type": "String", + "isAttr": true + }, + { + "name": "next", + "type": "String", + "isAttr": true + }, + { + "name": "sort", + "type": "Integer", + "isAttr": true + } + ] + }, + { + "name": "Assignee", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + }, + { + "name": "condition", + "type": "String", + "isAttr": true + }, + { + "name": "operationType", + "type": "String", + "isAttr": true + }, + { + "name": "sort", + "type": "Integer", + "isAttr": true + } + ] + }, + { + "name": "Connector", + "superClass": ["Element"], + "meta": { + "allowedIn": ["flowable:ServiceTaskLike"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + } + ] + }, + { + "name": "InputOutput", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:FlowNode", "flowable:Connector"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + }, + { + "name": "inputParameters", + "isMany": true, + "type": "InputParameter" + }, + { + "name": "outputParameters", + "isMany": true, + "type": "OutputParameter" + } + ] + }, + { + "name": "InputOutputParameter", + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "InputOutputParameterDefinition", + "isAbstract": true + }, + { + "name": "List", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "items", + "isMany": true, + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Map", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "entries", + "isMany": true, + "type": "Entry" + } + ] + }, + { + "name": "Entry", + "properties": [ + { + "name": "key", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Value", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "id", + "isAttr": true, + "type": "String" + }, + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Script", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "scriptFormat", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Field", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "flowable:ServiceTaskLike", + "flowable:ExecutionListener", + "flowable:TaskListener" + ] + }, + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "expression", + "type": "String" + }, + { + "name": "stringValue", + "isAttr": true, + "type": "String" + }, + { + "name": "string", + "type": "String" + } + ] + }, + { + "name": "ChildField", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "required", + "type": "String", + "isAttr": true + }, + { + "name": "readable", + "type": "String", + "isAttr": true + }, + { + "name": "writable", + "type": "String", + "isAttr": true + }, + { + "name": "variable", + "type": "String", + "isAttr": true + }, + { + "name": "expression", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "default", + "type": "String", + "isAttr": true + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "InputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "OutputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "Collectable", + "isAbstract": true, + "extends": ["bpmn:MultiInstanceLoopCharacteristics"], + "superClass": ["flowable:AsyncCapable"], + "properties": [ + { + "name": "collection", + "isAttr": true, + "type": "String" + }, + { + "name": "elementVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FailedJobRetryTimeCycle", + "superClass": ["Element"], + "meta": { + "allowedIn": ["flowable:AsyncCapable", "bpmn:MultiInstanceLoopCharacteristics"] + }, + "properties": [ + { + "name": "body", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "ExecutionListener", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "bpmn:Task", + "bpmn:ServiceTask", + "bpmn:UserTask", + "bpmn:BusinessRuleTask", + "bpmn:ScriptTask", + "bpmn:ReceiveTask", + "bpmn:ManualTask", + "bpmn:ExclusiveGateway", + "bpmn:SequenceFlow", + "bpmn:ParallelGateway", + "bpmn:InclusiveGateway", + "bpmn:EventBasedGateway", + "bpmn:StartEvent", + "bpmn:IntermediateCatchEvent", + "bpmn:IntermediateThrowEvent", + "bpmn:EndEvent", + "bpmn:BoundaryEvent", + "bpmn:CallActivity", + "bpmn:SubProcess", + "bpmn:Process" + ] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "TaskListener", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "FormProperty", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "required", + "type": "String", + "isAttr": true + }, + { + "name": "readable", + "type": "String", + "isAttr": true + }, + { + "name": "writable", + "type": "String", + "isAttr": true + }, + { + "name": "variable", + "type": "String", + "isAttr": true + }, + { + "name": "expression", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "default", + "type": "String", + "isAttr": true + }, + { + "name": "values", + "type": "Value", + "isMany": true + }, + { + "name": "children", + "type": "ChildField", + "isMany": true + }, + { + "name": "extensionElements", + "type": "bpmn:ExtensionElements", + "isMany": true + } + ] + }, + { + "name": "FormData", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "fields", + "type": "FormField", + "isMany": true + }, + { + "name": "businessKey", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "FormField", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "defaultValue", + "type": "String", + "isAttr": true + }, + { + "name": "properties", + "type": "Properties" + }, + { + "name": "validation", + "type": "Validation" + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "Validation", + "superClass": ["Element"], + "properties": [ + { + "name": "constraints", + "type": "Constraint", + "isMany": true + } + ] + }, + { + "name": "Constraint", + "superClass": ["Element"], + "properties": [ + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "config", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "ConditionalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ConditionalEventDefinition"], + "properties": [ + { + "name": "variableName", + "isAttr": true, + "type": "String" + }, + { + "name": "variableEvent", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Condition", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:SequenceFlow"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "field", + "type": "String", + "isAttr": true + }, + { + "name": "compare", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + }, + { + "name": "logic", + "type": "String", + "isAttr": true + }, + { + "name": "sort", + "type": "Integer", + "isAttr": true + } + ] + }, + { + "name": "AssignStartUserHandlerType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "RejectHandlerType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "RejectReturnTaskId", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "String", + "isBody": true + } + ] + }, + { + "name": "AssignEmptyHandlerType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "AssignEmptyUserIds", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "String", + "isBody": true + } + ] + }, + { + "name": "ButtonsSetting", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "flowable:id", + "type": "Integer", + "isAttr": true + }, + { + "name": "flowable:enable", + "type": "Boolean", + "isAttr": true + }, + { + "name": "flowable:displayName", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "FieldsPermission", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "flowable:field", + "type": "String", + "isAttr": true + }, + { + "name": "flowable:title", + "type": "String", + "isAttr": true + }, + { + "name": "flowable:permission", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "BoundaryEventType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:BoundaryEvent"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "TimeoutHandlerType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:BoundaryEvent"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "ApproveType", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "ApproveMethod", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "CandidateStrategy", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Integer", + "isBody": true + } + ] + }, + { + "name": "CandidateParam", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "String", + "isBody": true + } + ] + }, + { + "name": "SignEnable", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Boolean", + "isBody": true + } + ] + }, + { + "name": "SkipExpression", + "extends": ["bpmn:UserTask"], + "properties": [ + { + "name": "skipExpression", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ReasonRequire", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "value", + "type": "Boolean", + "isBody": true + } + ] + } + ], + "emumerations": [] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js new file mode 100644 index 0000000..56ef38a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/activitiExtension.js @@ -0,0 +1,83 @@ +'use strict' + +import { some } from 'min-dash' + +// const some = require('min-dash').some +// const some = some + +const ALLOWED_TYPES = { + FailedJobRetryTimeCycle: [ + 'bpmn:StartEvent', + 'bpmn:BoundaryEvent', + 'bpmn:IntermediateCatchEvent', + 'bpmn:Activity' + ], + Connector: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'], + Field: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'] +} + +function is(element, type) { + return element && typeof element.$instanceOf === 'function' && element.$instanceOf(type) +} + +function exists(element) { + return element && element.length +} + +function includesType(collection, type) { + return ( + exists(collection) && + some(collection, function (element) { + return is(element, type) + }) + ) +} + +function anyType(element, types) { + return some(types, function (type) { + return is(element, type) + }) +} + +function isAllowed(propName, propDescriptor, newElement) { + const name = propDescriptor.name, + types = ALLOWED_TYPES[name.replace(/activiti:/, '')] + + return name === propName && anyType(newElement, types) +} + +function ActivitiModdleExtension(eventBus) { + eventBus.on( + 'property.clone', + function (context) { + const newElement = context.newElement, + propDescriptor = context.propertyDescriptor + + this.canCloneProperty(newElement, propDescriptor) + }, + this + ) +} + +ActivitiModdleExtension.$inject = ['eventBus'] + +ActivitiModdleExtension.prototype.canCloneProperty = function (newElement, propDescriptor) { + if (isAllowed('activiti:FailedJobRetryTimeCycle', propDescriptor, newElement)) { + return ( + includesType(newElement.eventDefinitions, 'bpmn:TimerEventDefinition') || + includesType(newElement.eventDefinitions, 'bpmn:SignalEventDefinition') || + is(newElement.loopCharacteristics, 'bpmn:MultiInstanceLoopCharacteristics') + ) + } + + if (isAllowed('activiti:Connector', propDescriptor, newElement)) { + return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') + } + + if (isAllowed('activiti:Field', propDescriptor, newElement)) { + return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') + } +} + +// module.exports = ActivitiModdleExtension; +export default ActivitiModdleExtension diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js new file mode 100644 index 0000000..c22ca34 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/activiti/index.js @@ -0,0 +1,11 @@ +/* + * @author igdianov + * address https://github.com/igdianov/activiti-bpmn-moddle + * */ + +import activitiExtension from './activitiExtension' + +export default { + __init__: ['ActivitiModdleExtension'], + ActivitiModdleExtension: ['type', activitiExtension] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js new file mode 100644 index 0000000..b8c37a5 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/extension.js @@ -0,0 +1,151 @@ +'use strict' + +import { isFunction, isObject, some } from 'min-dash' + +// const isFunction = isFunction, +// isObject = isObject, +// some = some +// const isFunction = require('min-dash').isFunction, +// isObject = require('min-dash').isObject, +// some = require('min-dash').some + +const WILDCARD = '*' + +function CamundaModdleExtension(eventBus) { + // eslint-disable-next-line @typescript-eslint/no-this-alias + const self = this + + eventBus.on('moddleCopy.canCopyProperty', function (context) { + const property = context.property, + parent = context.parent + + return self.canCopyProperty(property, parent) + }) +} + +CamundaModdleExtension.$inject = ['eventBus'] + +/** + * Check wether to disallow copying property. + */ +CamundaModdleExtension.prototype.canCopyProperty = function (property, parent) { + // (1) check wether property is allowed in parent + if (isObject(property) && !isAllowedInParent(property, parent)) { + return false + } + + // (2) check more complex scenarios + + if (is(property, 'camunda:InputOutput') && !this.canHostInputOutput(parent)) { + return false + } + + if (isAny(property, ['camunda:Connector', 'camunda:Field']) && !this.canHostConnector(parent)) { + return false + } + + if (is(property, 'camunda:In') && !this.canHostIn(parent)) { + return false + } +} + +CamundaModdleExtension.prototype.canHostInputOutput = function (parent) { + // allowed in camunda:Connector + const connector = getParent(parent, 'camunda:Connector') + + if (connector) { + return true + } + + // special rules inside bpmn:FlowNode + const flowNode = getParent(parent, 'bpmn:FlowNode') + + if (!flowNode) { + return false + } + + if (isAny(flowNode, ['bpmn:StartEvent', 'bpmn:Gateway', 'bpmn:BoundaryEvent'])) { + return false + } + + return !(is(flowNode, 'bpmn:SubProcess') && flowNode.get('triggeredByEvent')) +} + +CamundaModdleExtension.prototype.canHostConnector = function (parent) { + const serviceTaskLike = getParent(parent, 'camunda:ServiceTaskLike') + + if (is(serviceTaskLike, 'bpmn:MessageEventDefinition')) { + // only allow on throw and end events + return getParent(parent, 'bpmn:IntermediateThrowEvent') || getParent(parent, 'bpmn:EndEvent') + } + + return true +} + +CamundaModdleExtension.prototype.canHostIn = function (parent) { + const callActivity = getParent(parent, 'bpmn:CallActivity') + + if (callActivity) { + return true + } + + const signalEventDefinition = getParent(parent, 'bpmn:SignalEventDefinition') + + if (signalEventDefinition) { + // only allow on throw and end events + return getParent(parent, 'bpmn:IntermediateThrowEvent') || getParent(parent, 'bpmn:EndEvent') + } + + return true +} + +// module.exports = CamundaModdleExtension; +export default CamundaModdleExtension + +// helpers ////////// + +function is(element, type) { + return element && isFunction(element.$instanceOf) && element.$instanceOf(type) +} + +function isAny(element, types) { + return some(types, function (t) { + return is(element, t) + }) +} + +function getParent(element, type) { + if (!type) { + return element.$parent + } + + if (is(element, type)) { + return element + } + + if (!element.$parent) { + return + } + + return getParent(element.$parent, type) +} + +function isAllowedInParent(property, parent) { + // (1) find property descriptor + const descriptor = property.$type && property.$model.getTypeDescriptor(property.$type) + + const allowedIn = descriptor && descriptor.meta && descriptor.meta.allowedIn + + if (!allowedIn || isWildcard(allowedIn)) { + return true + } + + // (2) check wether property has parent of allowed type + return some(allowedIn, function (type) { + return getParent(parent, type) + }) +} + +function isWildcard(allowedIn) { + return allowedIn.indexOf(WILDCARD) !== -1 +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js new file mode 100644 index 0000000..1da1bc7 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/camunda/index.js @@ -0,0 +1,8 @@ +'use strict' + +import extension from './extension' + +export default { + __init__: ['camundaModdleExtension'], + camundaModdleExtension: ['type', extension] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js new file mode 100644 index 0000000..3dcea67 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/flowableExtension.js @@ -0,0 +1,83 @@ +'use strict' + +import { some } from 'min-dash' + +// const some = some +// const some = require('min-dash').some + +const ALLOWED_TYPES = { + FailedJobRetryTimeCycle: [ + 'bpmn:StartEvent', + 'bpmn:BoundaryEvent', + 'bpmn:IntermediateCatchEvent', + 'bpmn:Activity' + ], + Connector: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'], + Field: ['bpmn:EndEvent', 'bpmn:IntermediateThrowEvent'] +} + +function is(element, type) { + return element && typeof element.$instanceOf === 'function' && element.$instanceOf(type) +} + +function exists(element) { + return element && element.length +} + +function includesType(collection, type) { + return ( + exists(collection) && + some(collection, function (element) { + return is(element, type) + }) + ) +} + +function anyType(element, types) { + return some(types, function (type) { + return is(element, type) + }) +} + +function isAllowed(propName, propDescriptor, newElement) { + const name = propDescriptor.name, + types = ALLOWED_TYPES[name.replace(/flowable:/, '')] + + return name === propName && anyType(newElement, types) +} + +function FlowableModdleExtension(eventBus) { + eventBus.on( + 'property.clone', + function (context) { + const newElement = context.newElement, + propDescriptor = context.propertyDescriptor + + this.canCloneProperty(newElement, propDescriptor) + }, + this + ) +} + +FlowableModdleExtension.$inject = ['eventBus'] + +FlowableModdleExtension.prototype.canCloneProperty = function (newElement, propDescriptor) { + if (isAllowed('flowable:FailedJobRetryTimeCycle', propDescriptor, newElement)) { + return ( + includesType(newElement.eventDefinitions, 'bpmn:TimerEventDefinition') || + includesType(newElement.eventDefinitions, 'bpmn:SignalEventDefinition') || + is(newElement.loopCharacteristics, 'bpmn:MultiInstanceLoopCharacteristics') + ) + } + + if (isAllowed('flowable:Connector', propDescriptor, newElement)) { + return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') + } + + if (isAllowed('flowable:Field', propDescriptor, newElement)) { + return includesType(newElement.eventDefinitions, 'bpmn:MessageEventDefinition') + } +} + +// module.exports = FlowableModdleExtension; +export default FlowableModdleExtension diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js new file mode 100644 index 0000000..6d59b67 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/extension-moddle/flowable/index.js @@ -0,0 +1,10 @@ +/* + * @author igdianov + * address https://github.com/igdianov/activiti-bpmn-moddle + * */ +import flowableExtension from './flowableExtension' + +export default { + __init__: ['FlowableModdleExtension'], + FlowableModdleExtension: ['type', flowableExtension] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js new file mode 100644 index 0000000..788e4d1 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/CustomPalette.js @@ -0,0 +1,233 @@ +import PaletteProvider from 'bpmn-js/lib/features/palette/PaletteProvider' +import { assign } from 'min-dash' + +export default function CustomPalette( + palette, + create, + elementFactory, + spaceTool, + lassoTool, + handTool, + globalConnect, + translate +) { + PaletteProvider.call( + this, + palette, + create, + elementFactory, + spaceTool, + lassoTool, + handTool, + globalConnect, + translate, + 2000 + ) +} + +const F = function () {} // 核心,利用空对象作为中介; +F.prototype = PaletteProvider.prototype // 核心,将父类的原型赋值给空对象F; + +// 利用中介函数重写原型链方法 +F.prototype.getPaletteEntries = function () { + const actions = {}, + create = this._create, + elementFactory = this._elementFactory, + spaceTool = this._spaceTool, + lassoTool = this._lassoTool, + handTool = this._handTool, + globalConnect = this._globalConnect, + translate = this._translate + + function createAction(type, group, className, title, options) { + function createListener(event) { + const shape = elementFactory.createShape(assign({ type: type }, options)) + + if (options) { + shape.businessObject.di.isExpanded = options.isExpanded + } + + create.start(event, shape) + } + + const shortType = type.replace(/^bpmn:/, '') + + return { + group: group, + className: className, + title: title || translate('Create {type}', { type: shortType }), + action: { + dragstart: createListener, + click: createListener + } + } + } + + function createSubprocess(event) { + const subProcess = elementFactory.createShape({ + type: 'bpmn:SubProcess', + x: 0, + y: 0, + isExpanded: true + }) + + const startEvent = elementFactory.createShape({ + type: 'bpmn:StartEvent', + x: 40, + y: 82, + parent: subProcess + }) + + create.start(event, [subProcess, startEvent], { + hints: { + autoSelect: [startEvent] + } + }) + } + + function createParticipant(event) { + create.start(event, elementFactory.createParticipantShape()) + } + + assign(actions, { + 'hand-tool': { + group: 'tools', + className: 'bpmn-icon-hand-tool', + title: '激活抓手工具', + // title: translate("Activate the hand tool"), + action: { + click: function (event) { + handTool.activateHand(event) + } + } + }, + 'lasso-tool': { + group: 'tools', + className: 'bpmn-icon-lasso-tool', + title: translate('Activate the lasso tool'), + action: { + click: function (event) { + lassoTool.activateSelection(event) + } + } + }, + 'space-tool': { + group: 'tools', + className: 'bpmn-icon-space-tool', + title: translate('Activate the create/remove space tool'), + action: { + click: function (event) { + spaceTool.activateSelection(event) + } + } + }, + 'global-connect-tool': { + group: 'tools', + className: 'bpmn-icon-connection-multi', + title: translate('Activate the global connect tool'), + action: { + click: function (event) { + globalConnect.toggle(event) + } + } + }, + 'tool-separator': { + group: 'tools', + separator: true + }, + 'create.start-event': createAction( + 'bpmn:StartEvent', + 'event', + 'bpmn-icon-start-event-none', + translate('Create StartEvent') + ), + 'create.intermediate-event': createAction( + 'bpmn:IntermediateThrowEvent', + 'event', + 'bpmn-icon-intermediate-event-none', + translate('Create Intermediate/Boundary Event') + ), + 'create.end-event': createAction( + 'bpmn:EndEvent', + 'event', + 'bpmn-icon-end-event-none', + translate('Create EndEvent') + ), + 'create.exclusive-gateway': createAction( + 'bpmn:ExclusiveGateway', + 'gateway', + 'bpmn-icon-gateway-none', + translate('Create Gateway') + ), + 'create.user-task': createAction( + 'bpmn:UserTask', + 'activity', + 'bpmn-icon-user-task', + translate('Create User Task') + ), + 'create.call-activity': createAction( + 'bpmn:CallActivity', + 'activity', + 'bpmn-icon-call-activity', + translate('Create Call Activity') + ), + 'create.service-task': createAction( + 'bpmn:ServiceTask', + 'activity', + 'bpmn-icon-service', + translate('Create Service Task') + ), + 'create.data-object': createAction( + 'bpmn:DataObjectReference', + 'data-object', + 'bpmn-icon-data-object', + translate('Create DataObjectReference') + ), + 'create.data-store': createAction( + 'bpmn:DataStoreReference', + 'data-store', + 'bpmn-icon-data-store', + translate('Create DataStoreReference') + ), + 'create.subprocess-expanded': { + group: 'activity', + className: 'bpmn-icon-subprocess-expanded', + title: translate('Create expanded SubProcess'), + action: { + dragstart: createSubprocess, + click: createSubprocess + } + }, + 'create.participant-expanded': { + group: 'collaboration', + className: 'bpmn-icon-participant', + title: translate('Create Pool/Participant'), + action: { + dragstart: createParticipant, + click: createParticipant + } + }, + 'create.group': createAction( + 'bpmn:Group', + 'artifact', + 'bpmn-icon-group', + translate('Create Group') + ) + }) + + return actions +} + +CustomPalette.$inject = [ + 'palette', + 'create', + 'elementFactory', + 'spaceTool', + 'lassoTool', + 'handTool', + 'globalConnect', + 'translate' +] + +CustomPalette.prototype = new F() // 核心,将 F的实例赋值给子类; +CustomPalette.prototype.constructor = CustomPalette // 修复子类CustomPalette的构造器指向,防止原型链的混乱; diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js new file mode 100644 index 0000000..8e4f3ac --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/index.js @@ -0,0 +1,22 @@ +// import PaletteModule from "diagram-js/lib/features/palette"; +// import CreateModule from "diagram-js/lib/features/create"; +// import SpaceToolModule from "diagram-js/lib/features/space-tool"; +// import LassoToolModule from "diagram-js/lib/features/lasso-tool"; +// import HandToolModule from "diagram-js/lib/features/hand-tool"; +// import GlobalConnectModule from "diagram-js/lib/features/global-connect"; +// import translate from "diagram-js/lib/i18n/translate"; +// +// import PaletteProvider from "./paletteProvider"; +// +// export default { +// __depends__: [PaletteModule, CreateModule, SpaceToolModule, LassoToolModule, HandToolModule, GlobalConnectModule, translate], +// __init__: ["paletteProvider"], +// paletteProvider: ["type", PaletteProvider] +// }; + +import CustomPalette from './CustomPalette' + +export default { + __init__: ['paletteProvider'], + paletteProvider: ['type', CustomPalette] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js new file mode 100644 index 0000000..304875c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/palette/paletteProvider.js @@ -0,0 +1,219 @@ +import { assign } from 'min-dash' + +/** + * A palette provider for BPMN 2.0 elements. + */ +export default function PaletteProvider( + palette, + create, + elementFactory, + spaceTool, + lassoTool, + handTool, + globalConnect, + translate +) { + this._palette = palette + this._create = create + this._elementFactory = elementFactory + this._spaceTool = spaceTool + this._lassoTool = lassoTool + this._handTool = handTool + this._globalConnect = globalConnect + this._translate = translate + + palette.registerProvider(this) +} + +PaletteProvider.$inject = [ + 'palette', + 'create', + 'elementFactory', + 'spaceTool', + 'lassoTool', + 'handTool', + 'globalConnect', + 'translate' +] + +PaletteProvider.prototype.getPaletteEntries = function () { + const actions = {}, + create = this._create, + elementFactory = this._elementFactory, + spaceTool = this._spaceTool, + lassoTool = this._lassoTool, + handTool = this._handTool, + globalConnect = this._globalConnect, + translate = this._translate + + function createAction(type, group, className, title, options) { + function createListener(event) { + const shape = elementFactory.createShape(assign({ type: type }, options)) + + if (options) { + shape.businessObject.di.isExpanded = options.isExpanded + } + + create.start(event, shape) + } + + const shortType = type.replace(/^bpmn:/, '') + + return { + group: group, + className: className, + title: title || translate('Create {type}', { type: shortType }), + action: { + dragstart: createListener, + click: createListener + } + } + } + + function createSubprocess(event) { + const subProcess = elementFactory.createShape({ + type: 'bpmn:SubProcess', + x: 0, + y: 0, + isExpanded: true + }) + + const startEvent = elementFactory.createShape({ + type: 'bpmn:StartEvent', + x: 40, + y: 82, + parent: subProcess + }) + + create.start(event, [subProcess, startEvent], { + hints: { + autoSelect: [startEvent] + } + }) + } + + function createParticipant(event) { + create.start(event, elementFactory.createParticipantShape()) + } + + assign(actions, { + 'hand-tool': { + group: 'tools', + className: 'bpmn-icon-hand-tool', + title: translate('Activate the hand tool'), + action: { + click: function (event) { + handTool.activateHand(event) + } + } + }, + 'lasso-tool': { + group: 'tools', + className: 'bpmn-icon-lasso-tool', + title: translate('Activate the lasso tool'), + action: { + click: function (event) { + lassoTool.activateSelection(event) + } + } + }, + 'space-tool': { + group: 'tools', + className: 'bpmn-icon-space-tool', + title: translate('Activate the create/remove space tool'), + action: { + click: function (event) { + spaceTool.activateSelection(event) + } + } + }, + 'global-connect-tool': { + group: 'tools', + className: 'bpmn-icon-connection-multi', + title: translate('Activate the global connect tool'), + action: { + click: function (event) { + globalConnect.toggle(event) + } + } + }, + 'tool-separator': { + group: 'tools', + separator: true + }, + 'create.start-event': createAction( + 'bpmn:StartEvent', + 'event', + 'bpmn-icon-start-event-none', + translate('Create StartEvent') + ), + 'create.intermediate-event': createAction( + 'bpmn:IntermediateThrowEvent', + 'event', + 'bpmn-icon-intermediate-event-none', + translate('Create Intermediate/Boundary Event') + ), + 'create.end-event': createAction( + 'bpmn:EndEvent', + 'event', + 'bpmn-icon-end-event-none', + translate('Create EndEvent') + ), + 'create.exclusive-gateway': createAction( + 'bpmn:ExclusiveGateway', + 'gateway', + 'bpmn-icon-gateway-none', + translate('Create Gateway') + ), + 'create.user-task': createAction( + 'bpmn:UserTask', + 'activity', + 'bpmn-icon-user-task', + translate('Create User Task') + ), + 'create.service-task': createAction( + 'bpmn:ServiceTask', + 'activity', + 'bpmn-icon-service', + translate('Create Service Task') + ), + 'create.data-object': createAction( + 'bpmn:DataObjectReference', + 'data-object', + 'bpmn-icon-data-object', + translate('Create DataObjectReference') + ), + 'create.data-store': createAction( + 'bpmn:DataStoreReference', + 'data-store', + 'bpmn-icon-data-store', + translate('Create DataStoreReference') + ), + 'create.subprocess-expanded': { + group: 'activity', + className: 'bpmn-icon-subprocess-expanded', + title: translate('Create expanded SubProcess'), + action: { + dragstart: createSubprocess, + click: createSubprocess + } + }, + 'create.participant-expanded': { + group: 'collaboration', + className: 'bpmn-icon-participant', + title: translate('Create Pool/Participant'), + action: { + dragstart: createParticipant, + click: createParticipant + } + }, + 'create.group': createAction( + 'bpmn:Group', + 'artifact', + 'bpmn-icon-group', + translate('Create Group') + ) + }) + + return actions +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js new file mode 100644 index 0000000..c1b99e1 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/translate/customTranslate.js @@ -0,0 +1,44 @@ +// import translations from "./zh"; +// +// export default function customTranslate(template, replacements) { +// replacements = replacements || {}; +// +// // Translate +// template = translations[template] || template; +// +// // Replace +// return template.replace(/{([^}]+)}/g, function(_, key) { +// let str = replacements[key]; +// if ( +// translations[replacements[key]] !== null && +// translations[replacements[key]] !== "undefined" +// ) { +// // eslint-disable-next-line no-mixed-spaces-and-tabs +// str = translations[replacements[key]]; +// // eslint-disable-next-line no-mixed-spaces-and-tabs +// } +// return str || "{" + key + "}"; +// }); +// } + +export default function customTranslate(translations) { + return function (template, replacements) { + replacements = replacements || {} + // Translate + template = translations[template] || template + + // Replace + return template.replace(/{([^}]+)}/g, function (_, key) { + let str = replacements[key] + if ( + translations[replacements[key]] !== null && + translations[replacements[key]] !== undefined + ) { + // eslint-disable-next-line no-mixed-spaces-and-tabs + str = translations[replacements[key]] + // eslint-disable-next-line no-mixed-spaces-and-tabs + } + return str || '{' + key + '}' + }) + } +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js new file mode 100644 index 0000000..cb92041 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/designer/plugins/translate/zh.js @@ -0,0 +1,242 @@ +/** + * This is a sample file that should be replaced with the actual translation. + * + * Checkout https://github.com/bpmn-io/bpmn-js-i18n for a list of available + * translations and labels to translate. + */ +export default { + // 添加部分 + 'Append EndEvent': '追加结束事件', + 'Append Gateway': '追加网关', + 'Append Task': '追加任务', + 'Append Intermediate/Boundary Event': '追加中间抛出事件/边界事件', + + 'Activate the global connect tool': '激活全局连接工具', + 'Append {type}': '添加 {type}', + 'Add Lane above': '在上面添加道', + 'Divide into two Lanes': '分割成两个道', + 'Divide into three Lanes': '分割成三个道', + 'Add Lane below': '在下面添加道', + 'Append compensation activity': '追加补偿活动', + 'Change type': '修改类型', + 'Connect using Association': '使用关联连接', + 'Connect using Sequence/MessageFlow or Association': '使用顺序/消息流或者关联连接', + 'Connect using DataInputAssociation': '使用数据输入关联连接', + Remove: '移除', + 'Activate the hand tool': '激活抓手工具', + 'Activate the lasso tool': '激活套索工具', + 'Activate the create/remove space tool': '激活创建/删除空间工具', + 'Create expanded SubProcess': '创建扩展子过程', + 'Create IntermediateThrowEvent/BoundaryEvent': '创建中间抛出事件/边界事件', + 'Create Pool/Participant': '创建池/参与者', + 'Parallel Multi Instance': '并行多重事件', + 'Sequential Multi Instance': '时序多重事件', + DataObjectReference: '数据对象参考', + DataStoreReference: '数据存储参考', + Loop: '循环', + 'Ad-hoc': '即席', + 'Create {type}': '创建 {type}', + Task: '任务', + 'Send Task': '发送任务', + 'Receive Task': '接收任务', + 'User Task': '用户任务', + 'Manual Task': '手工任务', + 'Business Rule Task': '业务规则任务', + 'Service Task': '服务任务', + 'Script Task': '脚本任务', + 'Call Activity': '调用活动', + 'Sub Process (collapsed)': '子流程(折叠的)', + 'Sub Process (expanded)': '子流程(展开的)', + 'Start Event': '开始事件', + StartEvent: '开始事件', + 'Intermediate Throw Event': '中间事件', + 'End Event': '结束事件', + EndEvent: '结束事件', + 'Create StartEvent': '创建开始事件', + 'Create EndEvent': '创建结束事件', + 'Create Task': '创建任务', + 'Create User Task': '创建用户任务', + 'Create Call Activity': '创建调用活动', + 'Create Service Task': '创建服务任务', + 'Create Gateway': '创建网关', + 'Create DataObjectReference': '创建数据对象', + 'Create DataStoreReference': '创建数据存储', + 'Create Group': '创建分组', + 'Create Intermediate/Boundary Event': '创建中间/边界事件', + 'Message Start Event': '消息开始事件', + 'Timer Start Event': '定时开始事件', + 'Conditional Start Event': '条件开始事件', + 'Signal Start Event': '信号开始事件', + 'Error Start Event': '错误开始事件', + 'Escalation Start Event': '升级开始事件', + 'Compensation Start Event': '补偿开始事件', + 'Message Start Event (non-interrupting)': '消息开始事件(非中断)', + 'Timer Start Event (non-interrupting)': '定时开始事件(非中断)', + 'Conditional Start Event (non-interrupting)': '条件开始事件(非中断)', + 'Signal Start Event (non-interrupting)': '信号开始事件(非中断)', + 'Escalation Start Event (non-interrupting)': '升级开始事件(非中断)', + 'Message Intermediate Catch Event': '消息中间捕获事件', + 'Message Intermediate Throw Event': '消息中间抛出事件', + 'Timer Intermediate Catch Event': '定时中间捕获事件', + 'Escalation Intermediate Throw Event': '升级中间抛出事件', + 'Conditional Intermediate Catch Event': '条件中间捕获事件', + 'Link Intermediate Catch Event': '链接中间捕获事件', + 'Link Intermediate Throw Event': '链接中间抛出事件', + 'Compensation Intermediate Throw Event': '补偿中间抛出事件', + 'Signal Intermediate Catch Event': '信号中间捕获事件', + 'Signal Intermediate Throw Event': '信号中间抛出事件', + 'Message End Event': '消息结束事件', + 'Escalation End Event': '定时结束事件', + 'Error End Event': '错误结束事件', + 'Cancel End Event': '取消结束事件', + 'Compensation End Event': '补偿结束事件', + 'Signal End Event': '信号结束事件', + 'Terminate End Event': '终止结束事件', + 'Message Boundary Event': '消息边界事件', + 'Message Boundary Event (non-interrupting)': '消息边界事件(非中断)', + 'Timer Boundary Event': '定时边界事件', + 'Timer Boundary Event (non-interrupting)': '定时边界事件(非中断)', + 'Escalation Boundary Event': '升级边界事件', + 'Escalation Boundary Event (non-interrupting)': '升级边界事件(非中断)', + 'Conditional Boundary Event': '条件边界事件', + 'Conditional Boundary Event (non-interrupting)': '条件边界事件(非中断)', + 'Error Boundary Event': '错误边界事件', + 'Cancel Boundary Event': '取消边界事件', + 'Signal Boundary Event': '信号边界事件', + 'Signal Boundary Event (non-interrupting)': '信号边界事件(非中断)', + 'Compensation Boundary Event': '补偿边界事件', + 'Exclusive Gateway': '互斥网关', + 'Parallel Gateway': '并行网关', + 'Inclusive Gateway': '相容网关', + 'Complex Gateway': '复杂网关', + 'Event based Gateway': '事件网关', + Transaction: '转运', + 'Sub Process': '子流程', + 'Event Sub Process': '事件子流程', + 'Collapsed Pool': '折叠池', + 'Expanded Pool': '展开池', + + // Errors + 'no parent for {element} in {parent}': '在{parent}里,{element}没有父类', + 'no shape type specified': '没有指定的形状类型', + 'flow elements must be children of pools/participants': '流元素必须是池/参与者的子类', + 'out of bounds release': 'out of bounds release', + 'more than {count} child lanes': '子道大于{count} ', + 'element required': '元素不能为空', + 'diagram not part of bpmn:Definitions': '流程图不符合bpmn规范', + 'no diagram to display': '没有可展示的流程图', + 'no process or collaboration to display': '没有可展示的流程/协作', + 'element {element} referenced by {referenced}#{property} not yet drawn': + '由{referenced}#{property}引用的{element}元素仍未绘制', + 'already rendered {element}': '{element} 已被渲染', + 'failed to import {element}': '导入{element}失败', + //属性面板的参数 + Id: '编号', + Name: '名称', + General: '常规', + Details: '详情', + 'Message Name': '消息名称', + Message: '消息', + Initiator: '创建者', + 'Asynchronous Continuations': '持续异步', + 'Asynchronous Before': '异步前', + 'Asynchronous After': '异步后', + 'Job Configuration': '工作配置', + Exclusive: '排除', + 'Job Priority': '工作优先级', + 'Retry Time Cycle': '重试时间周期', + Documentation: '文档', + 'Element Documentation': '元素文档', + 'History Configuration': '历史配置', + 'History Time To Live': '历史的生存时间', + Forms: '表单', + 'Form Key': '表单key', + 'Form Fields': '表单字段', + 'Business Key': '业务key', + 'Form Field': '表单字段', + ID: '编号', + Type: '类型', + Label: '名称', + 'Default Value': '默认值', + 'Default Flow': '默认流转路径', + 'Conditional Flow': '条件流转路径', + 'Sequence Flow': '普通流转路径', + Validation: '校验', + 'Add Constraint': '添加约束', + Config: '配置', + Properties: '属性', + 'Add Property': '添加属性', + Value: '值', + Listeners: '监听器', + 'Execution Listener': '执行监听', + 'Event Type': '事件类型', + 'Listener Type': '监听器类型', + 'Java Class': 'Java类', + Expression: '表达式', + 'Must provide a value': '必须提供一个值', + 'Delegate Expression': '代理表达式', + Script: '脚本', + 'Script Format': '脚本格式', + 'Script Type': '脚本类型', + 'Inline Script': '内联脚本', + 'External Script': '外部脚本', + Resource: '资源', + 'Field Injection': '字段注入', + Extensions: '扩展', + 'Input/Output': '输入/输出', + 'Input Parameters': '输入参数', + 'Output Parameters': '输出参数', + Parameters: '参数', + 'Output Parameter': '输出参数', + 'Timer Definition Type': '定时器定义类型', + 'Timer Definition': '定时器定义', + Date: '日期', + Duration: '持续', + Cycle: '循环', + Signal: '信号', + 'Signal Name': '信号名称', + Escalation: '升级', + Error: '错误', + 'Link Name': '链接名称', + Condition: '条件名称', + 'Variable Name': '变量名称', + 'Variable Event': '变量事件', + 'Specify more than one variable change event as a comma separated list.': + '多个变量事件以逗号隔开', + 'Wait for Completion': '等待完成', + 'Activity Ref': '活动参考', + 'Version Tag': '版本标签', + Executable: '可执行文件', + 'External Task Configuration': '扩展任务配置', + 'Task Priority': '任务优先级', + External: '外部', + Connector: '连接器', + 'Must configure Connector': '必须配置连接器', + 'Connector Id': '连接器编号', + Implementation: '实现方式', + 'Field Injections': '字段注入', + Fields: '字段', + 'Result Variable': '结果变量', + Topic: '主题', + 'Configure Connector': '配置连接器', + 'Input Parameter': '输入参数', + Assignee: '代理人', + 'Candidate Users': '候选用户', + 'Candidate Groups': '候选组', + 'Due Date': '到期时间', + 'Follow Up Date': '跟踪日期', + Priority: '优先级', + 'The follow up date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': + '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00', + 'The due date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': + '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00', + Variables: '变量', + 'Candidate Starter Configuration': '候选人起动器配置', + 'Candidate Starter Groups': '候选人起动器组', + 'This maps to the process definition key.': '这映射到流程定义键。', + 'Candidate Starter Users': '候选人起动器的用户', + 'Specify more than one user as a comma separated list.': '指定多个用户作为逗号分隔的列表。', + 'Tasklist Configuration': 'Tasklist配置', + Startable: '启动', + 'Specify more than one group as a comma separated list.': '指定多个组作为逗号分隔的列表。' +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/index.ts b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/index.ts new file mode 100644 index 0000000..ce44a3c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/index.ts @@ -0,0 +1,11 @@ +import MyProcessDesigner from './designer' +import MyProcessPenal from './penal' +import MyProcessViewer from './designer/index2' + +import './theme/index.scss' +import 'bpmn-js/dist/assets/diagram-js.css' +import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css' +import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css' +import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css' + +export { MyProcessDesigner, MyProcessPenal, MyProcessViewer } diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue new file mode 100644 index 0000000..ba97d96 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue new file mode 100644 index 0000000..ff08dd3 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue @@ -0,0 +1,258 @@ + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue new file mode 100644 index 0000000..3172338 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue @@ -0,0 +1,183 @@ + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue new file mode 100644 index 0000000..f9cb9ac --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue new file mode 100644 index 0000000..ca46b27 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue new file mode 100644 index 0000000..3c748ff --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue @@ -0,0 +1,688 @@ + + + + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts new file mode 100644 index 0000000..a45355e --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/custom-config/data.ts @@ -0,0 +1,13 @@ +import UserTaskCustomConfig from './components/UserTaskCustomConfig.vue' +import BoundaryEventTimer from './components/BoundaryEventTimer.vue' + +export const CustomConfigMap = { + UserTask: { + name: '用户任务', + componet: UserTaskCustomConfig + }, + BoundaryEventTimerEventDefinition: { + name: '定时边界事件(非中断)', + componet: BoundaryEventTimer + } +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue new file mode 100644 index 0000000..304630d --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue @@ -0,0 +1,191 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue new file mode 100644 index 0000000..3bb7d66 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/form/ElementForm.vue @@ -0,0 +1,478 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/index.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/index.js new file mode 100644 index 0000000..7fa5617 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/index.js @@ -0,0 +1,7 @@ +import MyPropertiesPanel from './PropertiesPanel.vue' + +MyPropertiesPanel.install = function (Vue) { + Vue.component(MyPropertiesPanel.name, MyPropertiesPanel) +} + +export default MyPropertiesPanel diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue new file mode 100644 index 0000000..de5445c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue @@ -0,0 +1,448 @@ + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/ProcessListenerDialog.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/ProcessListenerDialog.vue new file mode 100644 index 0000000..21088ab --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/ProcessListenerDialog.vue @@ -0,0 +1,85 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue new file mode 100644 index 0000000..76e0c80 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue @@ -0,0 +1,491 @@ + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/template.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/template.js new file mode 100644 index 0000000..430dc64 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/template.js @@ -0,0 +1,178 @@ +export const template = (isTaskListener) => { + return ` +
    + + + + + + + + +
    + 添加监听器 +
    + + + + + + + + + + + + + + + + + + + + + + + + + + ${ + isTaskListener + ? "" + + "" + + "" + + "" + + "" + + "" + + '' + + '' + + "" + + "" + + '' + : '' + } + + +

    + 注入字段: + 添加字段 +

    + + + + + + + + + + +
    + 取 消 + 保 存 +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    + ` +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts new file mode 100644 index 0000000..b4eb1d2 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/listeners/utilSelf.ts @@ -0,0 +1,89 @@ +// 初始化表单数据 +export function initListenerForm(listener) { + let self = { + ...listener + } + if (listener.script) { + self = { + ...listener, + ...listener.script, + scriptType: listener.script.resource ? 'externalScript' : 'inlineScript' + } + } + if (listener.event === 'timeout' && listener.eventDefinitions) { + if (listener.eventDefinitions.length) { + let k = '' + for (const key in listener.eventDefinitions[0]) { + console.log(listener.eventDefinitions, key) + if (key.indexOf('time') !== -1) { + k = key + self.eventDefinitionType = key.replace('time', '').toLowerCase() + } + } + console.log(k) + self.eventTimeDefinitions = listener.eventDefinitions[0][k].body + } + } + return self +} + +export function initListenerType(listener) { + let listenerType + if (listener.class) listenerType = 'classListener' + if (listener.expression) listenerType = 'expressionListener' + if (listener.delegateExpression) listenerType = 'delegateExpressionListener' + if (listener.script) listenerType = 'scriptListener' + return { + ...JSON.parse(JSON.stringify(listener)), + ...(listener.script ?? {}), + listenerType: listenerType + } +} + +/** 将 ProcessListenerDO 转换成 initListenerForm 想同的 Form 对象 */ +export function initListenerForm2(processListener) { + if (processListener.valueType === 'class') { + return { + listenerType: 'classListener', + class: processListener.value, + event: processListener.event, + fields: [] + } + } else if (processListener.valueType === 'expression') { + return { + listenerType: 'expressionListener', + expression: processListener.value, + event: processListener.event, + fields: [] + } + } else if (processListener.valueType === 'delegateExpression') { + return { + listenerType: 'delegateExpressionListener', + delegateExpression: processListener.value, + event: processListener.event, + fields: [] + } + } + throw new Error('未知的监听器类型') +} + +export const listenerType = { + classListener: 'Java 类', + expressionListener: '表达式', + delegateExpressionListener: '代理表达式', + scriptListener: '脚本' +} + +export const eventType = { + create: '创建', + assignment: '指派', + complete: '完成', + delete: '删除', + update: '更新', + timeout: '超时' +} + +export const fieldType = { + string: '字符串', + expression: '表达式' +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue new file mode 100644 index 0000000..99ee6f8 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue @@ -0,0 +1,421 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue new file mode 100644 index 0000000..05532c6 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue @@ -0,0 +1,55 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue new file mode 100644 index 0000000..7bf4f0e --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue @@ -0,0 +1,168 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue new file mode 100644 index 0000000..f38f31c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue @@ -0,0 +1,113 @@ + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue new file mode 100644 index 0000000..3a71b4c --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/ElementTask.vue @@ -0,0 +1,78 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/data.ts b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/data.ts new file mode 100644 index 0000000..805c9ac --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/data.ts @@ -0,0 +1,36 @@ +import UserTask from './task-components/UserTask.vue' +import ServiceTask from './task-components/ServiceTask.vue' +import ScriptTask from './task-components/ScriptTask.vue' +import ReceiveTask from './task-components/ReceiveTask.vue' +import CallActivity from './task-components/CallActivity.vue' + +export const installedComponent = { + UserTask: { + name: '用户任务', + component: UserTask + }, + ServiceTask: { + name: '服务任务', + component: ServiceTask + }, + ScriptTask: { + name: '脚本任务', + component: ScriptTask + }, + ReceiveTask: { + name: '接收任务', + component: ReceiveTask + }, + CallActivity: { + name: '调用活动', + component: CallActivity + } +} + +export const getTaskCollapseItemName = (elementType) => { + return installedComponent[elementType].name +} + +export const isTaskCollapseItemShow = (elementType) => { + return installedComponent[elementType] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue new file mode 100644 index 0000000..6d8268b --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue @@ -0,0 +1,280 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ProcessExpressionDialog.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ProcessExpressionDialog.vue new file mode 100644 index 0000000..a038e69 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ProcessExpressionDialog.vue @@ -0,0 +1,70 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue new file mode 100644 index 0000000..83ed24e --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue @@ -0,0 +1,125 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue new file mode 100644 index 0000000..683fef3 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue @@ -0,0 +1,99 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue new file mode 100644 index 0000000..2f9c535 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue @@ -0,0 +1,91 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue new file mode 100644 index 0000000..81088cc --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue @@ -0,0 +1,469 @@ + + + diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/element-variables.scss b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/element-variables.scss new file mode 100644 index 0000000..0646f8e --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/element-variables.scss @@ -0,0 +1,70 @@ +/* 改变主题色变量 */ +$--color-primary: #1890ff; +$--color-danger: #ff4d4f; + +/* 改变 icon 字体路径变量,必需 */ +$--font-path: '~element-ui/lib/theme-chalk/fonts'; + +@use '~element-ui/packages/theme-chalk/src/index'; + +.el-table td, +.el-table th { + color: #333; +} +.el-drawer__header { + padding: 16px 16px 8px 16px; + margin: 0; + line-height: 24px; + font-size: 18px; + color: #303133; + box-sizing: border-box; + border-bottom: 1px solid #e8e8e8; +} +div[class^='el-drawer']:focus, +span:focus { + outline: none; +} +.el-drawer__body { + box-sizing: border-box; + padding: 16px; + width: 100%; + overflow-y: auto; +} + +.el-dialog { + margin-top: 50vh !important; + transform: translateY(-50%); + overflow: hidden; +} +.el-dialog__wrapper { + overflow: hidden; + max-height: 100vh; +} +.el-dialog__header { + padding: 16px 16px 8px 16px; + box-sizing: border-box; + border-bottom: 1px solid #e8e8e8; +} +.el-dialog__body { + padding: 16px; + max-height: 80vh; + box-sizing: border-box; + overflow-y: auto; +} +.el-dialog__footer { + padding: 16px; + box-sizing: border-box; + border-top: 1px solid #e8e8e8; +} +.el-dialog__close { + font-weight: 600; +} +.el-select { + width: 100%; +} +.el-divider:not(.el-divider--horizontal) { + margin: 0 8px; +} +.el-divider.el-divider--horizontal { + margin: 16px 0; +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/index.scss b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/index.scss new file mode 100644 index 0000000..2404760 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/index.scss @@ -0,0 +1,117 @@ +@use './process-designer.scss'; +@use './process-panel.scss'; + +$success-color: #4eb819; +$primary-color: #409EFF; +$danger-color: #F56C6C; +$cancel-color: #909399; + +.process-viewer { + position: relative; + border: 1px solid #EFEFEF; + background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+') repeat!important; + + .success-arrow { + fill: $success-color; + stroke: $success-color; + } + + .success-conditional { + fill: white; + stroke: $success-color; + } + + .success.djs-connection { + .djs-visual path { + stroke: $success-color!important; + //marker-end: url(#sequenceflow-end-white-success)!important; + } + } + + .success.djs-connection.condition-expression { + .djs-visual path { + //marker-start: url(#conditional-flow-marker-white-success)!important; + } + } + + .success.djs-shape { + .djs-visual rect { + stroke: $success-color!important; + fill: $success-color!important; + fill-opacity: 0.15!important; + } + + .djs-visual polygon { + stroke: $success-color!important; + } + + .djs-visual path:nth-child(2) { + stroke: $success-color!important; + fill: $success-color!important; + } + + .djs-visual circle { + stroke: $success-color!important; + fill: $success-color!important; + fill-opacity: 0.15!important; + } + } + + .primary.djs-shape { + .djs-visual rect { + stroke: $primary-color!important; + fill: $primary-color!important; + fill-opacity: 0.15!important; + } + + .djs-visual polygon { + stroke: $primary-color!important; + } + + .djs-visual circle { + stroke: $primary-color!important; + fill: $primary-color!important; + fill-opacity: 0.15!important; + } + } + + .danger.djs-shape { + .djs-visual rect { + stroke: $danger-color!important; + fill: $danger-color!important; + fill-opacity: 0.15!important; + } + + .djs-visual polygon { + stroke: $danger-color!important; + } + + .djs-visual circle { + stroke: $danger-color!important; + fill: $danger-color!important; + fill-opacity: 0.15!important; + } + } + + .cancel.djs-shape { + .djs-visual rect { + stroke: $cancel-color!important; + fill: $cancel-color!important; + fill-opacity: 0.15!important; + } + + .djs-visual polygon { + stroke: $cancel-color!important; + } + + .djs-visual circle { + stroke: $cancel-color!important; + fill: $cancel-color!important; + fill-opacity: 0.15!important; + } + } +} + +.process-viewer .djs-tooltip-container, .process-viewer .djs-overlay-container, .process-viewer .djs-palette { + display: none; +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/process-designer.scss b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/process-designer.scss new file mode 100644 index 0000000..bca0258 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/process-designer.scss @@ -0,0 +1,159 @@ +@use 'bpmn-js-token-simulation/assets/css/bpmn-js-token-simulation.css'; + +// 边框被 token-simulation 样式覆盖了 +.djs-palette { + background: var(--palette-background-color); + border: solid 1px var(--palette-border-color) !important; + border-radius: 2px; +} + +.my-process-designer { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + box-sizing: border-box; + .my-process-designer__header { + width: 100%; + min-height: 36px; + .el-button { + text-align: center; + } + .el-button-group { + margin: 4px; + } + .el-tooltip__popper { + .el-button { + width: 100%; + text-align: left; + padding-left: 8px; + padding-right: 8px; + } + .el-button:hover { + background: rgba(64, 158, 255, 0.8); + color: #ffffff; + } + } + .align { + position: relative; + i { + &:after { + content: '|'; + position: absolute; + // transform: rotate(90deg) translate(200%, 60%); + transform: rotate(180deg) translate(271%, -10%); + } + } + } + .align.align-left i { + transform: rotate(90deg); + } + .align.align-right i { + transform: rotate(-90deg); + } + .align.align-top i { + transform: rotate(180deg); + } + .align.align-bottom i { + transform: rotate(0deg); + } + .align.align-center i { + transform: rotate(0deg); + &:after { + // transform: rotate(90deg) translate(0, 60%); + transform: rotate(0deg) translate(-0%, -5%); + } + } + .align.align-middle i { + transform: rotate(-90deg); + &:after { + // transform: rotate(90deg) translate(0, 60%); + transform: rotate(0deg) translate(0, -10%); + } + } + } + .my-process-designer__container { + display: inline-flex; + width: 100%; + flex: 1; + .my-process-designer__canvas { + flex: 1; + height: 100%; + position: relative; + background: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+') + repeat !important; + div.toggle-mode { + display: none; + } + } + .my-process-designer__property-panel { + height: 100%; + overflow: scroll; + overflow-y: auto; + z-index: 10; + * { + box-sizing: border-box; + } + } + // svg { + // width: 100%; + // height: 100%; + // min-height: 100%; + // overflow: hidden; + // } + } +} + +//侧边栏配置 +// .djs-palette .two-column .open { +.open { + // .djs-palette.open { + .djs-palette-entries { + div[class^='bpmn-icon-']:before, + div[class*='bpmn-icon-']:before { + line-height: unset; + } + div.entry { + position: relative; + } + div.entry:hover { + &::after { + width: max-content; + content: attr(title); + vertical-align: text-bottom; + position: absolute; + right: -10px; + top: 0; + bottom: 0; + overflow: hidden; + transform: translateX(100%); + font-size: 0.5em; + display: inline-block; + text-decoration: inherit; + font-variant: normal; + text-transform: none; + background: #fafafa; + box-shadow: 0 0 6px #eeeeee; + border: 1px solid #cccccc; + box-sizing: border-box; + padding: 0 16px; + border-radius: 4px; + z-index: 100; + } + } + } +} +pre { + margin: 0; + height: 100%; + overflow: hidden; + max-height: calc(80vh - 32px); + overflow-y: auto; +} +.hljs { + word-break: break-word; + white-space: pre-wrap; +} +.hljs * { + font-family: Consolas, Monaco, monospace; +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/process-panel.scss b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/process-panel.scss new file mode 100644 index 0000000..f840cdd --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/theme/process-panel.scss @@ -0,0 +1,107 @@ +.process-panel__container { + box-sizing: border-box; + padding: 0 8px; + border-left: 1px solid #eeeeee; + box-shadow: 0 0 8px #cccccc; + max-height: 100%; + overflow-y: scroll; +} +.panel-tab__title { + font-weight: 600; + padding: 0 8px; + font-size: 1.1em; + line-height: 1.2em; + i { + margin-right: 8px; + font-size: 1.2em; + } +} +.panel-tab__content { + width: 100%; + box-sizing: border-box; + border-top: 1px solid #eeeeee; + padding: 8px 16px; + .panel-tab__content--title { + display: flex; + justify-content: space-between; + padding-bottom: 8px; + span { + flex: 1; + text-align: left; + } + } +} +.element-property { + width: 100%; + display: flex; + align-items: flex-start; + margin: 8px 0; + .element-property__label { + display: block; + width: 90px; + text-align: right; + overflow: hidden; + padding-right: 12px; + line-height: 32px; + font-size: 14px; + box-sizing: border-box; + } + .element-property__value { + flex: 1; + line-height: 32px; + } + .el-form-item { + width: 100%; + margin-bottom: 0; + padding-bottom: 18px; + } +} +.list-property { + flex-direction: column; + .element-listener-item { + width: 100%; + display: inline-grid; + grid-template-columns: 16px auto 32px 32px; + grid-column-gap: 8px; + } + .element-listener-item + .element-listener-item { + margin-top: 8px; + } +} +.listener-filed__title { + display: inline-flex; + width: 100%; + justify-content: space-between; + align-items: center; + margin-top: 0; + span { + width: 200px; + text-align: left; + font-size: 14px; + } + i { + margin-right: 8px; + } +} +.element-drawer__button { + margin-top: 8px; + width: 100%; + display: inline-flex; + justify-content: space-around; +} +.element-drawer__button > .el-button { + width: 100%; +} + +.el-collapse-item__content { + padding-bottom: 0; +} +.el-input.is-disabled .el-input__inner { + color: #999999; +} +.el-form-item.el-form-item--mini { + margin-bottom: 0; + & + .el-form-item { + margin-top: 16px; + } +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/utils.ts b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/utils.ts new file mode 100644 index 0000000..8996788 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/package/utils.ts @@ -0,0 +1,78 @@ +import { toRaw } from 'vue' +const bpmnInstances = () => (window as any)?.bpmnInstances +// 创建监听器实例 +export function createListenerObject(options, isTask, prefix) { + debugger + const listenerObj = Object.create(null) + listenerObj.event = options.event + isTask && (listenerObj.id = options.id) // 任务监听器特有的 id 字段 + switch (options.listenerType) { + case 'scriptListener': + listenerObj.script = createScriptObject(options, prefix) + break + case 'expressionListener': + listenerObj.expression = options.expression + break + case 'delegateExpressionListener': + listenerObj.delegateExpression = options.delegateExpression + break + default: + listenerObj.class = options.class + } + // 注入字段 + if (options.fields) { + listenerObj.fields = options.fields.map((field) => { + return createFieldObject(field, prefix) + }) + } + // 任务监听器的 定时器 设置 + if (isTask && options.event === 'timeout' && !!options.eventDefinitionType) { + const timeDefinition = bpmnInstances().moddle.create('bpmn:FormalExpression', { + body: options.eventTimeDefinitions + }) + const TimerEventDefinition = bpmnInstances().moddle.create('bpmn:TimerEventDefinition', { + id: `TimerEventDefinition_${uuid(8)}`, + [`time${options.eventDefinitionType.replace(/^\S/, (s) => s.toUpperCase())}`]: timeDefinition + }) + listenerObj.eventDefinitions = [TimerEventDefinition] + } + return bpmnInstances().moddle.create( + `${prefix}:${isTask ? 'TaskListener' : 'ExecutionListener'}`, + listenerObj + ) +} + +// 创建 监听器的注入字段 实例 +export function createFieldObject(option, prefix) { + const { name, fieldType, string, expression } = option + const fieldConfig = fieldType === 'string' ? { name, string } : { name, expression } + return bpmnInstances().moddle.create(`${prefix}:Field`, fieldConfig) +} + +// 创建脚本实例 +export function createScriptObject(options, prefix) { + const { scriptType, scriptFormat, value, resource } = options + const scriptConfig = + scriptType === 'inlineScript' ? { scriptFormat, value } : { scriptFormat, resource } + return bpmnInstances().moddle.create(`${prefix}:Script`, scriptConfig) +} + +// 更新元素扩展属性 +export function updateElementExtensions(element, extensionList) { + const extensions = bpmnInstances().moddle.create('bpmn:ExtensionElements', { + values: extensionList + }) + bpmnInstances().modeling.updateProperties(toRaw(element), { + extensionElements: extensions + }) +} + +// 创建一个id +export function uuid(length = 8, chars?) { + let result = '' + const charsString = chars || '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + for (let i = length; i > 0; --i) { + result += charsString[Math.floor(Math.random() * charsString.length)] + } + return result +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/highlight/index.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/highlight/index.js new file mode 100644 index 0000000..5df38c9 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/highlight/index.js @@ -0,0 +1,5 @@ +const hljs = require('highlight.js/lib/core') +hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml')) +hljs.registerLanguage('json', require('highlight.js/lib/languages/json')) + +module.exports = hljs diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js new file mode 100644 index 0000000..e876031 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/custom-renderer/CustomRenderer.js @@ -0,0 +1,14 @@ +import BpmnRenderer from 'bpmn-js/lib/draw/BpmnRenderer' + +export default function CustomRenderer(config, eventBus, styles, pathMap, canvas, textRenderer) { + BpmnRenderer.call(this, config, eventBus, styles, pathMap, canvas, textRenderer, 2000) + + this.handlers['label'] = function () { + return null + } +} + +const F = function () {} // 核心,利用空对象作为中介; +F.prototype = BpmnRenderer.prototype // 核心,将父类的原型赋值给空对象F; +CustomRenderer.prototype = new F() // 核心,将 F的实例赋值给子类; +CustomRenderer.prototype.constructor = CustomRenderer // 修复子类CustomRenderer的构造器指向,防止原型链的混乱; diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js new file mode 100644 index 0000000..79d8bd0 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/custom-renderer/index.js @@ -0,0 +1,6 @@ +import CustomRenderer from './CustomRenderer' + +export default { + __init__: ['customRenderer'], + customRenderer: ['type', CustomRenderer] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js new file mode 100644 index 0000000..9fa1d14 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/rules/CustomRules.js @@ -0,0 +1,16 @@ +import BpmnRules from 'bpmn-js/lib/features/rules/BpmnRules' +import inherits from 'inherits' + +export default function CustomRules(eventBus) { + BpmnRules.call(this, eventBus) +} + +inherits(CustomRules, BpmnRules) + +CustomRules.prototype.canDrop = function () { + return false +} + +CustomRules.prototype.canMove = function () { + return false +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/rules/index.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/rules/index.js new file mode 100644 index 0000000..12cf05a --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/modules/rules/index.js @@ -0,0 +1,6 @@ +import CustomRules from './CustomRules' + +export default { + __init__: ['customRules'], + customRules: ['type', CustomRules] +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/translations.ts b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/translations.ts new file mode 100644 index 0000000..5f9b9a5 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/translations.ts @@ -0,0 +1,25 @@ +/** + * This is a sample file that should be replaced with the actual translation. + * + * Checkout https://github.com/bpmn-io/bpmn-js-i18n for a list of available + * translations and labels to translate. + */ +export default { + 'Exclusive Gateway': 'Exklusives Gateway', + 'Parallel Gateway': 'Paralleles Gateway', + 'Inclusive Gateway': 'Inklusives Gateway', + 'Complex Gateway': 'Komplexes Gateway', + 'Event based Gateway': 'Ereignis-basiertes Gateway', + 'Message Start Event': '消息启动事件', + 'Timer Start Event': '定时启动事件', + 'Conditional Start Event': '条件启动事件', + 'Signal Start Event': '信号启动事件', + 'Error Start Event': '错误启动事件', + 'Escalation Start Event': '升级启动事件', + 'Compensation Start Event': '补偿启动事件', + 'Message Start Event (non-interrupting)': '消息启动事件 (非中断)', + 'Timer Start Event (non-interrupting)': '定时启动事件 (非中断)', + 'Conditional Start Event (non-interrupting)': '条件启动事件 (非中断)', + 'Signal Start Event (non-interrupting)': '信号启动事件 (非中断)', + 'Escalation Start Event (non-interrupting)': '升级启动事件 (非中断)' +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js new file mode 100644 index 0000000..bb71d44 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/directive/clickOutSide.js @@ -0,0 +1,39 @@ +//outside.js + +const ctx = '@@clickoutsideContext' + +export default { + bind(el, binding, vnode) { + const ele = el + const documentHandler = (e) => { + if (!vnode.context || ele.contains(e.target)) { + return false + } + // 调用指令回调 + if (binding.expression) { + vnode.context[el[ctx].methodName](e) + } else { + el[ctx].bindingFn(e) + } + } + // 将方法添加到ele + ele[ctx] = { + documentHandler, + methodName: binding.expression, + bindingFn: binding.value + } + + setTimeout(() => { + document.addEventListener('touchstart', documentHandler) // 为document绑定事件 + }) + }, + update(el, binding) { + const ele = el + ele[ctx].methodName = binding.expression + ele[ctx].bindingFn = binding.value + }, + unbind(el) { + document.removeEventListener('touchstart', el[ctx].documentHandler) // 解绑 + delete el[ctx] + } +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/index.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/index.js new file mode 100644 index 0000000..7d970ec --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/index.js @@ -0,0 +1,10 @@ +export function debounce(fn, delay = 500) { + let timer + return function (...args) { + if (timer) { + clearTimeout(timer) + timer = null + } + timer = setTimeout(fn.bind(this, ...args), delay) + } +} diff --git a/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/xml2json.js b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/xml2json.js new file mode 100644 index 0000000..fe1a52f --- /dev/null +++ b/marketing-ui/admin-ui/src/components/bpmnProcessDesigner/src/utils/xml2json.js @@ -0,0 +1,50 @@ +function xmlStr2XmlObj(xmlStr) { + let xmlObj = {} + if (document.all) { + const xmlDom = new window.ActiveXObject('Microsoft.XMLDOM') + xmlDom.loadXML(xmlStr) + xmlObj = xmlDom + } else { + xmlObj = new DOMParser().parseFromString(xmlStr, 'text/xml') + } + return xmlObj +} + +function xml2json(xml) { + try { + let obj = {} + if (xml.children.length > 0) { + for (let i = 0; i < xml.children.length; i++) { + const item = xml.children.item(i) + const nodeName = item.nodeName + if (typeof obj[nodeName] == 'undefined') { + obj[nodeName] = xml2json(item) + } else { + if (typeof obj[nodeName].push == 'undefined') { + const old = obj[nodeName] + obj[nodeName] = [] + obj[nodeName].push(old) + } + obj[nodeName].push(xml2json(item)) + } + } + } else { + obj = xml.textContent + } + return obj + } catch (e) { + console.log(e.message) + } +} + +function xmlObj2json(xml) { + const xmlObj = xmlStr2XmlObj(xml) + console.log(xmlObj) + let jsonObj = {} + if (xmlObj.childNodes.length > 0) { + jsonObj = xml2json(xmlObj) + } + return jsonObj +} + +export default xmlObj2json diff --git a/marketing-ui/admin-ui/src/components/index.ts b/marketing-ui/admin-ui/src/components/index.ts new file mode 100644 index 0000000..4d030c3 --- /dev/null +++ b/marketing-ui/admin-ui/src/components/index.ts @@ -0,0 +1,6 @@ +import type { App } from 'vue' +import { Icon } from './Icon' + +export const setupGlobCom = (app: App): void => { + app.component('Icon', Icon) +} diff --git a/marketing-ui/admin-ui/src/config/axios/config.ts b/marketing-ui/admin-ui/src/config/axios/config.ts new file mode 100644 index 0000000..8116508 --- /dev/null +++ b/marketing-ui/admin-ui/src/config/axios/config.ts @@ -0,0 +1,28 @@ +const config: { + base_url: string + result_code: number | string + default_headers: AxiosHeaders + request_timeout: number +} = { + /** + * api请求基础路径 + */ + base_url: import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL, + /** + * 接口成功返回状态码 + */ + result_code: 200, + + /** + * 接口请求超时时间 + */ + request_timeout: 30000, + + /** + * 默认接口请求类型 + * 可选值:application/x-www-form-urlencoded multipart/form-data + */ + default_headers: 'application/json' +} + +export { config } diff --git a/marketing-ui/admin-ui/src/config/axios/errorCode.ts b/marketing-ui/admin-ui/src/config/axios/errorCode.ts new file mode 100644 index 0000000..94d719f --- /dev/null +++ b/marketing-ui/admin-ui/src/config/axios/errorCode.ts @@ -0,0 +1,6 @@ +export default { + '401': '认证失败,无法访问系统资源', + '403': '当前操作没有权限', + '404': '访问资源不存在', + default: '系统未知错误,请反馈给管理员' +} diff --git a/marketing-ui/admin-ui/src/config/axios/index.ts b/marketing-ui/admin-ui/src/config/axios/index.ts new file mode 100644 index 0000000..07719a2 --- /dev/null +++ b/marketing-ui/admin-ui/src/config/axios/index.ts @@ -0,0 +1,47 @@ +import { service } from './service' + +import { config } from './config' + +const { default_headers } = config + +const request = (option: any) => { + const { headersType, headers, ...otherOption } = option + return service({ + ...otherOption, + headers: { + 'Content-Type': headersType || default_headers, + ...headers + } + }) +} +export default { + get: async (option: any) => { + const res = await request({ method: 'GET', ...option }) + return res.data as unknown as T + }, + post: async (option: any) => { + const res = await request({ method: 'POST', ...option }) + return res.data as unknown as T + }, + postOriginal: async (option: any) => { + const res = await request({ method: 'POST', ...option }) + return res + }, + delete: async (option: any) => { + const res = await request({ method: 'DELETE', ...option }) + return res.data as unknown as T + }, + put: async (option: any) => { + const res = await request({ method: 'PUT', ...option }) + return res.data as unknown as T + }, + download: async (option: any) => { + const res = await request({ method: 'GET', responseType: 'blob', ...option }) + return res as unknown as Promise + }, + upload: async (option: any) => { + option.headersType = 'multipart/form-data' + const res = await request({ method: 'POST', ...option }) + return res as unknown as Promise + } +} diff --git a/marketing-ui/admin-ui/src/config/axios/service.ts b/marketing-ui/admin-ui/src/config/axios/service.ts new file mode 100644 index 0000000..bf234da --- /dev/null +++ b/marketing-ui/admin-ui/src/config/axios/service.ts @@ -0,0 +1,219 @@ +import axios, { AxiosError, AxiosInstance, AxiosResponse, InternalAxiosRequestConfig } from 'axios' + +import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' +import qs from 'qs' +import { config } from '@/config/axios/config' +import { getAccessToken, getRefreshToken, removeToken, setToken } from '@/utils/auth' +import errorCode from './errorCode' + +import { resetRouter } from '@/router' +import { deleteUserCache } from '@/hooks/web/useCache' + +const { result_code, base_url, request_timeout } = config + +// 需要忽略的提示。忽略后,自动 Promise.reject('error') +const ignoreMsgs = [ + '无效的刷新令牌', // 刷新令牌被删除时,不用提示 + '刷新令牌已过期' // 使用刷新令牌,刷新获取新的访问令牌时,结果因为过期失败,此时需要忽略。否则,会导致继续 401,无法跳转到登出界面 +] +// 是否显示重新登录 +export const isRelogin = { show: false } +// Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现 +// 请求队列 +let requestList: any[] = [] +// 是否正在刷新中 +let isRefreshToken = false +// 请求白名单,无须token的接口 +const whiteList: string[] = ['/login', '/refresh-token'] + +// 创建axios实例 +const service: AxiosInstance = axios.create({ + baseURL: base_url, // api 的 base_url + timeout: request_timeout, // 请求超时时间 + withCredentials: false, // 禁用 Cookie 等信息 + // 自定义参数序列化函数 + paramsSerializer: (params) => { + return qs.stringify(params, { allowDots: true }) + } +}) + +// request拦截器 +service.interceptors.request.use( + (config: InternalAxiosRequestConfig) => { + // 是否需要设置 token + let isToken = (config!.headers || {}).isToken === false + whiteList.some((v) => { + if (config.url && config.url.indexOf(v) > -1) { + return (isToken = false) + } + }) + if (getAccessToken() && !isToken) { + config.headers.Authorization = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token + } + + const method = config.method?.toUpperCase() + // 防止 GET 请求缓存 + if (method === 'GET') { + config.headers['Cache-Control'] = 'no-cache' + config.headers['Pragma'] = 'no-cache' + } + // 自定义参数序列化函数 + else if (method === 'POST') { + const contentType = config.headers['Content-Type'] || config.headers['content-type'] + if (contentType === 'application/x-www-form-urlencoded') { + if (config.data && typeof config.data !== 'string') { + config.data = qs.stringify(config.data) + } + } + } + return config + }, + (error: AxiosError) => { + // Do something with request error + console.log(error) // for debug + return Promise.reject(error) + } +) + +// response 拦截器 +service.interceptors.response.use( + async (response: AxiosResponse) => { + let { data } = response + const config = response.config + if (!data) { + // 返回“[HTTP]请求没有返回值”; + throw new Error() + } + const { t } = useI18n() + // 未设置状态码则默认成功状态 + // 二进制数据则直接返回,例如说 Excel 导出 + if ( + response.request.responseType === 'blob' || + response.request.responseType === 'arraybuffer' + ) { + // 注意:如果导出的响应为 json,说明可能失败了,不直接返回进行下载 + if (response.data.type !== 'application/json') { + return response.data + } + data = await new Response(response.data).json() + } + const code = data.code || result_code + // 获取错误信息 + const msg = data.msg || errorCode[code] || errorCode['default'] + if (ignoreMsgs.indexOf(msg) !== -1) { + // 如果是忽略的错误码,直接返回 msg 异常 + return Promise.reject(msg) + } else if (code === 401) { + // 如果未认证,并且未进行刷新令牌,说明可能是访问令牌过期了 + if (!isRefreshToken) { + isRefreshToken = true + // 1. 如果获取不到刷新令牌,则只能执行登出操作 + if (!getRefreshToken()) { + return handleAuthorized() + } + // 2. 进行刷新访问令牌 + try { + const refreshTokenRes = await refreshToken() + // 2.1 刷新成功,则回放队列的请求 + 当前请求 + setToken((await refreshTokenRes).data.data) + config.headers!.Authorization = 'Bearer ' + getAccessToken() + requestList.forEach((cb: any) => { + cb() + }) + requestList = [] + return service(config) + } catch (e) { + // 为什么需要 catch 异常呢?刷新失败时,请求因为 Promise.reject 触发异常。 + // 2.2 刷新失败,只回放队列的请求 + requestList.forEach((cb: any) => { + cb() + }) + // 提示是否要登出。即不回放当前请求!不然会形成递归 + return handleAuthorized() + } finally { + requestList = [] + isRefreshToken = false + } + } else { + // 添加到队列,等待刷新获取到新的令牌 + return new Promise((resolve) => { + requestList.push(() => { + config.headers!.Authorization = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token 请根据实际情况自行修改 + resolve(service(config)) + }) + }) + } + } else if (code === 500) { + ElMessage.error(t('sys.api.errMsg500')) + return Promise.reject(new Error(msg)) + } else if (code === 901) { + ElMessage.error({ + offset: 300, + dangerouslyUseHTMLString: true, + message: + '
    ' + + t('sys.api.errMsg901') + + '
    ' + + '
     
    ' + + '
    5 分钟搭建本地环境
    ' + }) + return Promise.reject(new Error(msg)) + } else if (code !== 200) { + if (msg === '无效的刷新令牌') { + // hard coding:忽略这个提示,直接登出 + console.log(msg) + return handleAuthorized() + } else { + ElNotification.error({ title: msg }) + } + return Promise.reject('error') + } else { + return data + } + }, + (error: AxiosError) => { + console.log('err' + error) // for debug + let { message } = error + const { t } = useI18n() + if (message === 'Network Error') { + message = t('sys.api.errorMessage') + } else if (message.includes('timeout')) { + message = t('sys.api.apiTimeoutMessage') + } else if (message.includes('Request failed with status code')) { + message = t('sys.api.apiRequestFailed') + message.substr(message.length - 3) + } + ElMessage.error(message) + return Promise.reject(error) + } +) + +const refreshToken = async () => { + return await axios.post(base_url + '/system/auth/refresh-token?refreshToken=' + getRefreshToken()) +} +const handleAuthorized = () => { + const { t } = useI18n() + if (!isRelogin.show) { + // 如果已经到登录页面则不进行弹窗提示 + if (window.location.href.includes('login')) { + return + } + isRelogin.show = true + ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), { + showCancelButton: false, + closeOnClickModal: false, + showClose: false, + closeOnPressEscape: false, + confirmButtonText: t('login.relogin'), + type: 'warning' + }).then(() => { + resetRouter() // 重置静态路由表 + deleteUserCache() // 删除用户缓存 + removeToken() + isRelogin.show = false + // 干掉token后再走一次路由让它过router.beforeEach的校验 + window.location.href = window.location.href + }) + } + return Promise.reject(t('sys.api.timeoutMessage')) +} +export { service } diff --git a/marketing-ui/admin-ui/src/directives/index.ts b/marketing-ui/admin-ui/src/directives/index.ts new file mode 100644 index 0000000..1b99988 --- /dev/null +++ b/marketing-ui/admin-ui/src/directives/index.ts @@ -0,0 +1,24 @@ +import type { App } from 'vue' +import { hasRole } from './permission/hasRole' +import { hasPermi } from './permission/hasPermi' + +/** + * 导出指令:v-xxx + * @methods hasRole 用户权限,用法: v-hasRole + * @methods hasPermi 按钮权限,用法: v-hasPermi + */ +export const setupAuth = (app: App) => { + hasRole(app) + hasPermi(app) +} + +/** + * 导出指令:v-mountedFocus + */ +export const setupMountedFocus = (app: App) => { + app.directive('mountedFocus', { + mounted(el) { + el.focus() + } + }) +} diff --git a/marketing-ui/admin-ui/src/directives/permission/hasPermi.ts b/marketing-ui/admin-ui/src/directives/permission/hasPermi.ts new file mode 100644 index 0000000..90cd025 --- /dev/null +++ b/marketing-ui/admin-ui/src/directives/permission/hasPermi.ts @@ -0,0 +1,31 @@ +import type { App } from 'vue' +import { useUserStore } from '@/store/modules/user' + +const { t } = useI18n() // 国际化 + +/** 判断权限的指令 directive */ +export function hasPermi(app: App) { + app.directive('hasPermi', (el, binding) => { + const { value } = binding + + if (value && value instanceof Array && value.length > 0) { + const hasPermissions = hasPermission(value) + + if (!hasPermissions) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error(t('permission.hasPermission')) + } + }) +} + +/** 判断权限的方法 function */ +const userStore = useUserStore() +const all_permission = '*:*:*' +export const hasPermission = (permission: string[]) => { + return ( + userStore.permissions.has(all_permission) || + permission.some((permission) => userStore.permissions.has(permission)) + ) +} diff --git a/marketing-ui/admin-ui/src/directives/permission/hasRole.ts b/marketing-ui/admin-ui/src/directives/permission/hasRole.ts new file mode 100644 index 0000000..a512811 --- /dev/null +++ b/marketing-ui/admin-ui/src/directives/permission/hasRole.ts @@ -0,0 +1,28 @@ +import type { App } from 'vue' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' + +const { t } = useI18n() // 国际化 + +export function hasRole(app: App) { + app.directive('hasRole', (el, binding) => { + const { wsCache } = useCache() + const { value } = binding + const super_admin = 'super_admin' + const userInfo = wsCache.get(CACHE_KEY.USER) + const roles = userInfo?.roles || [] + + if (value && value instanceof Array && value.length > 0) { + const roleFlag = value + + const hasRole = roles.some((role: string) => { + return super_admin === role || roleFlag.includes(role) + }) + + if (!hasRole) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error(t('permission.hasRole')) + } + }) +} diff --git a/marketing-ui/admin-ui/src/hooks/event/useScrollTo.ts b/marketing-ui/admin-ui/src/hooks/event/useScrollTo.ts new file mode 100644 index 0000000..92aec87 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/event/useScrollTo.ts @@ -0,0 +1,60 @@ +export interface ScrollToParams { + el: HTMLElement + to: number + position: string + duration?: number + callback?: () => void +} + +const easeInOutQuad = (t: number, b: number, c: number, d: number) => { + t /= d / 2 + if (t < 1) { + return (c / 2) * t * t + b + } + t-- + return (-c / 2) * (t * (t - 2) - 1) + b +} +const move = (el: HTMLElement, position: string, amount: number) => { + el[position] = amount +} + +export function useScrollTo({ + el, + position = 'scrollLeft', + to, + duration = 500, + callback +}: ScrollToParams) { + const isActiveRef = ref(false) + const start = el[position] + const change = to - start + const increment = 20 + let currentTime = 0 + + function animateScroll() { + if (!unref(isActiveRef)) { + return + } + currentTime += increment + const val = easeInOutQuad(currentTime, start, change, duration) + move(el, position, val) + if (currentTime < duration && unref(isActiveRef)) { + requestAnimationFrame(animateScroll) + } else { + if (callback) { + callback() + } + } + } + + function run() { + isActiveRef.value = true + animateScroll() + } + + function stop() { + isActiveRef.value = false + } + + return { start: run, stop } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useCache.ts b/marketing-ui/admin-ui/src/hooks/web/useCache.ts new file mode 100644 index 0000000..cc1207b --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useCache.ts @@ -0,0 +1,38 @@ +/** + * 配置浏览器本地存储的方式,可直接存储对象数组。 + */ + +import WebStorageCache from 'web-storage-cache' + +type CacheType = 'localStorage' | 'sessionStorage' + +export const CACHE_KEY = { + // 用户相关 + ROLE_ROUTERS: 'roleRouters', + USER: 'user', + // 系统设置 + IS_DARK: 'isDark', + LANG: 'lang', + THEME: 'theme', + LAYOUT: 'layout', + DICT_CACHE: 'dictCache', + // 登录表单 + LoginForm: 'loginForm' +} + +export const useCache = (type: CacheType = 'localStorage') => { + const wsCache: WebStorageCache = new WebStorageCache({ + storage: type + }) + + return { + wsCache + } +} + +export const deleteUserCache = () => { + const { wsCache } = useCache() + wsCache.delete(CACHE_KEY.USER) + wsCache.delete(CACHE_KEY.ROLE_ROUTERS) + // 注意,不要清理 LoginForm 登录表单 +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useConfigGlobal.ts b/marketing-ui/admin-ui/src/hooks/web/useConfigGlobal.ts new file mode 100644 index 0000000..afb3db3 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useConfigGlobal.ts @@ -0,0 +1,9 @@ +import { ConfigGlobalTypes } from '@/types/configGlobal' + +export const useConfigGlobal = () => { + const configGlobal = inject('configGlobal', {}) as ConfigGlobalTypes + + return { + configGlobal + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useCrudSchemas.ts b/marketing-ui/admin-ui/src/hooks/web/useCrudSchemas.ts new file mode 100644 index 0000000..458b57e --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useCrudSchemas.ts @@ -0,0 +1,326 @@ +import { reactive } from 'vue' +import { AxiosPromise } from 'axios' +import { findIndex } from '@/utils' +import { eachTree, filter, treeMap } from '@/utils/tree' +import { getBoolDictOptions, getDictOptions, getIntDictOptions } from '@/utils/dict' + +import { FormSchema } from '@/types/form' +import { TableColumn } from '@/types/table' +import { DescriptionsSchema } from '@/types/descriptions' +import { ComponentOptions, ComponentProps } from '@/types/components' +import { DictTag } from '@/components/DictTag' +import { cloneDeep, merge } from 'lodash-es' + +export type CrudSchema = Omit & { + isSearch?: boolean // 是否在查询显示 + search?: CrudSearchParams // 查询的详细配置 + isTable?: boolean // 是否在列表显示 + table?: CrudTableParams // 列表的详细配置 + isForm?: boolean // 是否在表单显示 + form?: CrudFormParams // 表单的详细配置 + isDetail?: boolean // 是否在详情显示 + detail?: CrudDescriptionsParams // 详情的详细配置 + children?: CrudSchema[] + dictType?: string // 字典类型 + dictClass?: 'string' | 'number' | 'boolean' // 字典数据类型 string | number | boolean +} + +type CrudSearchParams = { + // 是否显示在查询项 + show?: boolean + // 接口 + api?: () => Promise + // 搜索字段 + field?: string +} & Omit + +type CrudTableParams = { + // 是否显示表头 + show?: boolean + // 列宽配置 + width?: number | string + // 列是否固定在左侧或者右侧 + fixed?: 'left' | 'right' +} & Omit +type CrudFormParams = { + // 是否显示表单项 + show?: boolean + // 接口 + api?: () => Promise +} & Omit + +type CrudDescriptionsParams = { + // 是否显示表单项 + show?: boolean +} & Omit + +interface AllSchemas { + searchSchema: FormSchema[] + tableColumns: TableColumn[] + formSchema: FormSchema[] + detailSchema: DescriptionsSchema[] +} + +const { t } = useI18n() + +// 过滤所有结构 +export const useCrudSchemas = ( + crudSchema: CrudSchema[] +): { + allSchemas: AllSchemas +} => { + // 所有结构数据 + const allSchemas = reactive({ + searchSchema: [], + tableColumns: [], + formSchema: [], + detailSchema: [] + }) + + const searchSchema = filterSearchSchema(crudSchema, allSchemas) + allSchemas.searchSchema = searchSchema || [] + + const tableColumns = filterTableSchema(crudSchema) + allSchemas.tableColumns = tableColumns || [] + + const formSchema = filterFormSchema(crudSchema, allSchemas) + allSchemas.formSchema = formSchema + + const detailSchema = filterDescriptionsSchema(crudSchema) + allSchemas.detailSchema = detailSchema + + return { + allSchemas + } +} + +// 过滤 Search 结构 +const filterSearchSchema = (crudSchema: CrudSchema[], allSchemas: AllSchemas): FormSchema[] => { + const searchSchema: FormSchema[] = [] + + // 获取字典列表队列 + const searchRequestTask: Array<() => Promise> = [] + eachTree(crudSchema, (schemaItem: CrudSchema) => { + // 判断是否显示 + if (schemaItem?.isSearch || schemaItem.search?.show) { + let component = schemaItem?.search?.component || 'Input' + const options: ComponentOptions[] = [] + let comonentProps: ComponentProps = {} + if (schemaItem.dictType) { + const allOptions: ComponentOptions = { label: '全部', value: '' } + options.push(allOptions) + getDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + comonentProps = { + options: options + } + if (!schemaItem.search?.component) component = 'Select' + } + + // updated by AKing: 解决了当使用默认的dict选项时,form中事件不能触发的问题 + const searchSchemaItem = merge( + { + // 默认为 input + component, + ...schemaItem.search, + field: schemaItem.field, + label: schemaItem.search?.label || schemaItem.label + }, + { componentProps: comonentProps } + ) + if (searchSchemaItem.api) { + searchRequestTask.push(async () => { + const res = await (searchSchemaItem.api as () => AxiosPromise)() + if (res) { + const index = findIndex(allSchemas.searchSchema, (v: FormSchema) => { + return v.field === searchSchemaItem.field + }) + if (index !== -1) { + allSchemas.searchSchema[index]!.componentProps!.options = filterOptions( + res, + searchSchemaItem.componentProps.optionsAlias?.labelField + ) + } + } + }) + } + // 删除不必要的字段 + delete searchSchemaItem.show + + searchSchema.push(searchSchemaItem) + } + }) + for (const task of searchRequestTask) { + task() + } + return searchSchema +} + +// 过滤 table 结构 +const filterTableSchema = (crudSchema: CrudSchema[]): TableColumn[] => { + const tableColumns = treeMap(crudSchema, { + conversion: (schema: CrudSchema) => { + if (schema?.isTable !== false && schema?.table?.show !== false) { + // add by 芋艿:增加对 dict 字典数据的支持 + if (!schema.formatter && schema.dictType) { + schema.formatter = (_: Recordable, __: TableColumn, cellValue: any) => { + return h(DictTag, { + type: schema.dictType!, // ! 表示一定不为空 + value: cellValue + }) + } + } + return { + ...schema.table, + ...schema + } + } + } + }) + + // 第一次过滤会有 undefined 所以需要二次过滤 + return filter(tableColumns as TableColumn[], (data) => { + if (data.children === void 0) { + delete data.children + } + return !!data.field + }) +} + +// 过滤 form 结构 +const filterFormSchema = (crudSchema: CrudSchema[], allSchemas: AllSchemas): FormSchema[] => { + const formSchema: FormSchema[] = [] + + // 获取字典列表队列 + const formRequestTask: Array<() => Promise> = [] + + eachTree(crudSchema, (schemaItem: CrudSchema) => { + // 判断是否显示 + if (schemaItem?.isForm !== false && schemaItem?.form?.show !== false) { + let component = schemaItem?.form?.component || 'Input' + let defaultValue: any = '' + if (schemaItem.form?.value) { + defaultValue = schemaItem.form?.value + } else { + if (component === 'InputNumber') { + defaultValue = 0 + } + } + let comonentProps: ComponentProps = {} + if (schemaItem.dictType) { + const options: ComponentOptions[] = [] + if (schemaItem.dictClass && schemaItem.dictClass === 'number') { + getIntDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + } else if (schemaItem.dictClass && schemaItem.dictClass === 'boolean') { + getBoolDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + } else { + getDictOptions(schemaItem.dictType).forEach((dict) => { + options.push(dict) + }) + } + comonentProps = { + options: options + } + if (!(schemaItem.form && schemaItem.form.component)) component = 'Select' + } + + // updated by AKing: 解决了当使用默认的dict选项时,form中事件不能触发的问题 + const formSchemaItem = merge( + { + // 默认为 input + component, + value: defaultValue, + ...schemaItem.form, + field: schemaItem.field, + label: schemaItem.form?.label || schemaItem.label + }, + { componentProps: comonentProps } + ) + + if (formSchemaItem.api) { + formRequestTask.push(async () => { + const res = await (formSchemaItem.api as () => AxiosPromise)() + if (res) { + const index = findIndex(allSchemas.formSchema, (v: FormSchema) => { + return v.field === formSchemaItem.field + }) + if (index !== -1) { + allSchemas.formSchema[index]!.componentProps!.options = filterOptions( + res, + formSchemaItem.componentProps.optionsAlias?.labelField + ) + } + } + }) + } + + // 删除不必要的字段 + delete formSchemaItem.show + + formSchema.push(formSchemaItem) + } + }) + + for (const task of formRequestTask) { + task() + } + return formSchema +} + +// 过滤 descriptions 结构 +const filterDescriptionsSchema = (crudSchema: CrudSchema[]): DescriptionsSchema[] => { + const descriptionsSchema: FormSchema[] = [] + + eachTree(crudSchema, (schemaItem: CrudSchema) => { + // 判断是否显示 + if (schemaItem?.isDetail !== false && schemaItem.detail?.show !== false) { + const descriptionsSchemaItem = { + ...schemaItem.detail, + field: schemaItem.field, + label: schemaItem.detail?.label || schemaItem.label + } + if (schemaItem.dictType) { + descriptionsSchemaItem.dictType = schemaItem.dictType + } + if (schemaItem.detail?.dateFormat || schemaItem.formatter == 'formatDate') { + // 优先使用 detail 下的配置,如果没有默认为 YYYY-MM-DD HH:mm:ss + descriptionsSchemaItem.dateFormat = schemaItem?.detail?.dateFormat + ? schemaItem?.detail?.dateFormat + : 'YYYY-MM-DD HH:mm:ss' + } + + // 删除不必要的字段 + delete descriptionsSchemaItem.show + + descriptionsSchema.push(descriptionsSchemaItem) + } + }) + + return descriptionsSchema +} + +// 给options添加国际化 +const filterOptions = (options: Recordable, labelField?: string) => { + return options?.map((v: Recordable) => { + if (labelField) { + v['labelField'] = t(v.labelField) + } else { + v['label'] = t(v.label) + } + return v + }) +} + +// 将 tableColumns 指定 fields 放到最前面 +export const sortTableColumns = (tableColumns: TableColumn[], field: string) => { + const fieldIndex = tableColumns.findIndex((item) => item.field === field) + const fieldColumn = cloneDeep(tableColumns[fieldIndex]) + tableColumns.splice(fieldIndex, 1) + // 添加到开头 + tableColumns.unshift(fieldColumn) +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useDesign.ts b/marketing-ui/admin-ui/src/hooks/web/useDesign.ts new file mode 100644 index 0000000..8ee3b38 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useDesign.ts @@ -0,0 +1,18 @@ +import variables from '@/styles/global.module.scss' + +export const useDesign = () => { + const scssVariables = variables + + /** + * @param scope 类名 + * @returns 返回空间名-类名 + */ + const getPrefixCls = (scope: string) => { + return `${scssVariables.namespace}-${scope}` + } + + return { + variables: scssVariables, + getPrefixCls + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useEmitt.ts b/marketing-ui/admin-ui/src/hooks/web/useEmitt.ts new file mode 100644 index 0000000..d4efea7 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useEmitt.ts @@ -0,0 +1,22 @@ +import mitt from 'mitt' + +interface Option { + name: string // 事件名称 + callback: Fn // 回调 +} + +const emitter = mitt() + +export const useEmitt = (option?: Option) => { + if (option) { + emitter.on(option.name, option.callback) + + onBeforeUnmount(() => { + emitter.off(option.name) + }) + } + + return { + emitter + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useForm.ts b/marketing-ui/admin-ui/src/hooks/web/useForm.ts new file mode 100644 index 0000000..53a8a94 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useForm.ts @@ -0,0 +1,94 @@ +import type { Form, FormExpose } from '@/components/Form' +import type { ElForm } from 'element-plus' +import type { FormProps } from '@/components/Form/src/types' +import { FormSchema, FormSetPropsType } from '@/types/form' + +export const useForm = (props?: FormProps) => { + // From实例 + const formRef = ref() + + // ElForm实例 + const elFormRef = ref>() + + /** + * @param ref Form实例 + * @param elRef ElForm实例 + */ + const register = (ref: typeof Form & FormExpose, elRef: ComponentRef) => { + formRef.value = ref + elFormRef.value = elRef + } + + const getForm = async () => { + await nextTick() + const form = unref(formRef) + if (!form) { + console.error('The form is not registered. Please use the register method to register') + } + return form + } + + // 一些内置的方法 + const methods: { + setProps: (props: Recordable) => void + setValues: (data: Recordable) => void + getFormData: () => Promise + setSchema: (schemaProps: FormSetPropsType[]) => void + addSchema: (formSchema: FormSchema, index?: number) => void + delSchema: (field: string) => void + } = { + setProps: async (props: FormProps = {}) => { + const form = await getForm() + form?.setProps(props) + if (props.model) { + form?.setValues(props.model) + } + }, + + setValues: async (data: Recordable) => { + const form = await getForm() + form?.setValues(data) + }, + + /** + * @param schemaProps 需要设置的schemaProps + */ + setSchema: async (schemaProps: FormSetPropsType[]) => { + const form = await getForm() + form?.setSchema(schemaProps) + }, + + /** + * @param formSchema 需要新增数据 + * @param index 在哪里新增 + */ + addSchema: async (formSchema: FormSchema, index?: number) => { + const form = await getForm() + form?.addSchema(formSchema, index) + }, + + /** + * @param field 删除哪个数据 + */ + delSchema: async (field: string) => { + const form = await getForm() + form?.delSchema(field) + }, + + /** + * @returns form data + */ + getFormData: async (): Promise => { + const form = await getForm() + return form?.formModel as T + } + } + + props && methods.setProps(props) + + return { + register, + elFormRef, + methods + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useGuide.ts b/marketing-ui/admin-ui/src/hooks/web/useGuide.ts new file mode 100644 index 0000000..7fd2fb0 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useGuide.ts @@ -0,0 +1,49 @@ +import { Config, driver } from 'driver.js' +import 'driver.js/dist/driver.css' +import { useDesign } from '@/hooks/web/useDesign' +import { useI18n } from '@/hooks/web/useI18n' + +const { t } = useI18n() + +const { variables } = useDesign() + +export const useGuide = (options?: Config) => { + const driverObj = driver( + options || { + showProgress: true, + nextBtnText: t('common.nextLabel'), + prevBtnText: t('common.prevLabel'), + doneBtnText: t('common.doneLabel'), + steps: [ + { + element: `#${variables.namespace}-menu`, + popover: { + title: t('common.menu'), + description: t('common.menuDes'), + side: 'right' + } + }, + { + element: `#${variables.namespace}-tool-header`, + popover: { + title: t('common.tool'), + description: t('common.toolDes'), + side: 'left' + } + }, + { + element: `#${variables.namespace}-tags-view`, + popover: { + title: t('common.tagsView'), + description: t('common.tagsViewDes'), + side: 'bottom' + } + } + ] + } + ) + + return { + ...driverObj + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useI18n.ts b/marketing-ui/admin-ui/src/hooks/web/useI18n.ts new file mode 100644 index 0000000..d1ab70f --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useI18n.ts @@ -0,0 +1,53 @@ +import { i18n } from '@/plugins/vueI18n' + +type I18nGlobalTranslation = { + (key: string): string + (key: string, locale: string): string + (key: string, locale: string, list: unknown[]): string + (key: string, locale: string, named: Record): string + (key: string, list: unknown[]): string + (key: string, named: Record): string +} + +type I18nTranslationRestParameters = [string, any] + +const getKey = (namespace: string | undefined, key: string) => { + if (!namespace) { + return key + } + if (key.startsWith(namespace)) { + return key + } + return `${namespace}.${key}` +} + +export const useI18n = ( + namespace?: string +): { + t: I18nGlobalTranslation +} => { + const normalFn = { + t: (key: string) => { + return getKey(namespace, key) + } + } + + if (!i18n) { + return normalFn + } + + const { t, ...methods } = i18n.global + + const tFn: I18nGlobalTranslation = (key: string, ...arg: any[]) => { + if (!key) return '' + if (!key.includes('.') && !namespace) return key + //@ts-ignore + return t(getKey(namespace, key), ...(arg as I18nTranslationRestParameters)) + } + return { + ...methods, + t: tFn + } +} + +export const t = (key: string) => key diff --git a/marketing-ui/admin-ui/src/hooks/web/useIcon.ts b/marketing-ui/admin-ui/src/hooks/web/useIcon.ts new file mode 100644 index 0000000..3500204 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useIcon.ts @@ -0,0 +1,8 @@ +import { h } from 'vue' +import type { VNode } from 'vue' +import { Icon } from '@/components/Icon' +import { IconTypes } from '@/types/icon' + +export const useIcon = (props: IconTypes): VNode => { + return h(Icon, props) +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useLocale.ts b/marketing-ui/admin-ui/src/hooks/web/useLocale.ts new file mode 100644 index 0000000..c65070e --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useLocale.ts @@ -0,0 +1,35 @@ +import { i18n } from '@/plugins/vueI18n' +import { useLocaleStoreWithOut } from '@/store/modules/locale' +import { setHtmlPageLang } from '@/plugins/vueI18n/helper' + +const setI18nLanguage = (locale: LocaleType) => { + const localeStore = useLocaleStoreWithOut() + + if (i18n.mode === 'legacy') { + i18n.global.locale = locale + } else { + ;(i18n.global.locale as any).value = locale + } + localeStore.setCurrentLocale({ + lang: locale + }) + setHtmlPageLang(locale) +} + +export const useLocale = () => { + // Switching the language will change the locale of useI18n + // And submit to configuration modification + const changeLocale = async (locale: LocaleType) => { + const globalI18n = i18n.global + + const langModule = await import(`../../locales/${locale}.ts`) + + globalI18n.setLocaleMessage(locale, langModule.default) + + setI18nLanguage(locale) + } + + return { + changeLocale + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useMessage.ts b/marketing-ui/admin-ui/src/hooks/web/useMessage.ts new file mode 100644 index 0000000..ac2b552 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useMessage.ts @@ -0,0 +1,95 @@ +import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' +import { useI18n } from './useI18n' +export const useMessage = () => { + const { t } = useI18n() + return { + // 消息提示 + info(content: string) { + ElMessage.info(content) + }, + // 错误消息 + error(content: string) { + ElMessage.error(content) + }, + // 成功消息 + success(content: string) { + ElMessage.success(content) + }, + // 警告消息 + warning(content: string) { + ElMessage.warning(content) + }, + // 弹出提示 + alert(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle')) + }, + // 错误提示 + alertError(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle'), { type: 'error' }) + }, + // 成功提示 + alertSuccess(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle'), { type: 'success' }) + }, + // 警告提示 + alertWarning(content: string) { + ElMessageBox.alert(content, t('common.confirmTitle'), { type: 'warning' }) + }, + // 通知提示 + notify(content: string) { + ElNotification.info(content) + }, + // 错误通知 + notifyError(content: string) { + ElNotification.error(content) + }, + // 成功通知 + notifySuccess(content: string) { + ElNotification.success(content) + }, + // 警告通知 + notifyWarning(content: string) { + ElNotification.warning(content) + }, + // 确认窗体 + confirm(content: string, tip?: string) { + return ElMessageBox.confirm(content, tip ? tip : t('common.confirmTitle'), { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }) + }, + // 删除窗体 + delConfirm(content?: string, tip?: string) { + return ElMessageBox.confirm( + content ? content : t('common.delMessage'), + tip ? tip : t('common.confirmTitle'), + { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + } + ) + }, + // 导出窗体 + exportConfirm(content?: string, tip?: string) { + return ElMessageBox.confirm( + content ? content : t('common.exportMessage'), + tip ? tip : t('common.confirmTitle'), + { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + } + ) + }, + // 提交内容 + prompt(content: string, tip: string) { + return ElMessageBox.prompt(content, tip, { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }) + } + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useNProgress.ts b/marketing-ui/admin-ui/src/hooks/web/useNProgress.ts new file mode 100644 index 0000000..6d8c0b9 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useNProgress.ts @@ -0,0 +1,33 @@ +import { useCssVar } from '@vueuse/core' +import type { NProgressOptions } from 'nprogress' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' + +const primaryColor = useCssVar('--el-color-primary', document.documentElement) + +export const useNProgress = () => { + NProgress.configure({ showSpinner: false } as NProgressOptions) + + const initColor = async () => { + await nextTick() + const bar = document.getElementById('nprogress')?.getElementsByClassName('bar')[0] as ElRef + if (bar) { + bar.style.background = unref(primaryColor.value) + } + } + + initColor() + + const start = () => { + NProgress.start() + } + + const done = () => { + NProgress.done() + } + + return { + start, + done + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useNetwork.ts b/marketing-ui/admin-ui/src/hooks/web/useNetwork.ts new file mode 100644 index 0000000..66fa446 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useNetwork.ts @@ -0,0 +1,21 @@ +import { ref, onBeforeUnmount } from 'vue' + +const useNetwork = () => { + const online = ref(true) + + const updateNetwork = () => { + online.value = navigator.onLine + } + + window.addEventListener('online', updateNetwork) + window.addEventListener('offline', updateNetwork) + + onBeforeUnmount(() => { + window.removeEventListener('online', updateNetwork) + window.removeEventListener('offline', updateNetwork) + }) + + return { online } +} + +export { useNetwork } diff --git a/marketing-ui/admin-ui/src/hooks/web/useNow.ts b/marketing-ui/admin-ui/src/hooks/web/useNow.ts new file mode 100644 index 0000000..09d3176 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useNow.ts @@ -0,0 +1,60 @@ +import { dateUtil } from '@/utils/dateUtil' +import { reactive, toRefs } from 'vue' +import { tryOnMounted, tryOnUnmounted } from '@vueuse/core' + +export const useNow = (immediate = true) => { + let timer: IntervalHandle + + const state = reactive({ + year: 0, + month: 0, + week: '', + day: 0, + hour: '', + minute: '', + second: 0, + meridiem: '' + }) + + const update = () => { + const now = dateUtil() + + const h = now.format('HH') + const m = now.format('mm') + const s = now.get('s') + + state.year = now.get('y') + state.month = now.get('M') + 1 + state.week = '星期' + ['日', '一', '二', '三', '四', '五', '六'][now.day()] + state.day = now.get('date') + state.hour = h + state.minute = m + state.second = s + + state.meridiem = now.format('A') + } + + function start() { + update() + clearInterval(timer) + timer = setInterval(() => update(), 1000) + } + + function stop() { + clearInterval(timer) + } + + tryOnMounted(() => { + immediate && start() + }) + + tryOnUnmounted(() => { + stop() + }) + + return { + ...toRefs(state), + start, + stop + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/usePageLoading.ts b/marketing-ui/admin-ui/src/hooks/web/usePageLoading.ts new file mode 100644 index 0000000..bb89457 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/usePageLoading.ts @@ -0,0 +1,18 @@ +import { useAppStoreWithOut } from '@/store/modules/app' + +const appStore = useAppStoreWithOut() + +export const usePageLoading = () => { + const loadStart = () => { + appStore.setPageLoading(true) + } + + const loadDone = () => { + appStore.setPageLoading(false) + } + + return { + loadStart, + loadDone + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useTable.ts b/marketing-ui/admin-ui/src/hooks/web/useTable.ts new file mode 100644 index 0000000..361dd67 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useTable.ts @@ -0,0 +1,223 @@ +import download from '@/utils/download' +import { Table, TableExpose } from '@/components/Table' +import { ElMessage, ElMessageBox, ElTable } from 'element-plus' +import { computed, nextTick, reactive, ref, unref, watch } from 'vue' +import type { TableProps } from '@/components/Table/src/types' + +import { TableSetPropsType } from '@/types/table' + +const { t } = useI18n() +interface ResponseType { + list: T[] + total?: number +} + +interface UseTableConfig { + getListApi: (option: any) => Promise + delListApi?: (option: any) => Promise + exportListApi?: (option: any) => Promise + // 返回数据格式配置 + response?: ResponseType + // 默认传递的参数 + defaultParams?: Recordable + props?: TableProps +} + +interface TableObject { + pageSize: number + currentPage: number + total: number + tableList: T[] + params: any + loading: boolean + exportLoading: boolean + currentRow: Nullable +} + +export const useTable = (config?: UseTableConfig) => { + const tableObject = reactive>({ + // 页数 + pageSize: 10, + // 当前页 + currentPage: 1, + // 总条数 + total: 10, + // 表格数据 + tableList: [], + // AxiosConfig 配置 + params: { + ...(config?.defaultParams || {}) + }, + // 加载中 + loading: true, + // 导出加载中 + exportLoading: false, + // 当前行的数据 + currentRow: null + }) + + const paramsObj = computed(() => { + return { + ...tableObject.params, + pageSize: tableObject.pageSize, + pageNo: tableObject.currentPage + } + }) + + watch( + () => tableObject.currentPage, + () => { + methods.getList() + } + ) + + watch( + () => tableObject.pageSize, + () => { + // 当前页不为1时,修改页数后会导致多次调用getList方法 + if (tableObject.currentPage === 1) { + methods.getList() + } else { + tableObject.currentPage = 1 + methods.getList() + } + } + ) + + // Table实例 + const tableRef = ref() + + // ElTable实例 + const elTableRef = ref>() + + const register = (ref: typeof Table & TableExpose, elRef: ComponentRef) => { + tableRef.value = ref + elTableRef.value = elRef + } + + const getTable = async () => { + await nextTick() + const table = unref(tableRef) + if (!table) { + console.error('The table is not registered. Please use the register method to register') + } + return table + } + + const delData = async (ids: string | number | string[] | number[]) => { + let idsLength = 1 + if (ids instanceof Array) { + idsLength = ids.length + await Promise.all( + ids.map(async (id: string | number) => { + await (config?.delListApi && config?.delListApi(id)) + }) + ) + } else { + await (config?.delListApi && config?.delListApi(ids)) + } + ElMessage.success(t('common.delSuccess')) + + // 计算出临界点 + tableObject.currentPage = + tableObject.total % tableObject.pageSize === idsLength || tableObject.pageSize === 1 + ? tableObject.currentPage > 1 + ? tableObject.currentPage - 1 + : tableObject.currentPage + : tableObject.currentPage + await methods.getList() + } + + const methods = { + getList: async () => { + tableObject.loading = true + const res = await config?.getListApi(unref(paramsObj)).finally(() => { + tableObject.loading = false + }) + if (res) { + tableObject.tableList = (res as unknown as ResponseType).list + tableObject.total = (res as unknown as ResponseType).total ?? 0 + } + }, + setProps: async (props: TableProps = {}) => { + const table = await getTable() + table?.setProps(props) + }, + setColumn: async (columnProps: TableSetPropsType[]) => { + const table = await getTable() + table?.setColumn(columnProps) + }, + getSelections: async () => { + const table = await getTable() + return (table?.selections || []) as T[] + }, + // 与Search组件结合 + setSearchParams: (data: Recordable) => { + tableObject.params = Object.assign(tableObject.params, { + pageSize: tableObject.pageSize, + pageNo: 1, + ...data + }) + // 页码不等于1时更新页码重新获取数据,页码等于1时重新获取数据 + if (tableObject.currentPage !== 1) { + tableObject.currentPage = 1 + } else { + methods.getList() + } + }, + // 删除数据 + delList: async ( + ids: string | number | string[] | number[], + multiple: boolean, + message = true + ) => { + const tableRef = await getTable() + if (multiple) { + if (!tableRef?.selections.length) { + ElMessage.warning(t('common.delNoData')) + return + } + } + if (message) { + ElMessageBox.confirm(t('common.delMessage'), t('common.confirmTitle'), { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }).then(async () => { + await delData(ids) + }) + } else { + await delData(ids) + } + }, + // 导出列表 + exportList: async (fileName: string) => { + tableObject.exportLoading = true + ElMessageBox.confirm(t('common.exportMessage'), t('common.confirmTitle'), { + confirmButtonText: t('common.ok'), + cancelButtonText: t('common.cancel'), + type: 'warning' + }) + .then(async () => { + const res = await config?.exportListApi?.(unref(paramsObj) as unknown as T) + if (res) { + download.excel(res as unknown as Blob, fileName) + } + }) + .finally(() => { + tableObject.exportLoading = false + }) + } + } + + config?.props && methods.setProps(config.props) + + return { + register, + elTableRef, + tableObject, + methods, + // add by 芋艿:返回 tableMethods 属性,和 tableObject 更统一 + tableMethods: methods + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useTagsView.ts b/marketing-ui/admin-ui/src/hooks/web/useTagsView.ts new file mode 100644 index 0000000..31eadb0 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useTagsView.ts @@ -0,0 +1,63 @@ +import { useTagsViewStoreWithOut } from '@/store/modules/tagsView' +import { RouteLocationNormalizedLoaded, useRouter } from 'vue-router' +import { computed, nextTick, unref } from 'vue' + +export const useTagsView = () => { + const tagsViewStore = useTagsViewStoreWithOut() + + const { replace, currentRoute } = useRouter() + + const selectedTag = computed(() => tagsViewStore.getSelectedTag) + + const closeAll = (callback?: Fn) => { + tagsViewStore.delAllViews() + callback?.() + } + + const closeLeft = (callback?: Fn) => { + tagsViewStore.delLeftViews(unref(selectedTag) as RouteLocationNormalizedLoaded) + callback?.() + } + + const closeRight = (callback?: Fn) => { + tagsViewStore.delRightViews(unref(selectedTag) as RouteLocationNormalizedLoaded) + callback?.() + } + + const closeOther = (callback?: Fn) => { + tagsViewStore.delOthersViews(unref(selectedTag) as RouteLocationNormalizedLoaded) + callback?.() + } + + const closeCurrent = (view?: RouteLocationNormalizedLoaded, callback?: Fn) => { + if (view?.meta?.affix) return + tagsViewStore.delView(view || unref(currentRoute)) + + callback?.() + } + + const refreshPage = async (view?: RouteLocationNormalizedLoaded, callback?: Fn) => { + tagsViewStore.delCachedView() + const { path, query } = view || unref(currentRoute) + await nextTick() + replace({ + path: '/redirect' + path, + query: query + }) + callback?.() + } + + const setTitle = (title: string, path?: string) => { + tagsViewStore.setTitle(title, path) + } + + return { + closeAll, + closeLeft, + closeRight, + closeOther, + closeCurrent, + refreshPage, + setTitle + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useTimeAgo.ts b/marketing-ui/admin-ui/src/hooks/web/useTimeAgo.ts new file mode 100644 index 0000000..a6da281 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useTimeAgo.ts @@ -0,0 +1,49 @@ +import { useTimeAgo as useTimeAgoCore, UseTimeAgoMessages } from '@vueuse/core' +import { useLocaleStoreWithOut } from '@/store/modules/locale' + +const TIME_AGO_MESSAGE_MAP: { + 'zh-CN': UseTimeAgoMessages + en: UseTimeAgoMessages +} = { + // @ts-ignore + 'zh-CN': { + justNow: '刚刚', + past: (n) => (n.match(/\d/) ? `${n}前` : n), + future: (n) => (n.match(/\d/) ? `${n}后` : n), + month: (n, past) => (n === 1 ? (past ? '上个月' : '下个月') : `${n} 个月`), + year: (n, past) => (n === 1 ? (past ? '去年' : '明年') : `${n} 年`), + day: (n, past) => (n === 1 ? (past ? '昨天' : '明天') : `${n} 天`), + week: (n, past) => (n === 1 ? (past ? '上周' : '下周') : `${n} 周`), + hour: (n) => `${n} 小时`, + minute: (n) => `${n} 分钟`, + second: (n) => `${n} 秒` + }, + // @ts-ignore + en: { + justNow: 'just now', + past: (n) => (n.match(/\d/) ? `${n} ago` : n), + future: (n) => (n.match(/\d/) ? `in ${n}` : n), + month: (n, past) => + n === 1 ? (past ? 'last month' : 'next month') : `${n} month${n > 1 ? 's' : ''}`, + year: (n, past) => + n === 1 ? (past ? 'last year' : 'next year') : `${n} year${n > 1 ? 's' : ''}`, + day: (n, past) => (n === 1 ? (past ? 'yesterday' : 'tomorrow') : `${n} day${n > 1 ? 's' : ''}`), + week: (n, past) => + n === 1 ? (past ? 'last week' : 'next week') : `${n} week${n > 1 ? 's' : ''}`, + hour: (n) => `${n} hour${n > 1 ? 's' : ''}`, + minute: (n) => `${n} minute${n > 1 ? 's' : ''}`, + second: (n) => `${n} second${n > 1 ? 's' : ''}` + } +} + +export const useTimeAgo = (time: Date | number | string) => { + const localeStore = useLocaleStoreWithOut() + + const currentLocale = computed(() => localeStore.getCurrentLocale) + + const timeAgo = useTimeAgoCore(time, { + messages: TIME_AGO_MESSAGE_MAP[unref(currentLocale).lang] + }) + + return timeAgo +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useTitle.ts b/marketing-ui/admin-ui/src/hooks/web/useTitle.ts new file mode 100644 index 0000000..020a9b7 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useTitle.ts @@ -0,0 +1,24 @@ +import { watch, ref } from 'vue' +import { isString } from '@/utils/is' +import { useAppStoreWithOut } from '@/store/modules/app' + +const appStore = useAppStoreWithOut() + +export const useTitle = (newTitle?: string) => { + const { t } = useI18n() + const title = ref( + newTitle ? `${appStore.getTitle} - ${t(newTitle as string)}` : appStore.getTitle + ) + + watch( + title, + (n, o) => { + if (isString(n) && n !== o && document) { + document.title = n + } + }, + { immediate: true } + ) + + return title +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useValidator.ts b/marketing-ui/admin-ui/src/hooks/web/useValidator.ts new file mode 100644 index 0000000..151e35b --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useValidator.ts @@ -0,0 +1,60 @@ +import { useI18n } from '@/hooks/web/useI18n' +import { FormItemRule } from 'element-plus' + +const { t } = useI18n() + +interface LengthRange { + min: number + max: number + message?: string +} + +export const useValidator = () => { + const required = (message?: string): FormItemRule => { + return { + required: true, + message: message || t('common.required') + } + } + + const lengthRange = (options: LengthRange): FormItemRule => { + const { min, max, message } = options + + return { + min, + max, + message: message || t('common.lengthRange', { min, max }) + } + } + + const notSpace = (message?: string): FormItemRule => { + return { + validator: (_, val, callback) => { + if (val?.indexOf(' ') !== -1) { + callback(new Error(message || t('common.notSpace'))) + } else { + callback() + } + } + } + } + + const notSpecialCharacters = (message?: string): FormItemRule => { + return { + validator: (_, val, callback) => { + if (/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/gi.test(val)) { + callback(new Error(message || t('common.notSpecialCharacters'))) + } else { + callback() + } + } + } + } + + return { + required, + lengthRange, + notSpace, + notSpecialCharacters + } +} diff --git a/marketing-ui/admin-ui/src/hooks/web/useWatermark.ts b/marketing-ui/admin-ui/src/hooks/web/useWatermark.ts new file mode 100644 index 0000000..4a31359 --- /dev/null +++ b/marketing-ui/admin-ui/src/hooks/web/useWatermark.ts @@ -0,0 +1,55 @@ +const domSymbol = Symbol('watermark-dom') + +export function useWatermark(appendEl: HTMLElement | null = document.body) { + let func: Fn = () => {} + const id = domSymbol.toString() + const clear = () => { + const domId = document.getElementById(id) + if (domId) { + const el = appendEl + el && el.removeChild(domId) + } + window.removeEventListener('resize', func) + } + const createWatermark = (str: string) => { + clear() + + const can = document.createElement('canvas') + can.width = 300 + can.height = 240 + + const cans = can.getContext('2d') + if (cans) { + cans.rotate((-20 * Math.PI) / 120) + cans.font = '15px Vedana' + cans.fillStyle = 'rgba(0, 0, 0, 0.15)' + cans.textAlign = 'left' + cans.textBaseline = 'middle' + cans.fillText(str, can.width / 20, can.height) + } + + const div = document.createElement('div') + div.id = id + div.style.pointerEvents = 'none' + div.style.top = '0px' + div.style.left = '0px' + div.style.position = 'absolute' + div.style.zIndex = '100000000' + div.style.width = document.documentElement.clientWidth + 'px' + div.style.height = document.documentElement.clientHeight + 'px' + div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat' + const el = appendEl + el && el.appendChild(div) + return id + } + + function setWatermark(str: string) { + createWatermark(str) + func = () => { + createWatermark(str) + } + window.addEventListener('resize', func) + } + + return { setWatermark, clear } +} diff --git a/marketing-ui/admin-ui/src/layout/Layout.vue b/marketing-ui/admin-ui/src/layout/Layout.vue new file mode 100644 index 0000000..d15025c --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/Layout.vue @@ -0,0 +1,75 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/AppView.vue b/marketing-ui/admin-ui/src/layout/components/AppView.vue new file mode 100644 index 0000000..df720a1 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/AppView.vue @@ -0,0 +1,55 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/Breadcrumb/index.ts b/marketing-ui/admin-ui/src/layout/components/Breadcrumb/index.ts new file mode 100644 index 0000000..93ffe70 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Breadcrumb/index.ts @@ -0,0 +1,3 @@ +import Breadcrumb from './src/Breadcrumb.vue' + +export { Breadcrumb } diff --git a/marketing-ui/admin-ui/src/layout/components/Breadcrumb/src/Breadcrumb.vue b/marketing-ui/admin-ui/src/layout/components/Breadcrumb/src/Breadcrumb.vue new file mode 100644 index 0000000..80770a8 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Breadcrumb/src/Breadcrumb.vue @@ -0,0 +1,130 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/Breadcrumb/src/helper.ts b/marketing-ui/admin-ui/src/layout/components/Breadcrumb/src/helper.ts new file mode 100644 index 0000000..fb3ec19 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Breadcrumb/src/helper.ts @@ -0,0 +1,31 @@ +import { pathResolve } from '@/utils/routerHelper' +import type { RouteMeta } from 'vue-router' + +export const filterBreadcrumb = ( + routes: AppRouteRecordRaw[], + parentPath = '' +): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + + for (const route of routes) { + const meta = route?.meta as RouteMeta + if (meta.hidden && !meta.canTo) { + continue + } + + const data: AppRouteRecordRaw = + !meta.alwaysShow && route.children?.length === 1 + ? { ...route.children[0], path: pathResolve(route.path, route.children[0].path) } + : { ...route } + + data.path = pathResolve(parentPath, data.path) + + if (data.children) { + data.children = filterBreadcrumb(data.children, data.path) + } + if (data) { + res.push(data) + } + } + return res +} diff --git a/marketing-ui/admin-ui/src/layout/components/Collapse/index.ts b/marketing-ui/admin-ui/src/layout/components/Collapse/index.ts new file mode 100644 index 0000000..73f65a3 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Collapse/index.ts @@ -0,0 +1,3 @@ +import Collapse from './src/Collapse.vue' + +export { Collapse } diff --git a/marketing-ui/admin-ui/src/layout/components/Collapse/src/Collapse.vue b/marketing-ui/admin-ui/src/layout/components/Collapse/src/Collapse.vue new file mode 100644 index 0000000..a8fc7ee --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Collapse/src/Collapse.vue @@ -0,0 +1,35 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/ContextMenu/index.ts b/marketing-ui/admin-ui/src/layout/components/ContextMenu/index.ts new file mode 100644 index 0000000..2a7c1f0 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/ContextMenu/index.ts @@ -0,0 +1,10 @@ +import ContextMenu from './src/ContextMenu.vue' +import { ElDropdown } from 'element-plus' +import type { RouteLocationNormalizedLoaded } from 'vue-router' + +export interface ContextMenuExpose { + elDropdownMenuRef: ComponentRef + tagItem: RouteLocationNormalizedLoaded +} + +export { ContextMenu } diff --git a/marketing-ui/admin-ui/src/layout/components/ContextMenu/src/ContextMenu.vue b/marketing-ui/admin-ui/src/layout/components/ContextMenu/src/ContextMenu.vue new file mode 100644 index 0000000..90eea4c --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/ContextMenu/src/ContextMenu.vue @@ -0,0 +1,76 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/Footer/index.ts b/marketing-ui/admin-ui/src/layout/components/Footer/index.ts new file mode 100644 index 0000000..bd052e0 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Footer/index.ts @@ -0,0 +1,3 @@ +import Footer from './src/Footer.vue' + +export { Footer } diff --git a/marketing-ui/admin-ui/src/layout/components/Footer/src/Footer.vue b/marketing-ui/admin-ui/src/layout/components/Footer/src/Footer.vue new file mode 100644 index 0000000..98ce7e5 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Footer/src/Footer.vue @@ -0,0 +1,27 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/LocaleDropdown/index.ts b/marketing-ui/admin-ui/src/layout/components/LocaleDropdown/index.ts new file mode 100644 index 0000000..d02e640 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/LocaleDropdown/index.ts @@ -0,0 +1,3 @@ +import LocaleDropdown from './src/LocaleDropdown.vue' + +export { LocaleDropdown } diff --git a/marketing-ui/admin-ui/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue b/marketing-ui/admin-ui/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue new file mode 100644 index 0000000..95132db --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/LocaleDropdown/src/LocaleDropdown.vue @@ -0,0 +1,52 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/Logo/index.ts b/marketing-ui/admin-ui/src/layout/components/Logo/index.ts new file mode 100644 index 0000000..1c4224c --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Logo/index.ts @@ -0,0 +1,3 @@ +import Logo from './src/Logo.vue' + +export { Logo } diff --git a/marketing-ui/admin-ui/src/layout/components/Logo/src/Logo.vue b/marketing-ui/admin-ui/src/layout/components/Logo/src/Logo.vue new file mode 100644 index 0000000..d241130 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Logo/src/Logo.vue @@ -0,0 +1,88 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/Menu/index.ts b/marketing-ui/admin-ui/src/layout/components/Menu/index.ts new file mode 100644 index 0000000..a6ec696 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Menu/index.ts @@ -0,0 +1,3 @@ +import Menu from './src/Menu.vue' + +export { Menu } diff --git a/marketing-ui/admin-ui/src/layout/components/Menu/src/Menu.vue b/marketing-ui/admin-ui/src/layout/components/Menu/src/Menu.vue new file mode 100644 index 0000000..94a1da4 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Menu/src/Menu.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/layout/components/Menu/src/components/useRenderMenuItem.tsx b/marketing-ui/admin-ui/src/layout/components/Menu/src/components/useRenderMenuItem.tsx new file mode 100644 index 0000000..301313f --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Menu/src/components/useRenderMenuItem.tsx @@ -0,0 +1,50 @@ +import { ElSubMenu, ElMenuItem } from 'element-plus' +import { hasOneShowingChild } from '../helper' +import { isUrl } from '@/utils/is' +import { useRenderMenuTitle } from './useRenderMenuTitle' +import { pathResolve } from '@/utils/routerHelper' + +const { renderMenuTitle } = useRenderMenuTitle() + +export const useRenderMenuItem = () => + // allRouters: AppRouteRecordRaw[] = [], + { + const renderMenuItem = (routers: AppRouteRecordRaw[], parentPath = '/') => { + return routers + .filter((v) => !v.meta?.hidden) + .map((v) => { + const meta = v.meta ?? {} + const { oneShowingChild, onlyOneChild } = hasOneShowingChild(v.children, v) + const fullPath = isUrl(v.path) ? v.path : pathResolve(parentPath, v.path) // getAllParentPath(allRouters, v.path).join('/') + + if ( + oneShowingChild && + (!onlyOneChild?.children || onlyOneChild?.noShowingChildren) && + !meta?.alwaysShow + ) { + return ( + + {{ + default: () => renderMenuTitle(onlyOneChild ? onlyOneChild?.meta : meta) + }} + + ) + } else { + return ( + + {{ + title: () => renderMenuTitle(meta), + default: () => renderMenuItem(v.children!, fullPath) + }} + + ) + } + }) + } + + return { + renderMenuItem + } + } diff --git a/marketing-ui/admin-ui/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx b/marketing-ui/admin-ui/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx new file mode 100644 index 0000000..8941d9d --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Menu/src/components/useRenderMenuTitle.tsx @@ -0,0 +1,27 @@ +import type { RouteMeta } from 'vue-router' +import { Icon } from '@/components/Icon' +import { useI18n } from '@/hooks/web/useI18n' + +export const useRenderMenuTitle = () => { + const renderMenuTitle = (meta: RouteMeta) => { + const { t } = useI18n() + const { title = 'Please set title', icon } = meta + + return icon ? ( + <> + + + {t(title as string)} + + + ) : ( + + {t(title as string)} + + ) + } + + return { + renderMenuTitle + } +} diff --git a/marketing-ui/admin-ui/src/layout/components/Menu/src/helper.ts b/marketing-ui/admin-ui/src/layout/components/Menu/src/helper.ts new file mode 100644 index 0000000..c26f5f4 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Menu/src/helper.ts @@ -0,0 +1,54 @@ +import type { RouteMeta } from 'vue-router' +import { findPath } from '@/utils/tree' + +type OnlyOneChildType = AppRouteRecordRaw & { noShowingChildren?: boolean } + +interface HasOneShowingChild { + oneShowingChild?: boolean + onlyOneChild?: OnlyOneChildType +} + +export const getAllParentPath = (treeData: T[], path: string) => { + const menuList = findPath(treeData, (n) => n.path === path) as AppRouteRecordRaw[] + return (menuList || []).map((item) => item.path) +} + +export const hasOneShowingChild = ( + children: AppRouteRecordRaw[] = [], + parent: AppRouteRecordRaw +): HasOneShowingChild => { + const onlyOneChild = ref() + + const showingChildren = children.filter((v) => { + const meta = (v.meta ?? {}) as RouteMeta + if (meta.hidden) { + return false + } else { + // Temp set(will be used if only has one showing child) + onlyOneChild.value = v + return true + } + }) + + // When there is only one child router, the child router is displayed by default + if (showingChildren.length === 1) { + return { + oneShowingChild: true, + onlyOneChild: unref(onlyOneChild) + } + } + + // Show parent if there are no child router to display + if (!showingChildren.length) { + onlyOneChild.value = { ...parent, path: '', noShowingChildren: true } + return { + oneShowingChild: true, + onlyOneChild: unref(onlyOneChild) + } + } + + return { + oneShowingChild: false, + onlyOneChild: unref(onlyOneChild) + } +} diff --git a/marketing-ui/admin-ui/src/layout/components/Screenfull/index.ts b/marketing-ui/admin-ui/src/layout/components/Screenfull/index.ts new file mode 100644 index 0000000..faec2d8 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Screenfull/index.ts @@ -0,0 +1,3 @@ +import Screenfull from './src/Screenfull.vue' + +export { Screenfull } diff --git a/marketing-ui/admin-ui/src/layout/components/Screenfull/src/Screenfull.vue b/marketing-ui/admin-ui/src/layout/components/Screenfull/src/Screenfull.vue new file mode 100644 index 0000000..4c045f2 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Screenfull/src/Screenfull.vue @@ -0,0 +1,32 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/Setting/index.ts b/marketing-ui/admin-ui/src/layout/components/Setting/index.ts new file mode 100644 index 0000000..b64c9ad --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Setting/index.ts @@ -0,0 +1,3 @@ +import Setting from './src/Setting.vue' + +export { Setting } diff --git a/marketing-ui/admin-ui/src/layout/components/Setting/src/Setting.vue b/marketing-ui/admin-ui/src/layout/components/Setting/src/Setting.vue new file mode 100644 index 0000000..2973674 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Setting/src/Setting.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/layout/components/Setting/src/components/ColorRadioPicker.vue b/marketing-ui/admin-ui/src/layout/components/Setting/src/components/ColorRadioPicker.vue new file mode 100644 index 0000000..fcc5e75 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Setting/src/components/ColorRadioPicker.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/layout/components/Setting/src/components/InterfaceDisplay.vue b/marketing-ui/admin-ui/src/layout/components/Setting/src/components/InterfaceDisplay.vue new file mode 100644 index 0000000..3ba5c6b --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Setting/src/components/InterfaceDisplay.vue @@ -0,0 +1,236 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/Setting/src/components/LayoutRadioPicker.vue b/marketing-ui/admin-ui/src/layout/components/Setting/src/components/LayoutRadioPicker.vue new file mode 100644 index 0000000..801686c --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/Setting/src/components/LayoutRadioPicker.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/layout/components/SizeDropdown/index.ts b/marketing-ui/admin-ui/src/layout/components/SizeDropdown/index.ts new file mode 100644 index 0000000..516488d --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/SizeDropdown/index.ts @@ -0,0 +1,3 @@ +import SizeDropdown from './src/SizeDropdown.vue' + +export { SizeDropdown } diff --git a/marketing-ui/admin-ui/src/layout/components/SizeDropdown/src/SizeDropdown.vue b/marketing-ui/admin-ui/src/layout/components/SizeDropdown/src/SizeDropdown.vue new file mode 100644 index 0000000..3e15224 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/SizeDropdown/src/SizeDropdown.vue @@ -0,0 +1,40 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/TabMenu/index.ts b/marketing-ui/admin-ui/src/layout/components/TabMenu/index.ts new file mode 100644 index 0000000..b5fd71c --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/TabMenu/index.ts @@ -0,0 +1,3 @@ +import TabMenu from './src/TabMenu.vue' + +export { TabMenu } diff --git a/marketing-ui/admin-ui/src/layout/components/TabMenu/src/TabMenu.vue b/marketing-ui/admin-ui/src/layout/components/TabMenu/src/TabMenu.vue new file mode 100644 index 0000000..efad6a6 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/TabMenu/src/TabMenu.vue @@ -0,0 +1,240 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/TabMenu/src/helper.ts b/marketing-ui/admin-ui/src/layout/components/TabMenu/src/helper.ts new file mode 100644 index 0000000..cce3932 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/TabMenu/src/helper.ts @@ -0,0 +1,51 @@ +import { getAllParentPath } from '@/layout/components/Menu/src/helper' +import type { RouteMeta } from 'vue-router' +import { isUrl } from '@/utils/is' +import { cloneDeep } from 'lodash-es' + +export type TabMapTypes = { + [key: string]: string[] +} + +export const tabPathMap = reactive({}) + +export const initTabMap = (routes: AppRouteRecordRaw[]) => { + for (const v of routes) { + const meta = (v.meta ?? {}) as RouteMeta + if (!meta?.hidden) { + tabPathMap[v.path] = [] + } + } +} + +export const filterMenusPath = ( + routes: AppRouteRecordRaw[], + allRoutes: AppRouteRecordRaw[] +): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + for (const v of routes) { + let data: Nullable = null + const meta = (v.meta ?? {}) as RouteMeta + if (!meta.hidden || meta.canTo) { + const allParentPath = getAllParentPath(allRoutes, v.path) + + const fullPath = isUrl(v.path) ? v.path : allParentPath.join('/') + + data = cloneDeep(v) + data.path = fullPath + if (v.children && data) { + data.children = filterMenusPath(v.children, allRoutes) + } + + if (data) { + res.push(data) + } + + if (allParentPath.length && Reflect.has(tabPathMap, allParentPath[0])) { + tabPathMap[allParentPath[0]].push(fullPath) + } + } + } + + return res +} diff --git a/marketing-ui/admin-ui/src/layout/components/TagsView/index.ts b/marketing-ui/admin-ui/src/layout/components/TagsView/index.ts new file mode 100644 index 0000000..30e604a --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/TagsView/index.ts @@ -0,0 +1,3 @@ +import TagsView from './src/TagsView.vue' + +export { TagsView } diff --git a/marketing-ui/admin-ui/src/layout/components/TagsView/src/TagsView.vue b/marketing-ui/admin-ui/src/layout/components/TagsView/src/TagsView.vue new file mode 100644 index 0000000..af492ba --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/TagsView/src/TagsView.vue @@ -0,0 +1,651 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/layout/components/TagsView/src/helper.ts b/marketing-ui/admin-ui/src/layout/components/TagsView/src/helper.ts new file mode 100644 index 0000000..22f6a50 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/TagsView/src/helper.ts @@ -0,0 +1,21 @@ +import type { RouteMeta, RouteLocationNormalizedLoaded } from 'vue-router' +import { pathResolve } from '@/utils/routerHelper' + +export const filterAffixTags = (routes: AppRouteRecordRaw[], parentPath = '') => { + let tags: RouteLocationNormalizedLoaded[] = [] + routes.forEach((route) => { + const meta = route.meta as RouteMeta + const tagPath = pathResolve(parentPath, route.path) + if (meta?.affix) { + tags.push({ ...route, path: tagPath, fullPath: tagPath } as RouteLocationNormalizedLoaded) + } + if (route.children) { + const tempTags: RouteLocationNormalizedLoaded[] = filterAffixTags(route.children, tagPath) + if (tempTags.length >= 1) { + tags = [...tags, ...tempTags] + } + } + }) + + return tags +} diff --git a/marketing-ui/admin-ui/src/layout/components/ThemeSwitch/index.ts b/marketing-ui/admin-ui/src/layout/components/ThemeSwitch/index.ts new file mode 100644 index 0000000..823a276 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/ThemeSwitch/index.ts @@ -0,0 +1,3 @@ +import ThemeSwitch from './src/ThemeSwitch.vue' + +export { ThemeSwitch } diff --git a/marketing-ui/admin-ui/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue b/marketing-ui/admin-ui/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue new file mode 100644 index 0000000..39a8cfd --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/ThemeSwitch/src/ThemeSwitch.vue @@ -0,0 +1,46 @@ + + + + diff --git a/marketing-ui/admin-ui/src/layout/components/ToolHeader.vue b/marketing-ui/admin-ui/src/layout/components/ToolHeader.vue new file mode 100644 index 0000000..d742503 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/ToolHeader.vue @@ -0,0 +1,88 @@ + + + diff --git a/marketing-ui/admin-ui/src/layout/components/UserInfo/index.ts b/marketing-ui/admin-ui/src/layout/components/UserInfo/index.ts new file mode 100644 index 0000000..c3a34ab --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/UserInfo/index.ts @@ -0,0 +1,3 @@ +import UserInfo from './src/UserInfo.vue' + +export { UserInfo } diff --git a/marketing-ui/admin-ui/src/layout/components/UserInfo/src/UserInfo.vue b/marketing-ui/admin-ui/src/layout/components/UserInfo/src/UserInfo.vue new file mode 100644 index 0000000..64abaea --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/UserInfo/src/UserInfo.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/layout/components/UserInfo/src/components/LockDialog.vue b/marketing-ui/admin-ui/src/layout/components/UserInfo/src/components/LockDialog.vue new file mode 100644 index 0000000..7257be1 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/UserInfo/src/components/LockDialog.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/layout/components/UserInfo/src/components/LockPage.vue b/marketing-ui/admin-ui/src/layout/components/UserInfo/src/components/LockPage.vue new file mode 100644 index 0000000..27d0a43 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/UserInfo/src/components/LockPage.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/layout/components/useRenderLayout.tsx b/marketing-ui/admin-ui/src/layout/components/useRenderLayout.tsx new file mode 100644 index 0000000..a631aa0 --- /dev/null +++ b/marketing-ui/admin-ui/src/layout/components/useRenderLayout.tsx @@ -0,0 +1,294 @@ +import { computed } from 'vue' +import { useAppStore } from '@/store/modules/app' +import { Menu } from '@/layout/components/Menu' +import { TabMenu } from '@/layout/components/TabMenu' +import { TagsView } from '@/layout/components/TagsView' +import { Logo } from '@/layout/components/Logo' +import AppView from './AppView.vue' +import ToolHeader from './ToolHeader.vue' +import { ElScrollbar } from 'element-plus' +import { useDesign } from '@/hooks/web/useDesign' + +const { getPrefixCls } = useDesign() + +const prefixCls = getPrefixCls('layout') + +const appStore = useAppStore() + +const pageLoading = computed(() => appStore.getPageLoading) + +// 标签页 +const tagsView = computed(() => appStore.getTagsView) + +// 菜单折叠 +const collapse = computed(() => appStore.getCollapse) + +// logo +const logo = computed(() => appStore.logo) + +// 固定头部 +const fixedHeader = computed(() => appStore.getFixedHeader) + +// 是否是移动端 +const mobile = computed(() => appStore.getMobile) + +// 固定菜单 +const fixedMenu = computed(() => appStore.getFixedMenu) + +export const useRenderLayout = () => { + const renderClassic = () => { + return ( + <> +
    + {logo.value ? ( + + ) : undefined} + +
    +
    + +
    + + + {tagsView.value ? ( + + ) : undefined} +
    + + +
    +
    + + ) + } + + const renderTopLeft = () => { + return ( + <> +
    + {logo.value ? : undefined} + + +
    +
    + +
    + + {tagsView.value ? ( + + ) : undefined} + + + +
    +
    + + ) + } + + const renderTop = () => { + return ( + <> +
    + {logo.value ? : undefined} + + +
    +
    + + {tagsView.value ? ( + + ) : undefined} + + + +
    + + ) + } + + const renderCutMenu = () => { + return ( + <> +
    + {logo.value ? : undefined} + + +
    +
    + +
    + + {tagsView.value ? ( + + ) : undefined} + + + +
    +
    + + ) + } + + return { + renderClassic, + renderTopLeft, + renderTop, + renderCutMenu + } +} diff --git a/marketing-ui/admin-ui/src/locales/en.ts b/marketing-ui/admin-ui/src/locales/en.ts new file mode 100644 index 0000000..505cfd8 --- /dev/null +++ b/marketing-ui/admin-ui/src/locales/en.ts @@ -0,0 +1,460 @@ +export default { + common: { + inputText: 'Please input', + selectText: 'Please select', + startTimeText: 'Start time', + endTimeText: 'End time', + login: 'Login', + required: 'This is required', + loginOut: 'Login out', + document: 'Document', + profile: 'User Center', + reminder: 'Reminder', + loginOutMessage: 'Exit the system?', + back: 'Back', + ok: 'OK', + save: 'Save', + cancel: 'Cancel', + close: 'Close', + reload: 'Reload current', + success: 'Success', + closeTab: 'Close current', + closeTheLeftTab: 'Close left', + closeTheRightTab: 'Close right', + closeOther: 'Close other', + closeAll: 'Close all', + prevLabel: 'Prev', + nextLabel: 'Next', + skipLabel: 'Jump', + doneLabel: 'End', + menu: 'Menu', + menuDes: 'Menu bar rendered in routed structure', + collapse: 'Collapse', + collapseDes: 'Expand and zoom the menu bar', + tagsView: 'Tags view', + tagsViewDes: 'Used to record routing history', + tool: 'Tool', + toolDes: 'Used to set up custom systems', + query: 'Query', + reset: 'Reset', + shrink: 'Put away', + expand: 'Expand', + confirmTitle: 'System Hint', + exportMessage: 'Whether to confirm export data item?', + importMessage: 'Whether to confirm import data item?', + createSuccess: 'Create Success', + updateSuccess: 'Update Success', + delMessage: 'Delete the selected data?', + delDataMessage: 'Delete the data?', + delNoData: 'Please select the data to delete', + delSuccess: 'Deleted successfully', + index: 'Index', + status: 'Status', + createTime: 'Create Time', + updateTime: 'Update Time', + copy: 'Copy', + copySuccess: 'Copy Success', + copyError: 'Copy Error' + }, + lock: { + lockScreen: 'Lock screen', + lock: 'Lock', + lockPassword: 'Lock screen password', + unlock: 'Click to unlock', + backToLogin: 'Back to login', + entrySystem: 'Entry the system', + placeholder: 'Please enter the lock screen password', + message: 'Lock screen password error' + }, + error: { + noPermission: `Sorry, you don't have permission to access this page.`, + pageError: 'Sorry, the page you visited does not exist.', + networkError: 'Sorry, the server reported an error.', + returnToHome: 'Return to home' + }, + permission: { + hasPermission: `Please set the operation permission label value`, + hasRole: `Please set the role permission tag value` + }, + setting: { + projectSetting: 'Project setting', + theme: 'Theme', + layout: 'Layout', + systemTheme: 'System theme', + menuTheme: 'Menu theme', + interfaceDisplay: 'Interface display', + breadcrumb: 'Breadcrumb', + breadcrumbIcon: 'Breadcrumb icon', + collapseMenu: 'Collapse menu', + hamburgerIcon: 'Hamburger icon', + screenfullIcon: 'Screenfull icon', + sizeIcon: 'Size icon', + localeIcon: 'Locale icon', + messageIcon: 'Message icon', + tagsView: 'Tags view', + logo: 'Logo', + greyMode: 'Grey mode', + fixedHeader: 'Fixed header', + headerTheme: 'Header theme', + cutMenu: 'Cut Menu', + copy: 'Copy', + clearAndReset: 'Clear cache and reset', + copySuccess: 'Copy success', + copyFailed: 'Copy failed', + footer: 'Footer', + uniqueOpened: 'Unique opened', + tagsViewIcon: 'Tags view icon', + reExperienced: 'Please exit the login experience again', + fixedMenu: 'Fixed menu' + }, + size: { + default: 'Default', + large: 'Large', + small: 'Small' + }, + login: { + welcome: 'Welcome to the system', + message: 'Backstage management system', + tenantname: 'TenantName', + username: 'Username', + password: 'Password', + code: 'verification code', + login: 'Sign in', + relogin: 'Sign in again', + otherLogin: 'Sign in with', + register: 'Register', + checkPassword: 'Confirm password', + remember: 'Remember me', + hasUser: 'Existing account? Go to login', + forgetPassword: 'Forget password?', + tenantNamePlaceholder: 'Please Enter Tenant Name', + usernamePlaceholder: 'Please Enter Username', + passwordPlaceholder: 'Please Enter Password', + codePlaceholder: 'Please Enter Verification Code', + mobileTitle: 'Mobile sign in', + mobileNumber: 'Mobile Number', + mobileNumberPlaceholder: 'Plaease Enter Mobile Number', + backLogin: 'back', + getSmsCode: 'Get SMS Code', + btnMobile: 'Mobile sign in', + btnQRCode: 'QR code sign in', + qrcode: 'Scan the QR code to log in', + btnRegister: 'Sign up', + SmsSendMsg: 'code has been sent', + resetPassword: "Reset Password", + resetPasswordSuccess: "Reset Password Success", + invalidTenantName:"Invalid Tenant Name" + }, + captcha: { + verification: 'Please complete security verification', + slide: 'Swipe right to complete verification', + point: 'Please click', + success: 'Verification succeeded', + fail: 'verification failed' + }, + router: { + login: 'Login', + home: 'Home', + analysis: 'Analysis', + workplace: 'Workplace' + }, + analysis: { + newUser: 'New user', + unreadInformation: 'Unread information', + transactionAmount: 'Transaction amount', + totalShopping: 'Total Shopping', + monthlySales: 'Monthly sales', + userAccessSource: 'User access source', + january: 'January', + february: 'February', + march: 'March', + april: 'April', + may: 'May', + june: 'June', + july: 'July', + august: 'August', + september: 'September', + october: 'October', + november: 'November', + december: 'December', + estimate: 'Estimate', + actual: 'Actual', + directAccess: 'Airect access', + mailMarketing: 'Mail marketing', + allianceAdvertising: 'Alliance advertising', + videoAdvertising: 'Video advertising', + searchEngines: 'Search engines', + weeklyUserActivity: 'Weekly user activity', + activeQuantity: 'Active quantity', + monday: 'Monday', + tuesday: 'Tuesday', + wednesday: 'Wednesday', + thursday: 'Thursday', + friday: 'Friday', + saturday: 'Saturday', + sunday: 'Sunday' + }, + workplace: { + welcome: 'Hello', + happyDay: 'Wish you happy every day!', + toady: `It's sunny today`, + notice: 'Announcement', + project: 'Project', + access: 'Project access', + toDo: 'To do', + introduction: 'A serious introduction', + shortcutOperation: 'Quick entry', + operation: 'Operation', + index: 'Index', + personal: 'Personal', + team: 'Team', + quote: 'Quote', + contribution: 'Contribution', + hot: 'Hot', + yield: 'Yield', + dynamic: 'Dynamic', + push: 'push', + follow: 'Follow' + }, + form: { + input: 'Input', + inputNumber: 'InputNumber', + default: 'Default', + icon: 'Icon', + mixed: 'Mixed', + textarea: 'Textarea', + slot: 'Slot', + position: 'Position', + autocomplete: 'Autocomplete', + select: 'Select', + selectGroup: 'Select Group', + selectV2: 'SelectV2', + cascader: 'Cascader', + switch: 'Switch', + rate: 'Rate', + colorPicker: 'Color Picker', + transfer: 'Transfer', + render: 'Render', + radio: 'Radio', + button: 'Button', + checkbox: 'Checkbox', + slider: 'Slider', + datePicker: 'Date Picker', + shortcuts: 'Shortcuts', + today: 'Today', + yesterday: 'Yesterday', + aWeekAgo: 'A week ago', + week: 'Week', + year: 'Year', + month: 'Month', + dates: 'Dates', + daterange: 'Date Range', + monthrange: 'Month Range', + dateTimePicker: 'DateTimePicker', + dateTimerange: 'Datetime Range', + timePicker: 'Time Picker', + timeSelect: 'Time Select', + inputPassword: 'input Password', + passwordStrength: 'Password Strength', + operate: 'operate', + change: 'Change', + restore: 'Restore', + disabled: 'Disabled', + disablement: 'Disablement', + delete: 'Delete', + add: 'Add', + setValue: 'Set value', + resetValue: 'Reset value', + set: 'Set', + subitem: 'Subitem', + formValidation: 'Form validation', + verifyReset: 'Verify reset', + remark: 'Remark' + }, + watermark: { + watermark: 'Watermark' + }, + table: { + table: 'Table', + index: 'Index', + title: 'Title', + author: 'Author', + createTime: 'Create time', + action: 'Action', + pagination: 'pagination', + reserveIndex: 'Reserve index', + restoreIndex: 'Restore index', + showSelections: 'Show selections', + hiddenSelections: 'Restore selections', + showExpandedRows: 'Show expanded rows', + hiddenExpandedRows: 'Hidden expanded rows', + header: 'Header' + }, + action: { + create: 'Create', + add: 'Add', + del: 'Delete', + delete: 'Delete', + edit: 'Edit', + update: 'Update', + preview: 'Preview', + more: 'More', + sync: 'Sync', + save: 'Save', + detail: 'Detail', + export: 'Export', + import: 'Import', + generate: 'Generate', + logout: 'Login Out', + test: 'Test', + typeCreate: 'Dict Type Create', + typeUpdate: 'Dict Type Eidt', + dataCreate: 'Dict Data Create', + dataUpdate: 'Dict Data Eidt', + fileUpload: 'File Upload' + }, + dialog: { + dialog: 'Dialog', + open: 'Open', + close: 'Close' + }, + sys: { + api: { + operationFailed: 'Operation failed', + errorTip: 'Error Tip', + errorMessage: 'The operation failed, the system is abnormal!', + timeoutMessage: 'Login timed out, please log in again!', + apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!', + apiRequestFailed: 'The interface request failed, please try again later!', + networkException: 'network anomaly', + networkExceptionMsg: + 'Please check if your network connection is normal! The network is abnormal', + + errMsg401: 'The user does not have permission (token, user name, password error)!', + errMsg403: 'The user is authorized, but access is forbidden!', + errMsg404: 'Network request error, the resource was not found!', + errMsg405: 'Network request error, request method not allowed!', + errMsg408: 'Network request timed out!', + errMsg500: 'Server error, please contact the administrator!', + errMsg501: 'The network is not implemented!', + errMsg502: 'Network Error!', + errMsg503: 'The service is unavailable, the server is temporarily overloaded or maintained!', + errMsg504: 'Network timeout!', + errMsg505: 'The http version does not support the request!', + errMsg901: 'Demo mode, no write operations are possible!' + }, + app: { + logoutTip: 'Reminder', + logoutMessage: 'Confirm to exit the system?', + menuLoading: 'Menu loading...' + }, + exception: { + backLogin: 'Back Login', + backHome: 'Back Home', + subTitle403: "Sorry, you don't have access to this page.", + subTitle404: 'Sorry, the page you visited does not exist.', + subTitle500: 'Sorry, the server is reporting an error.', + noDataTitle: 'No data on the current page.', + networkErrorTitle: 'Network Error', + networkErrorSubTitle: + 'Sorry, Your network connection has been disconnected, please check your network!' + }, + lock: { + unlock: 'Click to unlock', + alert: 'Lock screen password error', + backToLogin: 'Back to login', + entry: 'Enter the system', + placeholder: 'Please enter the lock screen password or user password' + }, + login: { + backSignIn: 'Back sign in', + mobileSignInFormTitle: 'Mobile sign in', + qrSignInFormTitle: 'Qr code sign in', + signInFormTitle: 'Sign in', + signUpFormTitle: 'Sign up', + forgetFormTitle: 'Reset password', + + signInTitle: 'Backstage management system', + signInDesc: 'Enter your personal details and get started!', + policy: 'I agree to the xxx Privacy Policy', + scanSign: `scanning the code to complete the login`, + + loginButton: 'Sign in', + registerButton: 'Sign up', + rememberMe: 'Remember me', + forgetPassword: 'Forget Password?', + otherSignIn: 'Sign in with', + + // notify + loginSuccessTitle: 'Login successful', + loginSuccessDesc: 'Welcome back', + + // placeholder + accountPlaceholder: 'Please input username', + passwordPlaceholder: 'Please input password', + smsPlaceholder: 'Please input sms code', + mobilePlaceholder: 'Please input mobile', + policyPlaceholder: 'Register after checking', + diffPwd: 'The two passwords are inconsistent', + + userName: 'Username', + password: 'Password', + confirmPassword: 'Confirm Password', + email: 'Email', + smsCode: 'SMS code', + mobile: 'Mobile' + } + }, + profile: { + user: { + title: 'Personal Information', + username: 'User Name', + nickname: 'Nick Name', + mobile: 'Phone Number', + email: 'User Mail', + dept: 'Department', + posts: 'Position', + roles: 'Own Role', + sex: 'Sex', + man: 'Man', + woman: 'Woman', + createTime: 'Created Date' + }, + info: { + title: 'Basic Information', + basicInfo: 'Basic Information', + resetPwd: 'Reset Password', + userSocial: 'Social Information' + }, + rules: { + nickname: 'Please Enter User Nickname', + mail: 'Please Input The Email Address', + truemail: 'Please Input The Correct Email Address', + phone: 'Please Enter The Phone Number', + truephone: 'Please Enter The Correct Phone Number' + }, + password: { + oldPassword: 'Old PassWord', + newPassword: 'New Password', + confirmPassword: 'Confirm Password', + oldPwdMsg: 'Please Enter Old Password', + newPwdMsg: 'Please Enter New Password', + cfPwdMsg: 'Please Enter Confirm Password', + diffPwd: 'The Passwords Entered Twice No Match' + } + }, + cropper: { + selectImage: 'Select Image', + uploadSuccess: 'Uploaded success!', + modalTitle: 'Avatar upload', + okText: 'Confirm and upload', + btn_reset: 'Reset', + btn_rotate_left: 'Counterclockwise rotation', + btn_rotate_right: 'Clockwise rotation', + btn_scale_x: 'Flip horizontal', + btn_scale_y: 'Flip vertical', + btn_zoom_in: 'Zoom in', + btn_zoom_out: 'Zoom out', + preview: 'Preivew' + } +} diff --git a/marketing-ui/admin-ui/src/locales/zh-CN.ts b/marketing-ui/admin-ui/src/locales/zh-CN.ts new file mode 100644 index 0000000..130d565 --- /dev/null +++ b/marketing-ui/admin-ui/src/locales/zh-CN.ts @@ -0,0 +1,456 @@ +export default { + common: { + inputText: '请输入', + selectText: '请选择', + startTimeText: '开始时间', + endTimeText: '结束时间', + login: '登录', + required: '该项为必填项', + loginOut: '退出系统', + document: '项目文档', + profile: '个人中心', + reminder: '温馨提示', + loginOutMessage: '是否退出本系统?', + back: '返回', + ok: '确定', + save: '保存', + cancel: '取消', + close: '关闭', + reload: '重新加载', + success: '成功', + closeTab: '关闭标签页', + closeTheLeftTab: '关闭左侧标签页', + closeTheRightTab: '关闭右侧标签页', + closeOther: '关闭其他标签页', + closeAll: '关闭全部标签页', + prevLabel: '上一步', + nextLabel: '下一步', + skipLabel: '跳过', + doneLabel: '结束', + menu: '菜单', + menuDes: '以路由的结构渲染的菜单栏', + collapse: '展开缩收', + collapseDes: '展开和缩放菜单栏', + tagsView: '标签页', + tagsViewDes: '用于记录路由历史记录', + tool: '工具', + toolDes: '用于设置定制系统', + query: '查询', + reset: '重置', + shrink: '收起', + expand: '展开', + confirmTitle: '系统提示', + exportMessage: '是否确认导出数据项?', + importMessage: '是否确认导入数据项?', + createSuccess: '新增成功', + updateSuccess: '修改成功', + delMessage: '是否删除所选中数据?', + delDataMessage: '是否删除数据?', + delNoData: '请选择需要删除的数据', + delSuccess: '删除成功', + index: '序号', + status: '状态', + createTime: '创建时间', + updateTime: '更新时间', + copy: '复制', + copySuccess: '复制成功', + copyError: '复制失败' + }, + lock: { + lockScreen: '锁定屏幕', + lock: '锁定', + lockPassword: '锁屏密码', + unlock: '点击解锁', + backToLogin: '返回登录', + entrySystem: '进入系统', + placeholder: '请输入锁屏密码', + message: '锁屏密码错误' + }, + error: { + noPermission: `抱歉,您无权访问此页面。`, + pageError: '抱歉,您访问的页面不存在。', + networkError: '抱歉,服务器报告错误。', + returnToHome: '返回首页' + }, + permission: { + hasPermission: `请设置操作权限标签值`, + hasRole: `请设置角色权限标签值` + }, + setting: { + projectSetting: '项目配置', + theme: '主题', + layout: '布局', + systemTheme: '系统主题', + menuTheme: '菜单主题', + interfaceDisplay: '界面显示', + breadcrumb: '面包屑', + breadcrumbIcon: '面包屑图标', + collapseMenu: '折叠菜单', + hamburgerIcon: '折叠图标', + screenfullIcon: '全屏图标', + sizeIcon: '尺寸图标', + localeIcon: '多语言图标', + messageIcon: '消息图标', + tagsView: '标签页', + tagsViewImmerse: '标签页沉浸', + logo: '标志', + greyMode: '灰色模式', + fixedHeader: '固定头部', + headerTheme: '头部主题', + cutMenu: '切割菜单', + copy: '拷贝', + clearAndReset: '清除缓存并且重置', + copySuccess: '拷贝成功', + copyFailed: '拷贝失败', + footer: '页脚', + uniqueOpened: '菜单手风琴', + tagsViewIcon: '标签页图标', + reExperienced: '请重新退出登录体验', + fixedMenu: '固定菜单' + }, + size: { + default: '默认', + large: '大', + small: '小' + }, + login: { + welcome: '欢迎使用本系统', + message: '开箱即用的中后台管理系统', + tenantname: '租户名称', + username: '用户名', + password: '密码', + code: '验证码', + login: '登录', + relogin: '重新登录', + otherLogin: '其他登录方式', + register: '注册', + checkPassword: '确认密码', + remember: '记住我', + hasUser: '已有账号?去登录', + forgetPassword: '忘记密码?', + tenantNamePlaceholder: '请输入租户名称', + usernamePlaceholder: '请输入用户名', + passwordPlaceholder: '请输入密码', + codePlaceholder: '请输入验证码', + mobileTitle: '手机登录', + mobileNumber: '手机号码', + mobileNumberPlaceholder: '请输入手机号码', + backLogin: '返回', + getSmsCode: '获取验证码', + btnMobile: '手机登录', + btnQRCode: '二维码登录', + qrcode: '扫描二维码登录', + btnRegister: '注册', + SmsSendMsg: '验证码已发送', + resetPassword: "重置密码", + resetPasswordSuccess: "重置密码成功", + invalidTenantName: "无效的租户名称" + }, + captcha: { + verification: '请完成安全验证', + slide: '向右滑动完成验证', + point: '请依次点击', + success: '验证成功', + fail: '验证失败' + }, + router: { + login: '登录', + socialLogin: '社交登录', + home: '首页', + analysis: '分析页', + workplace: '工作台' + }, + analysis: { + newUser: '新增用户', + unreadInformation: '未读消息', + transactionAmount: '成交金额', + totalShopping: '购物总量', + monthlySales: '每月销售额', + userAccessSource: '用户访问来源', + january: '一月', + february: '二月', + march: '三月', + april: '四月', + may: '五月', + june: '六月', + july: '七月', + august: '八月', + september: '九月', + october: '十月', + november: '十一月', + december: '十二月', + estimate: '预计', + actual: '实际', + directAccess: '直接访问', + mailMarketing: '邮件营销', + allianceAdvertising: '联盟广告', + videoAdvertising: '视频广告', + searchEngines: '搜索引擎', + weeklyUserActivity: '每周用户活跃量', + activeQuantity: '活跃量', + monday: '周一', + tuesday: '周二', + wednesday: '周三', + thursday: '周四', + friday: '周五', + saturday: '周六', + sunday: '周日' + }, + workplace: { + welcome: '你好', + happyDay: '祝你开心每一天!', + toady: '今日晴', + notice: '通知公告', + project: '项目数', + access: '项目访问', + toDo: '待办', + introduction: '一个正经的简介', + shortcutOperation: '快捷入口', + operation: '操作', + index: '指数', + personal: '个人', + team: '团队', + quote: '引用', + contribution: '贡献', + hot: '热度', + yield: '产量', + dynamic: '动态', + push: '推送', + follow: '关注' + }, + form: { + input: '输入框', + inputNumber: '数字输入框', + default: '默认', + icon: '图标', + mixed: '复合型', + textarea: '多行文本', + slot: '插槽', + position: '位置', + autocomplete: '自动补全', + select: '选择器', + selectGroup: '选项分组', + selectV2: '虚拟列表选择器', + cascader: '级联选择器', + switch: '开关', + rate: '评分', + colorPicker: '颜色选择器', + transfer: '穿梭框', + render: '渲染器', + radio: '单选框', + button: '按钮', + checkbox: '多选框', + slider: '滑块', + datePicker: '日期选择器', + shortcuts: '快捷选项', + today: '今天', + yesterday: '昨天', + aWeekAgo: '一周前', + week: '周', + year: '年', + month: '月', + dates: '日期', + daterange: '日期范围', + monthrange: '月份范围', + dateTimePicker: '日期时间选择器', + dateTimerange: '日期时间范围', + timePicker: '时间选择器', + timeSelect: '时间选择', + inputPassword: '密码输入框', + passwordStrength: '密码强度', + operate: '操作', + change: '更改', + restore: '还原', + disabled: '禁用', + disablement: '解除禁用', + delete: '删除', + add: '添加', + setValue: '设置值', + resetValue: '重置值', + set: '设置', + subitem: '子项', + formValidation: '表单验证', + verifyReset: '验证重置', + remark: '备注' + }, + watermark: { + watermark: '水印' + }, + table: { + table: '表格', + index: '序号', + title: '标题', + author: '作者', + createTime: '创建时间', + action: '操作', + pagination: '分页', + reserveIndex: '叠加序号', + restoreIndex: '还原序号', + showSelections: '显示多选', + hiddenSelections: '隐藏多选', + showExpandedRows: '显示展开行', + hiddenExpandedRows: '隐藏展开行', + header: '头部' + }, + action: { + create: '新增', + add: '新增', + del: '删除', + delete: '删除', + edit: '编辑', + update: '编辑', + preview: '预览', + more: '更多', + sync: '同步', + save: '保存', + detail: '详情', + export: '导出', + import: '导入', + generate: '生成', + logout: '强制退出', + test: '测试', + typeCreate: '字典类型新增', + typeUpdate: '字典类型编辑', + dataCreate: '字典数据新增', + dataUpdate: '字典数据编辑' + }, + dialog: { + dialog: '弹窗', + open: '打开', + close: '关闭' + }, + sys: { + api: { + operationFailed: '操作失败', + errorTip: '错误提示', + errorMessage: '操作失败,系统异常!', + timeoutMessage: '登录超时,请重新登录!', + apiTimeoutMessage: '接口请求超时,请刷新页面重试!', + apiRequestFailed: '请求出错,请稍候重试', + networkException: '网络异常', + networkExceptionMsg: '网络异常,请检查您的网络连接是否正常!', + errMsg401: '用户没有权限(令牌、用户名、密码错误)!', + errMsg403: '用户得到授权,但是访问是被禁止的。!', + errMsg404: '网络请求错误,未找到该资源!', + errMsg405: '网络请求错误,请求方法未允许!', + errMsg408: '网络请求超时!', + errMsg500: '服务器错误,请联系管理员!', + errMsg501: '网络未实现!', + errMsg502: '网络错误!', + errMsg503: '服务不可用,服务器暂时过载或维护!', + errMsg504: '网络超时!', + errMsg505: 'http版本不支持该请求!', + errMsg901: '演示模式,无法进行写操作!' + }, + app: { + logoutTip: '温馨提醒', + logoutMessage: '是否确认退出系统?', + menuLoading: '菜单加载中...' + }, + exception: { + backLogin: '返回登录', + backHome: '返回首页', + subTitle403: '抱歉,您无权访问此页面。', + subTitle404: '抱歉,您访问的页面不存在。', + subTitle500: '抱歉,服务器报告错误。', + noDataTitle: '当前页无数据', + networkErrorTitle: '网络错误', + networkErrorSubTitle: '抱歉,您的网络连接已断开,请检查您的网络!' + }, + lock: { + unlock: '点击解锁', + alert: '锁屏密码错误', + backToLogin: '返回登录', + entry: '进入系统', + placeholder: '请输入锁屏密码或者用户密码' + }, + login: { + backSignIn: '返回', + signInFormTitle: '登录', + ssoFormTitle: '三方授权', + mobileSignInFormTitle: '手机登录', + qrSignInFormTitle: '二维码登录', + signUpFormTitle: '注册', + forgetFormTitle: '重置密码', + signInTitle: '开箱即用的中后台管理系统', + signInDesc: '输入您的个人详细信息开始使用!', + policy: '我同意xxx隐私政策', + scanSign: `扫码后点击"确认",即可完成登录`, + loginButton: '登录', + registerButton: '注册', + rememberMe: '记住我', + forgetPassword: '忘记密码?', + otherSignIn: '其他登录方式', + // notify + loginSuccessTitle: '登录成功', + loginSuccessDesc: '欢迎回来', + // placeholder + accountPlaceholder: '请输入账号', + passwordPlaceholder: '请输入密码', + smsPlaceholder: '请输入验证码', + mobilePlaceholder: '请输入手机号码', + policyPlaceholder: '勾选后才能注册', + diffPwd: '两次输入密码不一致', + userName: '账号', + password: '密码', + confirmPassword: '确认密码', + email: '邮箱', + smsCode: '短信验证码', + mobile: '手机号码' + } + }, + profile: { + user: { + title: '个人信息', + username: '用户名称', + nickname: '用户昵称', + mobile: '手机号码', + email: '用户邮箱', + dept: '所属部门', + posts: '所属岗位', + roles: '所属角色', + sex: '性别', + man: '男', + woman: '女', + createTime: '创建日期' + }, + info: { + title: '基本信息', + basicInfo: '基本资料', + resetPwd: '修改密码', + userSocial: '社交信息' + }, + rules: { + nickname: '请输入用户昵称', + mail: '请输入邮箱地址', + truemail: '请输入正确的邮箱地址', + phone: '请输入正确的手机号码', + truephone: '请输入正确的手机号码' + }, + password: { + oldPassword: '旧密码', + newPassword: '新密码', + confirmPassword: '确认密码', + oldPwdMsg: '请输入旧密码', + newPwdMsg: '请输入新密码', + cfPwdMsg: '请输入确认密码', + pwdRules: '长度在 6 到 20 个字符', + diffPwd: '两次输入密码不一致' + } + }, + cropper: { + selectImage: '选择图片', + uploadSuccess: '上传成功', + modalTitle: '头像上传', + okText: '确认并上传', + btn_reset: '重置', + btn_rotate_left: '逆时针旋转', + btn_rotate_right: '顺时针旋转', + btn_scale_x: '水平翻转', + btn_scale_y: '垂直翻转', + btn_zoom_in: '放大', + btn_zoom_out: '缩小', + preview: '预览' + }, + 'OAuth 2.0': 'OAuth 2.0' // 避免菜单名是 OAuth 2.0 时,一直 warn 报错 +} diff --git a/marketing-ui/admin-ui/src/main.ts b/marketing-ui/admin-ui/src/main.ts new file mode 100644 index 0000000..874f766 --- /dev/null +++ b/marketing-ui/admin-ui/src/main.ts @@ -0,0 +1,74 @@ +// 引入unocss css +import '@/plugins/unocss' + +// 导入全局的svg图标 +import '@/plugins/svgIcon' + +// 初始化多语言 +import { setupI18n } from '@/plugins/vueI18n' + +// 引入状态管理 +import { setupStore } from '@/store' + +// 全局组件 +import { setupGlobCom } from '@/components' + +// 引入 element-plus +import { setupElementPlus } from '@/plugins/elementPlus' + +// 引入 form-create +import { setupFormCreate } from '@/plugins/formCreate' + +// 引入全局样式 +import '@/styles/index.scss' + +// 引入动画 +import '@/plugins/animate.css' + +// 路由 +import router, { setupRouter } from '@/router' + +// 指令 +import { setupAuth, setupMountedFocus } from '@/directives' + +import { createApp } from 'vue' + +import App from './App.vue' + +import './permission' + +import '@/plugins/tongji' // 百度统计 +import Logger from '@/utils/Logger' + +import VueDOMPurifyHTML from 'vue-dompurify-html' // 解决v-html 的安全隐患 + +// 创建实例 +const setupAll = async () => { + const app = createApp(App) + + await setupI18n(app) + + setupStore(app) + + setupGlobCom(app) + + setupElementPlus(app) + + setupFormCreate(app) + + setupRouter(app) + + // directives 指令 + setupAuth(app) + setupMountedFocus(app) + + await router.isReady() + + app.use(VueDOMPurifyHTML) + + app.mount('#app') +} + +setupAll() + +Logger.prettyPrimary(`欢迎使用`, import.meta.env.VITE_APP_TITLE) diff --git a/marketing-ui/admin-ui/src/permission.ts b/marketing-ui/admin-ui/src/permission.ts new file mode 100644 index 0000000..b04bc3c --- /dev/null +++ b/marketing-ui/admin-ui/src/permission.ts @@ -0,0 +1,106 @@ +import router from './router' +import type { RouteRecordRaw } from 'vue-router' +import { isRelogin } from '@/config/axios/service' +import { getAccessToken } from '@/utils/auth' +import { useTitle } from '@/hooks/web/useTitle' +import { useNProgress } from '@/hooks/web/useNProgress' +import { usePageLoading } from '@/hooks/web/usePageLoading' +import { useDictStoreWithOut } from '@/store/modules/dict' +import { useUserStoreWithOut } from '@/store/modules/user' +import { usePermissionStoreWithOut } from '@/store/modules/permission' + +const { start, done } = useNProgress() + +const { loadStart, loadDone } = usePageLoading() + +const parseURL = ( + url: string | null | undefined +): { basePath: string; paramsObject: { [key: string]: string } } => { + // 如果输入为 null 或 undefined,返回空字符串和空对象 + if (url == null) { + return { basePath: '', paramsObject: {} } + } + + // 找到问号 (?) 的位置,它之前是基础路径,之后是查询参数 + const questionMarkIndex = url.indexOf('?') + let basePath = url + const paramsObject: { [key: string]: string } = {} + + // 如果找到了问号,说明有查询参数 + if (questionMarkIndex !== -1) { + // 获取 basePath + basePath = url.substring(0, questionMarkIndex) + + // 从 URL 中获取查询字符串部分 + const queryString = url.substring(questionMarkIndex + 1) + + // 使用 URLSearchParams 遍历参数 + const searchParams = new URLSearchParams(queryString) + searchParams.forEach((value, key) => { + // 封装进 paramsObject 对象 + paramsObject[key] = value + }) + } + + // 返回 basePath 和 paramsObject + return { basePath, paramsObject } +} + +// 路由不重定向白名单 +const whiteList = [ + '/login', + '/social-login', + '/auth-redirect', + '/bind', + '/register', + '/oauthLogin/gitee' +] + +// 路由加载前 +router.beforeEach(async (to, from, next) => { + start() + loadStart() + if (getAccessToken()) { + if (to.path === '/login') { + next({ path: '/' }) + } else { + // 获取所有字典 + const dictStore = useDictStoreWithOut() + const userStore = useUserStoreWithOut() + const permissionStore = usePermissionStoreWithOut() + if (!dictStore.getIsSetDict) { + await dictStore.setDictMap() + } + if (!userStore.getIsSetUser) { + isRelogin.show = true + await userStore.setUserInfoAction() + isRelogin.show = false + // 后端过滤菜单 + await permissionStore.generateRoutes() + permissionStore.getAddRouters.forEach((route) => { + router.addRoute(route as unknown as RouteRecordRaw) // 动态添加可访问路由表 + }) + const redirectPath = from.query.redirect || to.path + // 修复跳转时不带参数的问题 + const redirect = decodeURIComponent(redirectPath as string) + const { paramsObject: query } = parseURL(redirect) + const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect, query } + next(nextData) + } else { + next() + } + } + } else { + if (whiteList.indexOf(to.path) !== -1) { + next() + } else { + next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 + } + } +}) + +router.afterEach((to) => { + useTitle(to?.meta?.title as string) + done() // 结束Progress + loadDone() +}) diff --git a/marketing-ui/admin-ui/src/plugins/animate.css/index.ts b/marketing-ui/admin-ui/src/plugins/animate.css/index.ts new file mode 100644 index 0000000..3e93451 --- /dev/null +++ b/marketing-ui/admin-ui/src/plugins/animate.css/index.ts @@ -0,0 +1 @@ +import 'animate.css' diff --git a/marketing-ui/admin-ui/src/plugins/echarts/index.ts b/marketing-ui/admin-ui/src/plugins/echarts/index.ts new file mode 100644 index 0000000..18d05aa --- /dev/null +++ b/marketing-ui/admin-ui/src/plugins/echarts/index.ts @@ -0,0 +1,49 @@ +import * as echarts from 'echarts/core' + +import { + BarChart, + FunnelChart, + GaugeChart, + LineChart, + MapChart, + PictorialBarChart, + PieChart, + RadarChart +} from 'echarts/charts' + +import { + AriaComponent, + GridComponent, + LegendComponent, + ParallelComponent, + PolarComponent, + TitleComponent, + ToolboxComponent, + TooltipComponent, + VisualMapComponent +} from 'echarts/components' + +import { CanvasRenderer } from 'echarts/renderers' + +echarts.use([ + LegendComponent, + TitleComponent, + TooltipComponent, + ToolboxComponent, + GridComponent, + PolarComponent, + AriaComponent, + ParallelComponent, + VisualMapComponent, + BarChart, + LineChart, + PieChart, + MapChart, + CanvasRenderer, + PictorialBarChart, + RadarChart, + GaugeChart, + FunnelChart +]) + +export default echarts diff --git a/marketing-ui/admin-ui/src/plugins/elementPlus/index.ts b/marketing-ui/admin-ui/src/plugins/elementPlus/index.ts new file mode 100644 index 0000000..0ae2a8b --- /dev/null +++ b/marketing-ui/admin-ui/src/plugins/elementPlus/index.ts @@ -0,0 +1,17 @@ +import type { App } from 'vue' +// 需要全局引入一些组件,如ElScrollbar,不然一些下拉项样式有问题 +import { ElLoading, ElScrollbar, ElButton } from 'element-plus' + +const plugins = [ElLoading] + +const components = [ElScrollbar, ElButton] + +export const setupElementPlus = (app: App) => { + plugins.forEach((plugin) => { + app.use(plugin) + }) + + components.forEach((component) => { + app.component(component.name, component) + }) +} diff --git a/marketing-ui/admin-ui/src/plugins/formCreate/index.ts b/marketing-ui/admin-ui/src/plugins/formCreate/index.ts new file mode 100644 index 0000000..07d2c51 --- /dev/null +++ b/marketing-ui/admin-ui/src/plugins/formCreate/index.ts @@ -0,0 +1,133 @@ +import type { App } from 'vue' +// 👇使用 form-create 需额外全局引入 element plus 组件 +import { + // ElAutocomplete, + // ElButton, + // ElCascader, + // ElCheckbox, + // ElCheckboxButton, + // ElCheckboxGroup, + // ElCol, + // ElColorPicker, + // ElDatePicker, + // ElDialog, + // ElForm, + // ElInput, + // ElInputNumber, + // ElPopover, + // ElRadio, + // ElRadioButton, + // ElRadioGroup, + // ElRate, + // ElRow, + // ElSelect, + // ElSlider, + // ElSwitch, + // ElTimePicker, + // ElTooltip, + // ElTree, + // ElUpload, + // ElIcon, + // ElProgress, + // 以上会由 @form-create/element-ui/auto-import 自动引入 + ElAlert, + ElTransfer, + ElAside, + ElContainer, + ElDivider, + ElHeader, + ElMain, + ElPopconfirm, + ElTable, + ElTableColumn, + ElTabPane, + ElTabs, + ElDropdown, + ElDropdownMenu, + ElDropdownItem, + ElBadge, + ElTag, + ElText, + ElMenu, + ElMenuItem, + ElFooter, + ElMessage, + ElCollapse, + ElCollapseItem, + ElCard, + // ElFormItem, + // ElOption +} from 'element-plus' +import FcDesigner from '@form-create/designer' +import formCreate from '@form-create/element-ui' +import install from '@form-create/element-ui/auto-import' + +//======================= 自定义组件 ======================= +import { UploadFile, UploadImg, UploadImgs } from '@/components/UploadFile' +import { useApiSelect } from '@/components/FormCreate' +import { Editor } from '@/components/Editor' +import DictSelect from '@/components/FormCreate/src/components/DictSelect.vue' + +const UserSelect = useApiSelect({ + name: 'UserSelect', + labelField: 'nickname', + valueField: 'id', + url: '/system/user/simple-list' +}) +const DeptSelect = useApiSelect({ + name: 'DeptSelect', + labelField: 'name', + valueField: 'id', + url: '/system/dept/simple-list' +}) +const ApiSelect = useApiSelect({ + name: 'ApiSelect' +}) + +const components = [ + ElAlert, + ElTransfer, + ElAside, + ElContainer, + ElDivider, + ElHeader, + ElMain, + ElPopconfirm, + ElTable, + ElTableColumn, + ElTabPane, + ElTabs, + ElDropdown, + ElDropdownMenu, + ElDropdownItem, + ElBadge, + ElTag, + ElText, + ElMenu, + ElMenuItem, + ElFooter, + ElMessage, + // ElFormItem, + // ElOption, + UploadImg, + UploadImgs, + UploadFile, + DictSelect, + UserSelect, + DeptSelect, + ApiSelect, + Editor, + ElCollapse, + ElCollapseItem, + ElCard, +] + +// 参考 http://www.form-create.com/v3/element-ui/auto-import.html 文档 +export const setupFormCreate = (app: App) => { + components.forEach((component) => { + app.component(component.name, component) + }) + formCreate.use(install) + app.use(formCreate) + app.use(FcDesigner) +} diff --git a/marketing-ui/admin-ui/src/plugins/svgIcon/index.ts b/marketing-ui/admin-ui/src/plugins/svgIcon/index.ts new file mode 100644 index 0000000..b5b7f70 --- /dev/null +++ b/marketing-ui/admin-ui/src/plugins/svgIcon/index.ts @@ -0,0 +1,3 @@ +import 'virtual:svg-icons-register' + +import '@purge-icons/generated' diff --git a/marketing-ui/admin-ui/src/plugins/tongji/index.ts b/marketing-ui/admin-ui/src/plugins/tongji/index.ts new file mode 100644 index 0000000..ec261a1 --- /dev/null +++ b/marketing-ui/admin-ui/src/plugins/tongji/index.ts @@ -0,0 +1,23 @@ +import router from '@/router' + +// 用于 router push +window._hmt = window._hmt || [] +// HM_ID +const HM_ID = import.meta.env.VITE_APP_BAIDU_CODE +;(function () { + // 有值的时候,才开启 + if (!HM_ID) { + return + } + const hm = document.createElement('script') + hm.src = 'https://hm.baidu.com/hm.js?' + HM_ID + const s = document.getElementsByTagName('script')[0] + s.parentNode.insertBefore(hm, s) +})() + +router.afterEach(function (to) { + if (!HM_ID) { + return + } + _hmt.push(['_trackPageview', to.fullPath]) +}) diff --git a/marketing-ui/admin-ui/src/plugins/unocss/index.ts b/marketing-ui/admin-ui/src/plugins/unocss/index.ts new file mode 100644 index 0000000..d366b5a --- /dev/null +++ b/marketing-ui/admin-ui/src/plugins/unocss/index.ts @@ -0,0 +1 @@ +import 'virtual:uno.css' diff --git a/marketing-ui/admin-ui/src/plugins/vueI18n/helper.ts b/marketing-ui/admin-ui/src/plugins/vueI18n/helper.ts new file mode 100644 index 0000000..da6bc8c --- /dev/null +++ b/marketing-ui/admin-ui/src/plugins/vueI18n/helper.ts @@ -0,0 +1,3 @@ +export const setHtmlPageLang = (locale: LocaleType) => { + document.querySelector('html')?.setAttribute('lang', locale) +} diff --git a/marketing-ui/admin-ui/src/plugins/vueI18n/index.ts b/marketing-ui/admin-ui/src/plugins/vueI18n/index.ts new file mode 100644 index 0000000..f845b13 --- /dev/null +++ b/marketing-ui/admin-ui/src/plugins/vueI18n/index.ts @@ -0,0 +1,42 @@ +import type { App } from 'vue' +import { createI18n } from 'vue-i18n' +import { useLocaleStoreWithOut } from '@/store/modules/locale' +import type { I18n, I18nOptions } from 'vue-i18n' +import { setHtmlPageLang } from './helper' + +export let i18n: ReturnType + +const createI18nOptions = async (): Promise => { + const localeStore = useLocaleStoreWithOut() + const locale = localeStore.getCurrentLocale + const localeMap = localeStore.getLocaleMap + const defaultLocal = await import(`../../locales/${locale.lang}.ts`) + const message = defaultLocal.default ?? {} + + setHtmlPageLang(locale.lang) + + localeStore.setCurrentLocale({ + lang: locale.lang + // elLocale: elLocal + }) + + return { + legacy: false, + locale: locale.lang, + fallbackLocale: locale.lang, + messages: { + [locale.lang]: message + }, + availableLocales: localeMap.map((v) => v.lang), + sync: true, + silentTranslationWarn: true, + missingWarn: false, + silentFallbackWarn: true + } +} + +export const setupI18n = async (app: App) => { + const options = await createI18nOptions() + i18n = createI18n(options) as I18n + app.use(i18n) +} diff --git a/marketing-ui/admin-ui/src/router/index.ts b/marketing-ui/admin-ui/src/router/index.ts new file mode 100644 index 0000000..b818421 --- /dev/null +++ b/marketing-ui/admin-ui/src/router/index.ts @@ -0,0 +1,28 @@ +import type { App } from 'vue' +import type { RouteRecordRaw } from 'vue-router' +import { createRouter, createWebHistory } from 'vue-router' +import remainingRouter from './modules/remaining' + +// 创建路由实例 +const router = createRouter({ + history: createWebHistory(import.meta.env.VITE_BASE_PATH), // createWebHashHistory URL带#,createWebHistory URL不带# + strict: true, + routes: remainingRouter as RouteRecordRaw[], + scrollBehavior: () => ({ left: 0, top: 0 }) +}) + +export const resetRouter = (): void => { + const resetWhiteNameList = ['Redirect', 'Login', 'NoFind', 'Root'] + router.getRoutes().forEach((route) => { + const { name } = route + if (name && !resetWhiteNameList.includes(name as string)) { + router.hasRoute(name) && router.removeRoute(name) + } + }) +} + +export const setupRouter = (app: App) => { + app.use(router) +} + +export default router diff --git a/marketing-ui/admin-ui/src/router/modules/remaining.ts b/marketing-ui/admin-ui/src/router/modules/remaining.ts new file mode 100644 index 0000000..5d8277c --- /dev/null +++ b/marketing-ui/admin-ui/src/router/modules/remaining.ts @@ -0,0 +1,293 @@ +import { Layout } from '@/utils/routerHelper' + +const { t } = useI18n() +/** + * redirect: noredirect 当设置 noredirect 的时候该路由在面包屑导航中不可被点击 + * name:'router-name' 设定路由的名字,一定要填写不然使用时会出现各种问题 + * meta : { + hidden: true 当设置 true 的时候该路由不会再侧边栏出现 如404,login等页面(默认 false) + + alwaysShow: true 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式, + 只有一个时,会将那个子路由当做根路由显示在侧边栏, + 若你想不管路由下面的 children 声明的个数都显示你的根路由, + 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则, + 一直显示根路由(默认 false) + + title: 'title' 设置该路由在侧边栏和面包屑中展示的名字 + + icon: 'svg-name' 设置该路由的图标 + + noCache: true 如果设置为true,则不会被 缓存(默认 false) + + breadcrumb: false 如果设置为false,则不会在breadcrumb面包屑中显示(默认 true) + + affix: true 如果设置为true,则会一直固定在tag项中(默认 false) + + noTagsView: true 如果设置为true,则不会出现在tag中(默认 false) + + activeMenu: '/dashboard' 显示高亮的路由路径 + + followAuth: '/dashboard' 跟随哪个路由进行权限过滤 + + canTo: true 设置为true即使hidden为true,也依然可以进行路由跳转(默认 false) + } + **/ +const remainingRouter: AppRouteRecordRaw[] = [ + { + path: '/redirect', + component: Layout, + name: 'Redirect', + children: [ + { + path: '/redirect/:path(.*)', + name: 'Redirect', + component: () => import('@/views/Redirect/Redirect.vue'), + meta: {} + } + ], + meta: { + hidden: true, + noTagsView: true + } + }, + { + path: '/', + component: Layout, + redirect: '/index', + name: 'Home', + meta: {}, + children: [ + { + path: 'index', + component: () => import('@/views/Home/Index.vue'), + name: 'Index', + meta: { + title: t('router.home'), + icon: 'ep:home-filled', + noCache: false, + affix: true + } + } + ] + }, + { + path: '/user', + component: Layout, + name: 'UserInfo', + meta: { + hidden: true + }, + children: [ + { + path: 'profile', + component: () => import('@/views/Profile/Index.vue'), + name: 'Profile', + meta: { + canTo: true, + hidden: true, + noTagsView: false, + icon: 'ep:user', + title: t('common.profile') + } + } + ] + }, + { + path: '/dict', + component: Layout, + name: 'dict', + meta: { + hidden: true + }, + children: [ + { + path: 'type/data/:dictType', + component: () => import('@/views/system/dict/data/index.vue'), + name: 'SystemDictData', + meta: { + title: '字典数据', + noCache: true, + hidden: true, + canTo: true, + icon: '', + activeMenu: '/system/dict' + } + } + ] + }, + + { + path: '/codegen', + component: Layout, + name: 'CodegenEdit', + meta: { + hidden: true + }, + children: [ + { + path: 'edit', + component: () => import('@/views/infra/codegen/EditTable.vue'), + name: 'InfraCodegenEditTable', + meta: { + noCache: true, + hidden: true, + canTo: true, + icon: 'ep:edit', + title: '修改生成配置', + activeMenu: 'infra/codegen/index' + } + } + ] + }, + { + path: '/job', + component: Layout, + name: 'JobL', + meta: { + hidden: true + }, + children: [ + { + path: 'job-log', + component: () => import('@/views/infra/job/logger/index.vue'), + name: 'InfraJobLog', + meta: { + noCache: true, + hidden: true, + canTo: true, + icon: 'ep:edit', + title: '调度日志', + activeMenu: 'infra/job/index' + } + } + ] + }, + { + path: '/login', + component: () => import('@/views/Login/Login.vue'), + name: 'Login', + meta: { + hidden: true, + title: t('router.login'), + noTagsView: true + } + }, + { + path: '/sso', + component: () => import('@/views/Login/Login.vue'), + name: 'SSOLogin', + meta: { + hidden: true, + title: t('router.login'), + noTagsView: true + } + }, + { + path: '/social-login', + component: () => import('@/views/Login/SocialLogin.vue'), + name: 'SocialLogin', + meta: { + hidden: true, + title: t('router.socialLogin'), + noTagsView: true + } + }, + { + path: '/403', + component: () => import('@/views/Error/403.vue'), + name: 'NoAccess', + meta: { + hidden: true, + title: '403', + noTagsView: true + } + }, + { + path: '/404', + component: () => import('@/views/Error/404.vue'), + name: 'NoFound', + meta: { + hidden: true, + title: '404', + noTagsView: true + } + }, + { + path: '/500', + component: () => import('@/views/Error/500.vue'), + name: 'Error', + meta: { + hidden: true, + title: '500', + noTagsView: true + } + }, + { + path: '/bpm', + component: Layout, + name: 'bpm', + meta: { + hidden: true + }, + children: [ + ] + }, + { + path: '/templateinfo', + component: Layout, + name: 'templateinfo', + meta: { + hidden: true + }, + children: [ + { + path: 'templatebindinginfo', + component: () => import('@/views/domesticsms/templateinfo/templatebindinginfo/index.vue'), + name: 'templatebindinginfo', + meta: { + noCache: true, + hidden: true, + canTo: true, + icon: 'ep:edit', + title: '渠道绑定信息', + activeMenu: 'domesticsms/templateinfo/index' + } + } + ] + }, + { + path: '/internationaltemplateinfo', + component: Layout, + name: 'internationaltemplateinfo', + meta: { + hidden: true + }, + children: [ + { + path: 'templatebindinginfo', + component: () => import('@/views/internationalsms/templateinfo/templatebindinginfo/index.vue'), + name: 'internationaltemplatebindinginfo', + meta: { + noCache: true, + hidden: true, + canTo: true, + icon: 'ep:edit', + title: '渠道绑定信息', + activeMenu: 'internationalsms/templateinfo/index' + } + } + ] + }, + { + path: '/:pathMatch(.*)*', + component: () => import('@/views/Error/404.vue'), + name: '', + meta: { + title: '404', + hidden: true, + breadcrumb: false + } + } + ] + +export default remainingRouter diff --git a/marketing-ui/admin-ui/src/store/index.ts b/marketing-ui/admin-ui/src/store/index.ts new file mode 100644 index 0000000..63f0045 --- /dev/null +++ b/marketing-ui/admin-ui/src/store/index.ts @@ -0,0 +1,12 @@ +import type { App } from 'vue' +import { createPinia } from 'pinia' +import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' + +const store = createPinia() +store.use(piniaPluginPersistedstate) + +export const setupStore = (app: App) => { + app.use(store) +} + +export { store } diff --git a/marketing-ui/admin-ui/src/store/modules/app.ts b/marketing-ui/admin-ui/src/store/modules/app.ts new file mode 100644 index 0000000..be48daa --- /dev/null +++ b/marketing-ui/admin-ui/src/store/modules/app.ts @@ -0,0 +1,282 @@ +import { defineStore } from 'pinia' +import { store } from '../index' +import { humpToUnderline, setCssVar } from '@/utils' +import { ElMessage } from 'element-plus' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +import { ElementPlusSize } from '@/types/elementPlus' +import { LayoutType } from '@/types/layout' +import { ThemeTypes } from '@/types/theme' + +const { wsCache } = useCache() + +interface AppState { + breadcrumb: boolean + breadcrumbIcon: boolean + collapse: boolean + uniqueOpened: boolean + hamburger: boolean + screenfull: boolean + search: boolean + size: boolean + locale: boolean + message: boolean + tagsView: boolean + tagsViewImmerse: boolean + tagsViewIcon: boolean + logo: boolean + fixedHeader: boolean + greyMode: boolean + pageLoading: boolean + layout: LayoutType + title: string + userInfo: string + isDark: boolean + currentSize: ElementPlusSize + sizeMap: ElementPlusSize[] + mobile: boolean + footer: boolean + theme: ThemeTypes + fixedMenu: boolean +} + +export const useAppStore = defineStore('app', { + state: (): AppState => { + return { + userInfo: 'userInfo', // 登录信息存储字段-建议每个项目换一个字段,避免与其他项目冲突 + sizeMap: ['default', 'large', 'small'], + mobile: false, // 是否是移动端 + title: import.meta.env.VITE_APP_TITLE, // 标题 + pageLoading: false, // 路由跳转loading + + breadcrumb: true, // 面包屑 + breadcrumbIcon: true, // 面包屑图标 + collapse: false, // 折叠菜单 + uniqueOpened: true, // 是否只保持一个子菜单的展开 + hamburger: true, // 折叠图标 + screenfull: true, // 全屏图标 + search: true, // 搜索图标 + size: true, // 尺寸图标 + locale: true, // 多语言图标 + message: true, // 消息图标 + tagsView: true, // 标签页 + tagsViewImmerse: false, // 标签页沉浸 + tagsViewIcon: true, // 是否显示标签图标 + logo: true, // logo + fixedHeader: true, // 固定toolheader + footer: true, // 显示页脚 + greyMode: false, // 是否开始灰色模式,用于特殊悼念日 + fixedMenu: wsCache.get('fixedMenu') || false, // 是否固定菜单 + + layout: wsCache.get(CACHE_KEY.LAYOUT) || 'classic', // layout布局 + isDark: wsCache.get(CACHE_KEY.IS_DARK) || false, // 是否是暗黑模式 + currentSize: wsCache.get('default') || 'default', // 组件尺寸 + theme: wsCache.get(CACHE_KEY.THEME) || { + // 主题色 + elColorPrimary: '#409eff', + // 左侧菜单边框颜色 + leftMenuBorderColor: 'inherit', + // 左侧菜单背景颜色 + leftMenuBgColor: '#001529', + // 左侧菜单浅色背景颜色 + leftMenuBgLightColor: '#0f2438', + // 左侧菜单选中背景颜色 + leftMenuBgActiveColor: 'var(--el-color-primary)', + // 左侧菜单收起选中背景颜色 + leftMenuCollapseBgActiveColor: 'var(--el-color-primary)', + // 左侧菜单字体颜色 + leftMenuTextColor: '#bfcbd9', + // 左侧菜单选中字体颜色 + leftMenuTextActiveColor: '#fff', + // logo字体颜色 + logoTitleTextColor: '#fff', + // logo边框颜色 + logoBorderColor: 'inherit', + // 头部背景颜色 + topHeaderBgColor: '#fff', + // 头部字体颜色 + topHeaderTextColor: 'inherit', + // 头部悬停颜色 + topHeaderHoverColor: '#f6f6f6', + // 头部边框颜色 + topToolBorderColor: '#eee' + } + } + }, + getters: { + getBreadcrumb(): boolean { + return this.breadcrumb + }, + getBreadcrumbIcon(): boolean { + return this.breadcrumbIcon + }, + getCollapse(): boolean { + return this.collapse + }, + getUniqueOpened(): boolean { + return this.uniqueOpened + }, + getHamburger(): boolean { + return this.hamburger + }, + getScreenfull(): boolean { + return this.screenfull + }, + getSize(): boolean { + return this.size + }, + getLocale(): boolean { + return this.locale + }, + getTagsView(): boolean { + return this.tagsView + }, + getTagsViewImmerse(): boolean { + return this.tagsViewImmerse + }, + getTagsViewIcon(): boolean { + return this.tagsViewIcon + }, + getLogo(): boolean { + return this.logo + }, + getFixedHeader(): boolean { + return this.fixedHeader + }, + getGreyMode(): boolean { + return this.greyMode + }, + getFixedMenu(): boolean { + return this.fixedMenu + }, + getPageLoading(): boolean { + return this.pageLoading + }, + getLayout(): LayoutType { + return this.layout + }, + getTitle(): string { + return this.title + }, + getUserInfo(): string { + return this.userInfo + }, + getIsDark(): boolean { + return this.isDark + }, + getCurrentSize(): ElementPlusSize { + return this.currentSize + }, + getSizeMap(): ElementPlusSize[] { + return this.sizeMap + }, + getMobile(): boolean { + return this.mobile + }, + getTheme(): ThemeTypes { + return this.theme + }, + getFooter(): boolean { + return this.footer + } + }, + actions: { + setBreadcrumb(breadcrumb: boolean) { + this.breadcrumb = breadcrumb + }, + setBreadcrumbIcon(breadcrumbIcon: boolean) { + this.breadcrumbIcon = breadcrumbIcon + }, + setCollapse(collapse: boolean) { + this.collapse = collapse + }, + setUniqueOpened(uniqueOpened: boolean) { + this.uniqueOpened = uniqueOpened + }, + setHamburger(hamburger: boolean) { + this.hamburger = hamburger + }, + setScreenfull(screenfull: boolean) { + this.screenfull = screenfull + }, + setSize(size: boolean) { + this.size = size + }, + setLocale(locale: boolean) { + this.locale = locale + }, + setMessage(message: boolean) { + this.message = message + }, + setTagsView(tagsView: boolean) { + this.tagsView = tagsView + }, + setTagsViewImmerse(tagsViewImmerse: boolean) { + this.tagsViewImmerse = tagsViewImmerse + }, + setTagsViewIcon(tagsViewIcon: boolean) { + this.tagsViewIcon = tagsViewIcon + }, + setLogo(logo: boolean) { + this.logo = logo + }, + setFixedHeader(fixedHeader: boolean) { + this.fixedHeader = fixedHeader + }, + setGreyMode(greyMode: boolean) { + this.greyMode = greyMode + }, + setFixedMenu(fixedMenu: boolean) { + wsCache.set('fixedMenu', fixedMenu) + this.fixedMenu = fixedMenu + }, + setPageLoading(pageLoading: boolean) { + this.pageLoading = pageLoading + }, + setLayout(layout: LayoutType) { + if (this.mobile && layout !== 'classic') { + ElMessage.warning('移动端模式下不支持切换其他布局') + return + } + this.layout = layout + wsCache.set(CACHE_KEY.LAYOUT, this.layout) + }, + setTitle(title: string) { + this.title = title + }, + setIsDark(isDark: boolean) { + this.isDark = isDark + if (this.isDark) { + document.documentElement.classList.add('dark') + document.documentElement.classList.remove('light') + } else { + document.documentElement.classList.add('light') + document.documentElement.classList.remove('dark') + } + wsCache.set(CACHE_KEY.IS_DARK, this.isDark) + }, + setCurrentSize(currentSize: ElementPlusSize) { + this.currentSize = currentSize + wsCache.set('currentSize', this.currentSize) + }, + setMobile(mobile: boolean) { + this.mobile = mobile + }, + setTheme(theme: ThemeTypes) { + this.theme = Object.assign(this.theme, theme) + wsCache.set(CACHE_KEY.THEME, this.theme) + }, + setCssVarTheme() { + for (const key in this.theme) { + setCssVar(`--${humpToUnderline(key)}`, this.theme[key]) + } + }, + setFooter(footer: boolean) { + this.footer = footer + } + }, + persist: false +}) + +export const useAppStoreWithOut = () => { + return useAppStore(store) +} diff --git a/marketing-ui/admin-ui/src/store/modules/dict.ts b/marketing-ui/admin-ui/src/store/modules/dict.ts new file mode 100644 index 0000000..e239fb0 --- /dev/null +++ b/marketing-ui/admin-ui/src/store/modules/dict.ts @@ -0,0 +1,104 @@ +import { defineStore } from 'pinia' +import { store } from '../index' +// @ts-ignore +import { DictDataVO } from '@/api/system/dict/types' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +const { wsCache } = useCache('sessionStorage') +import { getSimpleDictDataList } from '@/api/system/dict/dict.data' + +export interface DictValueType { + value: any + label: string + clorType?: string + cssClass?: string +} +export interface DictTypeType { + dictType: string + dictValue: DictValueType[] +} +export interface DictState { + dictMap: Map + isSetDict: boolean +} + +export const useDictStore = defineStore('dict', { + state: (): DictState => ({ + dictMap: new Map(), + isSetDict: false + }), + getters: { + getDictMap(): Recordable { + const dictMap = wsCache.get(CACHE_KEY.DICT_CACHE) + if (dictMap) { + this.dictMap = dictMap + } + return this.dictMap + }, + getIsSetDict(): boolean { + return this.isSetDict + } + }, + actions: { + async setDictMap() { + const dictMap = wsCache.get(CACHE_KEY.DICT_CACHE) + if (dictMap) { + this.dictMap = dictMap + this.isSetDict = true + } else { + const res = await getSimpleDictDataList() + // 设置数据 + const dictDataMap = new Map() + res.forEach((dictData: DictDataVO) => { + // 获得 dictType 层级 + const enumValueObj = dictDataMap[dictData.dictType] + if (!enumValueObj) { + dictDataMap[dictData.dictType] = [] + } + // 处理 dictValue 层级 + dictDataMap[dictData.dictType].push({ + value: dictData.value, + label: dictData.label, + colorType: dictData.colorType, + cssClass: dictData.cssClass + }) + }) + this.dictMap = dictDataMap + this.isSetDict = true + wsCache.set(CACHE_KEY.DICT_CACHE, dictDataMap, { exp: 60 }) // 60 秒 过期 + } + }, + getDictByType(type: string) { + if (!this.isSetDict) { + this.setDictMap() + } + return this.dictMap[type] + }, + async resetDict() { + wsCache.delete(CACHE_KEY.DICT_CACHE) + const res = await getSimpleDictDataList() + // 设置数据 + const dictDataMap = new Map() + res.forEach((dictData: DictDataVO) => { + // 获得 dictType 层级 + const enumValueObj = dictDataMap[dictData.dictType] + if (!enumValueObj) { + dictDataMap[dictData.dictType] = [] + } + // 处理 dictValue 层级 + dictDataMap[dictData.dictType].push({ + value: dictData.value, + label: dictData.label, + colorType: dictData.colorType, + cssClass: dictData.cssClass + }) + }) + this.dictMap = dictDataMap + this.isSetDict = true + wsCache.set(CACHE_KEY.DICT_CACHE, dictDataMap, { exp: 60 }) // 60 秒 过期 + } + } +}) + +export const useDictStoreWithOut = () => { + return useDictStore(store) +} diff --git a/marketing-ui/admin-ui/src/store/modules/locale.ts b/marketing-ui/admin-ui/src/store/modules/locale.ts new file mode 100644 index 0000000..1fc772a --- /dev/null +++ b/marketing-ui/admin-ui/src/store/modules/locale.ts @@ -0,0 +1,59 @@ +import { defineStore } from 'pinia' +import { store } from '../index' +import zhCn from 'element-plus/es/locale/lang/zh-cn' +import en from 'element-plus/es/locale/lang/en' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +import { LocaleDropdownType } from '@/types/localeDropdown' + +const { wsCache } = useCache() + +const elLocaleMap = { + 'zh-CN': zhCn, + en: en +} +interface LocaleState { + currentLocale: LocaleDropdownType + localeMap: LocaleDropdownType[] +} + +export const useLocaleStore = defineStore('locales', { + state: (): LocaleState => { + return { + currentLocale: { + lang: wsCache.get(CACHE_KEY.LANG) || 'zh-CN', + elLocale: elLocaleMap[wsCache.get(CACHE_KEY.LANG) || 'zh-CN'] + }, + // 多语言 + localeMap: [ + { + lang: 'zh-CN', + name: '简体中文' + }, + { + lang: 'en', + name: 'English' + } + ] + } + }, + getters: { + getCurrentLocale(): LocaleDropdownType { + return this.currentLocale + }, + getLocaleMap(): LocaleDropdownType[] { + return this.localeMap + } + }, + actions: { + setCurrentLocale(localeMap: LocaleDropdownType) { + // this.locale = Object.assign(this.locale, localeMap) + this.currentLocale.lang = localeMap?.lang + this.currentLocale.elLocale = elLocaleMap[localeMap?.lang] + wsCache.set(CACHE_KEY.LANG, localeMap?.lang) + } + } +}) + +export const useLocaleStoreWithOut = () => { + return useLocaleStore(store) +} diff --git a/marketing-ui/admin-ui/src/store/modules/lock.ts b/marketing-ui/admin-ui/src/store/modules/lock.ts new file mode 100644 index 0000000..68ae1d7 --- /dev/null +++ b/marketing-ui/admin-ui/src/store/modules/lock.ts @@ -0,0 +1,48 @@ +import { defineStore } from 'pinia' +import { store } from '@/store' + +interface lockInfo { + isLock?: boolean + password?: string +} + +interface LockState { + lockInfo: lockInfo +} + +export const useLockStore = defineStore('lock', { + state: (): LockState => { + return { + lockInfo: { + // isLock: false, // 是否锁定屏幕 + // password: '' // 锁屏密码 + } + } + }, + getters: { + getLockInfo(): lockInfo { + return this.lockInfo + } + }, + actions: { + setLockInfo(lockInfo: lockInfo) { + this.lockInfo = lockInfo + }, + resetLockInfo() { + this.lockInfo = {} + }, + unLock(password: string) { + if (this.lockInfo?.password === password) { + this.resetLockInfo() + return true + } else { + return false + } + } + }, + persist: true +}) + +export const useLockStoreWithOut = () => { + return useLockStore(store) +} diff --git a/marketing-ui/admin-ui/src/store/modules/permission.ts b/marketing-ui/admin-ui/src/store/modules/permission.ts new file mode 100644 index 0000000..2ff8111 --- /dev/null +++ b/marketing-ui/admin-ui/src/store/modules/permission.ts @@ -0,0 +1,71 @@ +import { defineStore } from 'pinia' +import { store } from '@/store' +import { cloneDeep } from 'lodash-es' +import remainingRouter from '@/router/modules/remaining' +import { flatMultiLevelRoutes, generateRoute } from '@/utils/routerHelper' +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' + +const { wsCache } = useCache() + +export interface PermissionState { + routers: AppRouteRecordRaw[] + addRouters: AppRouteRecordRaw[] + menuTabRouters: AppRouteRecordRaw[] +} + +export const usePermissionStore = defineStore('permission', { + state: (): PermissionState => ({ + routers: [], + addRouters: [], + menuTabRouters: [] + }), + getters: { + getRouters(): AppRouteRecordRaw[] { + return this.routers + }, + getAddRouters(): AppRouteRecordRaw[] { + return flatMultiLevelRoutes(cloneDeep(this.addRouters)) + }, + getMenuTabRouters(): AppRouteRecordRaw[] { + return this.menuTabRouters + } + }, + actions: { + async generateRoutes(): Promise { + return new Promise(async (resolve) => { + // 获得菜单列表,它在登录的时候,setUserInfoAction 方法中已经进行获取 + let res: AppCustomRouteRecordRaw[] = [] + const roleRouters = wsCache.get(CACHE_KEY.ROLE_ROUTERS) + if (roleRouters) { + res = roleRouters as AppCustomRouteRecordRaw[] + } + const routerMap: AppRouteRecordRaw[] = generateRoute(res) + // 动态路由,404一定要放到最后面 + // preschooler:vue-router@4以后已支持静态404路由,此处可不再追加 + this.addRouters = routerMap.concat([ + { + path: '/:path(.*)*', + // redirect: '/404', + component: () => import('@/views/Error/404.vue'), + name: '404Page', + meta: { + hidden: true, + breadcrumb: false + } + } + ]) + // 渲染菜单的所有路由 + this.routers = cloneDeep(remainingRouter).concat(routerMap) + resolve() + }) + }, + setMenuTabRouters(routers: AppRouteRecordRaw[]): void { + this.menuTabRouters = routers + } + }, + persist: false +}) + +export const usePermissionStoreWithOut = () => { + return usePermissionStore(store) +} diff --git a/marketing-ui/admin-ui/src/store/modules/tagsView.ts b/marketing-ui/admin-ui/src/store/modules/tagsView.ts new file mode 100644 index 0000000..2b2d817 --- /dev/null +++ b/marketing-ui/admin-ui/src/store/modules/tagsView.ts @@ -0,0 +1,177 @@ +import router from '@/router' +import type { RouteLocationNormalizedLoaded } from 'vue-router' +import { getRawRoute } from '@/utils/routerHelper' +import { defineStore } from 'pinia' +import { store } from '../index' +import { findIndex } from '@/utils' +import { useUserStoreWithOut } from './user' + +export interface TagsViewState { + visitedViews: RouteLocationNormalizedLoaded[] + cachedViews: Set + selectedTag?: RouteLocationNormalizedLoaded +} + +export const useTagsViewStore = defineStore('tagsView', { + state: (): TagsViewState => ({ + visitedViews: [], + cachedViews: new Set(), + selectedTag: undefined + }), + getters: { + getVisitedViews(): RouteLocationNormalizedLoaded[] { + return this.visitedViews + }, + getCachedViews(): string[] { + return Array.from(this.cachedViews) + }, + getSelectedTag(): RouteLocationNormalizedLoaded | undefined { + return this.selectedTag + } + }, + actions: { + // 新增缓存和tag + addView(view: RouteLocationNormalizedLoaded): void { + this.addVisitedView(view) + this.addCachedView() + }, + // 新增tag + addVisitedView(view: RouteLocationNormalizedLoaded) { + if (this.visitedViews.some((v) => v.fullPath === view.fullPath)) return + if (view.meta?.noTagsView) return + const visitedView = Object.assign({}, view, { title: view.meta?.title || 'no-name' }) + + if (visitedView.meta) { + const titleSuffixList: string[] = [] + this.visitedViews.forEach((v) => { + if (v.path === visitedView.path && v.meta?.title === visitedView.meta?.title) { + titleSuffixList.push(v.meta?.titleSuffix || '1') + } + }) + if (titleSuffixList.length) { + let titleSuffix = 1 + while (titleSuffixList.includes(`${titleSuffix}`)) { + titleSuffix += 1 + } + visitedView.meta.titleSuffix = titleSuffix === 1 ? undefined : `${titleSuffix}` + } + } + + this.visitedViews.push(visitedView) + }, + // 新增缓存 + addCachedView() { + const cacheMap: Set = new Set() + for (const v of this.visitedViews) { + const item = getRawRoute(v) + const needCache = !item.meta?.noCache + if (!needCache) { + continue + } + const name = item.name as string + cacheMap.add(name) + } + if (Array.from(this.cachedViews).sort().toString() === Array.from(cacheMap).sort().toString()) + return + this.cachedViews = cacheMap + }, + // 删除某个 + delView(view: RouteLocationNormalizedLoaded) { + this.delVisitedView(view) + this.delCachedView() + }, + // 删除tag + delVisitedView(view: RouteLocationNormalizedLoaded) { + for (const [i, v] of this.visitedViews.entries()) { + if (v.fullPath === view.fullPath) { + this.visitedViews.splice(i, 1) + break + } + } + }, + // 删除缓存 + delCachedView() { + const route = router.currentRoute.value + const index = findIndex(this.getCachedViews, (v) => v === route.name) + if (index > -1) { + this.cachedViews.delete(this.getCachedViews[index]) + } + }, + // 删除所有缓存和tag + delAllViews() { + this.delAllVisitedViews() + this.delCachedView() + }, + // 删除所有tag + delAllVisitedViews() { + const userStore = useUserStoreWithOut() + + // const affixTags = this.visitedViews.filter((tag) => tag.meta.affix) + this.visitedViews = userStore.getUser + ? this.visitedViews.filter((tag) => tag?.meta?.affix) + : [] + }, + // 删除其他 + delOthersViews(view: RouteLocationNormalizedLoaded) { + this.delOthersVisitedViews(view) + this.addCachedView() + }, + // 删除其他tag + delOthersVisitedViews(view: RouteLocationNormalizedLoaded) { + this.visitedViews = this.visitedViews.filter((v) => { + return v?.meta?.affix || v.fullPath === view.fullPath + }) + }, + // 删除左侧 + delLeftViews(view: RouteLocationNormalizedLoaded) { + const index = findIndex( + this.visitedViews, + (v) => v.fullPath === view.fullPath + ) + if (index > -1) { + this.visitedViews = this.visitedViews.filter((v, i) => { + return v?.meta?.affix || v.fullPath === view.fullPath || i > index + }) + this.addCachedView() + } + }, + // 删除右侧 + delRightViews(view: RouteLocationNormalizedLoaded) { + const index = findIndex( + this.visitedViews, + (v) => v.fullPath === view.fullPath + ) + if (index > -1) { + this.visitedViews = this.visitedViews.filter((v, i) => { + return v?.meta?.affix || v.fullPath === view.fullPath || i < index + }) + this.addCachedView() + } + }, + updateVisitedView(view: RouteLocationNormalizedLoaded) { + for (let v of this.visitedViews) { + if (v.fullPath === view.fullPath) { + v = Object.assign(v, view) + break + } + } + }, + // 设置当前选中的 tag + setSelectedTag(tag: RouteLocationNormalizedLoaded) { + this.selectedTag = tag + }, + setTitle(title: string, path?: string) { + for (const v of this.visitedViews) { + if (v.path === (path ?? this.selectedTag?.path)) { + v.meta.title = title + break + } + } + } + }, + persist: false +}) + +export const useTagsViewStoreWithOut = () => { + return useTagsViewStore(store) +} diff --git a/marketing-ui/admin-ui/src/store/modules/user.ts b/marketing-ui/admin-ui/src/store/modules/user.ts new file mode 100644 index 0000000..c3920c7 --- /dev/null +++ b/marketing-ui/admin-ui/src/store/modules/user.ts @@ -0,0 +1,103 @@ +import { store } from '@/store' +import { defineStore } from 'pinia' +import { getAccessToken, removeToken } from '@/utils/auth' +import { CACHE_KEY, useCache, deleteUserCache } from '@/hooks/web/useCache' +import { getInfo, loginOut } from '@/api/login' + +const { wsCache } = useCache() + +interface UserVO { + id: number + avatar: string + nickname: string + deptId: number +} + +interface UserInfoVO { + // USER 缓存 + permissions: Set + roles: string[] + isSetUser: boolean + user: UserVO +} + +export const useUserStore = defineStore('admin-user', { + state: (): UserInfoVO => ({ + permissions: new Set(), + roles: [], + isSetUser: false, + user: { + id: 0, + avatar: '', + nickname: '', + deptId: 0 + } + }), + getters: { + getPermissions(): Set { + return this.permissions + }, + getRoles(): string[] { + return this.roles + }, + getIsSetUser(): boolean { + return this.isSetUser + }, + getUser(): UserVO { + return this.user + } + }, + actions: { + async setUserInfoAction() { + if (!getAccessToken()) { + this.resetState() + return null + } + let userInfo = wsCache.get(CACHE_KEY.USER) + if (!userInfo) { + userInfo = await getInfo() + } + this.permissions = new Set(userInfo.permissions) + this.roles = userInfo.roles + this.user = userInfo.user + this.isSetUser = true + wsCache.set(CACHE_KEY.USER, userInfo) + wsCache.set(CACHE_KEY.ROLE_ROUTERS, userInfo.menus) + }, + async setUserAvatarAction(avatar: string) { + const userInfo = wsCache.get(CACHE_KEY.USER) + // NOTE: 是否需要像`setUserInfoAction`一样判断`userInfo != null` + this.user.avatar = avatar + userInfo.user.avatar = avatar + wsCache.set(CACHE_KEY.USER, userInfo) + }, + async setUserNicknameAction(nickname: string) { + const userInfo = wsCache.get(CACHE_KEY.USER) + // NOTE: 是否需要像`setUserInfoAction`一样判断`userInfo != null` + this.user.nickname = nickname + userInfo.user.nickname = nickname + wsCache.set(CACHE_KEY.USER, userInfo) + }, + async loginOut() { + await loginOut() + removeToken() + deleteUserCache() // 删除用户缓存 + this.resetState() + }, + resetState() { + this.permissions = new Set() + this.roles = [] + this.isSetUser = false + this.user = { + id: 0, + avatar: '', + nickname: '', + deptId: 0 + } + } + } +}) + +export const useUserStoreWithOut = () => { + return useUserStore(store) +} diff --git a/marketing-ui/admin-ui/src/styles/FormCreate/fonts/fontello.woff b/marketing-ui/admin-ui/src/styles/FormCreate/fonts/fontello.woff new file mode 100644 index 0000000000000000000000000000000000000000..1e00f4995b27e72b52d7d0fcf602d0206c3d6c89 GIT binary patch literal 4252 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 literal 0 HcmV?d00001 diff --git a/marketing-ui/admin-ui/src/styles/FormCreate/index.scss b/marketing-ui/admin-ui/src/styles/FormCreate/index.scss new file mode 100644 index 0000000..bb62000 --- /dev/null +++ b/marketing-ui/admin-ui/src/styles/FormCreate/index.scss @@ -0,0 +1,22 @@ +// 使用字体图标来源 https://fontello.com/ + +@font-face { + font-family: 'fc-icon'; + src: url('@/styles/FormCreate/fonts/fontello.woff') format('woff'); +} + +.icon-doc-text:before { + content: '\f0f6'; +} + +.icon-server:before { + content: '\f233'; +} + +.icon-address-card-o:before { + content: '\f2bc'; +} + +.icon-user-o:before { + content: '\f2c0'; +} diff --git a/marketing-ui/admin-ui/src/styles/global.module.scss b/marketing-ui/admin-ui/src/styles/global.module.scss new file mode 100644 index 0000000..af793f0 --- /dev/null +++ b/marketing-ui/admin-ui/src/styles/global.module.scss @@ -0,0 +1,6 @@ +@use './variables.scss' as *; +// 导出变量 +:export { + namespace: $namespace; + elNamespace: $elNamespace; +} diff --git a/marketing-ui/admin-ui/src/styles/index.scss b/marketing-ui/admin-ui/src/styles/index.scss new file mode 100644 index 0000000..7607941 --- /dev/null +++ b/marketing-ui/admin-ui/src/styles/index.scss @@ -0,0 +1,37 @@ +@use './var.css'; +@use './FormCreate/index.scss'; +@use './theme.scss'; +@use 'element-plus/theme-chalk/dark/css-vars.css'; + +.reset-margin [class*='el-icon'] + span { + margin-left: 2px !important; +} + +// 解决抽屉弹出时,body宽度变化的问题 +.el-popup-parent--hidden { + width: 100% !important; +} + +// 解决表格内容超过表格总宽度后,横向滚动条前端顶不到表格边缘的问题 +.el-scrollbar__bar { + display: flex; + justify-content: flex-start; +} + +/* nprogress 适配 element-plus 的主题色 */ +#nprogress { + & .bar { + background-color: var(--el-color-primary) !important; + } + + & .peg { + box-shadow: + 0 0 10px var(--el-color-primary), + 0 0 5px var(--el-color-primary) !important; + } + + & .spinner-icon { + border-top-color: var(--el-color-primary); + border-left-color: var(--el-color-primary); + } +} diff --git a/marketing-ui/admin-ui/src/styles/theme.scss b/marketing-ui/admin-ui/src/styles/theme.scss new file mode 100644 index 0000000..39b03b3 --- /dev/null +++ b/marketing-ui/admin-ui/src/styles/theme.scss @@ -0,0 +1,6 @@ +// .text-color { +// color: var(--el-text-color-regular); +// } +// .dark .dark\:text-color { +// color: rgba(255, 255, 255, var(--dark-text-color)); +// } diff --git a/marketing-ui/admin-ui/src/styles/var.css b/marketing-ui/admin-ui/src/styles/var.css new file mode 100644 index 0000000..44f9405 --- /dev/null +++ b/marketing-ui/admin-ui/src/styles/var.css @@ -0,0 +1,74 @@ +:root { + --login-bg-color: #293146; + + --left-menu-max-width: 200px; + + --left-menu-min-width: 64px; + + --left-menu-bg-color: #001529; + + --left-menu-bg-light-color: #0f2438; + + --left-menu-bg-active-color: var(--el-color-primary); + + --left-menu-text-color: #bfcbd9; + + --left-menu-text-active-color: #fff; + + --left-menu-collapse-bg-active-color: var(--el-color-primary); + /* left menu end */ + + /* logo start */ + --logo-height: 50px; + + --logo-title-text-color: #fff; + /* logo end */ + + /* header start */ + --top-header-bg-color: '#fff'; + + --top-header-text-color: 'inherit'; + + --top-header-hover-color: #f6f6f6; + + --top-tool-height: var(--logo-height); + + --top-tool-p-x: 0; + + --tags-view-height: 35px; + /* header start */ + + /* tab menu start */ + --tab-menu-max-width: 80px; + + --tab-menu-min-width: 30px; + + --tab-menu-collapse-height: 36px; + /* tab menu end */ + + --app-content-padding: 20px; + + --app-content-bg-color: #f5f7f9; + + --app-footer-height: 50px; + + --transition-time-02: 0.2s; +} + +.dark { + --app-content-bg-color: var(--el-bg-color); +} + +html, +body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +*, +:after, +:before { + margin: 0; + padding: 0; + box-sizing: border-box; +} diff --git a/marketing-ui/admin-ui/src/styles/variables.scss b/marketing-ui/admin-ui/src/styles/variables.scss new file mode 100644 index 0000000..00b66f1 --- /dev/null +++ b/marketing-ui/admin-ui/src/styles/variables.scss @@ -0,0 +1,4 @@ +// 命名空间 +$namespace: v; +// el命名空间 +$elNamespace: el; diff --git a/marketing-ui/admin-ui/src/types/auto-components.d.ts b/marketing-ui/admin-ui/src/types/auto-components.d.ts new file mode 100644 index 0000000..0f4ef16 --- /dev/null +++ b/marketing-ui/admin-ui/src/types/auto-components.d.ts @@ -0,0 +1,179 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module 'vue' { + export interface GlobalComponents { + AppLinkInput: typeof import('./../components/AppLinkInput/index.vue')['default'] + AppLinkSelectDialog: typeof import('./../components/AppLinkInput/AppLinkSelectDialog.vue')['default'] + Backtop: typeof import('./../components/Backtop/src/Backtop.vue')['default'] + BoundaryEventTimer: typeof import('./../components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue')['default'] + CallActivity: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/CallActivity.vue')['default'] + CardTitle: typeof import('./../components/Card/src/CardTitle.vue')['default'] + ChildProcessNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/ChildProcessNode.vue')['default'] + ChildProcessNodeConfig: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/ChildProcessNodeConfig.vue')['default'] + ColorInput: typeof import('./../components/ColorInput/index.vue')['default'] + ComponentContainer: typeof import('./../components/DiyEditor/components/ComponentContainer.vue')['default'] + ComponentContainerProperty: typeof import('./../components/DiyEditor/components/ComponentContainerProperty.vue')['default'] + ComponentLibrary: typeof import('./../components/DiyEditor/components/ComponentLibrary.vue')['default'] + Condition: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/components/Condition.vue')['default'] + ConditionDialog: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/components/ConditionDialog.vue')['default'] + ConditionNodeConfig: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/ConditionNodeConfig.vue')['default'] + ConfigGlobal: typeof import('./../components/ConfigGlobal/src/ConfigGlobal.vue')['default'] + ContentDetailWrap: typeof import('./../components/ContentDetailWrap/src/ContentDetailWrap.vue')['default'] + ContentWrap: typeof import('./../components/ContentWrap/src/ContentWrap.vue')['default'] + CopperModal: typeof import('./../components/Cropper/src/CopperModal.vue')['default'] + CopyTaskNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/CopyTaskNode.vue')['default'] + CopyTaskNodeConfig: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue')['default'] + CountTo: typeof import('./../components/CountTo/src/CountTo.vue')['default'] + Crontab: typeof import('./../components/Crontab/src/Crontab.vue')['default'] + Cropper: typeof import('./../components/Cropper/src/Cropper.vue')['default'] + CropperAvatar: typeof import('./../components/Cropper/src/CropperAvatar.vue')['default'] + DelayTimerNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/DelayTimerNode.vue')['default'] + DelayTimerNodeConfig: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/DelayTimerNodeConfig.vue')['default'] + DeptSelectForm: typeof import('./../components/DeptSelectForm/index.vue')['default'] + Descriptions: typeof import('./../components/Descriptions/src/Descriptions.vue')['default'] + DescriptionsItemLabel: typeof import('./../components/Descriptions/src/DescriptionsItemLabel.vue')['default'] + Dialog: typeof import('./../components/Dialog/src/Dialog.vue')['default'] + DictSelect: typeof import('./../components/FormCreate/src/components/DictSelect.vue')['default'] + DictTag: typeof import('./../components/DictTag/src/DictTag.vue')['default'] + DiyEditor: typeof import('./../components/DiyEditor/index.vue')['default'] + DocAlert: typeof import('./../components/DocAlert/index.vue')['default'] + Draggable: typeof import('./../components/Draggable/index.vue')['default'] + Echart: typeof import('./../components/Echart/src/Echart.vue')['default'] + Editor: typeof import('./../components/Editor/src/Editor.vue')['default'] + ElAlert: typeof import('element-plus/es')['ElAlert'] + ElAutoResizer: typeof import('element-plus/es')['ElAutoResizer'] + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElButton: typeof import('element-plus/es')['ElButton'] + ElCard: typeof import('element-plus/es')['ElCard'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] + ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup'] + ElCol: typeof import('element-plus/es')['ElCol'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDescriptions: typeof import('element-plus/es')['ElDescriptions'] + ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] + ElementBaseInfo: typeof import('./../components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue')['default'] + ElementCustomConfig: typeof import('./../components/bpmnProcessDesigner/package/penal/custom-config/ElementCustomConfig.vue')['default'] + ElementForm: typeof import('./../components/bpmnProcessDesigner/package/penal/form/ElementForm.vue')['default'] + ElementListeners: typeof import('./../components/bpmnProcessDesigner/package/penal/listeners/ElementListeners.vue')['default'] + ElementMultiInstance: typeof import('./../components/bpmnProcessDesigner/package/penal/multi-instance/ElementMultiInstance.vue')['default'] + ElementOtherConfig: typeof import('./../components/bpmnProcessDesigner/package/penal/other/ElementOtherConfig.vue')['default'] + ElementProperties: typeof import('./../components/bpmnProcessDesigner/package/penal/properties/ElementProperties.vue')['default'] + ElementTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/ElementTask.vue')['default'] + ElForm: typeof import('element-plus/es')['ElForm'] + ElFormItem: typeof import('element-plus/es')['ElFormItem'] + ElIcon: typeof import('element-plus/es')['ElIcon'] + ElImage: typeof import('element-plus/es')['ElImage'] + ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElLink: typeof import('element-plus/es')['ElLink'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopover: typeof import('element-plus/es')['ElPopover'] + ElRadio: typeof import('element-plus/es')['ElRadio'] + ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] + ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElSkeleton: typeof import('element-plus/es')['ElSkeleton'] + ElSpace: typeof import('element-plus/es')['ElSpace'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTableV2: typeof import('element-plus/es')['ElTableV2'] + ElTabPane: typeof import('element-plus/es')['ElTabPane'] + ElTabs: typeof import('element-plus/es')['ElTabs'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElTimeline: typeof import('element-plus/es')['ElTimeline'] + ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] + ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTree: typeof import('element-plus/es')['ElTree'] + ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect'] + ElUpload: typeof import('element-plus/es')['ElUpload'] + EndEventNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/EndEventNode.vue')['default'] + Error: typeof import('./../components/Error/src/Error.vue')['default'] + ExclusiveNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/ExclusiveNode.vue')['default'] + FlowCondition: typeof import('./../components/bpmnProcessDesigner/package/penal/flow-condition/FlowCondition.vue')['default'] + Form: typeof import('./../components/Form/src/Form.vue')['default'] + Highlight: typeof import('./../components/Highlight/src/Highlight.vue')['default'] + HttpRequestParamSetting: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestParamSetting.vue')['default'] + HttpRequestSetting: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/components/HttpRequestSetting.vue')['default'] + Icon: typeof import('./../components/Icon/src/Icon.vue')['default'] + IconSelect: typeof import('./../components/Icon/src/IconSelect.vue')['default'] + IFrame: typeof import('./../components/IFrame/src/IFrame.vue')['default'] + ImageViewer: typeof import('./../components/ImageViewer/src/ImageViewer.vue')['default'] + InclusiveNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/InclusiveNode.vue')['default'] + Infotip: typeof import('./../components/Infotip/src/Infotip.vue')['default'] + InputPassword: typeof import('./../components/InputPassword/src/InputPassword.vue')['default'] + InputWithColor: typeof import('./../components/InputWithColor/index.vue')['default'] + MagicCubeEditor: typeof import('./../components/MagicCubeEditor/index.vue')['default'] + MarkdownView: typeof import('./../components/MarkdownView/index.vue')['default'] + NodeHandler: typeof import('./../components/SimpleProcessDesignerV2/src/NodeHandler.vue')['default'] + OperateLogV2: typeof import('./../components/OperateLogV2/src/OperateLogV2.vue')['default'] + Pagination: typeof import('./../components/Pagination/index.vue')['default'] + ParallelNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/ParallelNode.vue')['default'] + ProcessDesigner: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue')['default'] + ProcessExpressionDialog: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ProcessExpressionDialog.vue')['default'] + ProcessListenerDialog: typeof import('./../components/bpmnProcessDesigner/package/penal/listeners/ProcessListenerDialog.vue')['default'] + ProcessNodeTree: typeof import('./../components/SimpleProcessDesignerV2/src/ProcessNodeTree.vue')['default'] + ProcessPalette: typeof import('./../components/bpmnProcessDesigner/package/palette/ProcessPalette.vue')['default'] + ProcessViewer: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessViewer.vue')['default'] + PropertiesPanel: typeof import('./../components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue')['default'] + Qrcode: typeof import('./../components/Qrcode/src/Qrcode.vue')['default'] + ReceiveTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/RouterNode.vue')['default'] + RouterNodeConfig: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/RouterNodeConfig.vue')['default'] + RouterSearch: typeof import('./../components/RouterSearch/index.vue')['default'] + RouterView: typeof import('vue-router')['RouterView'] + ScriptTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ScriptTask.vue')['default'] + Search: typeof import('./../components/Search/src/Search.vue')['default'] + ServiceTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ServiceTask.vue')['default'] + ShortcutDateRangePicker: typeof import('./../components/ShortcutDateRangePicker/index.vue')['default'] + SignalAndMessage: typeof import('./../components/bpmnProcessDesigner/package/penal/signal-message/SignalAndMessage.vue')['default'] + SimpleProcessDesigner: typeof import('./../components/SimpleProcessDesignerV2/src/SimpleProcessDesigner.vue')['default'] + SimpleProcessModel: typeof import('./../components/SimpleProcessDesignerV2/src/SimpleProcessModel.vue')['default'] + SimpleProcessViewer: typeof import('./../components/SimpleProcessDesignerV2/src/SimpleProcessViewer.vue')['default'] + StartUserNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/StartUserNode.vue')['default'] + StartUserNodeConfig: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue')['default'] + Sticky: typeof import('./../components/Sticky/src/Sticky.vue')['default'] + SummaryCard: typeof import('./../components/SummaryCard/index.vue')['default'] + Table: typeof import('./../components/Table/src/Table.vue')['default'] + TableSelectForm: typeof import('./../components/Table/src/TableSelectForm.vue')['default'] + Tinyflow: typeof import('./../components/Tinyflow/Tinyflow.vue')['default'] + Tooltip: typeof import('./../components/Tooltip/src/Tooltip.vue')['default'] + TriggerNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/TriggerNode.vue')['default'] + TriggerNodeConfig: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/TriggerNodeConfig.vue')['default'] + UploadFile: typeof import('./../components/UploadFile/src/UploadFile.vue')['default'] + UploadImg: typeof import('./../components/UploadFile/src/UploadImg.vue')['default'] + UploadImgs: typeof import('./../components/UploadFile/src/UploadImgs.vue')['default'] + UserSelectForm: typeof import('./../components/UserSelectForm/index.vue')['default'] + UserTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/UserTask.vue')['default'] + UserTaskCustomConfig: typeof import('./../components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue')['default'] + UserTaskListener: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/components/UserTaskListener.vue')['default'] + UserTaskListeners: typeof import('./../components/bpmnProcessDesigner/package/penal/listeners/UserTaskListeners.vue')['default'] + UserTaskNode: typeof import('./../components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue')['default'] + UserTaskNodeConfig: typeof import('./../components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue')['default'] + Verify: typeof import('./../components/Verifition/src/Verify.vue')['default'] + VerifyPoints: typeof import('./../components/Verifition/src/Verify/VerifyPoints.vue')['default'] + VerifySlide: typeof import('./../components/Verifition/src/Verify/VerifySlide.vue')['default'] + VerticalButtonGroup: typeof import('./../components/VerticalButtonGroup/index.vue')['default'] + XButton: typeof import('./../components/XButton/src/XButton.vue')['default'] + XTextButton: typeof import('./../components/XButton/src/XTextButton.vue')['default'] + } + export interface ComponentCustomProperties { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/marketing-ui/admin-ui/src/types/configGlobal.d.ts b/marketing-ui/admin-ui/src/types/configGlobal.d.ts new file mode 100644 index 0000000..f6d7b3c --- /dev/null +++ b/marketing-ui/admin-ui/src/types/configGlobal.d.ts @@ -0,0 +1,4 @@ +import { ElementPlusSize } from './elementPlus' +export interface ConfigGlobalTypes { + size?: ElementPlusSize +} diff --git a/marketing-ui/admin-ui/src/types/contextMenu.d.ts b/marketing-ui/admin-ui/src/types/contextMenu.d.ts new file mode 100644 index 0000000..0738d0e --- /dev/null +++ b/marketing-ui/admin-ui/src/types/contextMenu.d.ts @@ -0,0 +1,7 @@ +export type contextMenuSchema = { + disabled?: boolean + divided?: boolean + icon?: string + label: string + command?: (item: contextMenuSchema) => void +} diff --git a/marketing-ui/admin-ui/src/types/descriptions.d.ts b/marketing-ui/admin-ui/src/types/descriptions.d.ts new file mode 100644 index 0000000..af6d68c --- /dev/null +++ b/marketing-ui/admin-ui/src/types/descriptions.d.ts @@ -0,0 +1,14 @@ +export interface DescriptionsSchema { + span?: number // 占多少分 + field: string // 字段名 + label?: string // label名 + mappedField?: string // 字段映射 + width?: string | number + minWidth?: string | number + align?: 'left' | 'center' | 'right' + labelAlign?: 'left' | 'center' | 'right' + className?: string + labelClassName?: string + dateFormat?: string // add by 星语:支持时间的格式化 + dictType?: string // add by 星语:支持 dict 字典数据 +} diff --git a/marketing-ui/admin-ui/src/types/elementPlus.d.ts b/marketing-ui/admin-ui/src/types/elementPlus.d.ts new file mode 100644 index 0000000..2c6b76e --- /dev/null +++ b/marketing-ui/admin-ui/src/types/elementPlus.d.ts @@ -0,0 +1,3 @@ +export type ElementPlusSize = 'default' | 'small' | 'large' + +export type ElementPlusInfoType = 'success' | 'info' | 'warning' | 'danger' diff --git a/marketing-ui/admin-ui/src/types/form.d.ts b/marketing-ui/admin-ui/src/types/form.d.ts new file mode 100644 index 0000000..980c8cc --- /dev/null +++ b/marketing-ui/admin-ui/src/types/form.d.ts @@ -0,0 +1,44 @@ +import type { CSSProperties } from 'vue' +import { ColProps, ComponentProps, ComponentName } from '@/types/components' +import type { AxiosPromise } from 'axios' + +export type FormSetPropsType = { + field: string + path: string + value: any +} + +export type FormValueType = string | number | string[] | number[] | boolean | undefined | null + +export type FormItemProps = { + labelWidth?: string | number + required?: boolean + rules?: Recordable + error?: string + showMessage?: boolean + inlineMessage?: boolean + style?: CSSProperties +} + +export type FormSchema = { + // 唯一值 + field: string + // 标题 + label?: string + // 提示 + labelMessage?: string + // col组件属性 + colProps?: ColProps + // 表单组件属性,slots对应的是表单组件的插槽,规则:${field}-xxx,具体可以查看element-plus文档 + componentProps?: { slots?: Recordable } & ComponentProps + // formItem组件属性 + formItemProps?: FormItemProps + // 渲染的组件 + component?: ComponentName + // 初始值 + value?: FormValueType + // 是否隐藏 + hidden?: boolean + // 远程加载下拉项 + api?: () => AxiosPromise +} diff --git a/marketing-ui/admin-ui/src/types/icon.d.ts b/marketing-ui/admin-ui/src/types/icon.d.ts new file mode 100644 index 0000000..d1ffcdb --- /dev/null +++ b/marketing-ui/admin-ui/src/types/icon.d.ts @@ -0,0 +1,5 @@ +export interface IconTypes { + size?: number + color?: string + icon: string +} diff --git a/marketing-ui/admin-ui/src/types/infoTip.d.ts b/marketing-ui/admin-ui/src/types/infoTip.d.ts new file mode 100644 index 0000000..6eff083 --- /dev/null +++ b/marketing-ui/admin-ui/src/types/infoTip.d.ts @@ -0,0 +1,4 @@ +export interface TipSchema { + label: string + keys?: string[] +} diff --git a/marketing-ui/admin-ui/src/types/layout.d.ts b/marketing-ui/admin-ui/src/types/layout.d.ts new file mode 100644 index 0000000..cad3e2a --- /dev/null +++ b/marketing-ui/admin-ui/src/types/layout.d.ts @@ -0,0 +1 @@ +export type LayoutType = 'classic' | 'topLeft' | 'top' | 'cutMenu' diff --git a/marketing-ui/admin-ui/src/types/localeDropdown.d.ts b/marketing-ui/admin-ui/src/types/localeDropdown.d.ts new file mode 100644 index 0000000..c749dce --- /dev/null +++ b/marketing-ui/admin-ui/src/types/localeDropdown.d.ts @@ -0,0 +1,10 @@ +export interface Language { + el: Recordable + name: string +} + +export interface LocaleDropdownType { + lang: LocaleType + name?: string + elLocale?: Language +} diff --git a/marketing-ui/admin-ui/src/types/qrcode.d.ts b/marketing-ui/admin-ui/src/types/qrcode.d.ts new file mode 100644 index 0000000..86cdf0b --- /dev/null +++ b/marketing-ui/admin-ui/src/types/qrcode.d.ts @@ -0,0 +1,9 @@ +export interface QrcodeLogo { + src?: string + logoSize?: number + bgColor?: string + borderSize?: number + crossOrigin?: string + borderRadius?: number + logoRadius?: number +} diff --git a/marketing-ui/admin-ui/src/types/table.d.ts b/marketing-ui/admin-ui/src/types/table.d.ts new file mode 100644 index 0000000..9cb4205 --- /dev/null +++ b/marketing-ui/admin-ui/src/types/table.d.ts @@ -0,0 +1,44 @@ +export type TableColumn = { + field: string + label?: string + width?: number | string + fixed?: 'left' | 'right' + children?: TableColumn[] +} & Recordable + +export type VxeTableColumn = { + field: string + title?: string + children?: TableColumn[] +} & Recordable + +export type TableSlotDefault = { + row: Recordable + column: TableColumn + $index: number +} & Recordable + +export interface Pagination { + small?: boolean + background?: boolean + pageSize?: number + defaultPageSize?: number + total?: number + pageCount?: number + pagerCount?: number + currentPage?: number + defaultCurrentPage?: number + layout?: string + pageSizes?: number[] + popperClass?: string + prevText?: string + nextText?: string + disabled?: boolean + hideOnSinglePage?: boolean +} + +export interface TableSetPropsType { + field: string + path: string + value: any +} diff --git a/marketing-ui/admin-ui/src/types/theme.d.ts b/marketing-ui/admin-ui/src/types/theme.d.ts new file mode 100644 index 0000000..ad649b0 --- /dev/null +++ b/marketing-ui/admin-ui/src/types/theme.d.ts @@ -0,0 +1,16 @@ +export type ThemeTypes = { + elColorPrimary?: string + leftMenuBorderColor?: string + leftMenuBgColor?: string + leftMenuBgLightColor?: string + leftMenuBgActiveColor?: string + leftMenuCollapseBgActiveColor?: string + leftMenuTextColor?: string + leftMenuTextActiveColor?: string + logoTitleTextColor?: string + logoBorderColor?: string + topHeaderBgColor?: string + topHeaderTextColor?: string + topHeaderHoverColor?: string + topToolBorderColor?: string +} diff --git a/marketing-ui/admin-ui/src/utils/Logger.ts b/marketing-ui/admin-ui/src/utils/Logger.ts new file mode 100644 index 0000000..ca58df2 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/Logger.ts @@ -0,0 +1,100 @@ +const isArray = function (obj: any): boolean { + return Object.prototype.toString.call(obj) === '[object Array]' +} + +const Logger = () => {} + +Logger.typeColor = function (type: string) { + let color = '' + switch (type) { + case 'primary': + color = '#2d8cf0' + break + case 'success': + color = '#19be6b' + break + case 'info': + color = '#909399' + break + case 'warn': + color = '#ff9900' + break + case 'error': + color = '#f03f14' + break + default: + color = '#35495E' + break + } + return color +} + +Logger.print = function (type = 'default', text: any, back = false) { + if (typeof text === 'object') { + // 如果是對象則調用打印對象方式 + isArray(text) ? console.table(text) : console.dir(text) + return + } + if (back) { + // 如果是打印帶背景圖的 + console.log( + `%c ${text} `, + `background:${Logger.typeColor(type)}; padding: 2px; border-radius: 4px; color: #fff;` + ) + } else { + console.log( + `%c ${text} `, + `border: 1px solid ${Logger.typeColor(type)}; + padding: 2px; border-radius: 4px; + color: ${Logger.typeColor(type)};` + ) + } +} + +Logger.printBack = function (type = 'primary', text) { + this.print(type, text, true) +} + +Logger.pretty = function (type = 'primary', title, text) { + if (typeof text === 'object') { + console.group('Console Group', title) + console.log( + `%c ${title}`, + `background:${Logger.typeColor(type)};border:1px solid ${Logger.typeColor(type)}; + padding: 1px; border-radius: 4px; color: #fff;` + ) + isArray(text) ? console.table(text) : console.dir(text) + console.groupEnd() + return + } + console.log( + `%c ${title} %c ${text} %c`, + `background:${Logger.typeColor(type)};border:1px solid ${Logger.typeColor(type)}; + padding: 1px; border-radius: 4px 0 0 4px; color: #fff;`, + `border:1px solid ${Logger.typeColor(type)}; + padding: 1px; border-radius: 0 4px 4px 0; color: ${Logger.typeColor(type)};`, + 'background:transparent' + ) +} + +Logger.prettyPrimary = function (title, ...text) { + text.forEach((t) => this.pretty('primary', title, t)) +} + +Logger.prettySuccess = function (title, ...text) { + text.forEach((t) => this.pretty('success', title, t)) +} + +Logger.prettyWarn = function (title, ...text) { + text.forEach((t) => this.pretty('warn', title, t)) +} + +Logger.prettyError = function (title, ...text) { + text.forEach((t) => this.pretty('error', title, t)) +} + +Logger.prettyInfo = function (title, ...text) { + text.forEach((t) => this.pretty('info', title, t)) +} + +export default Logger diff --git a/marketing-ui/admin-ui/src/utils/auth.ts b/marketing-ui/admin-ui/src/utils/auth.ts new file mode 100644 index 0000000..daeb3fa --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/auth.ts @@ -0,0 +1,63 @@ +import { useCache, CACHE_KEY } from '@/hooks/web/useCache' +import { TokenType } from '@/api/login/types' +import { decrypt, encrypt } from '@/utils/jsencrypt' + +const { wsCache } = useCache() + +const AccessTokenKey = 'ACCESS_TOKEN' +const RefreshTokenKey = 'REFRESH_TOKEN' + +// 获取token +export const getAccessToken = () => { + // 此处与TokenKey相同,此写法解决初始化时Cookies中不存在TokenKey报错 + const accessToken = wsCache.get(AccessTokenKey) + return accessToken ? accessToken : wsCache.get('ACCESS_TOKEN') +} + +// 刷新token +export const getRefreshToken = () => { + return wsCache.get(RefreshTokenKey) +} + +// 设置token +export const setToken = (token: TokenType) => { + wsCache.set(RefreshTokenKey, token.refreshToken) + wsCache.set(AccessTokenKey, token.accessToken) +} + +// 删除token +export const removeToken = () => { + wsCache.delete(AccessTokenKey) + wsCache.delete(RefreshTokenKey) +} + +/** 格式化token(jwt格式) */ +export const formatToken = (token: string): string => { + return 'Bearer ' + token +} +// ========== 账号相关 ========== + +export type LoginFormType = { + tenantName: string + username: string + password: string + rememberMe: boolean +} + +export const getLoginForm = () => { + const loginForm: LoginFormType = wsCache.get(CACHE_KEY.LoginForm) + if (loginForm) { + loginForm.password = decrypt(loginForm.password) as string + } + return loginForm +} + +export const setLoginForm = (loginForm: LoginFormType) => { + loginForm.password = encrypt(loginForm.password) as string + wsCache.set(CACHE_KEY.LoginForm, loginForm, { exp: 30 * 24 * 60 * 60 }) +} + +export const removeLoginForm = () => { + wsCache.delete(CACHE_KEY.LoginForm) +} + diff --git a/marketing-ui/admin-ui/src/utils/color.ts b/marketing-ui/admin-ui/src/utils/color.ts new file mode 100644 index 0000000..13424e5 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/color.ts @@ -0,0 +1,174 @@ +/** + * 判断是否 十六进制颜色值. + * 输入形式可为 #fff000 #f00 + * + * @param String color 十六进制颜色值 + * @return Boolean + */ +export const isHexColor = (color: string) => { + const reg = /^#([0-9a-fA-F]{3}|[0-9a-fA-f]{6})$/ + return reg.test(color) +} + +/** + * RGB 颜色值转换为 十六进制颜色值. + * r, g, 和 b 需要在 [0, 255] 范围内 + * + * @return String 类似#ff00ff + * @param r + * @param g + * @param b + */ +export const rgbToHex = (r: number, g: number, b: number) => { + // tslint:disable-next-line:no-bitwise + const hex = ((r << 16) | (g << 8) | b).toString(16) + return '#' + new Array(Math.abs(hex.length - 7)).join('0') + hex +} + +/** + * Transform a HEX color to its RGB representation + * @param {string} hex The color to transform + * @returns The RGB representation of the passed color + */ +export const hexToRGB = (hex: string, opacity?: number) => { + let sHex = hex.toLowerCase() + if (isHexColor(hex)) { + if (sHex.length === 4) { + let sColorNew = '#' + for (let i = 1; i < 4; i += 1) { + sColorNew += sHex.slice(i, i + 1).concat(sHex.slice(i, i + 1)) + } + sHex = sColorNew + } + const sColorChange: number[] = [] + for (let i = 1; i < 7; i += 2) { + sColorChange.push(parseInt('0x' + sHex.slice(i, i + 2))) + } + return opacity + ? 'RGBA(' + sColorChange.join(',') + ',' + opacity + ')' + : 'RGB(' + sColorChange.join(',') + ')' + } + return sHex +} + +export const colorIsDark = (color: string) => { + if (!isHexColor(color)) return + const [r, g, b] = hexToRGB(color) + .replace(/(?:\(|\)|rgb|RGB)*/g, '') + .split(',') + .map((item) => Number(item)) + return r * 0.299 + g * 0.578 + b * 0.114 < 192 +} + +/** + * Darkens a HEX color given the passed percentage + * @param {string} color The color to process + * @param {number} amount The amount to change the color by + * @returns {string} The HEX representation of the processed color + */ +export const darken = (color: string, amount: number) => { + color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color + amount = Math.trunc((255 * amount) / 100) + return `#${subtractLight(color.substring(0, 2), amount)}${subtractLight( + color.substring(2, 4), + amount + )}${subtractLight(color.substring(4, 6), amount)}` +} + +/** + * Lightens a 6 char HEX color according to the passed percentage + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed color represented as HEX + */ +export const lighten = (color: string, amount: number) => { + color = color.indexOf('#') >= 0 ? color.substring(1, color.length) : color + amount = Math.trunc((255 * amount) / 100) + return `#${addLight(color.substring(0, 2), amount)}${addLight( + color.substring(2, 4), + amount + )}${addLight(color.substring(4, 6), amount)}` +} + +/* Suma el porcentaje indicado a un color (RR, GG o BB) hexadecimal para aclararlo */ +/** + * Sums the passed percentage to the R, G or B of a HEX color + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed part of the color + */ +const addLight = (color: string, amount: number) => { + const cc = parseInt(color, 16) + amount + const c = cc > 255 ? 255 : cc + return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}` +} + +/** + * Calculates luminance of an rgb color + * @param {number} r red + * @param {number} g green + * @param {number} b blue + */ +const luminanace = (r: number, g: number, b: number) => { + const a = [r, g, b].map((v) => { + v /= 255 + return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4) + }) + return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722 +} + +/** + * Calculates contrast between two rgb colors + * @param {string} rgb1 rgb color 1 + * @param {string} rgb2 rgb color 2 + */ +const contrast = (rgb1: string[], rgb2: number[]) => { + return ( + (luminanace(~~rgb1[0], ~~rgb1[1], ~~rgb1[2]) + 0.05) / + (luminanace(rgb2[0], rgb2[1], rgb2[2]) + 0.05) + ) +} + +/** + * Determines what the best text color is (black or white) based con the contrast with the background + * @param hexColor - Last selected color by the user + */ +export const calculateBestTextColor = (hexColor: string) => { + const rgbColor = hexToRGB(hexColor.substring(1)) + const contrastWithBlack = contrast(rgbColor.split(','), [0, 0, 0]) + + return contrastWithBlack >= 12 ? '#000000' : '#FFFFFF' +} + +/** + * Subtracts the indicated percentage to the R, G or B of a HEX color + * @param {string} color The color to change + * @param {number} amount The amount to change the color by + * @returns {string} The processed part of the color + */ +const subtractLight = (color: string, amount: number) => { + const cc = parseInt(color, 16) - amount + const c = cc < 0 ? 0 : cc + return c.toString(16).length > 1 ? c.toString(16) : `0${c.toString(16)}` +} + +// 预设颜色 +export const PREDEFINE_COLORS = [ + '#ff4500', + '#ff8c00', + '#ffd700', + '#90ee90', + '#00ced1', + '#1e90ff', + '#c71585', + '#409EFF', + '#909399', + '#C0C4CC', + '#b7390b', + '#ff7800', + '#fad400', + '#5b8c5f', + '#00babd', + '#1f73c3', + '#711f57' +] diff --git a/marketing-ui/admin-ui/src/utils/constants.ts b/marketing-ui/admin-ui/src/utils/constants.ts new file mode 100644 index 0000000..f673bdc --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/constants.ts @@ -0,0 +1,465 @@ +/** + * Created by 芋道源码 + * + * 枚举类 + */ + +// ========== COMMON 模块 ========== +// 全局通用状态枚举 +export const CommonStatusEnum = { + ENABLE: 0, // 开启 + DISABLE: 1 // 禁用 +} + +// 全局用户类型枚举 +export const UserTypeEnum = { + MEMBER: 1, // 会员 + ADMIN: 2 // 管理员 +} + +// ========== SYSTEM 模块 ========== +/** + * 菜单的类型枚举 + */ +export const SystemMenuTypeEnum = { + DIR: 1, // 目录 + MENU: 2, // 菜单 + BUTTON: 3 // 按钮 +} + +/** + * 角色的类型枚举 + */ +export const SystemRoleTypeEnum = { + SYSTEM: 1, // 内置角色 + CUSTOM: 2 // 自定义角色 +} + +/** + * 数据权限的范围枚举 + */ +export const SystemDataScopeEnum = { + ALL: 1, // 全部数据权限 + DEPT_CUSTOM: 2, // 指定部门数据权限 + DEPT_ONLY: 3, // 部门数据权限 + DEPT_AND_CHILD: 4, // 部门及以下数据权限 + DEPT_SELF: 5 // 仅本人数据权限 +} + +/** + * 用户的社交平台的类型枚举 + */ +export const SystemUserSocialTypeEnum = { + DINGTALK: { + title: '钉钉', + type: 20, + source: 'dingtalk', + img: 'https://s1.ax1x.com/2022/05/22/OzMDRs.png' + }, + WECHAT_ENTERPRISE: { + title: '企业微信', + type: 30, + source: 'wechat_enterprise', + img: 'https://s1.ax1x.com/2022/05/22/OzMrzn.png' + } +} + +// ========== INFRA 模块 ========== +/** + * 代码生成模板类型 + */ +export const InfraCodegenTemplateTypeEnum = { + CRUD: 1, // 基础 CRUD + TREE: 2, // 树形 CRUD + SUB: 3 // 主子表 CRUD +} + +/** + * 任务状态的枚举 + */ +export const InfraJobStatusEnum = { + INIT: 0, // 初始化中 + NORMAL: 1, // 运行中 + STOP: 2 // 暂停运行 +} + +/** + * API 异常数据的处理状态 + */ +export const InfraApiErrorLogProcessStatusEnum = { + INIT: 0, // 未处理 + DONE: 1, // 已处理 + IGNORE: 2 // 已忽略 +} + +// ========== PAY 模块 ========== +/** + * 支付渠道枚举 + */ +export const PayChannelEnum = { + WX_PUB: { + code: 'wx_pub', + name: '微信 JSAPI 支付' + }, + WX_LITE: { + code: 'wx_lite', + name: '微信小程序支付' + }, + WX_APP: { + code: 'wx_app', + name: '微信 APP 支付' + }, + WX_NATIVE: { + code: 'wx_native', + name: '微信 Native 支付' + }, + WX_WAP: { + code: 'wx_wap', + name: '微信 WAP 网站支付' + }, + WX_BAR: { + code: 'wx_bar', + name: '微信条码支付' + }, + ALIPAY_PC: { + code: 'alipay_pc', + name: '支付宝 PC 网站支付' + }, + ALIPAY_WAP: { + code: 'alipay_wap', + name: '支付宝 WAP 网站支付' + }, + ALIPAY_APP: { + code: 'alipay_app', + name: '支付宝 APP 支付' + }, + ALIPAY_QR: { + code: 'alipay_qr', + name: '支付宝扫码支付' + }, + ALIPAY_BAR: { + code: 'alipay_bar', + name: '支付宝条码支付' + }, + WALLET: { + code: 'wallet', + name: '钱包支付' + }, + MOCK: { + code: 'mock', + name: '模拟支付' + } +} + +/** + * 支付的展示模式每局 + */ +export const PayDisplayModeEnum = { + URL: { + mode: 'url' + }, + IFRAME: { + mode: 'iframe' + }, + FORM: { + mode: 'form' + }, + QR_CODE: { + mode: 'qr_code' + }, + APP: { + mode: 'app' + } +} + +/** + * 支付类型枚举 + */ +export const PayType = { + WECHAT: 'WECHAT', + ALIPAY: 'ALIPAY', + MOCK: 'MOCK' +} + +/** + * 支付订单状态枚举 + */ +export const PayOrderStatusEnum = { + WAITING: { + status: 0, + name: '未支付' + }, + SUCCESS: { + status: 10, + name: '已支付' + }, + CLOSED: { + status: 20, + name: '未支付' + } +} + +// ========== MALL - 商品模块 ========== +/** + * 商品 SPU 状态 + */ +export const ProductSpuStatusEnum = { + RECYCLE: { + status: -1, + name: '回收站' + }, + DISABLE: { + status: 0, + name: '下架' + }, + ENABLE: { + status: 1, + name: '上架' + } +} + +// ========== MALL - 营销模块 ========== +/** + * 优惠劵模板的有限期类型的枚举 + */ +export const CouponTemplateValidityTypeEnum = { + DATE: { + type: 1, + name: '固定日期可用' + }, + TERM: { + type: 2, + name: '领取之后可用' + } +} + +/** + * 优惠劵模板的领取方式的枚举 + */ +export const CouponTemplateTakeTypeEnum = { + USER: { + type: 1, + name: '直接领取' + }, + ADMIN: { + type: 2, + name: '指定发放' + }, + REGISTER: { + type: 3, + name: '新人券' + } +} + +/** + * 营销的商品范围枚举 + */ +export const PromotionProductScopeEnum = { + ALL: { + scope: 1, + name: '通用劵' + }, + SPU: { + scope: 2, + name: '商品劵' + }, + CATEGORY: { + scope: 3, + name: '品类劵' + } +} + +/** + * 营销的条件类型枚举 + */ +export const PromotionConditionTypeEnum = { + PRICE: { + type: 10, + name: '满 N 元' + }, + COUNT: { + type: 20, + name: '满 N 件' + } +} + +/** + * 优惠类型枚举 + */ +export const PromotionDiscountTypeEnum = { + PRICE: { + type: 1, + name: '满减' + }, + PERCENT: { + type: 2, + name: '折扣' + } +} + +// ========== MALL - 交易模块 ========== +/** + * 分销关系绑定模式枚举 + */ +export const BrokerageBindModeEnum = { + ANYTIME: { + mode: 1, + name: '首次绑定' + }, + REGISTER: { + mode: 2, + name: '注册绑定' + }, + OVERRIDE: { + mode: 3, + name: '覆盖绑定' + } +} +/** + * 分佣模式枚举 + */ +export const BrokerageEnabledConditionEnum = { + ALL: { + condition: 1, + name: '人人分销' + }, + ADMIN: { + condition: 2, + name: '指定分销' + } +} +/** + * 佣金记录业务类型枚举 + */ +export const BrokerageRecordBizTypeEnum = { + ORDER: { + type: 1, + name: '获得推广佣金' + }, + WITHDRAW: { + type: 2, + name: '提现申请' + } +} +/** + * 佣金提现状态枚举 + */ +export const BrokerageWithdrawStatusEnum = { + AUDITING: { + status: 0, + name: '审核中' + }, + AUDIT_SUCCESS: { + status: 10, + name: '审核通过' + }, + AUDIT_FAIL: { + status: 20, + name: '审核不通过' + }, + WITHDRAW_SUCCESS: { + status: 11, + name: '提现成功' + }, + WITHDRAW_FAIL: { + status: 21, + name: '提现失败' + } +} +/** + * 佣金提现类型枚举 + */ +export const BrokerageWithdrawTypeEnum = { + WALLET: { + type: 1, + name: '钱包' + }, + BANK: { + type: 2, + name: '银行卡' + }, + WECHAT: { + type: 3, + name: '微信' + }, + ALIPAY: { + type: 4, + name: '支付宝' + } +} + +/** + * 配送方式枚举 + */ +export const DeliveryTypeEnum = { + EXPRESS: { + type: 1, + name: '快递发货' + }, + PICK_UP: { + type: 2, + name: '到店自提' + } +} +/** + * 交易订单 - 状态 + */ +export const TradeOrderStatusEnum = { + UNPAID: { + status: 0, + name: '待支付' + }, + UNDELIVERED: { + status: 10, + name: '待发货' + }, + DELIVERED: { + status: 20, + name: '已发货' + }, + COMPLETED: { + status: 30, + name: '已完成' + }, + CANCELED: { + status: 40, + name: '已取消' + } +} + +// ========== ERP - 企业资源计划 ========== + +export const ErpBizType = { + PURCHASE_ORDER: 10, + PURCHASE_IN: 11, + PURCHASE_RETURN: 12, + SALE_ORDER: 20, + SALE_OUT: 21, + SALE_RETURN: 22 +} + +// ========== BPM 模块 ========== + +export const BpmModelType = { + BPMN: 10, // BPMN 设计器 + SIMPLE: 20 // 简易设计器 +} + +export const BpmModelFormType = { + NORMAL: 10, // 流程表单 + CUSTOM: 20 // 业务表单 +} + +export const BpmProcessInstanceStatus = { + NOT_START: -1, // 未开始 + RUNNING: 1, // 审批中 + APPROVE: 2, // 审批通过 + REJECT: 3, // 审批不通过 + CANCEL: 4 // 已取消 +} + +export const BpmAutoApproveType = { + NONE: 0, // 不自动通过 + APPROVE_ALL: 1, // 仅审批一次,后续重复的审批节点均自动通过 + APPROVE_SEQUENT: 2, // 仅针对连续审批的节点自动通过 +} diff --git a/marketing-ui/admin-ui/src/utils/dateUtil.ts b/marketing-ui/admin-ui/src/utils/dateUtil.ts new file mode 100644 index 0000000..316b870 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/dateUtil.ts @@ -0,0 +1,18 @@ +/** + * Independent time operation tool to facilitate subsequent switch to dayjs + */ +// TODO 芋艿:【锁屏】可能后面删除掉 +import dayjs from 'dayjs' + +const DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss' +const DATE_FORMAT = 'YYYY-MM-DD' + +export function formatToDateTime(date?: dayjs.ConfigType, format = DATE_TIME_FORMAT): string { + return dayjs(date).format(format) +} + +export function formatToDate(date?: dayjs.ConfigType, format = DATE_FORMAT): string { + return dayjs(date).format(format) +} + +export const dateUtil = dayjs diff --git a/marketing-ui/admin-ui/src/utils/dict.ts b/marketing-ui/admin-ui/src/utils/dict.ts new file mode 100644 index 0000000..083c1ef --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/dict.ts @@ -0,0 +1,158 @@ +/** + * 数据字典工具类 + */ +import { useDictStoreWithOut } from '@/store/modules/dict' +import { ElementPlusInfoType } from '@/types/elementPlus' + +const dictStore = useDictStoreWithOut() + +/** + * 获取 dictType 对应的数据字典数组 + * + * @param dictType 数据类型 + * @returns {*|Array} 数据字典数组 + */ +export interface DictDataType { + dictType: string + label: string + value: string | number | boolean + colorType: ElementPlusInfoType | '' + cssClass: string +} + +export interface NumberDictDataType extends DictDataType { + value: number +} + +export interface StringDictDataType extends DictDataType { + value: string +} + +export const getDictOptions = (dictType: string) => { + return dictStore.getDictByType(dictType) || [] +} + +export const getIntDictOptions = (dictType: string): NumberDictDataType[] => { + // 获得通用的 DictDataType 列表 + const dictOptions: DictDataType[] = getDictOptions(dictType) + // 转换成 number 类型的 NumberDictDataType 类型 + // why 需要特殊转换:避免 IDEA 在 v-for="dict in getIntDictOptions(...)" 时,el-option 的 key 会告警 + const dictOption: NumberDictDataType[] = [] + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: parseInt(dict.value + '') + }) + }) + return dictOption +} + +export const getStrDictOptions = (dictType: string) => { + // 获得通用的 DictDataType 列表 + const dictOptions: DictDataType[] = getDictOptions(dictType) + // 转换成 string 类型的 StringDictDataType 类型 + // why 需要特殊转换:避免 IDEA 在 v-for="dict in getStrDictOptions(...)" 时,el-option 的 key 会告警 + const dictOption: StringDictDataType[] = [] + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: dict.value + '' + }) + }) + return dictOption +} + +export const getBoolDictOptions = (dictType: string) => { + const dictOption: DictDataType[] = [] + const dictOptions: DictDataType[] = getDictOptions(dictType) + dictOptions.forEach((dict: DictDataType) => { + dictOption.push({ + ...dict, + value: dict.value + '' === 'true' + }) + }) + return dictOption +} + +/** + * 获取指定字典类型的指定值对应的字典对象 + * @param dictType 字典类型 + * @param value 字典值 + * @return DictDataType 字典对象 + */ +export const getDictObj = (dictType: string, value: any): DictDataType | undefined => { + const dictOptions: DictDataType[] = getDictOptions(dictType) + for (const dict of dictOptions) { + if (dict.value === value + '') { + return dict + } + } +} + +/** + * 获得字典数据的文本展示 + * + * @param dictType 字典类型 + * @param value 字典数据的值 + * @return 字典名称 + */ +export const getDictLabel = (dictType: string, value: any): string => { + const dictOptions: DictDataType[] = getDictOptions(dictType) + const dictLabel = ref('') + dictOptions.forEach((dict: DictDataType) => { + if (dict.value === value + '') { + dictLabel.value = dict.label + } + }) + return dictLabel.value +} + +export enum DICT_TYPE { + USER_TYPE = 'user_type', + COMMON_STATUS = 'common_status', + TERMINAL = 'terminal', // 终端 + DATE_INTERVAL = 'date_interval', // 数据间隔 + + // ========== SYSTEM 模块 ========== + SYSTEM_USER_SEX = 'system_user_sex', + SYSTEM_MENU_TYPE = 'system_menu_type', + SYSTEM_ROLE_TYPE = 'system_role_type', + SYSTEM_DATA_SCOPE = 'system_data_scope', + SYSTEM_NOTICE_TYPE = 'system_notice_type', + SYSTEM_LOGIN_TYPE = 'system_login_type', + SYSTEM_LOGIN_RESULT = 'system_login_result', + SYSTEM_SMS_CHANNEL_CODE = 'system_sms_channel_code', + SYSTEM_SMS_TEMPLATE_TYPE = 'system_sms_template_type', + SYSTEM_SMS_SEND_STATUS = 'system_sms_send_status', + SYSTEM_SMS_RECEIVE_STATUS = 'system_sms_receive_status', + SYSTEM_OAUTH2_GRANT_TYPE = 'system_oauth2_grant_type', + SYSTEM_MAIL_SEND_STATUS = 'system_mail_send_status', + SYSTEM_NOTIFY_TEMPLATE_TYPE = 'system_notify_template_type', + SYSTEM_SOCIAL_TYPE = 'system_social_type', + + // ========== INFRA 模块 ========== + INFRA_BOOLEAN_STRING = 'infra_boolean_string', + INFRA_JOB_STATUS = 'infra_job_status', + INFRA_JOB_LOG_STATUS = 'infra_job_log_status', + INFRA_API_ERROR_LOG_PROCESS_STATUS = 'infra_api_error_log_process_status', + INFRA_CONFIG_TYPE = 'infra_config_type', + INFRA_CODEGEN_TEMPLATE_TYPE = 'infra_codegen_template_type', + INFRA_CODEGEN_FRONT_TYPE = 'infra_codegen_front_type', + INFRA_CODEGEN_SCENE = 'infra_codegen_scene', + INFRA_FILE_STORAGE = 'infra_file_storage', + INFRA_OPERATE_TYPE = 'infra_operate_type', + + // ========== AI - 人工智能模块 ========== + AI_PLATFORM = 'ai_platform', // AI 平台 + AI_MODEL_TYPE = 'ai_model_type', // AI 模型类型 + AI_IMAGE_STATUS = 'ai_image_status', // AI 图片状态 + AI_MUSIC_STATUS = 'ai_music_status', // AI 音乐状态 + AI_GENERATE_MODE = 'ai_generate_mode', // AI 生成模式 + AI_WRITE_TYPE = 'ai_write_type', // AI 写作类型 + AI_WRITE_LENGTH = 'ai_write_length', // AI 写作长度 + AI_WRITE_FORMAT = 'ai_write_format', // AI 写作格式 + AI_WRITE_TONE = 'ai_write_tone', // AI 写作语气 + AI_WRITE_LANGUAGE = 'ai_write_language', // AI 写作语言 + + +} diff --git a/marketing-ui/admin-ui/src/utils/domUtils.ts b/marketing-ui/admin-ui/src/utils/domUtils.ts new file mode 100644 index 0000000..dbc1989 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/domUtils.ts @@ -0,0 +1,289 @@ +import { isServer } from './is' +const ieVersion = isServer ? 0 : Number((document as any).documentMode) +const SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g +const MOZ_HACK_REGEXP = /^moz([A-Z])/ + +export interface ViewportOffsetResult { + left: number + top: number + right: number + bottom: number + rightIncludeBody: number + bottomIncludeBody: number +} + +/* istanbul ignore next */ +const trim = function (string: string) { + return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, '') +} + +/* istanbul ignore next */ +const camelCase = function (name: string) { + return name + .replace(SPECIAL_CHARS_REGEXP, function (_, __, letter, offset) { + return offset ? letter.toUpperCase() : letter + }) + .replace(MOZ_HACK_REGEXP, 'Moz$1') +} + +/* istanbul ignore next */ +export function hasClass(el: Element, cls: string) { + if (!el || !cls) return false + if (cls.indexOf(' ') !== -1) { + throw new Error('className should not contain space.') + } + if (el.classList) { + return el.classList.contains(cls) + } else { + return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1 + } +} + +/* istanbul ignore next */ +export function addClass(el: Element, cls: string) { + if (!el) return + let curClass = el.className + const classes = (cls || '').split(' ') + + for (let i = 0, j = classes.length; i < j; i++) { + const clsName = classes[i] + if (!clsName) continue + + if (el.classList) { + el.classList.add(clsName) + } else if (!hasClass(el, clsName)) { + curClass += ' ' + clsName + } + } + if (!el.classList) { + el.className = curClass + } +} + +/* istanbul ignore next */ +export function removeClass(el: Element, cls: string) { + if (!el || !cls) return + const classes = cls.split(' ') + let curClass = ' ' + el.className + ' ' + + for (let i = 0, j = classes.length; i < j; i++) { + const clsName = classes[i] + if (!clsName) continue + + if (el.classList) { + el.classList.remove(clsName) + } else if (hasClass(el, clsName)) { + curClass = curClass.replace(' ' + clsName + ' ', ' ') + } + } + if (!el.classList) { + el.className = trim(curClass) + } +} + +export function getBoundingClientRect(element: Element): DOMRect | number { + if (!element || !element.getBoundingClientRect) { + return 0 + } + return element.getBoundingClientRect() +} + +/** + * 获取当前元素的left、top偏移 + * left:元素最左侧距离文档左侧的距离 + * top:元素最顶端距离文档顶端的距离 + * right:元素最右侧距离文档右侧的距离 + * bottom:元素最底端距离文档底端的距离 + * rightIncludeBody:元素最左侧距离文档右侧的距离 + * bottomIncludeBody:元素最底端距离文档最底部的距离 + * + * @description: + */ +export function getViewportOffset(element: Element): ViewportOffsetResult { + const doc = document.documentElement + + const docScrollLeft = doc.scrollLeft + const docScrollTop = doc.scrollTop + const docClientLeft = doc.clientLeft + const docClientTop = doc.clientTop + + const pageXOffset = window.pageXOffset + const pageYOffset = window.pageYOffset + + const box = getBoundingClientRect(element) + + const { left: retLeft, top: rectTop, width: rectWidth, height: rectHeight } = box as DOMRect + + const scrollLeft = (pageXOffset || docScrollLeft) - (docClientLeft || 0) + const scrollTop = (pageYOffset || docScrollTop) - (docClientTop || 0) + const offsetLeft = retLeft + pageXOffset + const offsetTop = rectTop + pageYOffset + + const left = offsetLeft - scrollLeft + const top = offsetTop - scrollTop + + const clientWidth = window.document.documentElement.clientWidth + const clientHeight = window.document.documentElement.clientHeight + return { + left: left, + top: top, + right: clientWidth - rectWidth - left, + bottom: clientHeight - rectHeight - top, + rightIncludeBody: clientWidth - left, + bottomIncludeBody: clientHeight - top + } +} + +/* istanbul ignore next */ +export const on = function ( + element: HTMLElement | Document | Window, + event: string, + handler: EventListenerOrEventListenerObject +): void { + if (element && event && handler) { + element.addEventListener(event, handler, false) + } +} + +/* istanbul ignore next */ +export const off = function ( + element: HTMLElement | Document | Window, + event: string, + handler: any +): void { + if (element && event && handler) { + element.removeEventListener(event, handler, false) + } +} + +/* istanbul ignore next */ +export const once = function (el: HTMLElement, event: string, fn: EventListener): void { + const listener = function (this: any, ...args: unknown[]) { + if (fn) { + // @ts-ignore + fn.apply(this, args) + } + off(el, event, listener) + } + on(el, event, listener) +} + +/* istanbul ignore next */ +export const getStyle = + ieVersion < 9 + ? function (element: Element | any, styleName: string) { + if (isServer) return + if (!element || !styleName) return null + styleName = camelCase(styleName) + if (styleName === 'float') { + styleName = 'styleFloat' + } + try { + switch (styleName) { + case 'opacity': + try { + return element.filters.item('alpha').opacity / 100 + } catch (e) { + return 1.0 + } + default: + return element.style[styleName] || element.currentStyle + ? element.currentStyle[styleName] + : null + } + } catch (e) { + return element.style[styleName] + } + } + : function (element: Element | any, styleName: string) { + if (isServer) return + if (!element || !styleName) return null + styleName = camelCase(styleName) + if (styleName === 'float') { + styleName = 'cssFloat' + } + try { + const computed = (document as any).defaultView.getComputedStyle(element, '') + return element.style[styleName] || computed ? computed[styleName] : null + } catch (e) { + return element.style[styleName] + } + } + +/* istanbul ignore next */ +export function setStyle(element: Element | any, styleName: any, value: any) { + if (!element || !styleName) return + + if (typeof styleName === 'object') { + for (const prop in styleName) { + if (Object.prototype.hasOwnProperty.call(styleName, prop)) { + setStyle(element, prop, styleName[prop]) + } + } + } else { + styleName = camelCase(styleName) + if (styleName === 'opacity' && ieVersion < 9) { + element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')' + } else { + element.style[styleName] = value + } + } +} + +/* istanbul ignore next */ +export const isScroll = (el: Element, vertical: any) => { + if (isServer) return + + const determinedDirection = vertical !== null || vertical !== undefined + const overflow = determinedDirection + ? vertical + ? getStyle(el, 'overflow-y') + : getStyle(el, 'overflow-x') + : getStyle(el, 'overflow') + + return overflow.match(/(scroll|auto)/) +} + +/* istanbul ignore next */ +export const getScrollContainer = (el: Element, vertical?: any) => { + if (isServer) return + + let parent: any = el + while (parent) { + if ([window, document, document.documentElement].includes(parent)) { + return window + } + if (isScroll(parent, vertical)) { + return parent + } + parent = parent.parentNode + } + + return parent +} + +/* istanbul ignore next */ +export const isInContainer = (el: Element, container: any) => { + if (isServer || !el || !container) return false + + const elRect = el.getBoundingClientRect() + let containerRect + + if ([window, document, document.documentElement, null, undefined].includes(container)) { + containerRect = { + top: 0, + right: window.innerWidth, + bottom: window.innerHeight, + left: 0 + } + } else { + containerRect = container.getBoundingClientRect() + } + + return ( + elRect.top < containerRect.bottom && + elRect.bottom > containerRect.top && + elRect.right > containerRect.left && + elRect.left < containerRect.right + ) +} diff --git a/marketing-ui/admin-ui/src/utils/download.ts b/marketing-ui/admin-ui/src/utils/download.ts new file mode 100644 index 0000000..32fc624 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/download.ts @@ -0,0 +1,100 @@ +const download0 = (data: Blob, fileName: string, mineType: string) => { + // 创建 blob + const blob = new Blob([data], { type: mineType }) + // 创建 href 超链接,点击进行下载 + window.URL = window.URL || window.webkitURL + const href = URL.createObjectURL(blob) + const downA = document.createElement('a') + downA.href = href + downA.download = fileName + downA.click() + // 销毁超连接 + window.URL.revokeObjectURL(href) +} + +const download = { + // 下载 Excel 方法 + excel: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/vnd.ms-excel') + }, + // 下载 Word 方法 + word: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/msword') + }, + // 下载 Zip 方法 + zip: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/zip') + }, + // 下载 Html 方法 + html: (data: Blob, fileName: string) => { + download0(data, fileName, 'text/html') + }, + // 下载 Markdown 方法 + markdown: (data: Blob, fileName: string) => { + download0(data, fileName, 'text/markdown') + }, + // 下载 Json 方法 + json: (data: Blob, fileName: string) => { + download0(data, fileName, 'application/json') + }, + // 下载图片(允许跨域) + image: ({ + url, + canvasWidth, + canvasHeight, + drawWithImageSize = true + }: { + url: string + canvasWidth?: number // 指定画布宽度 + canvasHeight?: number // 指定画布高度 + drawWithImageSize?: boolean // 将图片绘制在画布上时带上图片的宽高值, 默认是要带上的 + }) => { + const image = new Image() + // image.setAttribute('crossOrigin', 'anonymous') + image.src = url + image.onload = () => { + const canvas = document.createElement('canvas') + canvas.width = canvasWidth || image.width + canvas.height = canvasHeight || image.height + const ctx = canvas.getContext('2d') as CanvasRenderingContext2D + ctx?.clearRect(0, 0, canvas.width, canvas.height) + if (drawWithImageSize) { + ctx.drawImage(image, 0, 0, image.width, image.height) + } else { + ctx.drawImage(image, 0, 0) + } + const url = canvas.toDataURL('image/png') + const a = document.createElement('a') + a.href = url + a.download = 'image.png' + a.click() + } + }, + base64ToFile: (base64: any, fileName: string) => { + // 将base64按照 , 进行分割 将前缀 与后续内容分隔开 + const data = base64.split(',') + // 利用正则表达式 从前缀中获取图片的类型信息(image/png、image/jpeg、image/webp等) + const type = data[0].match(/:(.*?);/)[1] + // 从图片的类型信息中 获取具体的文件格式后缀(png、jpeg、webp) + const suffix = type.split('/')[1] + // 使用atob()对base64数据进行解码 结果是一个文件数据流 以字符串的格式输出 + const bstr = window.atob(data[1]) + // 获取解码结果字符串的长度 + let n = bstr.length + // 根据解码结果字符串的长度创建一个等长的整形数字数组 + // 但在创建时 所有元素初始值都为 0 + const u8arr = new Uint8Array(n) + // 将整形数组的每个元素填充为解码结果字符串对应位置字符的UTF-16 编码单元 + while (n--) { + // charCodeAt():获取给定索引处字符对应的 UTF-16 代码单元 + u8arr[n] = bstr.charCodeAt(n) + } + + // 将File文件对象返回给方法的调用者 + return new File([u8arr], `${fileName}.${suffix}`, { + type: type + }) + } +} + +export default download diff --git a/marketing-ui/admin-ui/src/utils/filt.ts b/marketing-ui/admin-ui/src/utils/filt.ts new file mode 100644 index 0000000..b1a7b2c --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/filt.ts @@ -0,0 +1,157 @@ +export const openWindow = ( + url: string, + opt?: { + target?: '_self' | '_blank' | string + noopener?: boolean + noreferrer?: boolean + } +) => { + const { target = '__blank', noopener = true, noreferrer = true } = opt || {} + const feature: string[] = [] + + noopener && feature.push('noopener=yes') + noreferrer && feature.push('noreferrer=yes') + + window.open(url, target, feature.join(',')) +} + +/** + * @description: base64 to blob + */ +export const dataURLtoBlob = (base64Buf: string): Blob => { + const arr = base64Buf.split(',') + const typeItem = arr[0] + const mime = typeItem.match(/:(.*?);/)![1] + const bstr = window.atob(arr[1]) + let n = bstr.length + const u8arr = new Uint8Array(n) + while (n--) { + u8arr[n] = bstr.charCodeAt(n) + } + return new Blob([u8arr], { type: mime }) +} + +/** + * img url to base64 + * @param url + */ +export const urlToBase64 = (url: string, mineType?: string): Promise => { + return new Promise((resolve, reject) => { + let canvas = document.createElement('CANVAS') as Nullable + const ctx = canvas!.getContext('2d') + + const img = new Image() + img.crossOrigin = '' + img.onload = function () { + if (!canvas || !ctx) { + return reject() + } + canvas.height = img.height + canvas.width = img.width + ctx.drawImage(img, 0, 0) + const dataURL = canvas.toDataURL(mineType || 'image/png') + canvas = null + resolve(dataURL) + } + img.src = url + }) +} + +/** + * Download online pictures + * @param url + * @param filename + * @param mime + * @param bom + */ +export const downloadByOnlineUrl = ( + url: string, + filename: string, + mime?: string, + bom?: BlobPart +) => { + urlToBase64(url).then((base64) => { + downloadByBase64(base64, filename, mime, bom) + }) +} + +/** + * Download pictures based on base64 + * @param buf + * @param filename + * @param mime + * @param bom + */ +export const downloadByBase64 = (buf: string, filename: string, mime?: string, bom?: BlobPart) => { + const base64Buf = dataURLtoBlob(buf) + downloadByData(base64Buf, filename, mime, bom) +} + +/** + * Download according to the background interface file stream + * @param {*} data + * @param {*} filename + * @param {*} mime + * @param {*} bom + */ +export const downloadByData = (data: BlobPart, filename: string, mime?: string, bom?: BlobPart) => { + const blobData = typeof bom !== 'undefined' ? [bom, data] : [data] + const blob = new Blob(blobData, { type: mime || 'application/octet-stream' }) + + const blobURL = window.URL.createObjectURL(blob) + const tempLink = document.createElement('a') + tempLink.style.display = 'none' + tempLink.href = blobURL + tempLink.setAttribute('download', filename) + if (typeof tempLink.download === 'undefined') { + tempLink.setAttribute('target', '_blank') + } + document.body.appendChild(tempLink) + tempLink.click() + document.body.removeChild(tempLink) + window.URL.revokeObjectURL(blobURL) +} + +/** + * Download file according to file address + * @param {*} sUrl + */ +export const downloadByUrl = ({ + url, + target = '_blank', + fileName +}: { + url: string + target?: '_self' | '_blank' + fileName?: string +}): boolean => { + const isChrome = window.navigator.userAgent.toLowerCase().indexOf('chrome') > -1 + const isSafari = window.navigator.userAgent.toLowerCase().indexOf('safari') > -1 + + if (/(iP)/g.test(window.navigator.userAgent)) { + console.error('Your browser does not support download!') + return false + } + if (isChrome || isSafari) { + const link = document.createElement('a') + link.href = url + link.target = target + + if (link.download !== undefined) { + link.download = fileName || url.substring(url.lastIndexOf('/') + 1, url.length) + } + + if (document.createEvent) { + const e = document.createEvent('MouseEvents') + e.initEvent('click', true, true) + link.dispatchEvent(e) + return true + } + } + if (url.indexOf('?') === -1) { + url += '?download' + } + + openWindow(url, { target }) + return true +} diff --git a/marketing-ui/admin-ui/src/utils/formCreate.ts b/marketing-ui/admin-ui/src/utils/formCreate.ts new file mode 100644 index 0000000..d56e512 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/formCreate.ts @@ -0,0 +1,58 @@ +/** + * 针对 https://github.com/xaboy/form-create-designer 封装的工具类 + */ + +// 编码表单 Conf +export const encodeConf = (designerRef: object) => { + // @ts-ignore + return JSON.stringify(designerRef.value.getOption()) +} + +// 编码表单 Fields +export const encodeFields = (designerRef: object) => { + // @ts-ignore + const rule = JSON.parse(designerRef.value.getJson()) + const fields: string[] = [] + rule.forEach((item) => { + fields.push(JSON.stringify(item)) + }) + return fields +} + +// 解码表单 Fields +export const decodeFields = (fields: string[]) => { + const rule: object[] = [] + fields.forEach((item) => { + rule.push(JSON.parse(item)) + }) + return rule +} + +// 设置表单的 Conf 和 Fields,适用 FcDesigner 场景 +export const setConfAndFields = (designerRef: object, conf: string, fields: string) => { + // @ts-ignore + designerRef.value.setOption(JSON.parse(conf)) + // @ts-ignore + designerRef.value.setRule(decodeFields(fields)) +} + +// 设置表单的 Conf 和 Fields,适用 form-create 场景 +export const setConfAndFields2 = ( + detailPreview: object, + conf: string, + fields: string[], + value?: object +) => { + if (isRef(detailPreview)) { + // @ts-ignore + detailPreview = detailPreview.value + } + // @ts-ignore + detailPreview.option = JSON.parse(conf) + // @ts-ignore + detailPreview.rule = decodeFields(fields) + if (value) { + // @ts-ignore + detailPreview.value = value + } +} diff --git a/marketing-ui/admin-ui/src/utils/formRules.ts b/marketing-ui/admin-ui/src/utils/formRules.ts new file mode 100644 index 0000000..2989867 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/formRules.ts @@ -0,0 +1,7 @@ +const { t } = useI18n() + +// 必填项 +export const required = { + required: true, + message: t('common.required') +} diff --git a/marketing-ui/admin-ui/src/utils/formatTime.ts b/marketing-ui/admin-ui/src/utils/formatTime.ts new file mode 100644 index 0000000..2b08495 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/formatTime.ts @@ -0,0 +1,356 @@ +import dayjs from 'dayjs' +import type { TableColumnCtx } from 'element-plus' + +/** + * 日期快捷选项适用于 el-date-picker + */ +export const defaultShortcuts = [ + { + text: '今天', + value: () => { + return new Date() + } + }, + { + text: '昨天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24) + return [date, date] + } + }, + { + text: '最近七天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24 * 7) + return [date, new Date()] + } + }, + { + text: '最近 30 天', + value: () => { + const date = new Date() + date.setTime(date.getTime() - 3600 * 1000 * 24 * 30) + return [date, new Date()] + } + }, + { + text: '本月', + value: () => { + const date = new Date() + date.setDate(1) // 设置为当前月的第一天 + return [date, new Date()] + } + }, + { + text: '今年', + value: () => { + const date = new Date() + return [new Date(`${date.getFullYear()}-01-01`), date] + } + } +] + +/** + * 时间日期转换 + * @param date 当前时间,new Date() 格式 + * @param format 需要转换的时间格式字符串 + * @description format 字符串随意,如 `YYYY-MM、YYYY-MM-DD` + * @description format 季度:"YYYY-MM-DD HH:mm:ss QQQQ" + * @description format 星期:"YYYY-MM-DD HH:mm:ss WWW" + * @description format 几周:"YYYY-MM-DD HH:mm:ss ZZZ" + * @description format 季度 + 星期 + 几周:"YYYY-MM-DD HH:mm:ss WWW QQQQ ZZZ" + * @returns 返回拼接后的时间字符串 + */ +export function formatDate(date: Date | number | string, format?: string): string { + // 日期不存在,则返回空 + if (!date) { + return '' + } + // 日期存在,则进行格式化 + return date ? dayjs(date).format(format ?? 'YYYY-MM-DD HH:mm:ss') : '' +} + +/** + * 获取当前的日期+时间 + */ +export function getNowDateTime() { + return dayjs() +} + +/** + * 获取当前日期是第几周 + * @param dateTime 当前传入的日期值 + * @returns 返回第几周数字值 + */ +export function getWeek(dateTime: Date): number { + const temptTime = new Date(dateTime.getTime()) + // 周几 + const weekday = temptTime.getDay() || 7 + // 周1+5天=周六 + temptTime.setDate(temptTime.getDate() - weekday + 1 + 5) + let firstDay = new Date(temptTime.getFullYear(), 0, 1) + const dayOfWeek = firstDay.getDay() + let spendDay = 1 + if (dayOfWeek != 0) spendDay = 7 - dayOfWeek + 1 + firstDay = new Date(temptTime.getFullYear(), 0, 1 + spendDay) + const d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000) + return Math.ceil(d / 7) +} + +/** + * 将时间转换为 `几秒前`、`几分钟前`、`几小时前`、`几天前` + * @param param 当前时间,new Date() 格式或者字符串时间格式 + * @param format 需要转换的时间格式字符串 + * @description param 10秒: 10 * 1000 + * @description param 1分: 60 * 1000 + * @description param 1小时: 60 * 60 * 1000 + * @description param 24小时:60 * 60 * 24 * 1000 + * @description param 3天: 60 * 60* 24 * 1000 * 3 + * @returns 返回拼接后的时间字符串 + */ +export function formatPast(param: string | Date, format = 'YYYY-MM-DD HH:mm:ss'): string { + // 传入格式处理、存储转换值 + let t: any, s: number + // 获取js 时间戳 + let time: number = new Date().getTime() + // 是否是对象 + typeof param === 'string' || 'object' ? (t = new Date(param).getTime()) : (t = param) + // 当前时间戳 - 传入时间戳 + time = Number.parseInt(`${time - t}`) + if (time < 10000) { + // 10秒内 + return '刚刚' + } else if (time < 60000 && time >= 10000) { + // 超过10秒少于1分钟内 + s = Math.floor(time / 1000) + return `${s}秒前` + } else if (time < 3600000 && time >= 60000) { + // 超过1分钟少于1小时 + s = Math.floor(time / 60000) + return `${s}分钟前` + } else if (time < 86400000 && time >= 3600000) { + // 超过1小时少于24小时 + s = Math.floor(time / 3600000) + return `${s}小时前` + } else if (time < 259200000 && time >= 86400000) { + // 超过1天少于3天内 + s = Math.floor(time / 86400000) + return `${s}天前` + } else { + // 超过3天 + const date = typeof param === 'string' || 'object' ? new Date(param) : param + return formatDate(date, format) + } +} + +/** + * 时间问候语 + * @param param 当前时间,new Date() 格式 + * @description param 调用 `formatAxis(new Date())` 输出 `上午好` + * @returns 返回拼接后的时间字符串 + */ +export function formatAxis(param: Date): string { + const hour: number = new Date(param).getHours() + if (hour < 6) return '凌晨好' + else if (hour < 9) return '早上好' + else if (hour < 12) return '上午好' + else if (hour < 14) return '中午好' + else if (hour < 17) return '下午好' + else if (hour < 19) return '傍晚好' + else if (hour < 22) return '晚上好' + else return '夜里好' +} + +/** + * 将毫秒,转换成时间字符串。例如说,xx 分钟 + * + * @param ms 毫秒 + * @returns {string} 字符串 + */ +export function formatPast2(ms: number): string { + const day = Math.floor(ms / (24 * 60 * 60 * 1000)) + const hour = Math.floor(ms / (60 * 60 * 1000) - day * 24) + const minute = Math.floor(ms / (60 * 1000) - day * 24 * 60 - hour * 60) + const second = Math.floor(ms / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - minute * 60) + if (day > 0) { + return day + ' 天' + hour + ' 小时 ' + minute + ' 分钟' + } + if (hour > 0) { + return hour + ' 小时 ' + minute + ' 分钟' + } + if (minute > 0) { + return minute + ' 分钟' + } + if (second > 0) { + return second + ' 秒' + } else { + return 0 + ' 秒' + } +} + +/** + * element plus 的时间 Formatter 实现,使用 YYYY-MM-DD HH:mm:ss 格式 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +export function dateFormatter(_row: any, _column: TableColumnCtx, cellValue: any): string { + return cellValue ? formatDate(cellValue) : '' +} + +/** + * 专门处理定时时间的格式化函数,确保正确处理毫秒级时间戳 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +export function attimeFormatter(_row: any, _column: TableColumnCtx, cellValue: any): string { + if (!cellValue) { + return '' + } + + // 确保传入的是数字类型的时间戳 + const timestamp = typeof cellValue === 'string' ? parseInt(cellValue, 10) : cellValue + + // 检查是否是毫秒级时间戳(13位数字) + if (Number.isInteger(timestamp) && timestamp.toString().length === 13) { + return dayjs(timestamp).format('YYYY-MM-DD HH:mm:ss') + } + + // 其他情况使用默认格式化 + return formatDate(cellValue) +} + +/** + * element plus 的时间 Formatter 实现,使用 YYYY-MM-DD 格式 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +export function dateFormatter2(_row: any, _column: TableColumnCtx, cellValue: any): string { + return cellValue ? formatDate(cellValue, 'YYYY-MM-DD') : '' +} + +/** + * 设置起始日期,时间为00:00:00 + * @param param 传入日期 + * @returns 带时间00:00:00的日期 + */ +export function beginOfDay(param: Date): Date { + return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 0, 0, 0) +} + +/** + * 设置结束日期,时间为23:59:59 + * @param param 传入日期 + * @returns 带时间23:59:59的日期 + */ +export function endOfDay(param: Date): Date { + return new Date(param.getFullYear(), param.getMonth(), param.getDate(), 23, 59, 59) +} + +/** + * 计算两个日期间隔天数 + * @param param1 日期1 + * @param param2 日期2 + */ +export function betweenDay(param1: Date, param2: Date): number { + param1 = convertDate(param1) + param2 = convertDate(param2) + // 计算差值 + return Math.floor((param2.getTime() - param1.getTime()) / (24 * 3600 * 1000)) +} + +/** + * 日期计算 + * @param param1 日期 + * @param param2 添加的时间 + */ +export function addTime(param1: Date, param2: number): Date { + param1 = convertDate(param1) + return new Date(param1.getTime() + param2) +} + +/** + * 日期转换 + * @param param 日期 + */ +export function convertDate(param: Date | string): Date { + if (typeof param === 'string') { + return new Date(param) + } + return param +} + +/** + * 指定的两个日期, 是否为同一天 + * @param a 日期 A + * @param b 日期 B + */ +export function isSameDay(a: dayjs.ConfigType, b: dayjs.ConfigType): boolean { + if (!a || !b) return false + + const aa = dayjs(a) + const bb = dayjs(b) + return aa.year() == bb.year() && aa.month() == bb.month() && aa.day() == bb.day() +} + +/** + * 获取一天的开始时间、截止时间 + * @param date 日期 + * @param days 天数 + */ +export function getDayRange( + date: dayjs.ConfigType, + days: number +): [dayjs.ConfigType, dayjs.ConfigType] { + const day = dayjs(date).add(days, 'd') + return getDateRange(day, day) +} + +/** + * 获取最近7天的开始时间、截止时间 + */ +export function getLast7Days(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastWeekDay = dayjs().subtract(7, 'd') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastWeekDay, yesterday) +} + +/** + * 获取最近30天的开始时间、截止时间 + */ +export function getLast30Days(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastMonthDay = dayjs().subtract(30, 'd') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastMonthDay, yesterday) +} + +/** + * 获取最近1年的开始时间、截止时间 + */ +export function getLast1Year(): [dayjs.ConfigType, dayjs.ConfigType] { + const lastYearDay = dayjs().subtract(1, 'y') + const yesterday = dayjs().subtract(1, 'd') + return getDateRange(lastYearDay, yesterday) +} + +/** + * 获取指定日期的开始时间、截止时间 + * @param beginDate 开始日期 + * @param endDate 截止日期 + */ +export function getDateRange( + beginDate: dayjs.ConfigType, + endDate: dayjs.ConfigType +): [string, string] { + return [ + dayjs(beginDate).startOf('d').format('YYYY-MM-DD HH:mm:ss'), + dayjs(endDate).endOf('d').format('YYYY-MM-DD HH:mm:ss') + ] +} diff --git a/marketing-ui/admin-ui/src/utils/formatter.ts b/marketing-ui/admin-ui/src/utils/formatter.ts new file mode 100644 index 0000000..8777f32 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/formatter.ts @@ -0,0 +1,7 @@ +import { floatToFixed2 } from '@/utils' + +// 格式化金额【分转元】 +// @ts-ignore +export const fenToYuanFormat = (_, __, cellValue: any, ___) => { + return `¥${floatToFixed2(cellValue)}` +} diff --git a/marketing-ui/admin-ui/src/utils/index.ts b/marketing-ui/admin-ui/src/utils/index.ts new file mode 100644 index 0000000..5951d58 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/index.ts @@ -0,0 +1,553 @@ +import { toNumber } from 'lodash-es' + +/** + * + * @param component 需要注册的组件 + * @param alias 组件别名 + * @returns any + */ +export const withInstall = (component: T, alias?: string) => { + const comp = component as any + comp.install = (app: any) => { + app.component(comp.name || comp.displayName, component) + if (alias) { + app.config.globalProperties[alias] = component + } + } + return component as T & Plugin +} + +/** + * @param str 需要转下划线的驼峰字符串 + * @returns 字符串下划线 + */ +export const humpToUnderline = (str: string): string => { + return str.replace(/([A-Z])/g, '-$1').toLowerCase() +} + +/** + * @param str 需要转驼峰的下划线字符串 + * @returns 字符串驼峰 + */ +export const underlineToHump = (str: string): string => { + if (!str) return '' + return str.replace(/\-(\w)/g, (_, letter: string) => { + return letter.toUpperCase() + }) +} + +/** + * 驼峰转横杠 + */ +export const humpToDash = (str: string): string => { + return str.replace(/([A-Z])/g, '-$1').toLowerCase() +} + +export const setCssVar = (prop: string, val: any, dom = document.documentElement) => { + dom.style.setProperty(prop, val) +} + +/** + * 查找数组对象的某个下标 + * @param {Array} ary 查找的数组 + * @param {Functon} fn 判断的方法 + */ +// eslint-disable-next-line +export const findIndex = (ary: Array, fn: Fn): number => { + if (ary.findIndex) { + return ary.findIndex(fn) + } + let index = -1 + ary.some((item: T, i: number, ary: Array) => { + const ret: T = fn(item, i, ary) + if (ret) { + index = i + return ret + } + }) + return index +} + +export const trim = (str: string) => { + return str.replace(/(^\s*)|(\s*$)/g, '') +} + +/** + * @param {Date | number | string} time 需要转换的时间 + * @param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss + */ +export function formatTime(time: Date | number | string, fmt: string) { + if (!time) return '' + else { + const date = new Date(time) + const o = { + 'M+': date.getMonth() + 1, + 'd+': date.getDate(), + 'H+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds(), + 'q+': Math.floor((date.getMonth() + 3) / 3), + S: date.getMilliseconds() + } + if (/(y+)/.test(fmt)) { + fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) + } + for (const k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { + fmt = fmt.replace( + RegExp.$1, + RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length) + ) + } + } + return fmt + } +} + +/** + * 生成随机字符串 + */ +export function toAnyString() { + const str: string = 'xxxxx-xxxxx-4xxxx-yxxxx-xxxxx'.replace(/[xy]/g, (c: string) => { + const r: number = (Math.random() * 16) | 0 + const v: number = c === 'x' ? r : (r & 0x3) | 0x8 + return v.toString() + }) + return str +} + +/** + * 生成指定长度的随机字符串 + * + * @param length 字符串长度 + */ +export function generateRandomStr(length: number): string { + const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + let result = '' + for (let i = 0; i < length; i++) { + result += chars.charAt(Math.floor(Math.random() * chars.length)) + } + return result +} + +/** + * 根据支持的文件类型生成 accept 属性值 + * + * @param supportedFileTypes 支持的文件类型数组,如 ['PDF', 'DOC', 'DOCX'] + * @returns 用于文件上传组件 accept 属性的字符串 + */ +export const generateAcceptedFileTypes = (supportedFileTypes: string[]): string => { + const allowedExtensions = supportedFileTypes.map((ext) => ext.toLowerCase()) + const mimeTypes: string[] = [] + + // 添加常见的 MIME 类型映射 + if (allowedExtensions.includes('txt')) { + mimeTypes.push('text/plain') + } + if (allowedExtensions.includes('pdf')) { + mimeTypes.push('application/pdf') + } + if (allowedExtensions.includes('html') || allowedExtensions.includes('htm')) { + mimeTypes.push('text/html') + } + if (allowedExtensions.includes('csv')) { + mimeTypes.push('text/csv') + } + if (allowedExtensions.includes('xlsx') || allowedExtensions.includes('xls')) { + mimeTypes.push('application/vnd.ms-excel') + mimeTypes.push('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') + } + if (allowedExtensions.includes('docx') || allowedExtensions.includes('doc')) { + mimeTypes.push('application/msword') + mimeTypes.push('application/vnd.openxmlformats-officedocument.wordprocessingml.document') + } + if (allowedExtensions.includes('pptx') || allowedExtensions.includes('ppt')) { + mimeTypes.push('application/vnd.ms-powerpoint') + mimeTypes.push('application/vnd.openxmlformats-officedocument.presentationml.presentation') + } + if (allowedExtensions.includes('xml')) { + mimeTypes.push('application/xml') + mimeTypes.push('text/xml') + } + if (allowedExtensions.includes('md') || allowedExtensions.includes('markdown')) { + mimeTypes.push('text/markdown') + } + if (allowedExtensions.includes('epub')) { + mimeTypes.push('application/epub+zip') + } + if (allowedExtensions.includes('eml')) { + mimeTypes.push('message/rfc822') + } + if (allowedExtensions.includes('msg')) { + mimeTypes.push('application/vnd.ms-outlook') + } + + // 添加文件扩展名 + const extensions = allowedExtensions.map((ext) => `.${ext}`) + + return [...mimeTypes, ...extensions].join(',') +} + +/** + * 首字母大写 + */ +export function firstUpperCase(str: string) { + return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase()) +} + +export const generateUUID = () => { + if (typeof crypto === 'object') { + if (typeof crypto.randomUUID === 'function') { + return crypto.randomUUID() + } + if (typeof crypto.getRandomValues === 'function' && typeof Uint8Array === 'function') { + const callback = (c: any) => { + const num = Number(c) + return (num ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (num / 4)))).toString( + 16 + ) + } + return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, callback) + } + } + let timestamp = new Date().getTime() + let performanceNow = + (typeof performance !== 'undefined' && performance.now && performance.now() * 1000) || 0 + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { + let random = Math.random() * 16 + if (timestamp > 0) { + random = (timestamp + random) % 16 | 0 + timestamp = Math.floor(timestamp / 16) + } else { + random = (performanceNow + random) % 16 | 0 + performanceNow = Math.floor(performanceNow / 16) + } + return (c === 'x' ? random : (random & 0x3) | 0x8).toString(16) + }) +} + +/** + * element plus 的文件大小 Formatter 实现 + * + * @param row 行数据 + * @param column 字段 + * @param cellValue 字段值 + */ +// @ts-ignore +export const fileSizeFormatter = (row, column, cellValue) => { + const fileSize = cellValue + const unitArr = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] + const srcSize = parseFloat(fileSize) + const index = Math.floor(Math.log(srcSize) / Math.log(1024)) + const size = srcSize / Math.pow(1024, index) + const sizeStr = size.toFixed(2) //保留的小数位数 + return sizeStr + ' ' + unitArr[index] +} + +/** + * 将值复制到目标对象,且以目标对象属性为准,例:target: {a:1} source:{a:2,b:3} 结果为:{a:2} + * @param target 目标对象 + * @param source 源对象 + */ +export const copyValueToTarget = (target: any, source: any) => { + const newObj = Object.assign({}, target, source) + // 删除多余属性 + Object.keys(newObj).forEach((key) => { + // 如果不是target中的属性则删除 + if (Object.keys(target).indexOf(key) === -1) { + delete newObj[key] + } + }) + // 更新目标对象值 + Object.assign(target, newObj) +} + +/** + * 获取链接的参数值 + * @param key 参数键名 + * @param urlStr 链接地址,默认为当前浏览器的地址 + */ +export const getUrlValue = (key: string, urlStr: string = location.href): string => { + if (!urlStr || !key) return '' + const url = new URL(decodeURIComponent(urlStr)) + return url.searchParams.get(key) ?? '' +} + +/** + * 获取链接的参数值(值类型) + * @param key 参数键名 + * @param urlStr 链接地址,默认为当前浏览器的地址 + */ +export const getUrlNumberValue = (key: string, urlStr: string = location.href): number => { + return toNumber(getUrlValue(key, urlStr)) +} + +/** + * 构建排序字段 + * @param prop 字段名称 + * @param order 顺序 + */ +export const buildSortingField = ({ prop, order }) => { + return { field: prop, order: order === 'ascending' ? 'asc' : 'desc' } +} + +// ========== NumberUtils 数字方法 ========== + +/** + * 数组求和 + * + * @param values 数字数组 + * @return 求和结果,默认为 0 + */ +export const getSumValue = (values: number[]): number => { + return values.reduce((prev, curr) => { + const value = Number(curr) + if (!Number.isNaN(value)) { + return prev + curr + } else { + return prev + } + }, 0) +} + +// ========== 通用金额方法 ========== + +/** + * 将一个整数转换为分数保留两位小数 + * @param num + */ +export const formatToFraction = (num: number | string | undefined): string => { + if (typeof num === 'undefined') return '0.00' + const parsedNumber = typeof num === 'string' ? parseFloat(num) : num + return (parsedNumber / 100.0).toFixed(2) +} + +/** + * 将一个数转换为 1.00 这样 + * 数据呈现的时候使用 + * + * @param num 整数 + */ +// TODO @芋艿:看看怎么融合掉 +export const floatToFixed2 = (num: number | string | undefined): string => { + let str = '0.00' + if (typeof num === 'undefined') { + return str + } + const f = formatToFraction(num) + const decimalPart = f.toString().split('.')[1] + const len = decimalPart ? decimalPart.length : 0 + switch (len) { + case 0: + str = f.toString() + '.00' + break + case 1: + str = f.toString() + '0' + break + case 2: + str = f.toString() + break + } + return str +} + +/** + * 将一个分数转换为整数 + * @param num + */ +// TODO @芋艿:看看怎么融合掉 +export const convertToInteger = (num: number | string | undefined): number => { + if (typeof num === 'undefined') return 0 + const parsedNumber = typeof num === 'string' ? parseFloat(num) : num + // TODO 分转元后还有小数则四舍五入 + return Math.round(parsedNumber * 100) +} + +/** + * 元转分 + */ +export const yuanToFen = (amount: string | number): number => { + return convertToInteger(amount) +} + +/** + * 分转元 + */ +export const fenToYuan = (price: string | number): string => { + return formatToFraction(price) +} + +/** + * 计算环比 + * + * @param value 当前数值 + * @param reference 对比数值 + */ +export const calculateRelativeRate = (value?: number, reference?: number) => { + // 防止除0 + if (!reference || reference == 0) return 0 + + return ((100 * ((value || 0) - reference)) / reference).toFixed(0) +} + +// ========== ERP 专属方法 ========== + +const ERP_COUNT_DIGIT = 3 +const ERP_PRICE_DIGIT = 2 + +/** + * 【ERP】格式化 Input 数字 + * + * 例如说:库存数量 + * + * @param num 数量 + * @package digit 保留的小数位数 + * @return 格式化后的数量 + */ +export const erpNumberFormatter = (num: number | string | undefined, digit: number) => { + if (num == null) { + return '' + } + if (typeof num === 'string') { + num = parseFloat(num) + } + // 如果非 number,则直接返回空串 + if (isNaN(num)) { + return '' + } + return num.toFixed(digit) +} + +/** + * 【ERP】格式化数量,保留三位小数 + * + * 例如说:库存数量 + * + * @param num 数量 + * @return 格式化后的数量 + */ +export const erpCountInputFormatter = (num: number | string | undefined) => { + return erpNumberFormatter(num, ERP_COUNT_DIGIT) +} + +// noinspection JSCommentMatchesSignature +/** + * 【ERP】格式化数量,保留三位小数 + * + * @param cellValue 数量 + * @return 格式化后的数量 + */ +export const erpCountTableColumnFormatter = (_, __, cellValue: any, ___) => { + return erpNumberFormatter(cellValue, ERP_COUNT_DIGIT) +} + +/** + * 【ERP】格式化金额,保留二位小数 + * + * 例如说:库存数量 + * + * @param num 数量 + * @return 格式化后的数量 + */ +export const erpPriceInputFormatter = (num: number | string | undefined) => { + return erpNumberFormatter(num, ERP_PRICE_DIGIT) +} + +// noinspection JSCommentMatchesSignature +/** + * 【ERP】格式化金额,保留二位小数 + * + * @param cellValue 数量 + * @return 格式化后的数量 + */ +export const erpPriceTableColumnFormatter = (_, __, cellValue: any, ___) => { + return erpNumberFormatter(cellValue, ERP_PRICE_DIGIT) +} + +/** + * 【ERP】价格计算,四舍五入保留两位小数 + * + * @param price 价格 + * @param count 数量 + * @return 总价格。如果有任一为空,则返回 undefined + */ +export const erpPriceMultiply = (price: number, count: number) => { + if (price == null || count == null) { + return undefined + } + return parseFloat((price * count).toFixed(ERP_PRICE_DIGIT)) +} + +/** + * 【ERP】百分比计算,四舍五入保留两位小数 + * + * 如果 total 为 0,则返回 0 + * + * @param value 当前值 + * @param total 总值 + */ +export const erpCalculatePercentage = (value: number, total: number) => { + if (total === 0) return 0 + return ((value / total) * 100).toFixed(2) +} + +/** + * 适配 echarts map 的地名 + * + * @param areaName 地区名称 + */ +export const areaReplace = (areaName: string) => { + if (!areaName) { + return areaName + } + return areaName + .replace('维吾尔自治区', '') + .replace('壮族自治区', '') + .replace('回族自治区', '') + .replace('自治区', '') + .replace('省', '') +} + +/** + * 解析 JSON 字符串 + * + * @param str + */ +export function jsonParse(str: string) { + try { + return JSON.parse(str) + } catch (e) { + console.warn(`str[${str}] 不是一个 JSON 字符串`) + return str + } +} + +/** + * 截取字符串 + * + * @param name + * @param start + * @param end + */ + +export const sliceName = (name: string, start: number, end: number) => { + if (name.length > end) { + return name.slice(start, end) + } + return name +} + +/** + * 截取字符串 + * + * @param str 字符串 + * @param start 开始位置 + * @param end 结束位置 + */ + +export const subString = (str: string, start: number, end: number) => { + if (str.length > end) { + return str.slice(start, end) + } + return str +} diff --git a/marketing-ui/admin-ui/src/utils/is.ts b/marketing-ui/admin-ui/src/utils/is.ts new file mode 100644 index 0000000..24d7191 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/is.ts @@ -0,0 +1,118 @@ +// copy to vben-admin + +const toString = Object.prototype.toString + +export const is = (val: unknown, type: string) => { + return toString.call(val) === `[object ${type}]` +} + +export const isDef = (val?: T): val is T => { + return typeof val !== 'undefined' +} + +export const isUnDef = (val?: T): val is T => { + return !isDef(val) +} + +export const isObject = (val: any): val is Record => { + return val !== null && is(val, 'Object') +} + +export const isEmpty = (val: any): boolean => { + if (val === null || val === undefined || typeof val === 'undefined') { + return true + } + if (isArray(val) || isString(val)) { + return val.length === 0 + } + + if (val instanceof Map || val instanceof Set) { + return val.size === 0 + } + + if (isObject(val)) { + return Object.keys(val).length === 0 + } + + return false +} + +export const isDate = (val: unknown): val is Date => { + return is(val, 'Date') +} + +export const isNull = (val: unknown): val is null => { + return val === null +} + +export const isNullAndUnDef = (val: unknown): val is null | undefined => { + return isUnDef(val) && isNull(val) +} + +export const isNullOrUnDef = (val: unknown): val is null | undefined => { + return isUnDef(val) || isNull(val) +} + +export const isNumber = (val: unknown): val is number => { + return is(val, 'Number') +} + +export const isPromise = (val: unknown): val is Promise => { + return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch) +} + +export const isString = (val: unknown): val is string => { + return is(val, 'String') +} + +export const isFunction = (val: unknown): val is Function => { + return typeof val === 'function' +} + +export const isBoolean = (val: unknown): val is boolean => { + return is(val, 'Boolean') +} + +export const isRegExp = (val: unknown): val is RegExp => { + return is(val, 'RegExp') +} + +export const isArray = (val: any): val is Array => { + return val && Array.isArray(val) +} + +export const isWindow = (val: any): val is Window => { + return typeof window !== 'undefined' && is(val, 'Window') +} + +export const isElement = (val: unknown): val is Element => { + return isObject(val) && !!val.tagName +} + +export const isMap = (val: unknown): val is Map => { + return is(val, 'Map') +} + +export const isServer = typeof window === 'undefined' + +export const isClient = !isServer + +export const isUrl = (path: string): boolean => { + // fix:修复hash路由无法跳转的问题 + const reg = + /(((^https?:(?:\/\/)?)(?:[-:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%#\/.\w-_]*)?\??(?:[-\+=&%@.\w_]*)#?(?:[\w]*))?)$/ + return reg.test(path) +} + +export const isDark = (): boolean => { + return window.matchMedia('(prefers-color-scheme: dark)').matches +} + +// 是否是图片链接 +export const isImgPath = (path: string): boolean => { + return /(https?:\/\/|data:image\/).*?\.(png|jpg|jpeg|gif|svg|webp|ico)/gi.test(path) +} + +export const isEmptyVal = (val: any): boolean => { + return val === '' || val === null || val === undefined +} diff --git a/marketing-ui/admin-ui/src/utils/jsencrypt.ts b/marketing-ui/admin-ui/src/utils/jsencrypt.ts new file mode 100644 index 0000000..374d5f6 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/jsencrypt.ts @@ -0,0 +1,31 @@ +import { JSEncrypt } from 'jsencrypt' + +// 密钥对生成 http://web.chacuo.net/netrsakeypair + +const publicKey = + 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' + + 'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==' + +const privateKey = + 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' + + '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' + + 'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' + + 'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' + + 'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' + + 'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' + + 'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' + + 'UP8iWi1Qw0Y=' + +// 加密 +export const encrypt = (txt: string) => { + const encryptor = new JSEncrypt() + encryptor.setPublicKey(publicKey) // 设置公钥 + return encryptor.encrypt(txt) // 对数据进行加密 +} + +// 解密 +export const decrypt = (txt: string) => { + const encryptor = new JSEncrypt() + encryptor.setPrivateKey(privateKey) // 设置私钥 + return encryptor.decrypt(txt) // 对数据进行解密 +} diff --git a/marketing-ui/admin-ui/src/utils/permission.ts b/marketing-ui/admin-ui/src/utils/permission.ts new file mode 100644 index 0000000..4138173 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/permission.ts @@ -0,0 +1,36 @@ +import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +import {hasPermission} from "@/directives/permission/hasPermi"; + + +const { t } = useI18n() // 国际化 + +/** + * 字符权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkPermi(permission: string[]) { + return hasPermission(permission) +} + +/** + * 角色权限校验 + * @param {string[]} value 校验值 + * @returns {Boolean} + */ +export function checkRole(value: string[]) { + if (value && value instanceof Array && value.length > 0) { + const { wsCache } = useCache() + const permissionRoles = value + const super_admin = 'super_admin' + const userInfo = wsCache.get(CACHE_KEY.USER) + const roles = userInfo?.roles || [] + const hasRole = roles.some((role: string) => { + return super_admin === role || permissionRoles.includes(role) + }) + return !!hasRole + } else { + console.error(t('permission.hasRole')) + return false + } +} diff --git a/marketing-ui/admin-ui/src/utils/propTypes.ts b/marketing-ui/admin-ui/src/utils/propTypes.ts new file mode 100644 index 0000000..863f55c --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/propTypes.ts @@ -0,0 +1,24 @@ +import { VueTypeValidableDef, VueTypesInterface, createTypes, toValidableType } from 'vue-types' +import { CSSProperties } from 'vue' + +type PropTypes = VueTypesInterface & { + readonly style: VueTypeValidableDef +} +const newPropTypes = createTypes({ + func: undefined, + bool: undefined, + string: undefined, + number: undefined, + object: undefined, + integer: undefined +}) as PropTypes + +class propTypes extends newPropTypes { + static get style() { + return toValidableType('style', { + type: [String, Object] + }) + } +} + +export { propTypes } diff --git a/marketing-ui/admin-ui/src/utils/routerHelper.ts b/marketing-ui/admin-ui/src/utils/routerHelper.ts new file mode 100644 index 0000000..7a87bd7 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/routerHelper.ts @@ -0,0 +1,256 @@ +import type { RouteLocationNormalized, Router, RouteRecordNormalized } from 'vue-router' +import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router' +import { isUrl } from '@/utils/is' +import { cloneDeep, omit } from 'lodash-es' +import qs from 'qs' + +const modules = import.meta.glob('../views/**/*.{vue,tsx}') +/** + * 注册一个异步组件 + * @param componentPath 例:/bpm/oa/leave/detail + */ +export const registerComponent = (componentPath: string) => { + for (const item in modules) { + if (item.includes(componentPath)) { + // 使用异步组件的方式来动态加载组件 + // @ts-ignore + return defineAsyncComponent(modules[item]) + } + } +} +/* Layout */ +export const Layout = () => import('@/layout/Layout.vue') + +export const getParentLayout = () => { + return () => + new Promise((resolve) => { + resolve({ + name: 'ParentLayout' + }) + }) +} + +// 按照路由中meta下的rank等级升序来排序路由 +export const ascending = (arr: any[]) => { + arr.forEach((v) => { + if (v?.meta?.rank === null) v.meta.rank = undefined + if (v?.meta?.rank === 0) { + if (v.name !== 'home' && v.path !== '/') { + console.warn('rank only the home page can be 0') + } + } + }) + return arr.sort((a: { meta: { rank: number } }, b: { meta: { rank: number } }) => { + return a?.meta?.rank - b?.meta?.rank + }) +} + +export const getRawRoute = (route: RouteLocationNormalized): RouteLocationNormalized => { + if (!route) return route + const { matched, ...opt } = route + return { + ...opt, + matched: (matched + ? matched.map((item) => ({ + meta: item.meta, + name: item.name, + path: item.path + })) + : undefined) as RouteRecordNormalized[] + } +} + +// 后端控制路由生成 +export const generateRoute = (routes: AppCustomRouteRecordRaw[]): AppRouteRecordRaw[] => { + const res: AppRouteRecordRaw[] = [] + const modulesRoutesKeys = Object.keys(modules) + for (const route of routes) { + // 1. 生成 meta 菜单元数据 + const meta = { + title: route.name, + icon: route.icon, + hidden: !route.visible, + noCache: !route.keepAlive, + alwaysShow: + route.children && + route.children.length > 0 && + (route.alwaysShow !== undefined ? route.alwaysShow : true) + } as any + // 特殊逻辑:如果后端配置的 MenuDO.component 包含 ?,则表示需要传递参数 + // 此时,我们需要解析参数,并且将参数放到 meta.query 中 + // 这样,后续在 Vue 文件中,可以通过 const { currentRoute } = useRouter() 中,通过 meta.query 获取到参数 + if (route.component && route.component.indexOf('?') > -1) { + const query = route.component.split('?')[1] + route.component = route.component.split('?')[0] + meta.query = qs.parse(query) + } + + // 2. 生成 data(AppRouteRecordRaw) + // 路由地址转首字母大写驼峰,作为路由名称,适配keepAlive + let data: AppRouteRecordRaw = { + path: + route.path.indexOf('?') > -1 && !isUrl(route.path) ? route.path.split('?')[0] : route.path, // 注意,需要排除 http 这种 url,避免它带 ? 参数被截取掉 + name: + route.componentName && route.componentName.length > 0 + ? route.componentName + : toCamelCase(route.path, true), + redirect: route.redirect, + meta: meta + } + //处理顶级非目录路由 + if (!route.children && route.parentId == 0 && route.component) { + data.component = Layout + data.meta = { + hidden: meta.hidden, + } + data.name = toCamelCase(route.path, true) + 'Parent' + data.redirect = '' + meta.alwaysShow = true + const childrenData: AppRouteRecordRaw = { + path: '', + name: + route.componentName && route.componentName.length > 0 + ? route.componentName + : toCamelCase(route.path, true), + redirect: route.redirect, + meta: meta + } + const index = route?.component + ? modulesRoutesKeys.findIndex((ev) => ev.includes(route.component)) + : modulesRoutesKeys.findIndex((ev) => ev.includes(route.path)) + childrenData.component = modules[modulesRoutesKeys[index]] + data.children = [childrenData] + } else { + // 目录 + if (route.children?.length) { + data.component = Layout + data.redirect = getRedirect(route.path, route.children) + // 外链 + } else if (isUrl(route.path)) { + data = { + path: '/external-link', + component: Layout, + meta: { + name: route.name + }, + children: [data] + } as AppRouteRecordRaw + // 菜单 + } else { + // 对后端传component组件路径和不传做兼容(如果后端传component组件路径,那么path可以随便写,如果不传,component组件路径会根path保持一致) + const index = route?.component + ? modulesRoutesKeys.findIndex((ev) => ev.includes(route.component)) + : modulesRoutesKeys.findIndex((ev) => ev.includes(route.path)) + data.component = modules[modulesRoutesKeys[index]] + } + if (route.children) { + data.children = generateRoute(route.children) + } + } + res.push(data as AppRouteRecordRaw) + } + return res +} +export const getRedirect = (parentPath: string, children: AppCustomRouteRecordRaw[]) => { + if (!children || children.length == 0) { + return parentPath + } + const path = generateRoutePath(parentPath, children[0].path) + // 递归子节点 + if (children[0].children) return getRedirect(path, children[0].children) +} +const generateRoutePath = (parentPath: string, path: string) => { + if (parentPath.endsWith('/')) { + parentPath = parentPath.slice(0, -1) // 移除默认的 / + } + if (!path.startsWith('/')) { + path = '/' + path + } + return parentPath + path +} +export const pathResolve = (parentPath: string, path: string) => { + if (isUrl(path)) return path + const childPath = path.startsWith('/') || !path ? path : `/${path}` + return `${parentPath}${childPath}`.replace(/\/\//g, '/') +} + +// 路由降级 +export const flatMultiLevelRoutes = (routes: AppRouteRecordRaw[]) => { + const modules: AppRouteRecordRaw[] = cloneDeep(routes) + for (let index = 0; index < modules.length; index++) { + const route = modules[index] + if (!isMultipleRoute(route)) { + continue + } + promoteRouteLevel(route) + } + return modules +} + +// 层级是否大于2 +const isMultipleRoute = (route: AppRouteRecordRaw) => { + if (!route || !Reflect.has(route, 'children') || !route.children?.length) { + return false + } + + const children = route.children + + let flag = false + for (let index = 0; index < children.length; index++) { + const child = children[index] + if (child.children?.length) { + flag = true + break + } + } + return flag +} + +// 生成二级路由 +const promoteRouteLevel = (route: AppRouteRecordRaw) => { + let router: Router | null = createRouter({ + routes: [route as RouteRecordRaw], + history: createWebHashHistory() + }) + + const routes = router.getRoutes() + addToChildren(routes, route.children || [], route) + router = null + + route.children = route.children?.map((item) => omit(item, 'children')) +} + +// 添加所有子菜单 +const addToChildren = ( + routes: RouteRecordNormalized[], + children: AppRouteRecordRaw[], + routeModule: AppRouteRecordRaw +) => { + for (let index = 0; index < children.length; index++) { + const child = children[index] + const route = routes.find((item) => item.name === child.name) + if (!route) { + continue + } + routeModule.children = routeModule.children || [] + if (!routeModule.children.find((item) => item.name === route.name)) { + routeModule.children?.push(route as unknown as AppRouteRecordRaw) + } + if (child.children?.length) { + addToChildren(routes, child.children, routeModule) + } + } +} +const toCamelCase = (str: string, upperCaseFirst: boolean) => { + str = (str || '') + .replace(/-(.)/g, function (group1: string) { + return group1.toUpperCase() + }) + .replaceAll('-', '') + + if (upperCaseFirst && str) { + str = str.charAt(0).toUpperCase() + str.slice(1) + } + + return str +} diff --git a/marketing-ui/admin-ui/src/utils/tree.ts b/marketing-ui/admin-ui/src/utils/tree.ts new file mode 100644 index 0000000..e5db503 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/tree.ts @@ -0,0 +1,403 @@ +interface TreeHelperConfig { + id: string + children: string + pid: string +} + +const DEFAULT_CONFIG: TreeHelperConfig = { + id: 'id', + children: 'children', + pid: 'pid' +} +export const defaultProps = { + children: 'children', + label: 'name', + value: 'id', + isLeaf: 'leaf', + emitPath: false // 用于 cascader 组件:在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组,若设置 false,则只返回该节点的值 +} + +const getConfig = (config: Partial) => Object.assign({}, DEFAULT_CONFIG, config) + +// tree from list +export const listToTree = (list: any[], config: Partial = {}): T[] => { + const conf = getConfig(config) as TreeHelperConfig + const nodeMap = new Map() + const result: T[] = [] + const { id, children, pid } = conf + + for (const node of list) { + node[children] = node[children] || [] + nodeMap.set(node[id], node) + } + for (const node of list) { + const parent = nodeMap.get(node[pid]) + ;(parent ? parent.children : result).push(node) + } + return result +} + +export const treeToList = (tree: any, config: Partial = {}): T => { + config = getConfig(config) + const { children } = config + const result: any = [...tree] + for (let i = 0; i < result.length; i++) { + if (!result[i][children!]) continue + result.splice(i + 1, 0, ...result[i][children!]) + } + return result +} + +export const findNode = ( + tree: any, + func: Fn, + config: Partial = {} +): T | null => { + config = getConfig(config) + const { children } = config + const list = [...tree] + for (const node of list) { + if (func(node)) return node + node[children!] && list.push(...node[children!]) + } + return null +} + +export const findNodeAll = ( + tree: any, + func: Fn, + config: Partial = {} +): T[] => { + config = getConfig(config) + const { children } = config + const list = [...tree] + const result: T[] = [] + for (const node of list) { + func(node) && result.push(node) + node[children!] && list.push(...node[children!]) + } + return result +} + +export const findPath = ( + tree: any, + func: Fn, + config: Partial = {} +): T | T[] | null => { + config = getConfig(config) + const path: T[] = [] + const list = [...tree] + const visitedSet = new Set() + const { children } = config + while (list.length) { + const node = list[0] + if (visitedSet.has(node)) { + path.pop() + list.shift() + } else { + visitedSet.add(node) + node[children!] && list.unshift(...node[children!]) + path.push(node) + if (func(node)) { + return path + } + } + } + return null +} + +export const findPathAll = (tree: any, func: Fn, config: Partial = {}) => { + config = getConfig(config) + const path: any[] = [] + const list = [...tree] + const result: any[] = [] + const visitedSet = new Set(), + { children } = config + while (list.length) { + const node = list[0] + if (visitedSet.has(node)) { + path.pop() + list.shift() + } else { + visitedSet.add(node) + node[children!] && list.unshift(...node[children!]) + path.push(node) + func(node) && result.push([...path]) + } + } + return result +} + +export const filter = ( + tree: T[], + func: (n: T) => boolean, + config: Partial = {} +): T[] => { + config = getConfig(config) + const children = config.children as string + + function listFilter(list: T[]) { + return list + .map((node: any) => ({ ...node })) + .filter((node) => { + node[children] = node[children] && listFilter(node[children]) + return func(node) || (node[children] && node[children].length) + }) + } + + return listFilter(tree) +} + +export const forEach = ( + tree: T[], + func: (n: T) => any, + config: Partial = {} +): void => { + config = getConfig(config) + const list: any[] = [...tree] + const { children } = config + for (let i = 0; i < list.length; i++) { + // func 返回true就终止遍历,避免大量节点场景下无意义循环,引起浏览器卡顿 + if (func(list[i])) { + return + } + children && list[i][children] && list.splice(i + 1, 0, ...list[i][children]) + } +} + +/** + * @description: Extract tree specified structure + */ +export const treeMap = ( + treeData: T[], + opt: { children?: string; conversion: Fn } +): T[] => { + return treeData.map((item) => treeMapEach(item, opt)) +} + +/** + * @description: Extract tree specified structure + */ +export const treeMapEach = ( + data: any, + { children = 'children', conversion }: { children?: string; conversion: Fn } +) => { + const haveChildren = Array.isArray(data[children]) && data[children].length > 0 + const conversionData = conversion(data) || {} + if (haveChildren) { + return { + ...conversionData, + [children]: data[children].map((i: number) => + treeMapEach(i, { + children, + conversion + }) + ) + } + } else { + return { + ...conversionData + } + } +} + +/** + * 递归遍历树结构 + * @param treeDatas 树 + * @param callBack 回调 + * @param parentNode 父节点 + */ +export const eachTree = (treeDatas: any[], callBack: Fn, parentNode = {}) => { + treeDatas.forEach((element) => { + const newNode = callBack(element, parentNode) || element + if (element.children) { + eachTree(element.children, callBack, newNode) + } + }) +} + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + */ +export const handleTree = (data: any[], id?: string, parentId?: string, children?: string) => { + if (!Array.isArray(data)) { + console.warn('data must be an array') + return [] + } + const config = { + id: id || 'id', + parentId: parentId || 'parentId', + childrenList: children || 'children' + } + + const childrenListMap = {} + const nodeIds = {} + const tree: any[] = [] + + for (const d of data) { + const parentId = d[config.parentId] + if (childrenListMap[parentId] == null) { + childrenListMap[parentId] = [] + } + nodeIds[d[config.id]] = d + childrenListMap[parentId].push(d) + } + + for (const d of data) { + const parentId = d[config.parentId] + if (nodeIds[parentId] == null) { + tree.push(d) + } + } + + for (const t of tree) { + adaptToChildrenList(t) + } + + function adaptToChildrenList(o) { + if (childrenListMap[o[config.id]] !== null) { + o[config.childrenList] = childrenListMap[o[config.id]] + } + if (o[config.childrenList]) { + for (const c of o[config.childrenList]) { + adaptToChildrenList(c) + } + } + } + + return tree +} + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + * @param {*} rootId 根Id 默认 0 + */ +// @ts-ignore +export const handleTree2 = (data, id, parentId, children, rootId) => { + id = id || 'id' + parentId = parentId || 'parentId' + // children = children || 'children' + rootId = + rootId || + Math.min( + ...data.map((item) => { + return item[parentId] + }) + ) || + 0 + // 对源数据深度克隆 + const cloneData = JSON.parse(JSON.stringify(data)) + // 循环所有项 + const treeData = cloneData.filter((father) => { + const branchArr = cloneData.filter((child) => { + // 返回每一项的子级数组 + return father[id] === child[parentId] + }) + branchArr.length > 0 ? (father.children = branchArr) : '' + // 返回第一层 + return father[parentId] === rootId + }) + return treeData !== '' ? treeData : data +} + +/** + * 校验选中的节点,是否为指定 level + * + * @param tree 要操作的树结构数据 + * @param nodeId 需要判断在什么层级的数据 + * @param level 检查的级别, 默认检查到二级 + * @return true 是;false 否 + */ +export const checkSelectedNode = (tree: any[], nodeId: any, level = 2): boolean => { + if (typeof tree === 'undefined' || !Array.isArray(tree) || tree.length === 0) { + console.warn('tree must be an array') + return false + } + + // 校验是否是一级节点 + if (tree.some((item) => item.id === nodeId)) { + return false + } + + // 递归计数 + let count = 1 + + // 深层次校验 + function performAThoroughValidation(arr: any[]): boolean { + count += 1 + for (const item of arr) { + if (item.id === nodeId) { + return true + } else if (typeof item.children !== 'undefined' && item.children.length !== 0) { + if (performAThoroughValidation(item.children)) { + return true + } + } + } + return false + } + + for (const item of tree) { + count = 1 + if (performAThoroughValidation(item.children)) { + // 找到后对比是否是期望的层级 + if (count >= level) { + return true + } + } + } + + return false +} + +/** + * 获取节点的完整结构 + * @param tree 树数据 + * @param nodeId 节点 id + */ +export const treeToString = (tree: any[], nodeId) => { + if (typeof tree === 'undefined' || !Array.isArray(tree) || tree.length === 0) { + console.warn('tree must be an array') + return '' + } + // 校验是否是一级节点 + const node = tree.find((item) => item.id === nodeId) + if (typeof node !== 'undefined') { + return node.name + } + let str = '' + + function performAThoroughValidation(arr) { + if (typeof arr === 'undefined' || !Array.isArray(arr) || arr.length === 0) { + return false + } + for (const item of arr) { + if (item.id === nodeId) { + str += ` / ${item.name}` + return true + } else if (typeof item.children !== 'undefined' && item.children.length !== 0) { + str += ` / ${item.name}` + if (performAThoroughValidation(item.children)) { + return true + } + } + } + return false + } + + for (const item of tree) { + str = `${item.name}` + if (performAThoroughValidation(item.children)) { + break + } + } + return str +} diff --git a/marketing-ui/admin-ui/src/utils/tsxHelper.ts b/marketing-ui/admin-ui/src/utils/tsxHelper.ts new file mode 100644 index 0000000..6087fa3 --- /dev/null +++ b/marketing-ui/admin-ui/src/utils/tsxHelper.ts @@ -0,0 +1,16 @@ +import { Slots } from 'vue' +import { isFunction } from '@/utils/is' + +export const getSlot = (slots: Slots, slot = 'default', data?: Recordable) => { + // Reflect.has 判断一个对象是否存在某个属性 + if (!slots || !Reflect.has(slots, slot)) { + return null + } + if (!isFunction(slots[slot])) { + console.error(`${slot} is not a function!`) + return null + } + const slotFn = slots[slot] + if (!slotFn) return null + return slotFn(data) +} diff --git a/marketing-ui/admin-ui/src/views/Error/403.vue b/marketing-ui/admin-ui/src/views/Error/403.vue new file mode 100644 index 0000000..a3ec487 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Error/403.vue @@ -0,0 +1,8 @@ + + diff --git a/marketing-ui/admin-ui/src/views/Error/404.vue b/marketing-ui/admin-ui/src/views/Error/404.vue new file mode 100644 index 0000000..f6a08de --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Error/404.vue @@ -0,0 +1,7 @@ + + diff --git a/marketing-ui/admin-ui/src/views/Error/500.vue b/marketing-ui/admin-ui/src/views/Error/500.vue new file mode 100644 index 0000000..998487d --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Error/500.vue @@ -0,0 +1,7 @@ + + diff --git a/marketing-ui/admin-ui/src/views/Home/Index.vue b/marketing-ui/admin-ui/src/views/Home/Index.vue new file mode 100644 index 0000000..44f08fa --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Home/Index.vue @@ -0,0 +1,171 @@ + + diff --git a/marketing-ui/admin-ui/src/views/Home/Index2.vue b/marketing-ui/admin-ui/src/views/Home/Index2.vue new file mode 100644 index 0000000..c9429ab --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Home/Index2.vue @@ -0,0 +1,319 @@ + + + + diff --git a/marketing-ui/admin-ui/src/views/Home/echarts-data.ts b/marketing-ui/admin-ui/src/views/Home/echarts-data.ts new file mode 100644 index 0000000..b119004 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Home/echarts-data.ts @@ -0,0 +1,399 @@ +import { EChartsOption } from 'echarts' + +const { t } = useI18n() + +export const lineOptions: EChartsOption = { + title: { + text: t('analysis.monthlySales'), + left: 'center' + }, + xAxis: { + data: [ + t('analysis.january'), + t('analysis.february'), + t('analysis.march'), + t('analysis.april'), + t('analysis.may'), + t('analysis.june'), + t('analysis.july'), + t('analysis.august'), + t('analysis.september'), + t('analysis.october'), + t('analysis.november'), + t('analysis.december') + ], + boundaryGap: false, + axisTick: { + show: false + } + }, + grid: { + left: 20, + right: 20, + bottom: 20, + top: 80, + containLabel: true + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'cross' + }, + padding: [5, 10] + }, + yAxis: { + axisTick: { + show: false + } + }, + legend: { + data: [t('analysis.estimate'), t('analysis.actual')], + top: 50 + }, + series: [ + { + name: t('analysis.estimate'), + smooth: true, + type: 'line', + data: [100, 120, 161, 134, 105, 160, 165, 114, 163, 185, 118, 123], + animationDuration: 2800, + animationEasing: 'cubicInOut' + }, + { + name: t('analysis.actual'), + smooth: true, + type: 'line', + itemStyle: {}, + data: [120, 82, 91, 154, 162, 140, 145, 250, 134, 56, 99, 123], + animationDuration: 2800, + animationEasing: 'quadraticOut' + } + ] +} + +export const pieOptions: EChartsOption = { + title: { + text: t('analysis.userAccessSource'), + left: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '{a}
    {b} : {c} ({d}%)' + }, + legend: { + orient: 'vertical', + left: 'left', + data: [ + t('analysis.directAccess'), + t('analysis.mailMarketing'), + t('analysis.allianceAdvertising'), + t('analysis.videoAdvertising'), + t('analysis.searchEngines') + ] + }, + series: [ + { + name: t('analysis.userAccessSource'), + type: 'pie', + radius: '55%', + center: ['50%', '60%'], + data: [ + { value: 335, name: t('analysis.directAccess') }, + { value: 310, name: t('analysis.mailMarketing') }, + { value: 234, name: t('analysis.allianceAdvertising') }, + { value: 135, name: t('analysis.videoAdvertising') }, + { value: 1548, name: t('analysis.searchEngines') } + ] + } + ] +} + +export const barOptions: EChartsOption = { + title: { + text: t('analysis.weeklyUserActivity'), + left: 'center' + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + grid: { + left: 50, + right: 20, + bottom: 20 + }, + xAxis: { + type: 'category', + data: [ + t('analysis.monday'), + t('analysis.tuesday'), + t('analysis.wednesday'), + t('analysis.thursday'), + t('analysis.friday'), + t('analysis.saturday'), + t('analysis.sunday') + ], + axisTick: { + alignWithLabel: true + } + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: t('analysis.activeQuantity'), + data: [13253, 34235, 26321, 12340, 24643, 1322, 1324], + type: 'bar' + } + ] +} + +export const radarOption: EChartsOption = { + legend: { + data: [t('workplace.personal'), t('workplace.team')] + }, + radar: { + // shape: 'circle', + indicator: [ + { name: t('workplace.quote'), max: 65 }, + { name: t('workplace.contribution'), max: 160 }, + { name: t('workplace.hot'), max: 300 }, + { name: t('workplace.yield'), max: 130 }, + { name: t('workplace.follow'), max: 100 } + ] + }, + series: [ + { + name: `xxx${t('workplace.index')}`, + type: 'radar', + data: [ + { + value: [42, 30, 20, 35, 80], + name: t('workplace.personal') + }, + { + value: [50, 140, 290, 100, 90], + name: t('workplace.team') + } + ] + } + ] +} + +// 短信发送统计相关图表配置已删除 + +export const wordOptions = { + series: [ + { + type: 'wordCloud', + gridSize: 2, + sizeRange: [12, 50], + rotationRange: [-90, 90], + shape: 'pentagon', + width: 600, + height: 400, + drawOutOfBound: true, + textStyle: { + color: function () { + return ( + 'rgb(' + + [ + Math.round(Math.random() * 160), + Math.round(Math.random() * 160), + Math.round(Math.random() * 160) + ].join(',') + + ')' + ) + } + }, + emphasis: { + textStyle: { + shadowBlur: 10, + shadowColor: '#333' + } + }, + data: [ + { + name: 'Sam S Club', + value: 10000, + textStyle: { + color: 'black' + }, + emphasis: { + textStyle: { + color: 'red' + } + } + }, + { + name: 'Macys', + value: 6181 + }, + { + name: 'Amy Schumer', + value: 4386 + }, + { + name: 'Jurassic World', + value: 4055 + }, + { + name: 'Charter Communications', + value: 2467 + }, + { + name: 'Chick Fil A', + value: 2244 + }, + { + name: 'Planet Fitness', + value: 1898 + }, + { + name: 'Pitch Perfect', + value: 1484 + }, + { + name: 'Express', + value: 1112 + }, + { + name: 'Home', + value: 965 + }, + { + name: 'Johnny Depp', + value: 847 + }, + { + name: 'Lena Dunham', + value: 582 + }, + { + name: 'Lewis Hamilton', + value: 555 + }, + { + name: 'KXAN', + value: 550 + }, + { + name: 'Mary Ellen Mark', + value: 462 + }, + { + name: 'Farrah Abraham', + value: 366 + }, + { + name: 'Rita Ora', + value: 360 + }, + { + name: 'Serena Williams', + value: 282 + }, + { + name: 'NCAA baseball tournament', + value: 273 + }, + { + name: 'Point Break', + value: 265 + } + ] + } + ] +} + +// 短信发送统计相关图表配置 + +// 一周发送图表 +export const weeklySendOptions: EChartsOption = { + title: { + text: '一周发送统计', + left: 'center' + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + grid: { + left: 50, + right: 20, + bottom: 20 + }, + xAxis: { + type: 'category', + data: [], + axisTick: { + alignWithLabel: true + } + }, + yAxis: { + type: 'value', + name: '发送次数' + }, + series: [ + { + name: '发送次数', + data: [], + type: 'bar' + } + ] +} + +// 渠道发送饼状图 +export const channelSendOptions: EChartsOption = { + title: { + text: '按渠道发送短信', + left: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '{a}
    {b} : {c} ({d}%)' + }, + legend: { + orient: 'vertical', + left: 'left' + }, + series: [ + { + name: '发送渠道', + type: 'pie', + radius: '55%', + center: ['50%', '60%'], + data: [] + } + ] +} + +// 模板发送饼状图 +export const templateSendOptions: EChartsOption = { + title: { + text: '按模板发送短信', + left: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '{a}
    {b} : {c} ({d}%)' + }, + legend: { + orient: 'vertical', + left: 'left' + }, + series: [ + { + name: '模板类型', + type: 'pie', + radius: '55%', + center: ['50%', '60%'], + data: [] + } + ] +} diff --git a/marketing-ui/admin-ui/src/views/Home/types.ts b/marketing-ui/admin-ui/src/views/Home/types.ts new file mode 100644 index 0000000..62d3a3f --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Home/types.ts @@ -0,0 +1,54 @@ +export type WorkplaceTotal = { + project: number + todo: number +} + +export type Project = { + name: string + icon: string + message: string + personal: string + time: Date | number | string +} + +export type Notice = { + title: string + type: string + keys: string[] + date: Date | number | string +} + +export type Shortcut = { + name: string + icon: string + url: string +} + +export type RadarData = { + personal: number + team: number + max: number + name: string +} +export type AnalysisTotalTypes = { + users: number + messages: number + moneys: number + shoppings: number +} + +export type UserAccessSource = { + value: number + name: string +} + +export type WeeklyUserActivity = { + value: number + name: string +} + +export type MonthlySales = { + name: string + estimate: number + actual: number +} diff --git a/marketing-ui/admin-ui/src/views/Login/Login.vue b/marketing-ui/admin-ui/src/views/Login/Login.vue new file mode 100644 index 0000000..b2ff380 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/Login.vue @@ -0,0 +1,121 @@ + + + + + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/Login/SocialLogin.vue b/marketing-ui/admin-ui/src/views/Login/SocialLogin.vue new file mode 100644 index 0000000..e0caace --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/SocialLogin.vue @@ -0,0 +1,347 @@ + + + + + diff --git a/marketing-ui/admin-ui/src/views/Login/components/ForgetPasswordForm.vue b/marketing-ui/admin-ui/src/views/Login/components/ForgetPasswordForm.vue new file mode 100644 index 0000000..c1522f1 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/components/ForgetPasswordForm.vue @@ -0,0 +1,263 @@ + + + + diff --git a/marketing-ui/admin-ui/src/views/Login/components/LoginForm.vue b/marketing-ui/admin-ui/src/views/Login/components/LoginForm.vue new file mode 100644 index 0000000..4b4579a --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/components/LoginForm.vue @@ -0,0 +1,318 @@ + + + + diff --git a/marketing-ui/admin-ui/src/views/Login/components/LoginFormTitle.vue b/marketing-ui/admin-ui/src/views/Login/components/LoginFormTitle.vue new file mode 100644 index 0000000..cdf4fac --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/components/LoginFormTitle.vue @@ -0,0 +1,26 @@ + + diff --git a/marketing-ui/admin-ui/src/views/Login/components/MobileForm.vue b/marketing-ui/admin-ui/src/views/Login/components/MobileForm.vue new file mode 100644 index 0000000..fd3aa0a --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/components/MobileForm.vue @@ -0,0 +1,217 @@ + + + + diff --git a/marketing-ui/admin-ui/src/views/Login/components/QrCodeForm.vue b/marketing-ui/admin-ui/src/views/Login/components/QrCodeForm.vue new file mode 100644 index 0000000..2670d00 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/components/QrCodeForm.vue @@ -0,0 +1,30 @@ + + diff --git a/marketing-ui/admin-ui/src/views/Login/components/RegisterForm.vue b/marketing-ui/admin-ui/src/views/Login/components/RegisterForm.vue new file mode 100644 index 0000000..5b3beb5 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/components/RegisterForm.vue @@ -0,0 +1,258 @@ + + + + diff --git a/marketing-ui/admin-ui/src/views/Login/components/SSOLogin.vue b/marketing-ui/admin-ui/src/views/Login/components/SSOLogin.vue new file mode 100644 index 0000000..5ce34fb --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/components/SSOLogin.vue @@ -0,0 +1,199 @@ + + diff --git a/marketing-ui/admin-ui/src/views/Login/components/index.ts b/marketing-ui/admin-ui/src/views/Login/components/index.ts new file mode 100644 index 0000000..7c42415 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/components/index.ts @@ -0,0 +1,9 @@ +import LoginForm from './LoginForm.vue' +import MobileForm from './MobileForm.vue' +import LoginFormTitle from './LoginFormTitle.vue' +import RegisterForm from './RegisterForm.vue' +import QrCodeForm from './QrCodeForm.vue' +import SSOLoginVue from './SSOLogin.vue' +import ForgetPasswordForm from './ForgetPasswordForm.vue' + +export { LoginForm, MobileForm, LoginFormTitle, RegisterForm, QrCodeForm, SSOLoginVue, ForgetPasswordForm } diff --git a/marketing-ui/admin-ui/src/views/Login/components/useLogin.ts b/marketing-ui/admin-ui/src/views/Login/components/useLogin.ts new file mode 100644 index 0000000..b4a02f8 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Login/components/useLogin.ts @@ -0,0 +1,42 @@ +import { Ref } from 'vue' + +export enum LoginStateEnum { + LOGIN, + REGISTER, + RESET_PASSWORD, + MOBILE, + QR_CODE, + SSO +} + +const currentState = ref(LoginStateEnum.LOGIN) + +export function useLoginState() { + function setLoginState(state: LoginStateEnum) { + currentState.value = state + } + const getLoginState = computed(() => currentState.value) + + function handleBackLogin() { + setLoginState(LoginStateEnum.LOGIN) + } + + return { + setLoginState, + getLoginState, + handleBackLogin + } +} + +export function useFormValid(formRef: Ref) { + async function validForm() { + const form = unref(formRef) + if (!form) return + const data = await form.validate() + return data as T + } + + return { + validForm + } +} diff --git a/marketing-ui/admin-ui/src/views/Profile/Index.vue b/marketing-ui/admin-ui/src/views/Profile/Index.vue new file mode 100644 index 0000000..e04eaf4 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Profile/Index.vue @@ -0,0 +1,62 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/Profile/components/BasicInfo.vue b/marketing-ui/admin-ui/src/views/Profile/components/BasicInfo.vue new file mode 100644 index 0000000..8dfafa6 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Profile/components/BasicInfo.vue @@ -0,0 +1,96 @@ + + diff --git a/marketing-ui/admin-ui/src/views/Profile/components/ProfileUser.vue b/marketing-ui/admin-ui/src/views/Profile/components/ProfileUser.vue new file mode 100644 index 0000000..0d469ef --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Profile/components/ProfileUser.vue @@ -0,0 +1,99 @@ + + + + diff --git a/marketing-ui/admin-ui/src/views/Profile/components/ResetPwd.vue b/marketing-ui/admin-ui/src/views/Profile/components/ResetPwd.vue new file mode 100644 index 0000000..477be91 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Profile/components/ResetPwd.vue @@ -0,0 +1,73 @@ + + diff --git a/marketing-ui/admin-ui/src/views/Profile/components/UserAvatar.vue b/marketing-ui/admin-ui/src/views/Profile/components/UserAvatar.vue new file mode 100644 index 0000000..63e1e16 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Profile/components/UserAvatar.vue @@ -0,0 +1,45 @@ + + + + diff --git a/marketing-ui/admin-ui/src/views/Profile/components/UserSocial.vue b/marketing-ui/admin-ui/src/views/Profile/components/UserSocial.vue new file mode 100644 index 0000000..b7f955b --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Profile/components/UserSocial.vue @@ -0,0 +1,107 @@ + + diff --git a/marketing-ui/admin-ui/src/views/Profile/components/index.ts b/marketing-ui/admin-ui/src/views/Profile/components/index.ts new file mode 100644 index 0000000..bb0efcd --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Profile/components/index.ts @@ -0,0 +1,6 @@ +import BasicInfo from './BasicInfo.vue' +import ProfileUser from './ProfileUser.vue' +import ResetPwd from './ResetPwd.vue' +import UserAvatarVue from './UserAvatar.vue' + +export { BasicInfo, ProfileUser, ResetPwd, UserAvatarVue} diff --git a/marketing-ui/admin-ui/src/views/Redirect/Redirect.vue b/marketing-ui/admin-ui/src/views/Redirect/Redirect.vue new file mode 100644 index 0000000..f7717ce --- /dev/null +++ b/marketing-ui/admin-ui/src/views/Redirect/Redirect.vue @@ -0,0 +1,28 @@ + + diff --git a/marketing-ui/admin-ui/src/views/domesticsms/record/RecordDetail.vue b/marketing-ui/admin-ui/src/views/domesticsms/record/RecordDetail.vue new file mode 100644 index 0000000..cc4839f --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/record/RecordDetail.vue @@ -0,0 +1,69 @@ + + + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/record/RecordForm.vue b/marketing-ui/admin-ui/src/views/domesticsms/record/RecordForm.vue new file mode 100644 index 0000000..8491da1 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/record/RecordForm.vue @@ -0,0 +1,145 @@ + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/record/index.vue b/marketing-ui/admin-ui/src/views/domesticsms/record/index.vue new file mode 100644 index 0000000..ae13ca3 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/record/index.vue @@ -0,0 +1,350 @@ + + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/sendtask/SendTaskForm-backup.vue b/marketing-ui/admin-ui/src/views/domesticsms/sendtask/SendTaskForm-backup.vue new file mode 100644 index 0000000..8d89c15 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/sendtask/SendTaskForm-backup.vue @@ -0,0 +1,435 @@ + + + + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/sendtask/SmsTaskForm.vue b/marketing-ui/admin-ui/src/views/domesticsms/sendtask/SmsTaskForm.vue new file mode 100644 index 0000000..71e9078 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/sendtask/SmsTaskForm.vue @@ -0,0 +1,593 @@ + + + + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/sendtask/index.vue b/marketing-ui/admin-ui/src/views/domesticsms/sendtask/index.vue new file mode 100644 index 0000000..af39b72 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/sendtask/index.vue @@ -0,0 +1,387 @@ + + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/signinfo/SignInfoForm.vue b/marketing-ui/admin-ui/src/views/domesticsms/signinfo/SignInfoForm.vue new file mode 100644 index 0000000..3981ab9 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/signinfo/SignInfoForm.vue @@ -0,0 +1,204 @@ + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/signinfo/index.vue b/marketing-ui/admin-ui/src/views/domesticsms/signinfo/index.vue new file mode 100644 index 0000000..c9429bc --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/signinfo/index.vue @@ -0,0 +1,284 @@ + + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/TemplateInfoForm.vue b/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/TemplateInfoForm.vue new file mode 100644 index 0000000..8e951b3 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/TemplateInfoForm.vue @@ -0,0 +1,219 @@ + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/index.vue b/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/index.vue new file mode 100644 index 0000000..dbbbca0 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/index.vue @@ -0,0 +1,277 @@ + + + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/templatebindinginfo/TemplateBindingInfoForm.vue b/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/templatebindinginfo/TemplateBindingInfoForm.vue new file mode 100644 index 0000000..9278837 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/templatebindinginfo/TemplateBindingInfoForm.vue @@ -0,0 +1,132 @@ + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/templatebindinginfo/index.vue b/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/templatebindinginfo/index.vue new file mode 100644 index 0000000..90fe312 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/domesticsms/templateinfo/templatebindinginfo/index.vue @@ -0,0 +1,206 @@ + + + \ No newline at end of file diff --git a/marketing-ui/admin-ui/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue b/marketing-ui/admin-ui/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue new file mode 100644 index 0000000..314fd26 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue @@ -0,0 +1,79 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/infra/apiAccessLog/index.vue b/marketing-ui/admin-ui/src/views/infra/apiAccessLog/index.vue new file mode 100644 index 0000000..e3a6a7c --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/apiAccessLog/index.vue @@ -0,0 +1,224 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue b/marketing-ui/admin-ui/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue new file mode 100644 index 0000000..41153a2 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue @@ -0,0 +1,81 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/apiErrorLog/index.vue b/marketing-ui/admin-ui/src/views/infra/apiErrorLog/index.vue new file mode 100644 index 0000000..a199a67 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/apiErrorLog/index.vue @@ -0,0 +1,251 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/infra/build/index.vue b/marketing-ui/admin-ui/src/views/infra/build/index.vue new file mode 100644 index 0000000..260b8b7 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/build/index.vue @@ -0,0 +1,184 @@ + + + + diff --git a/marketing-ui/admin-ui/src/views/infra/codegen/EditTable.vue b/marketing-ui/admin-ui/src/views/infra/codegen/EditTable.vue new file mode 100644 index 0000000..f8473e3 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/codegen/EditTable.vue @@ -0,0 +1,87 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/codegen/ImportTable.vue b/marketing-ui/admin-ui/src/views/infra/codegen/ImportTable.vue new file mode 100644 index 0000000..6cd4610 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/codegen/ImportTable.vue @@ -0,0 +1,151 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/codegen/PreviewCode.vue b/marketing-ui/admin-ui/src/views/infra/codegen/PreviewCode.vue new file mode 100644 index 0000000..b6a307d --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/codegen/PreviewCode.vue @@ -0,0 +1,222 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/infra/codegen/components/BasicInfoForm.vue b/marketing-ui/admin-ui/src/views/infra/codegen/components/BasicInfoForm.vue new file mode 100644 index 0000000..1859300 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/codegen/components/BasicInfoForm.vue @@ -0,0 +1,87 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/codegen/components/ColumInfoForm.vue b/marketing-ui/admin-ui/src/views/infra/codegen/components/ColumInfoForm.vue new file mode 100644 index 0000000..f526022 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/codegen/components/ColumInfoForm.vue @@ -0,0 +1,153 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/codegen/components/GenerateInfoForm.vue b/marketing-ui/admin-ui/src/views/infra/codegen/components/GenerateInfoForm.vue new file mode 100644 index 0000000..aaf176f --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/codegen/components/GenerateInfoForm.vue @@ -0,0 +1,385 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/codegen/components/index.ts b/marketing-ui/admin-ui/src/views/infra/codegen/components/index.ts new file mode 100644 index 0000000..1634a76 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/codegen/components/index.ts @@ -0,0 +1,4 @@ +import BasicInfoForm from './BasicInfoForm.vue' +import ColumInfoForm from './ColumInfoForm.vue' +import GenerateInfoForm from './GenerateInfoForm.vue' +export { BasicInfoForm, ColumInfoForm, GenerateInfoForm } diff --git a/marketing-ui/admin-ui/src/views/infra/codegen/index.vue b/marketing-ui/admin-ui/src/views/infra/codegen/index.vue new file mode 100644 index 0000000..a25b956 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/codegen/index.vue @@ -0,0 +1,254 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/config/ConfigForm.vue b/marketing-ui/admin-ui/src/views/infra/config/ConfigForm.vue new file mode 100644 index 0000000..4f7333a --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/config/ConfigForm.vue @@ -0,0 +1,131 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/config/index.vue b/marketing-ui/admin-ui/src/views/infra/config/index.vue new file mode 100644 index 0000000..36833a5 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/config/index.vue @@ -0,0 +1,227 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue b/marketing-ui/admin-ui/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue new file mode 100644 index 0000000..e2a4eaa --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue @@ -0,0 +1,111 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/dataSourceConfig/index.vue b/marketing-ui/admin-ui/src/views/infra/dataSourceConfig/index.vue new file mode 100644 index 0000000..92bd301 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/dataSourceConfig/index.vue @@ -0,0 +1,106 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo01/Demo01ContactForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo01/Demo01ContactForm.vue new file mode 100644 index 0000000..f317fe7 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo01/Demo01ContactForm.vue @@ -0,0 +1,126 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo01/index.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo01/index.vue new file mode 100644 index 0000000..8a42ca8 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo01/index.vue @@ -0,0 +1,213 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo02/Demo02CategoryForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo02/Demo02CategoryForm.vue new file mode 100644 index 0000000..f4c5f8e --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo02/Demo02CategoryForm.vue @@ -0,0 +1,114 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo02/index.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo02/index.vue new file mode 100644 index 0000000..6094943 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo02/index.vue @@ -0,0 +1,206 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue new file mode 100644 index 0000000..b73f423 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/Demo03StudentForm.vue @@ -0,0 +1,121 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue new file mode 100644 index 0000000..9d3888d --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03CourseForm.vue @@ -0,0 +1,99 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue new file mode 100644 index 0000000..3dce77e --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03CourseList.vue @@ -0,0 +1,130 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue new file mode 100644 index 0000000..5687294 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03GradeForm.vue @@ -0,0 +1,99 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue new file mode 100644 index 0000000..635f321 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/components/Demo03GradeList.vue @@ -0,0 +1,130 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/index.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/index.vue new file mode 100644 index 0000000..78c6276 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/erp/index.vue @@ -0,0 +1,247 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/Demo03StudentForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/Demo03StudentForm.vue new file mode 100644 index 0000000..8621593 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/Demo03StudentForm.vue @@ -0,0 +1,153 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03CourseForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03CourseForm.vue new file mode 100644 index 0000000..77da45f --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03CourseForm.vue @@ -0,0 +1,100 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03CourseList.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03CourseList.vue new file mode 100644 index 0000000..965b473 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03CourseList.vue @@ -0,0 +1,51 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03GradeForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03GradeForm.vue new file mode 100644 index 0000000..e14bac4 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03GradeForm.vue @@ -0,0 +1,72 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03GradeList.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03GradeList.vue new file mode 100644 index 0000000..e631384 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/components/Demo03GradeList.vue @@ -0,0 +1,55 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/index.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/index.vue new file mode 100644 index 0000000..4b40def --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/inner/index.vue @@ -0,0 +1,228 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue new file mode 100644 index 0000000..42613c4 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/Demo03StudentForm.vue @@ -0,0 +1,153 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue new file mode 100644 index 0000000..f439c3f --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/components/Demo03CourseForm.vue @@ -0,0 +1,100 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue new file mode 100644 index 0000000..c711954 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/components/Demo03GradeForm.vue @@ -0,0 +1,72 @@ + + diff --git a/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/index.vue b/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/index.vue new file mode 100644 index 0000000..481673f --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/demo/demo03/normal/index.vue @@ -0,0 +1,213 @@ + + + diff --git a/marketing-ui/admin-ui/src/views/infra/druid/index.vue b/marketing-ui/admin-ui/src/views/infra/druid/index.vue new file mode 100644 index 0000000..64dafa2 --- /dev/null +++ b/marketing-ui/admin-ui/src/views/infra/druid/index.vue @@ -0,0 +1,26 @@ +

    0t&n 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 z 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∋5ruYBPf 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

  • j5n>)rd}Zt#_KFhN^a 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%0AyKKMM_L_=T5uusD@v}=#2a^}vQ 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�ht>8aJCFc39WWo< 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 z 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