From 934b3b7b740129709dcd9e9b671bc70b60f57b20 Mon Sep 17 00:00:00 2001 From: odjbin <1042039504@qq.com> Date: Sun, 18 Aug 2024 22:21:18 +0800 Subject: [PATCH] =?UTF-8?q?init=20:=20=E5=88=9D=E5=A7=8B=E5=8C=96=E4=BB=93?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 41 + .drone.yml | 91 + .env.development | 2 + .env.production | 6 + .gitignore | 28 + Dockerfile | 17 + README.md | 38 + auto-imports.d.ts | 70 + components.d.ts | 95 + default.conf | 19 + deployment.yml | 51 + docker.sh | 15 + index.html | 13 + nginx.conf | 50 + package-lock.json | 11294 ++++++++++++++++ package.json | 47 + public/favicon.ico | Bin 0 -> 4286 bytes public/langs/zh_CN.js | 1 + public/skins/content/default/content.css | 61 + public/skins/content/default/content.min.css | 1 + public/skins/ui/oxide/content.css | 785 ++ public/skins/ui/oxide/content.min.css | 1 + public/skins/ui/oxide/skin.css | 3719 +++++ public/skins/ui/oxide/skin.min.css | 1 + src/App.vue | 12 + src/api/auth/auth.js | 9 + src/api/cache.js | 15 + src/api/common/index.js | 9 + src/api/custom-query/adapter.js | 105 + src/api/custom-query/datamodel.js | 66 + src/api/custom-query/echarts.js | 36 + src/api/custom-query/portal.js | 68 + src/api/custom-query/query-page.js | 22 + src/api/custom-query/sql-search.js | 37 + src/api/custom-query/sql.js | 42 + src/api/custom-query/table.js | 70 + src/api/custom-query/topo-search.js | 47 + src/api/custom-query/topo.js | 42 + src/api/dept/dept.js | 54 + src/api/ipblacklist/index.js | 44 + src/api/log/login.js | 24 + src/api/log/operation.js | 24 + src/api/login.js | 23 + src/api/notice/notice.js | 30 + src/api/notice/notify.js | 43 + src/api/online/online.js | 17 + src/api/post/post.js | 48 + src/api/rapid/code-gen.js | 68 + src/api/rapid/data-source.js | 54 + src/api/rapid/regular.js | 52 + src/api/role/role.js | 95 + src/api/system/config.js | 47 + src/api/system/dict-data.js | 44 + src/api/system/dict-type.js | 51 + src/api/system/mapping-switch.js | 16 + src/api/system/menu.js | 8 + src/api/system/menuman.js | 53 + src/api/user/user.js | 132 + src/api/workflow/process-definition.js | 62 + src/api/workflow/process-file.js | 9 + src/api/workflow/process-instance.js | 53 + src/api/workflow/process-listen.js | 46 + src/api/workflow/process-task.js | 45 + src/api/workflow/process-user.js | 24 + src/assets/default_avatar.png | Bin 0 -> 85902 bytes src/assets/home/coffee.png | Bin 0 -> 7827 bytes src/assets/home/home.png | Bin 0 -> 128586 bytes src/assets/logo.svg | 1 + src/assets/styles/echartsEditor.scss | 144 + src/assets/styles/index.scss | 524 + src/assets/styles/sidebar.scss | 43 + src/assets/svg/actual_size.svg | 1 + src/assets/svg/bar_chart.svg | 1 + src/assets/svg/biaodan.svg | 1 + src/assets/svg/bumenguanli.svg | 1 + src/assets/svg/canshu.svg | 1 + src/assets/svg/caozuorizhi.svg | 1 + src/assets/svg/chart.svg | 1 + src/assets/svg/chaxun.svg | 1 + src/assets/svg/clear.svg | 1 + src/assets/svg/close.svg | 1 + src/assets/svg/copy.svg | 1 + src/assets/svg/daimashengcheng.svg | 1 + src/assets/svg/data.svg | 1 + src/assets/svg/data_board.svg | 1 + src/assets/svg/data_mining.svg | 1 + src/assets/svg/datayuan.svg | 1 + src/assets/svg/device_develop.svg | 1 + src/assets/svg/dingshirenwu.svg | 1 + src/assets/svg/fabu.svg | 1 + src/assets/svg/fit.svg | 1 + src/assets/svg/group_manage.svg | 1 + src/assets/svg/guanlidenglurizhi.svg | 1 + src/assets/svg/initiate.svg | 1 + src/assets/svg/jiaoyanguize.svg | 1 + src/assets/svg/jiekou.svg | 1 + src/assets/svg/me.svg | 1 + src/assets/svg/mokuaiguanli.svg | 1 + src/assets/svg/more.svg | 1 + src/assets/svg/my_initiated.svg | 1 + src/assets/svg/paste.svg | 1 + src/assets/svg/quanxianzu.svg | 1 + src/assets/svg/query.svg | 1 + src/assets/svg/redo.svg | 1 + src/assets/svg/selector.svg | 1 + src/assets/svg/setting.svg | 1 + src/assets/svg/show.svg | 1 + src/assets/svg/shujujiankong.svg | 1 + src/assets/svg/shujuwajue.svg | 1 + src/assets/svg/shujuyuan.svg | 1 + src/assets/svg/sql.svg | 1 + src/assets/svg/table.svg | 1 + src/assets/svg/todolist.svg | 1 + src/assets/svg/tool.svg | 1 + src/assets/svg/tuoputu.svg | 1 + src/assets/svg/undo.svg | 1 + src/assets/svg/xiaoyanjieguo.svg | 1 + src/assets/svg/xitongjiankong.svg | 1 + src/assets/svg/xitongjiekou.svg | 1 + src/assets/svg/yanshi.svg | 1 + src/assets/svg/zaixianyonghu.svg | 1 + src/assets/svg/zidianpeizhi.svg | 1 + src/assets/svg/zoom-in.svg | 1 + src/assets/svg/zoom-out.svg | 1 + src/assets/svg/zu1773.svg | 1 + src/components/HelloWorld.vue | 43 + src/components/ParentView.vue | 3 + src/components/PointTag.vue | 95 + src/components/PopoverDelete.vue | 74 + src/components/Tag.vue | 64 + src/components/TheWelcome.vue | 86 + src/components/Tinymce.vue | 185 + src/components/WelcomeItem.vue | 85 + src/components/codeEdit/JavaCodeEdit.vue | 69 + src/components/codeEdit/JsCodeEdit.vue | 48 + src/components/codeEdit/SqlCodeEdit.vue | 83 + src/components/iconSelect/index.vue | 33 + src/components/iconSelect/requireIcons.js | 12 + src/components/icons/IconCommunity.vue | 7 + src/components/icons/IconDocumentation.vue | 7 + src/components/icons/IconEcosystem.vue | 7 + src/components/icons/IconSupport.vue | 7 + src/components/icons/IconTooling.vue | 19 + src/components/pagination/index.vue | 82 + src/components/svgIcon/index.vue | 75 + src/directives/fixedtableheight.js | 20 + src/directives/permission.js | 20 + src/fvcomponents/fvCheckbox/index.vue | 41 + src/fvcomponents/fvForm/index.vue | 109 + src/fvcomponents/fvPagination/index.vue | 82 + src/fvcomponents/fvRadio/index.vue | 48 + src/fvcomponents/fvSearchForm/index.vue | 113 + src/fvcomponents/fvSelect/index.vue | 59 + src/fvcomponents/fvTable/index.vue | 188 + src/fvcomponents/fvTableColumn/index.vue | 58 + src/layout/appmain/AppMain.vue | 78 + src/layout/index.vue | 50 + src/layout/navbar/BellSocket.vue | 273 + src/layout/navbar/Breadcrumb.vue | 49 + src/layout/navbar/Hamburger.vue | 30 + src/layout/navbar/index.vue | 126 + src/layout/siderbar/MenuItem.vue | 48 + src/layout/siderbar/index.vue | 52 + src/layout/tagsview/index.vue | 123 + src/main.js | 33 + src/router/index.js | 213 + src/stores/cache.js | 47 + src/stores/permisstion.js | 113 + src/stores/processStore.js | 112 + src/stores/siderbar.js | 20 + src/stores/tagsview.js | 54 + src/stores/userstore.js | 42 + src/utils/auth.js | 25 + src/utils/axiosCanceler.js | 51 + src/utils/downloadZip.js | 66 + src/utils/publicvoid.js | 54 + src/utils/request.js | 76 + src/utils/socket.js | 46 + src/views/auth/index.vue | 220 + .../data-adapter/DataAdapterDesign.vue | 293 + src/views/custom-query/data-adapter/index.vue | 384 + src/views/custom-query/datamodel/index.vue | 392 + .../echarts-editor/EchartsDesign.vue | 233 + .../echarts-editor/components/AxisBox.vue | 538 + .../components/ChartsOptions.vue | 307 + .../components/EchartsEditor.vue | 307 + .../components/barChart/AdvancedSettings.vue | 86 + .../components/barChart/BasicSetting.vue | 140 + .../components/lineChart/AdvancedSettings.vue | 86 + .../components/lineChart/BasicSetting.vue | 160 + .../components/pieChart/BasicSetting.vue | 17 + .../components/pieChart/PieBox.vue | 116 + .../components/radarChart/RadarBox.vue | 110 + .../custom-query/echarts-editor/index.vue | 233 + src/views/custom-query/portal/ThreeSwitch.vue | 115 + src/views/custom-query/portal/fieldTable.vue | 145 + src/views/custom-query/portal/index.vue | 713 + src/views/custom-query/query-page/index.vue | 112 + src/views/custom-query/sql/SqlDesign.vue | 486 + src/views/custom-query/sql/index.vue | 351 + .../table-management/editTable.vue | 378 + .../table-management/importTable.vue | 201 + .../custom-query/table-management/index.vue | 249 + .../components/changeImage/ChangeImage.vue | 37 + .../changeImage/SettingImageDialog.vue | 62 + src/views/custom-query/topo/index.vue | 352 + .../topo/top/behavior/click-er-edge.js | 81 + .../topo/top/behavior/click-er-node.js | 157 + .../topo/top/behavior/drag-add-edge.js | 232 + .../topo/top/behavior/drag-event-edit.js | 57 + .../topo/top/behavior/hover-event-edit.js | 66 + .../custom-query/topo/top/behavior/index.js | 30 + .../topo/top/behavior/keyup-event-edit.js | 67 + .../topo/top/components/FooterBar.vue | 91 + .../topo/top/components/HeaderBar.vue | 91 + .../custom-query/topo/top/config/edge.js | 13 + .../custom-query/topo/top/config/index.js | 11 + src/views/custom-query/topo/top/edge/base.js | 30 + src/views/custom-query/topo/top/edge/index.js | 18 + .../custom-query/topo/top/edge/top-cubic.js | 14 + .../custom-query/topo/top/elements/button.vue | 92 + .../topo/top/elements/checkbox.vue | 75 + .../topo/top/elements/dropdown.vue | 75 + .../custom-query/topo/top/elements/index.js | 17 + .../topo/top/elements/loading.vue | 91 + .../custom-query/topo/top/graph/index.js | 162 + src/views/custom-query/topo/top/index.vue | 12 + .../custom-query/topo/top/node/dice-er-box.js | 302 + src/views/custom-query/topo/top/node/index.js | 20 + .../custom-query/topo/top/theme/dark-style.js | 177 + .../topo/top/theme/default-style.js | 179 + .../custom-query/topo/top/theme/index.js | 15 + .../topo/top/theme/office-style.js | 177 + .../custom-query/topo/top/toolbar-edit.vue | 217 + .../custom-query/topo/top/toolbar-preview.vue | 183 + src/views/custom-query/topo/top/topology.vue | 1808 +++ .../custom-query/topo/topologyDesign.vue | 312 + .../topo/utils/anchor/draw_mark.js | 56 + .../custom-query/topo/utils/anchor/index.js | 13 + .../topo/utils/anchor/set-state.js | 25 + .../custom-query/topo/utils/anchor/update.js | 31 + .../custom-query/topo/utils/collapse/index.js | 11 + .../topo/utils/collapse/set-state.js | 32 + src/views/custom-query/topo/utils/date.js | 106 + .../custom-query/topo/utils/edge/index.js | 11 + .../custom-query/topo/utils/edge/set-state.js | 20 + src/views/custom-query/topo/utils/index.js | 117 + .../custom-query/topo/utils/node/index.js | 11 + .../custom-query/topo/utils/node/set-state.js | 26 + src/views/forbidden/index.vue | 15 + src/views/home/index.vue | 371 + src/views/login/index.vue | 136 + src/views/monitor/druid/index.vue | 13 + src/views/monitor/job/index.vue | 13 + src/views/monitor/logininfor/index.vue | 205 + src/views/monitor/online/index.vue | 136 + src/views/monitor/operlog/index.vue | 337 + src/views/monitor/server/index.vue | 13 + src/views/rapid/gen/basicInfoForm.vue | 67 + src/views/rapid/gen/editTable.vue | 234 + src/views/rapid/gen/importTable.vue | 185 + src/views/rapid/gen/index.vue | 362 + src/views/rapid/gen/tableInfo.vue | 210 + src/views/rapid/regular/index.vue | 302 + src/views/rapid/source/index.vue | 380 + src/views/system/config/index.vue | 304 + src/views/system/dept/index.vue | 330 + src/views/system/menu/DistributeRole.vue | 362 + src/views/system/menu/index.vue | 417 + src/views/system/notice/inform/index.vue | 158 + src/views/system/notice/publish/index.vue | 430 + src/views/system/post/DistributeUser.vue | 356 + src/views/system/post/index.vue | 261 + src/views/system/role/DistributeUser.vue | 357 + src/views/system/role/index.vue | 486 + src/views/system/user/index.vue | 541 + src/views/tool/componentdemo/index.vue | 218 + src/views/tool/dict/index.vue | 582 + src/views/tool/interface-switch/index.vue | 195 + src/views/tool/ipblacklist/index.vue | 194 + src/views/workflow/about/index.vue | 155 + .../workflow/approve/InitiateProcess.vue | 114 + src/views/workflow/approve/index.vue | 170 + src/views/workflow/common/Comment.vue | 380 + src/views/workflow/common/InstanceDetails.vue | 98 + src/views/workflow/common/OperationRender.vue | 294 + .../workflow/common/ProcessDiagramViewer.vue | 27 + src/views/workflow/common/TaskDetails.vue | 256 + .../workflow/form/ComponentsConfigExport.js | 255 + .../workflow/form/FormComponentConfig.vue | 89 + src/views/workflow/form/FormDesign.vue | 596 + src/views/workflow/form/FormDesignRender.vue | 135 + src/views/workflow/form/FormRender.vue | 130 + .../workflow/form/components/AmountInput.vue | 179 + .../form/components/AmountInputback.vue | 176 + .../workflow/form/components/DateTime.vue | 69 + .../form/components/DateTimeRange.vue | 136 + .../workflow/form/components/DeptPicker.vue | 99 + .../workflow/form/components/Description.vue | 29 + .../workflow/form/components/FileUpload.vue | 104 + .../workflow/form/components/ImageUpload.vue | 207 + .../form/components/MultipleSelect.vue | 80 + .../workflow/form/components/NumberInput.vue | 61 + .../workflow/form/components/RatePicker.vue | 90 + .../workflow/form/components/SelectInput.vue | 75 + .../workflow/form/components/SignPanel.vue | 118 + .../workflow/form/components/SpanLayout.vue | 238 + .../workflow/form/components/TableList.vue | 373 + .../workflow/form/components/TextInput.vue | 57 + .../form/components/TextareaInput.vue | 58 + .../workflow/form/components/UserPicker.vue | 143 + .../form/config/AmountInputConfig.vue | 37 + .../workflow/form/config/DateTimeConfig.vue | 38 + .../form/config/DateTimeRangeConfig.vue | 58 + .../form/config/DescriptionConfig.vue | 33 + .../workflow/form/config/FileUploadConfig.vue | 48 + .../form/config/ImageUploadConfig.vue | 43 + .../workflow/form/config/LocationConfig.vue | 18 + .../workflow/form/config/MoneyInputConfig.vue | 18 + .../form/config/NumberInputConfig.vue | 30 + .../workflow/form/config/OrgPickerConfig.vue | 34 + .../workflow/form/config/RatePickerConfig.vue | 39 + .../form/config/SelectInputConfig.vue | 94 + .../workflow/form/config/SignPanelConfig.vue | 30 + .../workflow/form/config/TableListConfig.vue | 52 + .../workflow/form/config/TextInputConfig.vue | 30 + .../form/config/TextareaInputConfig.vue | 30 + src/views/workflow/form/utils/CustomUtil.js | 27 + src/views/workflow/form/utils/date.js | 118 + src/views/workflow/initiated/index.vue | 157 + src/views/workflow/listen/index.vue | 341 + .../workflow/process/DefaultNodeProps.js | 118 + src/views/workflow/process/ProcessDesign.vue | 72 + src/views/workflow/process/ProcessEdit.vue | 346 + src/views/workflow/process/ProcessTree.vue | 760 ++ .../process/common/AvatarEllipsis.vue | 107 + .../workflow/process/common/DeptPicker.vue | 329 + .../workflow/process/common/Ellipsis.vue | 45 + .../workflow/process/common/InsertButton.vue | 128 + .../workflow/process/common/RoleItems.vue | 36 + .../workflow/process/common/RolePicker.vue | 276 + .../workflow/process/common/UserPicker.vue | 381 + .../process/config/ApprovalNodeConfig.vue | 402 + .../workflow/process/config/CcNodeConfig.vue | 73 + .../config/ConditionGroupItemConfig.vue | 308 + .../process/config/ConditionNodeConfig.vue | 141 + .../process/config/DelayNodeConfig.vue | 41 + .../process/config/FormAuthorityConfig.vue | 117 + .../workflow/process/config/NodeConfig.vue | 92 + .../workflow/process/config/RootConfig.vue | 44 + .../process/config/TriggerNodeConfig.vue | 342 + src/views/workflow/process/index.vue | 268 + .../workflow/process/nodes/AddBranchNode.vue | 27 + .../workflow/process/nodes/ApprovalNode.vue | 200 + src/views/workflow/process/nodes/CcNode.vue | 75 + .../workflow/process/nodes/ConcurrentNode.vue | 195 + .../workflow/process/nodes/ConditionNode.vue | 299 + .../workflow/process/nodes/DelayNode.vue | 86 + .../workflow/process/nodes/EmptyNode.vue | 20 + .../workflow/process/nodes/MergeNode.vue | 20 + src/views/workflow/process/nodes/Node.vue | 272 + .../workflow/process/nodes/ProcessEndNode.vue | 3 + src/views/workflow/process/nodes/RootNode.vue | 48 + .../workflow/process/nodes/TriggerNode.vue | 96 + src/views/workflow/task/index.vue | 141 + vite.config.js | 89 + 366 files changed, 55148 insertions(+) create mode 100644 .dockerignore create mode 100644 .drone.yml create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 auto-imports.d.ts create mode 100644 components.d.ts create mode 100644 default.conf create mode 100644 deployment.yml create mode 100644 docker.sh create mode 100644 index.html create mode 100644 nginx.conf create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/langs/zh_CN.js create mode 100644 public/skins/content/default/content.css create mode 100644 public/skins/content/default/content.min.css create mode 100644 public/skins/ui/oxide/content.css create mode 100644 public/skins/ui/oxide/content.min.css create mode 100644 public/skins/ui/oxide/skin.css create mode 100644 public/skins/ui/oxide/skin.min.css create mode 100644 src/App.vue create mode 100644 src/api/auth/auth.js create mode 100644 src/api/cache.js create mode 100644 src/api/common/index.js create mode 100644 src/api/custom-query/adapter.js create mode 100644 src/api/custom-query/datamodel.js create mode 100644 src/api/custom-query/echarts.js create mode 100644 src/api/custom-query/portal.js create mode 100644 src/api/custom-query/query-page.js create mode 100644 src/api/custom-query/sql-search.js create mode 100644 src/api/custom-query/sql.js create mode 100644 src/api/custom-query/table.js create mode 100644 src/api/custom-query/topo-search.js create mode 100644 src/api/custom-query/topo.js create mode 100644 src/api/dept/dept.js create mode 100644 src/api/ipblacklist/index.js create mode 100644 src/api/log/login.js create mode 100644 src/api/log/operation.js create mode 100644 src/api/login.js create mode 100644 src/api/notice/notice.js create mode 100644 src/api/notice/notify.js create mode 100644 src/api/online/online.js create mode 100644 src/api/post/post.js create mode 100644 src/api/rapid/code-gen.js create mode 100644 src/api/rapid/data-source.js create mode 100644 src/api/rapid/regular.js create mode 100644 src/api/role/role.js create mode 100644 src/api/system/config.js create mode 100644 src/api/system/dict-data.js create mode 100644 src/api/system/dict-type.js create mode 100644 src/api/system/mapping-switch.js create mode 100644 src/api/system/menu.js create mode 100644 src/api/system/menuman.js create mode 100644 src/api/user/user.js create mode 100644 src/api/workflow/process-definition.js create mode 100644 src/api/workflow/process-file.js create mode 100644 src/api/workflow/process-instance.js create mode 100644 src/api/workflow/process-listen.js create mode 100644 src/api/workflow/process-task.js create mode 100644 src/api/workflow/process-user.js create mode 100644 src/assets/default_avatar.png create mode 100644 src/assets/home/coffee.png create mode 100644 src/assets/home/home.png create mode 100644 src/assets/logo.svg create mode 100644 src/assets/styles/echartsEditor.scss create mode 100644 src/assets/styles/index.scss create mode 100644 src/assets/styles/sidebar.scss create mode 100644 src/assets/svg/actual_size.svg create mode 100644 src/assets/svg/bar_chart.svg create mode 100644 src/assets/svg/biaodan.svg create mode 100644 src/assets/svg/bumenguanli.svg create mode 100644 src/assets/svg/canshu.svg create mode 100644 src/assets/svg/caozuorizhi.svg create mode 100644 src/assets/svg/chart.svg create mode 100644 src/assets/svg/chaxun.svg create mode 100644 src/assets/svg/clear.svg create mode 100644 src/assets/svg/close.svg create mode 100644 src/assets/svg/copy.svg create mode 100644 src/assets/svg/daimashengcheng.svg create mode 100644 src/assets/svg/data.svg create mode 100644 src/assets/svg/data_board.svg create mode 100644 src/assets/svg/data_mining.svg create mode 100644 src/assets/svg/datayuan.svg create mode 100644 src/assets/svg/device_develop.svg create mode 100644 src/assets/svg/dingshirenwu.svg create mode 100644 src/assets/svg/fabu.svg create mode 100644 src/assets/svg/fit.svg create mode 100644 src/assets/svg/group_manage.svg create mode 100644 src/assets/svg/guanlidenglurizhi.svg create mode 100644 src/assets/svg/initiate.svg create mode 100644 src/assets/svg/jiaoyanguize.svg create mode 100644 src/assets/svg/jiekou.svg create mode 100644 src/assets/svg/me.svg create mode 100644 src/assets/svg/mokuaiguanli.svg create mode 100644 src/assets/svg/more.svg create mode 100644 src/assets/svg/my_initiated.svg create mode 100644 src/assets/svg/paste.svg create mode 100644 src/assets/svg/quanxianzu.svg create mode 100644 src/assets/svg/query.svg create mode 100644 src/assets/svg/redo.svg create mode 100644 src/assets/svg/selector.svg create mode 100644 src/assets/svg/setting.svg create mode 100644 src/assets/svg/show.svg create mode 100644 src/assets/svg/shujujiankong.svg create mode 100644 src/assets/svg/shujuwajue.svg create mode 100644 src/assets/svg/shujuyuan.svg create mode 100644 src/assets/svg/sql.svg create mode 100644 src/assets/svg/table.svg create mode 100644 src/assets/svg/todolist.svg create mode 100644 src/assets/svg/tool.svg create mode 100644 src/assets/svg/tuoputu.svg create mode 100644 src/assets/svg/undo.svg create mode 100644 src/assets/svg/xiaoyanjieguo.svg create mode 100644 src/assets/svg/xitongjiankong.svg create mode 100644 src/assets/svg/xitongjiekou.svg create mode 100644 src/assets/svg/yanshi.svg create mode 100644 src/assets/svg/zaixianyonghu.svg create mode 100644 src/assets/svg/zidianpeizhi.svg create mode 100644 src/assets/svg/zoom-in.svg create mode 100644 src/assets/svg/zoom-out.svg create mode 100644 src/assets/svg/zu1773.svg create mode 100644 src/components/HelloWorld.vue create mode 100644 src/components/ParentView.vue create mode 100644 src/components/PointTag.vue create mode 100644 src/components/PopoverDelete.vue create mode 100644 src/components/Tag.vue create mode 100644 src/components/TheWelcome.vue create mode 100644 src/components/Tinymce.vue create mode 100644 src/components/WelcomeItem.vue create mode 100644 src/components/codeEdit/JavaCodeEdit.vue create mode 100644 src/components/codeEdit/JsCodeEdit.vue create mode 100644 src/components/codeEdit/SqlCodeEdit.vue create mode 100644 src/components/iconSelect/index.vue create mode 100644 src/components/iconSelect/requireIcons.js create mode 100644 src/components/icons/IconCommunity.vue create mode 100644 src/components/icons/IconDocumentation.vue create mode 100644 src/components/icons/IconEcosystem.vue create mode 100644 src/components/icons/IconSupport.vue create mode 100644 src/components/icons/IconTooling.vue create mode 100644 src/components/pagination/index.vue create mode 100644 src/components/svgIcon/index.vue create mode 100644 src/directives/fixedtableheight.js create mode 100644 src/directives/permission.js create mode 100644 src/fvcomponents/fvCheckbox/index.vue create mode 100644 src/fvcomponents/fvForm/index.vue create mode 100644 src/fvcomponents/fvPagination/index.vue create mode 100644 src/fvcomponents/fvRadio/index.vue create mode 100644 src/fvcomponents/fvSearchForm/index.vue create mode 100644 src/fvcomponents/fvSelect/index.vue create mode 100644 src/fvcomponents/fvTable/index.vue create mode 100644 src/fvcomponents/fvTableColumn/index.vue create mode 100644 src/layout/appmain/AppMain.vue create mode 100644 src/layout/index.vue create mode 100644 src/layout/navbar/BellSocket.vue create mode 100644 src/layout/navbar/Breadcrumb.vue create mode 100644 src/layout/navbar/Hamburger.vue create mode 100644 src/layout/navbar/index.vue create mode 100644 src/layout/siderbar/MenuItem.vue create mode 100644 src/layout/siderbar/index.vue create mode 100644 src/layout/tagsview/index.vue create mode 100644 src/main.js create mode 100644 src/router/index.js create mode 100644 src/stores/cache.js create mode 100644 src/stores/permisstion.js create mode 100644 src/stores/processStore.js create mode 100644 src/stores/siderbar.js create mode 100644 src/stores/tagsview.js create mode 100644 src/stores/userstore.js create mode 100644 src/utils/auth.js create mode 100644 src/utils/axiosCanceler.js create mode 100644 src/utils/downloadZip.js create mode 100644 src/utils/publicvoid.js create mode 100644 src/utils/request.js create mode 100644 src/utils/socket.js create mode 100644 src/views/auth/index.vue create mode 100644 src/views/custom-query/data-adapter/DataAdapterDesign.vue create mode 100644 src/views/custom-query/data-adapter/index.vue create mode 100644 src/views/custom-query/datamodel/index.vue create mode 100644 src/views/custom-query/echarts-editor/EchartsDesign.vue create mode 100644 src/views/custom-query/echarts-editor/components/AxisBox.vue create mode 100644 src/views/custom-query/echarts-editor/components/ChartsOptions.vue create mode 100644 src/views/custom-query/echarts-editor/components/EchartsEditor.vue create mode 100644 src/views/custom-query/echarts-editor/components/barChart/AdvancedSettings.vue create mode 100644 src/views/custom-query/echarts-editor/components/barChart/BasicSetting.vue create mode 100644 src/views/custom-query/echarts-editor/components/lineChart/AdvancedSettings.vue create mode 100644 src/views/custom-query/echarts-editor/components/lineChart/BasicSetting.vue create mode 100644 src/views/custom-query/echarts-editor/components/pieChart/BasicSetting.vue create mode 100644 src/views/custom-query/echarts-editor/components/pieChart/PieBox.vue create mode 100644 src/views/custom-query/echarts-editor/components/radarChart/RadarBox.vue create mode 100644 src/views/custom-query/echarts-editor/index.vue create mode 100644 src/views/custom-query/portal/ThreeSwitch.vue create mode 100644 src/views/custom-query/portal/fieldTable.vue create mode 100644 src/views/custom-query/portal/index.vue create mode 100644 src/views/custom-query/query-page/index.vue create mode 100644 src/views/custom-query/sql/SqlDesign.vue create mode 100644 src/views/custom-query/sql/index.vue create mode 100644 src/views/custom-query/table-management/editTable.vue create mode 100644 src/views/custom-query/table-management/importTable.vue create mode 100644 src/views/custom-query/table-management/index.vue create mode 100644 src/views/custom-query/topo/components/changeImage/ChangeImage.vue create mode 100644 src/views/custom-query/topo/components/changeImage/SettingImageDialog.vue create mode 100644 src/views/custom-query/topo/index.vue create mode 100644 src/views/custom-query/topo/top/behavior/click-er-edge.js create mode 100644 src/views/custom-query/topo/top/behavior/click-er-node.js create mode 100644 src/views/custom-query/topo/top/behavior/drag-add-edge.js create mode 100644 src/views/custom-query/topo/top/behavior/drag-event-edit.js create mode 100644 src/views/custom-query/topo/top/behavior/hover-event-edit.js create mode 100644 src/views/custom-query/topo/top/behavior/index.js create mode 100644 src/views/custom-query/topo/top/behavior/keyup-event-edit.js create mode 100644 src/views/custom-query/topo/top/components/FooterBar.vue create mode 100644 src/views/custom-query/topo/top/components/HeaderBar.vue create mode 100644 src/views/custom-query/topo/top/config/edge.js create mode 100644 src/views/custom-query/topo/top/config/index.js create mode 100644 src/views/custom-query/topo/top/edge/base.js create mode 100644 src/views/custom-query/topo/top/edge/index.js create mode 100644 src/views/custom-query/topo/top/edge/top-cubic.js create mode 100644 src/views/custom-query/topo/top/elements/button.vue create mode 100644 src/views/custom-query/topo/top/elements/checkbox.vue create mode 100644 src/views/custom-query/topo/top/elements/dropdown.vue create mode 100644 src/views/custom-query/topo/top/elements/index.js create mode 100644 src/views/custom-query/topo/top/elements/loading.vue create mode 100644 src/views/custom-query/topo/top/graph/index.js create mode 100644 src/views/custom-query/topo/top/index.vue create mode 100644 src/views/custom-query/topo/top/node/dice-er-box.js create mode 100644 src/views/custom-query/topo/top/node/index.js create mode 100644 src/views/custom-query/topo/top/theme/dark-style.js create mode 100644 src/views/custom-query/topo/top/theme/default-style.js create mode 100644 src/views/custom-query/topo/top/theme/index.js create mode 100644 src/views/custom-query/topo/top/theme/office-style.js create mode 100644 src/views/custom-query/topo/top/toolbar-edit.vue create mode 100644 src/views/custom-query/topo/top/toolbar-preview.vue create mode 100644 src/views/custom-query/topo/top/topology.vue create mode 100644 src/views/custom-query/topo/topologyDesign.vue create mode 100644 src/views/custom-query/topo/utils/anchor/draw_mark.js create mode 100644 src/views/custom-query/topo/utils/anchor/index.js create mode 100644 src/views/custom-query/topo/utils/anchor/set-state.js create mode 100644 src/views/custom-query/topo/utils/anchor/update.js create mode 100644 src/views/custom-query/topo/utils/collapse/index.js create mode 100644 src/views/custom-query/topo/utils/collapse/set-state.js create mode 100644 src/views/custom-query/topo/utils/date.js create mode 100644 src/views/custom-query/topo/utils/edge/index.js create mode 100644 src/views/custom-query/topo/utils/edge/set-state.js create mode 100644 src/views/custom-query/topo/utils/index.js create mode 100644 src/views/custom-query/topo/utils/node/index.js create mode 100644 src/views/custom-query/topo/utils/node/set-state.js create mode 100644 src/views/forbidden/index.vue create mode 100644 src/views/home/index.vue create mode 100644 src/views/login/index.vue create mode 100644 src/views/monitor/druid/index.vue create mode 100644 src/views/monitor/job/index.vue create mode 100644 src/views/monitor/logininfor/index.vue create mode 100644 src/views/monitor/online/index.vue create mode 100644 src/views/monitor/operlog/index.vue create mode 100644 src/views/monitor/server/index.vue create mode 100644 src/views/rapid/gen/basicInfoForm.vue create mode 100644 src/views/rapid/gen/editTable.vue create mode 100644 src/views/rapid/gen/importTable.vue create mode 100644 src/views/rapid/gen/index.vue create mode 100644 src/views/rapid/gen/tableInfo.vue create mode 100644 src/views/rapid/regular/index.vue create mode 100644 src/views/rapid/source/index.vue create mode 100644 src/views/system/config/index.vue create mode 100644 src/views/system/dept/index.vue create mode 100644 src/views/system/menu/DistributeRole.vue create mode 100644 src/views/system/menu/index.vue create mode 100644 src/views/system/notice/inform/index.vue create mode 100644 src/views/system/notice/publish/index.vue create mode 100644 src/views/system/post/DistributeUser.vue create mode 100644 src/views/system/post/index.vue create mode 100644 src/views/system/role/DistributeUser.vue create mode 100644 src/views/system/role/index.vue create mode 100644 src/views/system/user/index.vue create mode 100644 src/views/tool/componentdemo/index.vue create mode 100644 src/views/tool/dict/index.vue create mode 100644 src/views/tool/interface-switch/index.vue create mode 100644 src/views/tool/ipblacklist/index.vue create mode 100644 src/views/workflow/about/index.vue create mode 100644 src/views/workflow/approve/InitiateProcess.vue create mode 100644 src/views/workflow/approve/index.vue create mode 100644 src/views/workflow/common/Comment.vue create mode 100644 src/views/workflow/common/InstanceDetails.vue create mode 100644 src/views/workflow/common/OperationRender.vue create mode 100644 src/views/workflow/common/ProcessDiagramViewer.vue create mode 100644 src/views/workflow/common/TaskDetails.vue create mode 100644 src/views/workflow/form/ComponentsConfigExport.js create mode 100644 src/views/workflow/form/FormComponentConfig.vue create mode 100644 src/views/workflow/form/FormDesign.vue create mode 100644 src/views/workflow/form/FormDesignRender.vue create mode 100644 src/views/workflow/form/FormRender.vue create mode 100644 src/views/workflow/form/components/AmountInput.vue create mode 100644 src/views/workflow/form/components/AmountInputback.vue create mode 100644 src/views/workflow/form/components/DateTime.vue create mode 100644 src/views/workflow/form/components/DateTimeRange.vue create mode 100644 src/views/workflow/form/components/DeptPicker.vue create mode 100644 src/views/workflow/form/components/Description.vue create mode 100644 src/views/workflow/form/components/FileUpload.vue create mode 100644 src/views/workflow/form/components/ImageUpload.vue create mode 100644 src/views/workflow/form/components/MultipleSelect.vue create mode 100644 src/views/workflow/form/components/NumberInput.vue create mode 100644 src/views/workflow/form/components/RatePicker.vue create mode 100644 src/views/workflow/form/components/SelectInput.vue create mode 100644 src/views/workflow/form/components/SignPanel.vue create mode 100644 src/views/workflow/form/components/SpanLayout.vue create mode 100644 src/views/workflow/form/components/TableList.vue create mode 100644 src/views/workflow/form/components/TextInput.vue create mode 100644 src/views/workflow/form/components/TextareaInput.vue create mode 100644 src/views/workflow/form/components/UserPicker.vue create mode 100644 src/views/workflow/form/config/AmountInputConfig.vue create mode 100644 src/views/workflow/form/config/DateTimeConfig.vue create mode 100644 src/views/workflow/form/config/DateTimeRangeConfig.vue create mode 100644 src/views/workflow/form/config/DescriptionConfig.vue create mode 100644 src/views/workflow/form/config/FileUploadConfig.vue create mode 100644 src/views/workflow/form/config/ImageUploadConfig.vue create mode 100644 src/views/workflow/form/config/LocationConfig.vue create mode 100644 src/views/workflow/form/config/MoneyInputConfig.vue create mode 100644 src/views/workflow/form/config/NumberInputConfig.vue create mode 100644 src/views/workflow/form/config/OrgPickerConfig.vue create mode 100644 src/views/workflow/form/config/RatePickerConfig.vue create mode 100644 src/views/workflow/form/config/SelectInputConfig.vue create mode 100644 src/views/workflow/form/config/SignPanelConfig.vue create mode 100644 src/views/workflow/form/config/TableListConfig.vue create mode 100644 src/views/workflow/form/config/TextInputConfig.vue create mode 100644 src/views/workflow/form/config/TextareaInputConfig.vue create mode 100644 src/views/workflow/form/utils/CustomUtil.js create mode 100644 src/views/workflow/form/utils/date.js create mode 100644 src/views/workflow/initiated/index.vue create mode 100644 src/views/workflow/listen/index.vue create mode 100644 src/views/workflow/process/DefaultNodeProps.js create mode 100644 src/views/workflow/process/ProcessDesign.vue create mode 100644 src/views/workflow/process/ProcessEdit.vue create mode 100644 src/views/workflow/process/ProcessTree.vue create mode 100644 src/views/workflow/process/common/AvatarEllipsis.vue create mode 100644 src/views/workflow/process/common/DeptPicker.vue create mode 100644 src/views/workflow/process/common/Ellipsis.vue create mode 100644 src/views/workflow/process/common/InsertButton.vue create mode 100644 src/views/workflow/process/common/RoleItems.vue create mode 100644 src/views/workflow/process/common/RolePicker.vue create mode 100644 src/views/workflow/process/common/UserPicker.vue create mode 100644 src/views/workflow/process/config/ApprovalNodeConfig.vue create mode 100644 src/views/workflow/process/config/CcNodeConfig.vue create mode 100644 src/views/workflow/process/config/ConditionGroupItemConfig.vue create mode 100644 src/views/workflow/process/config/ConditionNodeConfig.vue create mode 100644 src/views/workflow/process/config/DelayNodeConfig.vue create mode 100644 src/views/workflow/process/config/FormAuthorityConfig.vue create mode 100644 src/views/workflow/process/config/NodeConfig.vue create mode 100644 src/views/workflow/process/config/RootConfig.vue create mode 100644 src/views/workflow/process/config/TriggerNodeConfig.vue create mode 100644 src/views/workflow/process/index.vue create mode 100644 src/views/workflow/process/nodes/AddBranchNode.vue create mode 100644 src/views/workflow/process/nodes/ApprovalNode.vue create mode 100644 src/views/workflow/process/nodes/CcNode.vue create mode 100644 src/views/workflow/process/nodes/ConcurrentNode.vue create mode 100644 src/views/workflow/process/nodes/ConditionNode.vue create mode 100644 src/views/workflow/process/nodes/DelayNode.vue create mode 100644 src/views/workflow/process/nodes/EmptyNode.vue create mode 100644 src/views/workflow/process/nodes/MergeNode.vue create mode 100644 src/views/workflow/process/nodes/Node.vue create mode 100644 src/views/workflow/process/nodes/ProcessEndNode.vue create mode 100644 src/views/workflow/process/nodes/RootNode.vue create mode 100644 src/views/workflow/process/nodes/TriggerNode.vue create mode 100644 src/views/workflow/task/index.vue create mode 100644 vite.config.js diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..042a941 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,41 @@ +### Java template +# Compiled class file +*.class +# Log file +*.log +# BlueJ files +*.ctxt +# Mobile Tools for Java (J2ME) +.mtj.tmp/ +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* +### Maven template +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar +### Example user template template +### Example user template +# IntelliJ project files +.idea +*.iml +out +gen +!build +!default.conf +!nginx.conf diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..ae42048 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,91 @@ +kind: pipeline +type: docker +name: fateverse-vue +platform: + os: linux + arch: arm64 +steps: + - name: build-package + image: node:16.20.0 + volumes: + - name: cache + path: /drone/src/node_modules + commands: + - export CI=false + - mkdir -p /app/build/$DRONE_REPO_NAME + - rm -rf /app/build/$DRONE_REPO_NAME/* + - cp deployment.yml /app/build/$DRONE_REPO_NAME/ + - cp Dockerfile /app/build/$DRONE_REPO_NAME/ + - cp .dockerignore /app/build/$DRONE_REPO_NAME/ + - cp default.conf /app/build/$DRONE_REPO_NAME/ + - cp docker.sh /app/build/$DRONE_REPO_NAME/ + - cp nginx.conf /app/build/$DRONE_REPO_NAME/ + - npm -v + - mkdir -p ./node_modules + - export NODE_MODULES_PATH=`pwd`/node_modules + #- npm config set registry https://registry.npm.taobao.org + #- set NODE_OPTIONS=--openssl-legacy-provider +# - npm install + - npm run build + - ls /app/build/$DRONE_REPO_NAME/ + - echo $NODE_MODULES_PATH + - cp -r dist /app/build/$DRONE_REPO_NAME + + + + - name: build-docker # 制作docker镜像 + image: docker # 使用官方docker镜像 + volumes: # 将容器内目录挂载到宿主机 + - name: docker + path: /var/run/docker.sock # 挂载宿主机的docker + - name: config + path: /config + environment: # 获取到密文的docker用户名和密码 + DOCKER_USERNAME: + from_secret: docker_username + DOCKER_PASSWORD: + from_secret: docker_password + REGISTRY: + from_secret: registry + REGISTRY_NAMESPACE: + from_secret: registry_namespace + commands: # 定义在Docker容器中执行的shell命令 + - cat Dockerfile + - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml + - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml + - sed -i 's/$DRONE_REPO_NAME/'"$DRONE_REPO_NAME"'/' deployment.yml + - sed -i 's/$DRONE_COMMIT/'"$DRONE_COMMIT"'/' deployment.yml + # docker登录,不能在脚本中登录,并且不能使用docker login -u -p + - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin + - chmod +x docker.sh + - cat docker.sh + - sh docker.sh + # 执行完脚本删除本次制作的docker镜像,避免多次后当前runner空间不足 + - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') + + + - name: drone-rancher # rancher运行 + image: bitnami/kubectl:1.26.13-debian-11-r1 + volumes: # 将容器内目录挂载到宿主机 + - name: config + path: /app/config # 将kubectl 配置文件挂载出来 + commands: # 定义在Docker容器中执行的shell命令 + # 将deployment中定义的变量替换为drone中的内置变量 + - kubectl apply -f deployment.yml -n fateverse --kubeconfig=/app/config/base-taishan-kubectl.yml + +volumes: + - name: cache + host: + path: /home/npm/cache + - name: config # k8s对接的配置文件 + host: + path: /home/kubect + - name: docker # 宿主机中的docker + host: + path: /var/run/docker.sock + +trigger: + branch: + - prod + event: + - push diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..52ccbeb --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +# 开发环境基地址 +VITE_BASE_URL='/api' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..5b239b9 --- /dev/null +++ b/.env.production @@ -0,0 +1,6 @@ +# 生产环境基地址 + +VITE_TITLE='fateverse' + +VITE_BASE_URL='/api' + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b737b8e --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..944ee69 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM nginx + +RUN rm -rf /etc/nginx/conf.d/default.conf +RUN rm -rf /etc/nginx/nginx.conf +COPY default.conf /etc/nginx/conf.d +COPY nginx.conf /etc/nginx/ + +#RUN useradd -b /home/clay -m -s /bin/bash clay +#RUN chmod a+xr -R /home/clay && chown clay:clay -R /home/clay +#USER clay + +COPY ./dist /home/clay + +WORKDIR /home/clay + + +EXPOSE 80 diff --git a/README.md b/README.md new file mode 100644 index 0000000..937a35f --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# SmartOpsWeb + +## Ŀ¼ +```sh +public #̬Դ +src +|--api #ӿͳһ +|--assets #ͼƬ,Ⱦ̬Դ +|--components # +|--directives #Զָ +|--layout #ϵͳ +|--router #· +|--stores #pinia״ֿ̬ +|--utils #ļ +|--view #ҳ漶 +|--App.vue #App +|--main.js #ϵͳ +|--.env.development # +|--.env.production # +``` + +## װ + +```sh +npm install +``` + +## + +```sh +npm run dev +``` + +## ش + +```sh +npm run build +``` diff --git a/auto-imports.d.ts b/auto-imports.d.ts new file mode 100644 index 0000000..276d277 --- /dev/null +++ b/auto-imports.d.ts @@ -0,0 +1,70 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-auto-import +export {} +declare global { + const EffectScope: typeof import('vue')['EffectScope'] + const computed: typeof import('vue')['computed'] + const createApp: typeof import('vue')['createApp'] + const customRef: typeof import('vue')['customRef'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const effectScope: typeof import('vue')['effectScope'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const inject: typeof import('vue')['inject'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave'] + const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onMounted: typeof import('vue')['onMounted'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const provide: typeof import('vue')['provide'] + const reactive: typeof import('vue')['reactive'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const toRaw: typeof import('vue')['toRaw'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const unref: typeof import('vue')['unref'] + const useAttrs: typeof import('vue')['useAttrs'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useLink: typeof import('vue-router')['useLink'] + const useRoute: typeof import('vue-router')['useRoute'] + const useRouter: typeof import('vue-router')['useRouter'] + const useSlots: typeof import('vue')['useSlots'] + const watch: typeof import('vue')['watch'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] +} +// for type re-export +declare global { + // @ts-ignore + export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue' + import('vue') +} diff --git a/components.d.ts b/components.d.ts new file mode 100644 index 0000000..fa741d2 --- /dev/null +++ b/components.d.ts @@ -0,0 +1,95 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +import '@vue/runtime-core' + +export {} + +declare module '@vue/runtime-core' { + export interface GlobalComponents { + ElAside: typeof import('element-plus/es')['ElAside'] + ElAvatar: typeof import('element-plus/es')['ElAvatar'] + ElBadge: typeof import('element-plus/es')['ElBadge'] + ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] + ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem'] + 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'] + ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] + ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider'] + ElContainer: typeof import('element-plus/es')['ElContainer'] + ElDatePicker: typeof import('element-plus/es')['ElDatePicker'] + ElDialog: typeof import('element-plus/es')['ElDialog'] + ElDivider: typeof import('element-plus/es')['ElDivider'] + ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElEmpty: typeof import('element-plus/es')['ElEmpty'] + 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'] + ElInput: typeof import('element-plus/es')['ElInput'] + ElInputNumber: typeof import('element-plus/es')['ElInputNumber'] + ElMain: typeof import('element-plus/es')['ElMain'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] + ElOption: typeof import('element-plus/es')['ElOption'] + ElPagination: typeof import('element-plus/es')['ElPagination'] + ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm'] + 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'] + ElRate: typeof import('element-plus/es')['ElRate'] + ElRow: typeof import('element-plus/es')['ElRow'] + ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] + ElSelect: typeof import('element-plus/es')['ElSelect'] + ElStep: typeof import('element-plus/es')['ElStep'] + ElSteps: typeof import('element-plus/es')['ElSteps'] + ElSubMenu: typeof import('element-plus/es')['ElSubMenu'] + ElSwitch: typeof import('element-plus/es')['ElSwitch'] + ElTable: typeof import('element-plus/es')['ElTable'] + ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] + ElTag: typeof import('element-plus/es')['ElTag'] + ElText: typeof import('element-plus/es')['ElText'] + 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'] + FvCheckbox: typeof import('./src/fvcomponents/fvCheckbox/index.vue')['default'] + FvForm: typeof import('./src/fvcomponents/fvForm/index.vue')['default'] + FvPagination: typeof import('./src/fvcomponents/fvPagination/index.vue')['default'] + FvRadio: typeof import('./src/fvcomponents/fvRadio/index.vue')['default'] + FvSearchForm: typeof import('./src/fvcomponents/fvSearchForm/index.vue')['default'] + FvSelect: typeof import('./src/fvcomponents/fvSelect/index.vue')['default'] + FvTable: typeof import('./src/fvcomponents/fvTable/index.vue')['default'] + FvTableColumn: typeof import('./src/fvcomponents/fvTableColumn/index.vue')['default'] + HelloWorld: typeof import('./src/components/HelloWorld.vue')['default'] + IconCommunity: typeof import('./src/components/icons/IconCommunity.vue')['default'] + IconDocumentation: typeof import('./src/components/icons/IconDocumentation.vue')['default'] + IconEcosystem: typeof import('./src/components/icons/IconEcosystem.vue')['default'] + IconSelect: typeof import('./src/components/iconSelect/index.vue')['default'] + IconSupport: typeof import('./src/components/icons/IconSupport.vue')['default'] + IconTooling: typeof import('./src/components/icons/IconTooling.vue')['default'] + JavaCodeEdit: typeof import('./src/components/codeEdit/JavaCodeEdit.vue')['default'] + JsCodeEdit: typeof import('./src/components/codeEdit/JsCodeEdit.vue')['default'] + Pagination: typeof import('./src/components/pagination/index.vue')['default'] + ParentView: typeof import('./src/components/ParentView.vue')['default'] + PointTag: typeof import('./src/components/PointTag.vue')['default'] + PopoverDelete: typeof import('./src/components/PopoverDelete.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + SqlCodeEdit: typeof import('./src/components/codeEdit/SqlCodeEdit.vue')['default'] + SvgIcon: typeof import('./src/components/svgIcon/index.vue')['default'] + Tag: typeof import('./src/components/Tag.vue')['default'] + TheWelcome: typeof import('./src/components/TheWelcome.vue')['default'] + Tinymce: typeof import('./src/components/Tinymce.vue')['default'] + WelcomeItem: typeof import('./src/components/WelcomeItem.vue')['default'] + } + export interface ComponentCustomProperties { + vLoading: typeof import('element-plus/es')['ElLoadingDirective'] + } +} diff --git a/default.conf b/default.conf new file mode 100644 index 0000000..f85e348 --- /dev/null +++ b/default.conf @@ -0,0 +1,19 @@ +server { + listen 80; + listen [::]:80; + + location /api { + proxy_pass http://gateway.dev.svc.cluster.local:8080; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Port $server_port; + #proxy_set_header Host $host; + rewrite "^/api/(.*)$" /$1 break; + } + + location / { + root /home/clay; + index index.html index.htm; + } + +} diff --git a/deployment.yml b/deployment.yml new file mode 100644 index 0000000..eba6fc6 --- /dev/null +++ b/deployment.yml @@ -0,0 +1,51 @@ +apiVersion: v1 +kind: Service +metadata: + name: $DRONE_REPO_NAME +spec: + type: NodePort + ports: + - name: damdsdh + nodePort: 8080 + port: 80 + protocol: TCP + targetPort: 80 + selector: + app: $DRONE_REPO_NAME + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: $DRONE_REPO_NAME +spec: + replicas: 1 + selector: + matchLabels: + app: $DRONE_REPO_NAME + template: + metadata: + labels: + app: $DRONE_REPO_NAME + spec: + imagePullSecrets: + - name: harbor + containers: + - image: $REGISTRY/$REGISTRY_NAMESPACE/$DRONE_REPO_NAME:$DRONE_COMMIT + name: $DRONE_REPO_NAME + imagePullPolicy: Always + env: + - name: TIME_ZONE + value: Asia/Shanghai + - name: REF_NAME + value: dev + resources: + requests: + memory: 0.1Gi + cpu: 0.1 + limits: + memory: 2Gi + cpu: 2 + ports: + - containerPort: 80 + name: app-port diff --git a/docker.sh b/docker.sh new file mode 100644 index 0000000..dbe7f9d --- /dev/null +++ b/docker.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# 定义应用组名 +group_name='clay' +# 定义应用名称 +app_name=$DRONE_REPO_NAME +# 定义应用版本 +app_version=$DRONE_COMMIT +echo ${app_version} +# 打包编译docker镜像 +echo '----build image start----' +docker build -t ${group_name}/${app_name} . +echo '----build image success----' +docker tag ${group_name}/${app_name} $REGISTRY/$REGISTRY_NAMESPACE/${app_name}:${app_version} +docker push $REGISTRY/$REGISTRY_NAMESPACE/${app_name}:${app_version} +echo 'push success' diff --git a/index.html b/index.html new file mode 100644 index 0000000..691191c --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + SmartOpsWeb + + +
+ + + diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..99fe18a --- /dev/null +++ b/nginx.conf @@ -0,0 +1,50 @@ +user nginx; +worker_processes auto; + +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Headers' '*'; + add_header 'Access-Control-Allow-Methods' '*'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + + keepalive_timeout 65; + + server { + listen 80; + listen [::]:80; + + location /api { + proxy_pass http://gateway.fateverse.svc.cluster.local:8080; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Port $server_port; + proxy_set_header Host $host; + rewrite "^/api/(.*)$" /$1 break; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + } + + location / { + root /home/clay; + index index.html index.htm; + try_files $uri $uri/ /index.html; + } +} +} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..63afc76 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11294 @@ +{ + "name": "SmartOpsWeb", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "SmartOpsWeb", + "version": "0.0.0", + "dependencies": { + "@antv/g6": "^3.5.7", + "@tinymce/tinymce-vue": "^4.0.7", + "axios": "^1.4.0", + "d3": "^7.8.5", + "echarts": "^5.4.2", + "element-plus": "^2.3.5", + "highlight.js": "9.18.5", + "jquery": "^3.6.0", + "js-cookie": "^3.0.5", + "nprogress": "^0.2.0", + "pinia": "^2.0.35", + "sass": "^1.62.1", + "scss": "^0.2.4", + "sql-formatter": "^2.3.4", + "tinymce": "^5.0.4", + "unplugin-icons": "^0.16.1", + "vite-plugin-inspect": "^0.7.26", + "vue": "^3.2.47", + "vue-clipboard3": "^2.0.0", + "vue-codemirror": "^6.1.1", + "vue-json-viewer": "^3.0.4", + "vue-router": "^4.1.6", + "vuedraggable": "^4.1.0" + }, + "devDependencies": { + "@codemirror/lang-java": "^6.0.1", + "@codemirror/lang-javascript": "^6.1.9", + "@codemirror/lang-sql": "^6.5.4", + "@vitejs/plugin-vue": "^4.2.1", + "@vitejs/plugin-vue-jsx": "^3.0.1", + "unplugin-auto-import": "^0.15.3", + "unplugin-vue-components": "^0.24.1", + "vite": "^4.3.4", + "vite-plugin-svg-icons": "^0.4.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ant-design/colors": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-4.0.5.tgz", + "integrity": "sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==", + "dependencies": { + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@antfu/install-pkg": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz", + "integrity": "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==", + "dependencies": { + "execa": "^5.1.1", + "find-up": "^5.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz", + "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@antv/dom-util": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@antv/dom-util/-/dom-util-2.0.4.tgz", + "integrity": "sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/event-emitter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@antv/event-emitter/-/event-emitter-0.1.3.tgz", + "integrity": "sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==" + }, + "node_modules/@antv/g-base": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@antv/g-base/-/g-base-0.5.15.tgz", + "integrity": "sha512-QOtq50QpnKez9J75/Z8j2yZ7QDQdk8R8mVQJiHtaEO5eI7DM4ZbrsWff/Ew26JYmPWdq7nbRuARMAD4PX9uuLA==", + "dependencies": { + "@antv/event-emitter": "^0.1.1", + "@antv/g-math": "^0.1.9", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.13", + "@types/d3-timer": "^2.0.0", + "d3-ease": "^1.0.5", + "d3-interpolate": "^3.0.1", + "d3-timer": "^1.0.9", + "detect-browser": "^5.1.0", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g-base/node_modules/@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "dependencies": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g-canvas": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@antv/g-canvas/-/g-canvas-0.5.14.tgz", + "integrity": "sha512-IUGLEMIMAUYgaBMT8h3FTmYQYz7sjQkKWwh6Psqx+UPK86fySa+G8fMRrh1EqAL07jVB+GRnn6Ym+3FoFUgeFg==", + "dependencies": { + "@antv/g-base": "^0.5.12", + "@antv/g-math": "^0.1.9", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g-canvas/node_modules/@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "dependencies": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g-math": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@antv/g-math/-/g-math-0.1.9.tgz", + "integrity": "sha512-KHMSfPfZ5XHM1PZnG42Q2gxXfOitYveNTA7L61lR6mhZ8Y/aExsYmHqaKBsSarU0z+6WLrl9C07PQJZaw0uljQ==", + "dependencies": { + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0" + } + }, + "node_modules/@antv/g-svg": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@antv/g-svg/-/g-svg-0.5.7.tgz", + "integrity": "sha512-jUbWoPgr4YNsOat2Y/rGAouNQYGpw4R0cvlN0YafwOyacFFYy2zC8RslNd6KkPhhR3XHNSqJOuCYZj/YmLUwYw==", + "dependencies": { + "@antv/g-base": "^0.5.12", + "@antv/g-math": "^0.1.9", + "@antv/util": "~2.0.0", + "detect-browser": "^5.0.0", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/g6": { + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/@antv/g6/-/g6-3.8.5.tgz", + "integrity": "sha512-q+Fomc5ogcdcJ9usgYUVHzB8lFR5XHi4+O1BBFzA4ERgaF255xtrIpP631cD2wjByDq/9MbBCSpFqeOgBg2eOg==", + "dependencies": { + "@ant-design/colors": "^4.0.5", + "@antv/dom-util": "^2.0.1", + "@antv/event-emitter": "~0.1.0", + "@antv/g-base": "^0.5.1", + "@antv/g-canvas": "^0.5.2", + "@antv/g-math": "^0.1.1", + "@antv/g-svg": "^0.5.1", + "@antv/hierarchy": "^0.6.2", + "@antv/matrix-util": "^2.0.4", + "@antv/path-util": "^2.0.3", + "@antv/scale": "^0.3.1", + "@antv/util": "~2.0.5", + "color": "^3.1.3", + "d3-force": "^2.0.1", + "dagre": "^0.8.5", + "insert-css": "^2.0.0", + "ml-matrix": "^6.5.0" + } + }, + "node_modules/@antv/gl-matrix": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@antv/gl-matrix/-/gl-matrix-2.7.1.tgz", + "integrity": "sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q==" + }, + "node_modules/@antv/hierarchy": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/@antv/hierarchy/-/hierarchy-0.6.11.tgz", + "integrity": "sha512-RJVhEMCuu4vj+Dt25lXIiNdd7jaqm/fqWGYikiELha4S5tnzdJoTUaUvvpfWlxLx4B0RsS9XRwBs1bOKN71TKg==", + "dependencies": { + "@antv/util": "^2.0.7" + } + }, + "node_modules/@antv/matrix-util": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-2.0.7.tgz", + "integrity": "sha512-bogifQY8jplWtSTZsPqBOdBlDdkM7IwDqYL8eMYL8OaSyOPCS7l9bnEQjQ9qTAwfCd7wHTuPoCnCpbiR8BYFvQ==", + "dependencies": { + "@antv/gl-matrix": "^2.7.1", + "@antv/util": "^2.0.7", + "tslib": "^1.10.0" + } + }, + "node_modules/@antv/matrix-util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@antv/path-util": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@antv/path-util/-/path-util-2.0.15.tgz", + "integrity": "sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw==", + "dependencies": { + "@antv/matrix-util": "^3.0.4", + "@antv/util": "^2.0.9", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/path-util/node_modules/@antv/matrix-util": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.0.4.tgz", + "integrity": "sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==", + "dependencies": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.3.0", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/scale": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@antv/scale/-/scale-0.3.18.tgz", + "integrity": "sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w==", + "dependencies": { + "@antv/util": "~2.0.3", + "fecha": "~4.2.0", + "tslib": "^2.0.0" + } + }, + "node_modules/@antv/util": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@antv/util/-/util-2.0.17.tgz", + "integrity": "sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==", + "dependencies": { + "csstype": "^3.0.8", + "tslib": "^2.0.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", + "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.12.0.tgz", + "integrity": "sha512-r4IjdYFthwbCQyvqnSlx0WBHRHi8nBvU+WjJxFUij81qsBfhNudf/XKKmmC2j3m0LaOYUQTf3qiEK1J8lO1sdg==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + }, + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", + "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-java": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-java/-/lang-java-6.0.1.tgz", + "integrity": "sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==", + "dev": true, + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/java": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-javascript": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.1.tgz", + "integrity": "sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==", + "dev": true, + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-sql": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.5.5.tgz", + "integrity": "sha512-DvOaP2RXLb2xlxJxxydTFfwyYw5YDqEFea6aAfgh9UH0kUD6J1KFZ0xPgPpw1eo/5s2w3L6uh5PVR7GM23GxkQ==", + "dev": true, + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", + "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz", + "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.5.tgz", + "integrity": "sha512-PIEN3Ke1buPod2EHbJsoQwlbpkz30qGZKcnmH1eihq9+bPQx8gelauUwLYaY4vBOuBAuEhmpDLii4rj/uO0yMA==", + "peer": true, + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.0.tgz", + "integrity": "sha512-hm8XshYj5Fo30Bb922QX9hXB/bxOAVH+qaqHBzw5TKa72vOeslyGwd4X8M0c1dJ9JqxlaMceOQ8RsL9tC7gU0A==" + }, + "node_modules/@codemirror/view": { + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.23.1.tgz", + "integrity": "sha512-J2Xnn5lFYT1ZN/5ewEoMBCmLlL71lZ3mBdb7cUEuHhX2ESoSrNEucpsDXpX22EuTGm9LOgC9v4Z0wx+Ez8QmGA==", + "dependencies": { + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", + "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "dependencies": { + "@floating-ui/utils": "^0.2.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz", + "integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.1" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==" + }, + "node_modules/@iconify/utils": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.20.tgz", + "integrity": "sha512-t8TeKlYK/5i9yTY9VAGAE4P0qQHd/0vH+VSRO+bdpxlt8wqB6f2I0/IrciRsdeFZPMoL8IICgP7lgl2ZtbG8Tw==", + "dependencies": { + "@antfu/install-pkg": "^0.1.1", + "@antfu/utils": "^0.7.5", + "@iconify/types": "^2.0.0", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "local-pkg": "^0.5.0" + } + }, + "node_modules/@iconify/utils/node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lezer/common": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==" + }, + "node_modules/@lezer/highlight": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", + "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/java": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@lezer/java/-/java-1.1.1.tgz", + "integrity": "sha512-mt3dX13fRlpY7RlWELYRakanXgmwXsLRCrhstrn+c1sZd7jR2xle46/3heoxGd+oHxnuTnpoyXTyxcLJQs9+mQ==", + "dev": true, + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/javascript": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.13.tgz", + "integrity": "sha512-5IBr8LIO3xJdJH1e9aj/ZNLE4LSbdsx25wFmGRAZsj2zSmwAYjx26JyU/BYOCpRQlu1jcv1z3vy4NB9+UkfRow==", + "dev": true, + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", + "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.24", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", + "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==" + }, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@tinymce/tinymce-vue": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@tinymce/tinymce-vue/-/tinymce-vue-4.0.7.tgz", + "integrity": "sha512-1esB8wGWrjPCY+rK8vy3QB1cxwXo7HLJWuNrcyPl6LOVR+QJjub0OiV/C+TUEsLN6OpCtRv+QnIqMC5vXz783Q==", + "dependencies": { + "tinymce": "^5.5.0" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/d3-timer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-2.0.3.tgz", + "integrity": "sha512-jhAJzaanK5LqyLQ50jJNIrB8fjL9gwWZTgYjevPvkDLMU+kTAZkYsobI59nYoeSrH1PucuyJEi247Pb90t6XUg==" + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/svgo": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", + "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==", + "dev": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz", + "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3", + "@vue/babel-plugin-jsx": "^1.1.5" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.1.tgz", + "integrity": "sha512-jtEXim+pfyHWwvheYwUwSXm43KwQo8nhOBDyjrUITV6X2tB7lJm6n/+4sqR8137UVZZul5hBzWHdZ2uStYpyRQ==", + "dev": true + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.1.tgz", + "integrity": "sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", + "@vue/babel-helper-vue-transform-on": "1.2.1", + "@vue/babel-plugin-resolve-type": "1.2.1", + "camelcase": "^6.3.0", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.1.tgz", + "integrity": "sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/parser": "^7.23.6", + "@vue/compiler-sfc": "^3.4.15" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz", + "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==", + "dependencies": { + "@babel/parser": "^7.23.6", + "@vue/shared": "3.4.15", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz", + "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==", + "dependencies": { + "@vue/compiler-core": "3.4.15", + "@vue/shared": "3.4.15" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz", + "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==", + "dependencies": { + "@babel/parser": "^7.23.6", + "@vue/compiler-core": "3.4.15", + "@vue/compiler-dom": "3.4.15", + "@vue/compiler-ssr": "3.4.15", + "@vue/shared": "3.4.15", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.33", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz", + "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==", + "dependencies": { + "@vue/compiler-dom": "3.4.15", + "@vue/shared": "3.4.15" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + }, + "node_modules/@vue/reactivity": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz", + "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==", + "dependencies": { + "@vue/shared": "3.4.15" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz", + "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==", + "dependencies": { + "@vue/reactivity": "3.4.15", + "@vue/shared": "3.4.15" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz", + "integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==", + "dependencies": { + "@vue/runtime-core": "3.4.15", + "@vue/shared": "3.4.15", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.15.tgz", + "integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==", + "dependencies": { + "@vue/compiler-ssr": "3.4.15", + "@vue/shared": "3.4.15" + }, + "peerDependencies": { + "vue": "3.4.15" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz", + "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==" + }, + "node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cache-base/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001583", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001583.tgz", + "integrity": "sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/class-utils/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "peer": true, + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-select/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/css-select/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", + "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-quadtree": "1 - 2", + "d3-timer": "1 - 2" + } + }, + "node_modules/d3-force/node_modules/d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "node_modules/d3-force/node_modules/d3-quadtree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", + "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "dependencies": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-browser/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/default-browser/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "node_modules/detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/dom-serializer/node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "dependencies": { + "domelementtype": "1" + } + }, + "node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/echarts": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.3.tgz", + "integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.4.4" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.656", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz", + "integrity": "sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q==", + "dev": true + }, + "node_modules/element-plus": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.5.5.tgz", + "integrity": "sha512-yGU/MruLOWI0ImQPFCyFM4cXtHtILJNAi0hhLImcxjRukjgQLYNkvcvbwqNgBUt808KSeKF9MyxENFyBQLTg+Q==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-stack-parser-es": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.1.tgz", + "integrity": "sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "9.18.5", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", + "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==", + "deprecated": "Support has ended for 9.x series. Upgrade to @latest", + "hasInstallScript": true, + "engines": { + "node": "*" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "dependencies": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/insert-css": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", + "integrity": "sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA==" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-any-array": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.1.tgz", + "integrity": "sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==" + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" + }, + "node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.6", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.6.tgz", + "integrity": "sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "node_modules/merge-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz", + "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", + "dev": true, + "dependencies": { + "is-plain-obj": "^1.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ml-array-max": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/ml-array-max/-/ml-array-max-1.2.4.tgz", + "integrity": "sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==", + "dependencies": { + "is-any-array": "^2.0.0" + } + }, + "node_modules/ml-array-min": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/ml-array-min/-/ml-array-min-1.2.3.tgz", + "integrity": "sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==", + "dependencies": { + "is-any-array": "^2.0.0" + } + }, + "node_modules/ml-array-rescale": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz", + "integrity": "sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==", + "dependencies": { + "is-any-array": "^2.0.0", + "ml-array-max": "^1.2.4", + "ml-array-min": "^1.2.3" + } + }, + "node_modules/ml-matrix": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.11.0.tgz", + "integrity": "sha512-7jr9NmFRkaUxbKslfRu3aZOjJd2LkSitCGv+QH9PF0eJoEG7jIpjXra1Vw8/kgao8+kHCSsJONG6vfWmXQ+/Eg==", + "dependencies": { + "is-any-array": "^2.0.1", + "ml-array-rescale": "^1.3.7" + } + }, + "node_modules/mlly": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz", + "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==", + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nanomatch/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ometa": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ometa/-/ometa-0.2.2.tgz", + "integrity": "sha512-LZuoK/yjU3FvrxPjUXUlZ1bavCfBPqauA7fsNdwi+AVhRdyk2IzgP3JRnevvjzQ6fKHdUw8YISshf53FmpHrng==", + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-prefix-selector": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz", + "integrity": "sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==", + "dev": true, + "peerDependencies": { + "postcss": ">4 <9" + } + }, + "node_modules/posthtml": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz", + "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==", + "dev": true, + "dependencies": { + "posthtml-parser": "^0.2.0", + "posthtml-render": "^1.0.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/posthtml-parser": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz", + "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==", + "dev": true, + "dependencies": { + "htmlparser2": "^3.8.3", + "isobject": "^2.1.0" + } + }, + "node_modules/posthtml-rename-id": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz", + "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==", + "dev": true, + "dependencies": { + "escape-string-regexp": "1.0.5" + } + }, + "node_modules/posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/posthtml-svg-mode": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz", + "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==", + "dev": true, + "dependencies": { + "merge-options": "1.0.1", + "posthtml": "^0.9.2", + "posthtml-parser": "^0.2.1", + "posthtml-render": "^1.0.6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regex-not/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.70.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", + "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/scss": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/scss/-/scss-0.2.4.tgz", + "integrity": "sha512-4u8V87F+Q/upVhUmhPnB4C1R11xojkRkWjExL2v0CX2EXTg18VrKd+9JWoeyCp2VEMdSpJsyAvVU+rVjogh51A==", + "dependencies": { + "ometa": "0.2.2" + }, + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/scule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/scule/-/scule-1.2.0.tgz", + "integrity": "sha512-CRCmi5zHQnSoeCik9565PONMg0kfkvYmcSqrbOJY4txFfy1wvVULV4FDaiXhUblUgahdqz3F2NwHZ8i4eBTwUw==", + "dev": true + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sql-formatter": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-2.3.4.tgz", + "integrity": "sha512-CajWtvzYoBJbD5PQeVe3E7AOHAIYvRQEPOKgF9kfKNeY8jtjBiiA6pDzkMuAID8jJMluoPvyKveLigSaA5tKQQ==", + "dependencies": { + "lodash": "^4.17.20" + } + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "dev": true + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/style-mod": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz", + "integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-baker": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.7.0.tgz", + "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==", + "dev": true, + "dependencies": { + "bluebird": "^3.5.0", + "clone": "^2.1.1", + "he": "^1.1.1", + "image-size": "^0.5.1", + "loader-utils": "^1.1.0", + "merge-options": "1.0.1", + "micromatch": "3.1.0", + "postcss": "^5.2.17", + "postcss-prefix-selector": "^1.6.0", + "posthtml-rename-id": "^1.0", + "posthtml-svg-mode": "^1.0.3", + "query-string": "^4.3.2", + "traverse": "^0.6.6" + } + }, + "node_modules/svg-baker/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/chalk/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svg-baker/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/micromatch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz", + "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.2.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "extglob": "^2.0.2", + "fragment-cache": "^0.2.1", + "kind-of": "^5.0.2", + "nanomatch": "^1.2.1", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/svg-baker/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-baker/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/svg-baker/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, + "node_modules/tinymce": { + "version": "5.10.9", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.10.9.tgz", + "integrity": "sha512-5bkrors87X9LhYX2xq8GgPHrIgJYHl87YNs+kBcjQ5I3CiUgzo/vFcGvT3MZQ9QHsEeYMhYO6a5CLGGffR8hMg==" + }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-regex/node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/traverse": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/ufo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==" + }, + "node_modules/unimport": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.7.1.tgz", + "integrity": "sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.1.0", + "acorn": "^8.11.2", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "fast-glob": "^3.3.2", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "mlly": "^1.4.2", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "scule": "^1.1.1", + "strip-literal": "^1.3.0", + "unplugin": "^1.5.1" + } + }, + "node_modules/unimport/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unimport/node_modules/local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unplugin": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.6.0.tgz", + "integrity": "sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ==", + "dependencies": { + "acorn": "^8.11.2", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.1" + } + }, + "node_modules/unplugin-auto-import": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.15.3.tgz", + "integrity": "sha512-RLT8SqbPn4bT7yBshZId0uPSofKWnwr66RyDaxWaFb/+f7OTDOWAsVNz+hOQLBWSjvbekr2xZY9ccS8TDHJbCQ==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.2", + "@rollup/pluginutils": "^5.0.2", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.0", + "minimatch": "^9.0.0", + "unimport": "^3.0.6", + "unplugin": "^1.3.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@nuxt/kit": "^3.2.2", + "@vueuse/core": "*" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@vueuse/core": { + "optional": true + } + } + }, + "node_modules/unplugin-icons": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.16.6.tgz", + "integrity": "sha512-jL70sAC7twp4hI/MTfm+vyvTRtHqiEIzf3XOjJz7yzhMEEQnk5Ey5YIXRAU03Mc4BF99ITvvnBzfyRZee86OeA==", + "dependencies": { + "@antfu/install-pkg": "^0.1.1", + "@antfu/utils": "^0.7.6", + "@iconify/utils": "^2.1.9", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "local-pkg": "^0.4.3", + "unplugin": "^1.4.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@svgr/core": ">=7.0.0", + "@svgx/core": "^1.0.1", + "@vue/compiler-sfc": "^3.0.2 || ^2.7.0", + "vue-template-compiler": "^2.6.12", + "vue-template-es2015-compiler": "^1.9.0" + }, + "peerDependenciesMeta": { + "@svgr/core": { + "optional": true + }, + "@svgx/core": { + "optional": true + }, + "@vue/compiler-sfc": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + }, + "vue-template-es2015-compiler": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.24.1.tgz", + "integrity": "sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.2", + "@rollup/pluginutils": "^5.0.2", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.2.12", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.0", + "minimatch": "^7.4.2", + "resolve": "^1.22.1", + "unplugin": "^1.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@babel/parser": "^7.15.8", + "@nuxt/kit": "^3.2.2", + "vue": "2 || 3" + }, + "peerDependenciesMeta": { + "@babel/parser": { + "optional": true + }, + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-inspect": { + "version": "0.7.42", + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.7.42.tgz", + "integrity": "sha512-JCyX86wr3siQc+p9Kd0t8VkFHAJag0RaQVIpdFGSv5FEaePEVB6+V/RGtz2dQkkGSXQzRWrPs4cU3dRKg32bXw==", + "dependencies": { + "@antfu/utils": "^0.7.6", + "@rollup/pluginutils": "^5.0.5", + "debug": "^4.3.4", + "error-stack-parser-es": "^0.1.1", + "fs-extra": "^11.1.1", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "sirv": "^2.0.3" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/vite-plugin-svg-icons": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/vite-plugin-svg-icons/-/vite-plugin-svg-icons-0.4.3.tgz", + "integrity": "sha512-347V7E1lQfpyZDoRImhBWrZBCpDaiEL9OCZ2dFtkyBD0mbWG6XELQ2XY0pwQgyDTqfcadmU/uNex9LQVctSlLg==", + "dev": true, + "dependencies": { + "@types/svgo": "^1.3.5", + "debug": "^4.3.2", + "etag": "^1.8.1", + "fs-extra": "^9.1.0", + "svg-baker": "1.7.0", + "svgo": "^2.3.0" + }, + "peerDependencies": { + "vite": ">=2.0.0" + } + }, + "node_modules/vite-plugin-svg-icons/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.15.tgz", + "integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==", + "dependencies": { + "@vue/compiler-dom": "3.4.15", + "@vue/compiler-sfc": "3.4.15", + "@vue/runtime-dom": "3.4.15", + "@vue/server-renderer": "3.4.15", + "@vue/shared": "3.4.15" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-clipboard3": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz", + "integrity": "sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A==", + "dependencies": { + "clipboard": "^2.0.6" + } + }, + "node_modules/vue-codemirror": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vue-codemirror/-/vue-codemirror-6.1.1.tgz", + "integrity": "sha512-rTAYo44owd282yVxKtJtnOi7ERAcXTeviwoPXjIc6K/IQYUsoDkzPvw/JDFtSP6T7Cz/2g3EHaEyeyaQCKoDMg==", + "dependencies": { + "@codemirror/commands": "6.x", + "@codemirror/language": "6.x", + "@codemirror/state": "6.x", + "@codemirror/view": "6.x" + }, + "peerDependencies": { + "codemirror": "6.x", + "vue": "3.x" + } + }, + "node_modules/vue-json-viewer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/vue-json-viewer/-/vue-json-viewer-3.0.4.tgz", + "integrity": "sha512-pnC080rTub6YjccthVSNQod2z9Sl5IUUq46srXtn6rxwhW8QM4rlYn+CTSLFKXWfw+N3xv77Cioxw7B4XUKIbQ==", + "dependencies": { + "clipboard": "^2.0.4" + }, + "peerDependencies": { + "vue": "^3.2.2" + } + }, + "node_modules/vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zrender": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.4.tgz", + "integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@ant-design/colors": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-4.0.5.tgz", + "integrity": "sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==", + "requires": { + "tinycolor2": "^1.4.1" + } + }, + "@antfu/install-pkg": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.1.1.tgz", + "integrity": "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==", + "requires": { + "execa": "^5.1.1", + "find-up": "^5.0.0" + } + }, + "@antfu/utils": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz", + "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==" + }, + "@antv/dom-util": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@antv/dom-util/-/dom-util-2.0.4.tgz", + "integrity": "sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ==", + "requires": { + "tslib": "^2.0.3" + } + }, + "@antv/event-emitter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@antv/event-emitter/-/event-emitter-0.1.3.tgz", + "integrity": "sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==" + }, + "@antv/g-base": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@antv/g-base/-/g-base-0.5.15.tgz", + "integrity": "sha512-QOtq50QpnKez9J75/Z8j2yZ7QDQdk8R8mVQJiHtaEO5eI7DM4ZbrsWff/Ew26JYmPWdq7nbRuARMAD4PX9uuLA==", + "requires": { + "@antv/event-emitter": "^0.1.1", + "@antv/g-math": "^0.1.9", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.13", + "@types/d3-timer": "^2.0.0", + "d3-ease": "^1.0.5", + "d3-interpolate": "^3.0.1", + "d3-timer": "^1.0.9", + "detect-browser": "^5.1.0", + "tslib": "^2.0.3" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + } + } + }, + "@antv/g-canvas": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@antv/g-canvas/-/g-canvas-0.5.14.tgz", + "integrity": "sha512-IUGLEMIMAUYgaBMT8h3FTmYQYz7sjQkKWwh6Psqx+UPK86fySa+G8fMRrh1EqAL07jVB+GRnn6Ym+3FoFUgeFg==", + "requires": { + "@antv/g-base": "^0.5.12", + "@antv/g-math": "^0.1.9", + "@antv/matrix-util": "^3.1.0-beta.1", + "@antv/path-util": "~2.0.5", + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0", + "tslib": "^2.0.3" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.1.0-beta.3", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.1.0-beta.3.tgz", + "integrity": "sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.4.3", + "tslib": "^2.0.3" + } + } + } + }, + "@antv/g-math": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@antv/g-math/-/g-math-0.1.9.tgz", + "integrity": "sha512-KHMSfPfZ5XHM1PZnG42Q2gxXfOitYveNTA7L61lR6mhZ8Y/aExsYmHqaKBsSarU0z+6WLrl9C07PQJZaw0uljQ==", + "requires": { + "@antv/util": "~2.0.0", + "gl-matrix": "^3.0.0" + } + }, + "@antv/g-svg": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@antv/g-svg/-/g-svg-0.5.7.tgz", + "integrity": "sha512-jUbWoPgr4YNsOat2Y/rGAouNQYGpw4R0cvlN0YafwOyacFFYy2zC8RslNd6KkPhhR3XHNSqJOuCYZj/YmLUwYw==", + "requires": { + "@antv/g-base": "^0.5.12", + "@antv/g-math": "^0.1.9", + "@antv/util": "~2.0.0", + "detect-browser": "^5.0.0", + "tslib": "^2.0.3" + } + }, + "@antv/g6": { + "version": "3.8.5", + "resolved": "https://registry.npmjs.org/@antv/g6/-/g6-3.8.5.tgz", + "integrity": "sha512-q+Fomc5ogcdcJ9usgYUVHzB8lFR5XHi4+O1BBFzA4ERgaF255xtrIpP631cD2wjByDq/9MbBCSpFqeOgBg2eOg==", + "requires": { + "@ant-design/colors": "^4.0.5", + "@antv/dom-util": "^2.0.1", + "@antv/event-emitter": "~0.1.0", + "@antv/g-base": "^0.5.1", + "@antv/g-canvas": "^0.5.2", + "@antv/g-math": "^0.1.1", + "@antv/g-svg": "^0.5.1", + "@antv/hierarchy": "^0.6.2", + "@antv/matrix-util": "^2.0.4", + "@antv/path-util": "^2.0.3", + "@antv/scale": "^0.3.1", + "@antv/util": "~2.0.5", + "color": "^3.1.3", + "d3-force": "^2.0.1", + "dagre": "^0.8.5", + "insert-css": "^2.0.0", + "ml-matrix": "^6.5.0" + } + }, + "@antv/gl-matrix": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@antv/gl-matrix/-/gl-matrix-2.7.1.tgz", + "integrity": "sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q==" + }, + "@antv/hierarchy": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/@antv/hierarchy/-/hierarchy-0.6.11.tgz", + "integrity": "sha512-RJVhEMCuu4vj+Dt25lXIiNdd7jaqm/fqWGYikiELha4S5tnzdJoTUaUvvpfWlxLx4B0RsS9XRwBs1bOKN71TKg==", + "requires": { + "@antv/util": "^2.0.7" + } + }, + "@antv/matrix-util": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-2.0.7.tgz", + "integrity": "sha512-bogifQY8jplWtSTZsPqBOdBlDdkM7IwDqYL8eMYL8OaSyOPCS7l9bnEQjQ9qTAwfCd7wHTuPoCnCpbiR8BYFvQ==", + "requires": { + "@antv/gl-matrix": "^2.7.1", + "@antv/util": "^2.0.7", + "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@antv/path-util": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@antv/path-util/-/path-util-2.0.15.tgz", + "integrity": "sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw==", + "requires": { + "@antv/matrix-util": "^3.0.4", + "@antv/util": "^2.0.9", + "tslib": "^2.0.3" + }, + "dependencies": { + "@antv/matrix-util": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@antv/matrix-util/-/matrix-util-3.0.4.tgz", + "integrity": "sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==", + "requires": { + "@antv/util": "^2.0.9", + "gl-matrix": "^3.3.0", + "tslib": "^2.0.3" + } + } + } + }, + "@antv/scale": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@antv/scale/-/scale-0.3.18.tgz", + "integrity": "sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w==", + "requires": { + "@antv/util": "~2.0.3", + "fecha": "~4.2.0", + "tslib": "^2.0.0" + } + }, + "@antv/util": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@antv/util/-/util-2.0.17.tgz", + "integrity": "sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==", + "requires": { + "csstype": "^3.0.8", + "tslib": "^2.0.3" + } + }, + "@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + } + }, + "@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true + }, + "@babel/core": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + } + }, + "@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "requires": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "requires": { + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.15" + } + }, + "@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true + }, + "@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", + "dev": true, + "requires": { + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" + } + }, + "@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==" + }, + "@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", + "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + } + }, + "@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + } + }, + "@babel/traverse": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + } + }, + "@codemirror/autocomplete": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.12.0.tgz", + "integrity": "sha512-r4IjdYFthwbCQyvqnSlx0WBHRHi8nBvU+WjJxFUij81qsBfhNudf/XKKmmC2j3m0LaOYUQTf3qiEK1J8lO1sdg==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/commands": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", + "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.1.0" + } + }, + "@codemirror/lang-java": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-java/-/lang-java-6.0.1.tgz", + "integrity": "sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==", + "dev": true, + "requires": { + "@codemirror/language": "^6.0.0", + "@lezer/java": "^1.0.0" + } + }, + "@codemirror/lang-javascript": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.1.tgz", + "integrity": "sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==", + "dev": true, + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "@codemirror/lang-sql": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.5.5.tgz", + "integrity": "sha512-DvOaP2RXLb2xlxJxxydTFfwyYw5YDqEFea6aAfgh9UH0kUD6J1KFZ0xPgPpw1eo/5s2w3L6uh5PVR7GM23GxkQ==", + "dev": true, + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@codemirror/language": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.1.tgz", + "integrity": "sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "@codemirror/lint": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.5.0.tgz", + "integrity": "sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/search": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.5.tgz", + "integrity": "sha512-PIEN3Ke1buPod2EHbJsoQwlbpkz30qGZKcnmH1eihq9+bPQx8gelauUwLYaY4vBOuBAuEhmpDLii4rj/uO0yMA==", + "peer": true, + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/state": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.0.tgz", + "integrity": "sha512-hm8XshYj5Fo30Bb922QX9hXB/bxOAVH+qaqHBzw5TKa72vOeslyGwd4X8M0c1dJ9JqxlaMceOQ8RsL9tC7gU0A==" + }, + "@codemirror/view": { + "version": "6.23.1", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.23.1.tgz", + "integrity": "sha512-J2Xnn5lFYT1ZN/5ewEoMBCmLlL71lZ3mBdb7cUEuHhX2ESoSrNEucpsDXpX22EuTGm9LOgC9v4Z0wx+Ez8QmGA==", + "requires": { + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==" + }, + "@element-plus/icons-vue": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", + "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", + "requires": {} + }, + "@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "optional": true + }, + "@floating-ui/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "requires": { + "@floating-ui/utils": "^0.2.1" + } + }, + "@floating-ui/dom": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz", + "integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==", + "requires": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.1" + } + }, + "@floating-ui/utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + }, + "@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==" + }, + "@iconify/utils": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.1.20.tgz", + "integrity": "sha512-t8TeKlYK/5i9yTY9VAGAE4P0qQHd/0vH+VSRO+bdpxlt8wqB6f2I0/IrciRsdeFZPMoL8IICgP7lgl2ZtbG8Tw==", + "requires": { + "@antfu/install-pkg": "^0.1.1", + "@antfu/utils": "^0.7.5", + "@iconify/types": "^2.0.0", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "local-pkg": "^0.5.0" + }, + "dependencies": { + "local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "requires": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@lezer/common": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.1.tgz", + "integrity": "sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==" + }, + "@lezer/highlight": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", + "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/java": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@lezer/java/-/java-1.1.1.tgz", + "integrity": "sha512-mt3dX13fRlpY7RlWELYRakanXgmwXsLRCrhstrn+c1sZd7jR2xle46/3heoxGd+oHxnuTnpoyXTyxcLJQs9+mQ==", + "dev": true, + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/javascript": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.13.tgz", + "integrity": "sha512-5IBr8LIO3xJdJH1e9aj/ZNLE4LSbdsx25wFmGRAZsj2zSmwAYjx26JyU/BYOCpRQlu1jcv1z3vy4NB9+UkfRow==", + "dev": true, + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "@lezer/lr": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.0.tgz", + "integrity": "sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@polka/url": { + "version": "1.0.0-next.24", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", + "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==" + }, + "@popperjs/core": { + "version": "npm:@sxzz/popperjs-es@2.11.7", + "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==" + }, + "@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@tinymce/tinymce-vue": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@tinymce/tinymce-vue/-/tinymce-vue-4.0.7.tgz", + "integrity": "sha512-1esB8wGWrjPCY+rK8vy3QB1cxwXo7HLJWuNrcyPl6LOVR+QJjub0OiV/C+TUEsLN6OpCtRv+QnIqMC5vXz783Q==", + "requires": { + "tinymce": "^5.5.0" + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/d3-timer": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-2.0.3.tgz", + "integrity": "sha512-jhAJzaanK5LqyLQ50jJNIrB8fjL9gwWZTgYjevPvkDLMU+kTAZkYsobI59nYoeSrH1PucuyJEi247Pb90t6XUg==" + }, + "@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" + }, + "@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/svgo": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", + "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==", + "dev": true + }, + "@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" + }, + "@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "dev": true, + "requires": {} + }, + "@vitejs/plugin-vue-jsx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.1.0.tgz", + "integrity": "sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==", + "dev": true, + "requires": { + "@babel/core": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3", + "@vue/babel-plugin-jsx": "^1.1.5" + } + }, + "@vue/babel-helper-vue-transform-on": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.1.tgz", + "integrity": "sha512-jtEXim+pfyHWwvheYwUwSXm43KwQo8nhOBDyjrUITV6X2tB7lJm6n/+4sqR8137UVZZul5hBzWHdZ2uStYpyRQ==", + "dev": true + }, + "@vue/babel-plugin-jsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.1.tgz", + "integrity": "sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", + "@vue/babel-helper-vue-transform-on": "1.2.1", + "@vue/babel-plugin-resolve-type": "1.2.1", + "camelcase": "^6.3.0", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + } + }, + "@vue/babel-plugin-resolve-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.1.tgz", + "integrity": "sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/parser": "^7.23.6", + "@vue/compiler-sfc": "^3.4.15" + } + }, + "@vue/compiler-core": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz", + "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==", + "requires": { + "@babel/parser": "^7.23.6", + "@vue/shared": "3.4.15", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-dom": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz", + "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==", + "requires": { + "@vue/compiler-core": "3.4.15", + "@vue/shared": "3.4.15" + } + }, + "@vue/compiler-sfc": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz", + "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==", + "requires": { + "@babel/parser": "^7.23.6", + "@vue/compiler-core": "3.4.15", + "@vue/compiler-dom": "3.4.15", + "@vue/compiler-ssr": "3.4.15", + "@vue/shared": "3.4.15", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.33", + "source-map-js": "^1.0.2" + } + }, + "@vue/compiler-ssr": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz", + "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==", + "requires": { + "@vue/compiler-dom": "3.4.15", + "@vue/shared": "3.4.15" + } + }, + "@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" + }, + "@vue/reactivity": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz", + "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==", + "requires": { + "@vue/shared": "3.4.15" + } + }, + "@vue/runtime-core": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz", + "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==", + "requires": { + "@vue/reactivity": "3.4.15", + "@vue/shared": "3.4.15" + } + }, + "@vue/runtime-dom": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz", + "integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==", + "requires": { + "@vue/runtime-core": "3.4.15", + "@vue/shared": "3.4.15", + "csstype": "^3.1.3" + } + }, + "@vue/server-renderer": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.15.tgz", + "integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==", + "requires": { + "@vue/compiler-ssr": "3.4.15", + "@vue/shared": "3.4.15" + } + }, + "@vue/shared": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz", + "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g==" + }, + "@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "requires": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "requires": {} + } + } + }, + "@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==" + }, + "@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "requires": { + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "requires": {} + } + } + }, + "acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "requires": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==" + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "requires": { + "big-integer": "^1.6.44" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "requires": { + "run-applescript": "^5.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001583", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001583.tgz", + "integrity": "sha512-acWTYaha8xfhA/Du/z4sNZjHUWjkiuoAi2LM+T/aL+kemKQgPT1xBb/YKjlQ0Qo8gvbHsGNplrEJ+9G3gL7i4Q==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "peer": true, + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "dependencies": { + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "dependencies": { + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + } + } + }, + "d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" + }, + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + }, + "d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "requires": { + "d3-array": "^3.2.0" + } + }, + "d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" + }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + } + }, + "d3-ease": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz", + "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==", + "requires": { + "d3-dispatch": "1 - 2", + "d3-quadtree": "1 - 2", + "d3-timer": "1 - 2" + }, + "dependencies": { + "d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "d3-quadtree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz", + "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==" + } + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + }, + "d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" + }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" + }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" + }, + "d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "requires": { + "d3-path": "^3.1.0" + } + }, + "d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, + "dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "requires": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "requires": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "dependencies": { + "execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==" + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==" + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" + }, + "npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==" + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==" + } + } + }, + "default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "requires": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + } + }, + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==" + }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "requires": { + "robust-predicates": "^3.0.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "echarts": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.3.tgz", + "integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.4.4" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + }, + "electron-to-chromium": { + "version": "1.4.656", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.656.tgz", + "integrity": "sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q==", + "dev": true + }, + "element-plus": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.5.5.tgz", + "integrity": "sha512-yGU/MruLOWI0ImQPFCyFM4cXtHtILJNAi0hhLImcxjRukjgQLYNkvcvbwqNgBUt808KSeKF9MyxENFyBQLTg+Q==", + "requires": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.3", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + } + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "error-stack-parser-es": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-0.1.1.tgz", + "integrity": "sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==" + }, + "esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "requires": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fastq": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "requires": { + "delegate": "^3.1.2" + } + }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "requires": { + "lodash": "^4.17.15" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highlight.js": { + "version": "9.18.5", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", + "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==" + }, + "html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + } + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true + }, + "immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "insert-css": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz", + "integrity": "sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA==" + }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + }, + "is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-any-array": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.1.tgz", + "integrity": "sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==" + }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "requires": { + "hasown": "^2.0.0" + } + }, + "is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==" + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "requires": { + "is-docker": "^3.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "requires": { + "is-docker": "^2.0.0" + }, + "dependencies": { + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + } + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "kolorist": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", + "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==" + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "requires": {} + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.30.6", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.6.tgz", + "integrity": "sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA==", + "requires": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, + "merge-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz", + "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.1" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "ml-array-max": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/ml-array-max/-/ml-array-max-1.2.4.tgz", + "integrity": "sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==", + "requires": { + "is-any-array": "^2.0.0" + } + }, + "ml-array-min": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/ml-array-min/-/ml-array-min-1.2.3.tgz", + "integrity": "sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==", + "requires": { + "is-any-array": "^2.0.0" + } + }, + "ml-array-rescale": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz", + "integrity": "sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==", + "requires": { + "is-any-array": "^2.0.0", + "ml-array-max": "^1.2.4", + "ml-array-min": "^1.2.3" + } + }, + "ml-matrix": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.11.0.tgz", + "integrity": "sha512-7jr9NmFRkaUxbKslfRu3aZOjJd2LkSitCGv+QH9PF0eJoEG7jIpjXra1Vw8/kgao8+kHCSsJONG6vfWmXQ+/Eg==", + "requires": { + "is-any-array": "^2.0.1", + "ml-array-rescale": "^1.3.7" + } + }, + "mlly": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz", + "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==", + "requires": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.0.3", + "ufo": "^1.3.2" + } + }, + "mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "ometa": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ometa/-/ometa-0.2.2.tgz", + "integrity": "sha512-LZuoK/yjU3FvrxPjUXUlZ1bavCfBPqauA7fsNdwi+AVhRdyk2IzgP3JRnevvjzQ6fKHdUw8YISshf53FmpHrng==" + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "requires": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "requires": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "requires": {} + } + } + }, + "pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "requires": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-prefix-selector": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz", + "integrity": "sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==", + "dev": true, + "requires": {} + }, + "posthtml": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz", + "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==", + "dev": true, + "requires": { + "posthtml-parser": "^0.2.0", + "posthtml-render": "^1.0.5" + } + }, + "posthtml-parser": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz", + "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==", + "dev": true, + "requires": { + "htmlparser2": "^3.8.3", + "isobject": "^2.1.0" + } + }, + "posthtml-rename-id": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz", + "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "posthtml-render": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz", + "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==", + "dev": true + }, + "posthtml-svg-mode": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz", + "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==", + "dev": true, + "requires": { + "merge-options": "1.0.1", + "posthtml": "^0.9.2", + "posthtml-parser": "^0.2.1", + "posthtml-render": "^1.0.6" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "requires": { + "execa": "^5.0.0" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass": { + "version": "1.70.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", + "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "scss": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/scss/-/scss-0.2.4.tgz", + "integrity": "sha512-4u8V87F+Q/upVhUmhPnB4C1R11xojkRkWjExL2v0CX2EXTg18VrKd+9JWoeyCp2VEMdSpJsyAvVU+rVjogh51A==", + "requires": { + "ometa": "0.2.2" + } + }, + "scule": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/scule/-/scule-1.2.0.tgz", + "integrity": "sha512-CRCmi5zHQnSoeCik9565PONMg0kfkvYmcSqrbOJY4txFfy1wvVULV4FDaiXhUblUgahdqz3F2NwHZ8i4eBTwUw==", + "dev": true + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + } + }, + "sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "requires": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "sql-formatter": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-2.3.4.tgz", + "integrity": "sha512-CajWtvzYoBJbD5PQeVe3E7AOHAIYvRQEPOKgF9kfKNeY8jtjBiiA6pDzkMuAID8jJMluoPvyKveLigSaA5tKQQ==", + "requires": { + "lodash": "^4.17.20" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "dev": true, + "requires": { + "acorn": "^8.10.0" + } + }, + "style-mod": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz", + "integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svg-baker": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.7.0.tgz", + "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "clone": "^2.1.1", + "he": "^1.1.1", + "image-size": "^0.5.1", + "loader-utils": "^1.1.0", + "merge-options": "1.0.1", + "micromatch": "3.1.0", + "postcss": "^5.2.17", + "postcss-prefix-selector": "^1.6.0", + "posthtml-rename-id": "^1.0", + "posthtml-svg-mode": "^1.0.3", + "query-string": "^4.3.2", + "traverse": "^0.6.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "micromatch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz", + "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.2.2", + "define-property": "^1.0.0", + "extend-shallow": "^2.0.1", + "extglob": "^2.0.2", + "fragment-cache": "^0.2.1", + "kind-of": "^5.0.2", + "nanomatch": "^1.2.1", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" + }, + "tinymce": { + "version": "5.10.9", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.10.9.tgz", + "integrity": "sha512-5bkrors87X9LhYX2xq8GgPHrIgJYHl87YNs+kBcjQ5I3CiUgzo/vFcGvT3MZQ9QHsEeYMhYO6a5CLGGffR8hMg==" + }, + "titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==" + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==" + }, + "traverse": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "dev": true + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "ufo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==" + }, + "unimport": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.7.1.tgz", + "integrity": "sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.1.0", + "acorn": "^8.11.2", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "fast-glob": "^3.3.2", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "mlly": "^1.4.2", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "scule": "^1.1.1", + "strip-literal": "^1.3.0", + "unplugin": "^1.5.1" + }, + "dependencies": { + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true + }, + "estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0" + } + }, + "local-pkg": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", + "dev": true, + "requires": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + } + } + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" + }, + "unplugin": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.6.0.tgz", + "integrity": "sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ==", + "requires": { + "acorn": "^8.11.2", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.1" + } + }, + "unplugin-auto-import": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.15.3.tgz", + "integrity": "sha512-RLT8SqbPn4bT7yBshZId0uPSofKWnwr66RyDaxWaFb/+f7OTDOWAsVNz+hOQLBWSjvbekr2xZY9ccS8TDHJbCQ==", + "dev": true, + "requires": { + "@antfu/utils": "^0.7.2", + "@rollup/pluginutils": "^5.0.2", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.0", + "minimatch": "^9.0.0", + "unimport": "^3.0.6", + "unplugin": "^1.3.1" + } + }, + "unplugin-icons": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.16.6.tgz", + "integrity": "sha512-jL70sAC7twp4hI/MTfm+vyvTRtHqiEIzf3XOjJz7yzhMEEQnk5Ey5YIXRAU03Mc4BF99ITvvnBzfyRZee86OeA==", + "requires": { + "@antfu/install-pkg": "^0.1.1", + "@antfu/utils": "^0.7.6", + "@iconify/utils": "^2.1.9", + "debug": "^4.3.4", + "kolorist": "^1.8.0", + "local-pkg": "^0.4.3", + "unplugin": "^1.4.0" + } + }, + "unplugin-vue-components": { + "version": "0.24.1", + "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.24.1.tgz", + "integrity": "sha512-T3A8HkZoIE1Cja95xNqolwza0yD5IVlgZZ1PVAGvVCx8xthmjsv38xWRCtHtwl+rvZyL9uif42SRkDGw9aCfMA==", + "dev": true, + "requires": { + "@antfu/utils": "^0.7.2", + "@rollup/pluginutils": "^5.0.2", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.2.12", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.0", + "minimatch": "^7.4.2", + "resolve": "^1.22.1", + "unplugin": "^1.1.0" + }, + "dependencies": { + "minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==" + }, + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "vite": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "requires": { + "esbuild": "^0.18.10", + "fsevents": "~2.3.2", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + } + }, + "vite-plugin-inspect": { + "version": "0.7.42", + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.7.42.tgz", + "integrity": "sha512-JCyX86wr3siQc+p9Kd0t8VkFHAJag0RaQVIpdFGSv5FEaePEVB6+V/RGtz2dQkkGSXQzRWrPs4cU3dRKg32bXw==", + "requires": { + "@antfu/utils": "^0.7.6", + "@rollup/pluginutils": "^5.0.5", + "debug": "^4.3.4", + "error-stack-parser-es": "^0.1.1", + "fs-extra": "^11.1.1", + "open": "^9.1.0", + "picocolors": "^1.0.0", + "sirv": "^2.0.3" + } + }, + "vite-plugin-svg-icons": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/vite-plugin-svg-icons/-/vite-plugin-svg-icons-0.4.3.tgz", + "integrity": "sha512-347V7E1lQfpyZDoRImhBWrZBCpDaiEL9OCZ2dFtkyBD0mbWG6XELQ2XY0pwQgyDTqfcadmU/uNex9LQVctSlLg==", + "dev": true, + "requires": { + "@types/svgo": "^1.3.5", + "debug": "^4.3.2", + "etag": "^1.8.1", + "fs-extra": "^9.1.0", + "svg-baker": "1.7.0", + "svgo": "^2.3.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, + "vue": { + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.15.tgz", + "integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==", + "requires": { + "@vue/compiler-dom": "3.4.15", + "@vue/compiler-sfc": "3.4.15", + "@vue/runtime-dom": "3.4.15", + "@vue/server-renderer": "3.4.15", + "@vue/shared": "3.4.15" + } + }, + "vue-clipboard3": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz", + "integrity": "sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A==", + "requires": { + "clipboard": "^2.0.6" + } + }, + "vue-codemirror": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vue-codemirror/-/vue-codemirror-6.1.1.tgz", + "integrity": "sha512-rTAYo44owd282yVxKtJtnOi7ERAcXTeviwoPXjIc6K/IQYUsoDkzPvw/JDFtSP6T7Cz/2g3EHaEyeyaQCKoDMg==", + "requires": { + "@codemirror/commands": "6.x", + "@codemirror/language": "6.x", + "@codemirror/state": "6.x", + "@codemirror/view": "6.x" + } + }, + "vue-json-viewer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/vue-json-viewer/-/vue-json-viewer-3.0.4.tgz", + "integrity": "sha512-pnC080rTub6YjccthVSNQod2z9Sl5IUUq46srXtn6rxwhW8QM4rlYn+CTSLFKXWfw+N3xv77Cioxw7B4XUKIbQ==", + "requires": { + "clipboard": "^2.0.4" + } + }, + "vue-router": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz", + "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==", + "requires": { + "@vue/devtools-api": "^6.5.0" + } + }, + "vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "requires": { + "sortablejs": "1.14.0" + } + }, + "w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, + "webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + }, + "zrender": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.4.tgz", + "integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==", + "requires": { + "tslib": "2.3.0" + }, + "dependencies": { + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..aec6836 --- /dev/null +++ b/package.json @@ -0,0 +1,47 @@ +{ + "name": "SmartOpsWeb", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@antv/g6": "^3.5.7", + "@tinymce/tinymce-vue": "^4.0.7", + "axios": "^1.4.0", + "d3": "^7.8.5", + "echarts": "^5.4.2", + "element-plus": "^2.3.5", + "highlight.js": "9.18.5", + "jquery": "^3.6.0", + "js-cookie": "^3.0.5", + "nprogress": "^0.2.0", + "pinia": "^2.0.35", + "sass": "^1.62.1", + "scss": "^0.2.4", + "sql-formatter": "^2.3.4", + "tinymce": "^5.0.4", + "unplugin-icons": "^0.16.1", + "vite-plugin-inspect": "^0.7.26", + "vue": "^3.2.47", + "vue-clipboard3": "^2.0.0", + "vue-codemirror": "^6.1.1", + "vue-json-viewer": "^3.0.4", + "vue-router": "^4.1.6", + "vuedraggable": "^4.1.0" + }, + "devDependencies": { + "@codemirror/lang-java": "^6.0.1", + "@codemirror/lang-javascript": "^6.1.9", + "@codemirror/lang-sql": "^6.5.4", + "@vitejs/plugin-vue": "^4.2.1", + "@vitejs/plugin-vue-jsx": "^3.0.1", + "lodash": "^4.17.21", + "unplugin-auto-import": "^0.15.3", + "unplugin-vue-components": "^0.24.1", + "vite": "^4.3.4", + "vite-plugin-svg-icons": "^0.4.0" + } +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/public/langs/zh_CN.js b/public/langs/zh_CN.js new file mode 100644 index 0000000..96e067c --- /dev/null +++ b/public/langs/zh_CN.js @@ -0,0 +1 @@ +tinymce.addI18n("zh_CN",{"Redo":"\u91cd\u505a","Undo":"\u64a4\u9500","Cut":"\u526a\u5207","Copy":"\u590d\u5236","Paste":"\u7c98\u8d34","Select all":"\u5168\u9009","New document":"\u65b0\u5efa\u6587\u6863","Ok":"\u786e\u5b9a","Cancel":"\u53d6\u6d88","Visual aids":"\u7f51\u683c\u7ebf","Bold":"\u7c97\u4f53","Italic":"\u659c\u4f53","Underline":"\u4e0b\u5212\u7ebf","Strikethrough":"\u5220\u9664\u7ebf","Superscript":"\u4e0a\u6807","Subscript":"\u4e0b\u6807","Clear formatting":"\u6e05\u9664\u683c\u5f0f","Remove":"\u79fb\u9664","Align left":"\u5de6\u5bf9\u9f50","Align center":"\u5c45\u4e2d\u5bf9\u9f50","Align right":"\u53f3\u5bf9\u9f50","No alignment":"\u672a\u5bf9\u9f50","Justify":"\u4e24\u7aef\u5bf9\u9f50","Bullet list":"\u65e0\u5e8f\u5217\u8868","Numbered list":"\u6709\u5e8f\u5217\u8868","Decrease indent":"\u51cf\u5c11\u7f29\u8fdb","Increase indent":"\u589e\u52a0\u7f29\u8fdb","Close":"\u5173\u95ed","Formats":"\u683c\u5f0f","Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.":"\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X/C/V\u7b49\u5feb\u6377\u952e\u3002","Headings":"\u6807\u9898","Heading 1":"\u4e00\u7ea7\u6807\u9898","Heading 2":"\u4e8c\u7ea7\u6807\u9898","Heading 3":"\u4e09\u7ea7\u6807\u9898","Heading 4":"\u56db\u7ea7\u6807\u9898","Heading 5":"\u4e94\u7ea7\u6807\u9898","Heading 6":"\u516d\u7ea7\u6807\u9898","Preformatted":"\u9884\u5148\u683c\u5f0f\u5316\u7684","Div":"Div","Pre":"\u524d\u8a00","Code":"\u4ee3\u7801","Paragraph":"\u6bb5\u843d","Blockquote":"\u5f15\u6587\u533a\u5757","Inline":"\u6587\u672c","Blocks":"\u6837\u5f0f","Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.":"\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002","Fonts":"\u5b57\u4f53","Font sizes":"\u5b57\u4f53\u5927\u5c0f","Class":"\u7c7b\u578b","Browse for an image":"\u6d4f\u89c8\u56fe\u50cf","OR":"\u6216","Drop an image here":"\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64","Upload":"\u4e0a\u4f20","Uploading image":"\u4e0a\u4f20\u56fe\u7247","Block":"\u5757","Align":"\u5bf9\u9f50","Default":"\u9884\u8bbe","Circle":"\u7a7a\u5fc3\u5706","Disc":"\u5b9e\u5fc3\u5706","Square":"\u5b9e\u5fc3\u65b9\u5757","Lower Alpha":"\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd","Lower Greek":"\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd","Lower Roman":"\u5c0f\u5199\u7f57\u9a6c\u6570\u5b57","Upper Alpha":"\u5927\u5199\u82f1\u6587\u5b57\u6bcd","Upper Roman":"\u5927\u5199\u7f57\u9a6c\u6570\u5b57","Anchor...":"\u951a\u70b9...","Anchor":"\u951a\u70b9","Name":"\u540d\u79f0","ID":"ID","ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.":"ID\u5e94\u8be5\u4ee5\u82f1\u6587\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u9762\u53ea\u80fd\u6709\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002","You have unsaved changes are you sure you want to navigate away?":"\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f","Restore last draft":"\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f","Special character...":"\u7279\u6b8a\u5b57\u7b26...","Special Character":"\u7279\u6b8a\u5b57\u7b26","Source code":"\u6e90\u4ee3\u7801","Insert/Edit code sample":"\u63d2\u5165/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b","Language":"\u8bed\u8a00","Code sample...":"\u793a\u4f8b\u4ee3\u7801...","Left to right":"\u7531\u5de6\u5230\u53f3","Right to left":"\u7531\u53f3\u5230\u5de6","Title":"\u6807\u9898","Fullscreen":"\u5168\u5c4f","Action":"\u52a8\u4f5c","Shortcut":"\u5feb\u6377\u65b9\u5f0f","Help":"\u5e2e\u52a9","Address":"\u5730\u5740","Focus to menubar":"\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f","Focus to toolbar":"\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f","Focus to element path":"\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84","Focus to contextual toolbar":"\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355","Insert link (if link plugin activated)":"\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)","Save (if save plugin activated)":"\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)","Find (if searchreplace plugin activated)":"\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)","Plugins installed ({0}):":"\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):","Premium plugins:":"\u4f18\u79c0\u63d2\u4ef6\uff1a","Learn more...":"\u4e86\u89e3\u66f4\u591a...","You are using {0}":"\u4f60\u6b63\u5728\u4f7f\u7528 {0}","Plugins":"\u63d2\u4ef6","Handy Shortcuts":"\u5feb\u6377\u952e","Horizontal line":"\u6c34\u5e73\u5206\u5272\u7ebf","Insert/edit image":"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247","Alternative description":"\u66ff\u4ee3\u63cf\u8ff0","Accessibility":"\u8f85\u52a9\u529f\u80fd","Image is decorative":"\u56fe\u50cf\u662f\u88c5\u9970\u6027\u7684","Source":"\u6e90","Dimensions":"\u5c3a\u5bf8","Constrain proportions":"\u4fdd\u6301\u6bd4\u4f8b","General":"\u4e00\u822c","Advanced":"\u9ad8\u7ea7","Style":"\u6837\u5f0f","Vertical space":"\u5782\u76f4\u95f4\u8ddd","Horizontal space":"\u6c34\u5e73\u95f4\u8ddd","Border":"\u6846\u7ebf","Insert image":"\u63d2\u5165\u56fe\u7247","Image...":"\u56fe\u7247...","Image list":"\u56fe\u7247\u6e05\u5355","Resize":"\u8c03\u6574\u5927\u5c0f","Insert date/time":"\u63d2\u5165\u65e5\u671f/\u65f6\u95f4","Date/time":"\u65e5\u671f/\u65f6\u95f4","Insert/edit link":"\u63d2\u5165/\u7f16\u8f91\u94fe\u63a5","Text to display":"\u8981\u663e\u793a\u7684\u6587\u672c","Url":"\u5730\u5740","Open link in...":"\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...","Current window":"\u5f53\u524d\u7a97\u53e3","None":"\u65e0","New window":"\u65b0\u7a97\u53e3","Open link":"\u6253\u5f00\u94fe\u63a5","Remove link":"\u79fb\u9664\u94fe\u63a5","Anchors":"\u951a\u70b9","Link...":"\u94fe\u63a5...","Paste or type a link":"\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5","The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?":"\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto: \u524d\u7f00\u5417\uff1f","The URL you entered seems to be an external link. Do you want to add the required http:// prefix?":"\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:// \u524d\u7f00\u5417\uff1f","The URL you entered seems to be an external link. Do you want to add the required https:// prefix?":"\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\u3002\u60a8\u60f3\u6dfb\u52a0\u6240\u9700\u7684 https:// \u524d\u7f00\u5417\uff1f","Link list":"\u94fe\u63a5\u6e05\u5355","Insert video":"\u63d2\u5165\u89c6\u9891","Insert/edit video":"\u63d2\u5165/\u7f16\u8f91\u89c6\u9891","Insert/edit media":"\u63d2\u5165/\u7f16\u8f91\u5a92\u4f53","Alternative source":"\u955c\u50cf","Alternative source URL":"\u66ff\u4ee3\u6765\u6e90\u7f51\u5740","Media poster (Image URL)":"\u5c01\u9762(\u56fe\u7247\u5730\u5740)","Paste your embed code below:":"\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:","Embed":"\u5185\u5d4c","Media...":"\u591a\u5a92\u4f53...","Nonbreaking space":"\u4e0d\u95f4\u65ad\u7a7a\u683c","Page break":"\u5206\u9875\u7b26","Paste as text":"\u7c98\u8d34\u4e3a\u6587\u672c","Preview":"\u9884\u89c8","Print":"\u6253\u5370","Print...":"\u6253\u5370...","Save":"\u4fdd\u5b58","Find":"\u5bfb\u627e","Replace with":"\u66ff\u6362\u4e3a","Replace":"\u66ff\u6362","Replace all":"\u66ff\u6362\u5168\u90e8","Previous":"\u4e0a\u4e00\u4e2a","Next":"\u4e0b\u4e00\u4e2a","Find and Replace":"\u67e5\u627e\u548c\u66ff\u6362","Find and replace...":"\u67e5\u627e\u5e76\u66ff\u6362...","Could not find the specified string.":"\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9\u3002","Match case":"\u5927\u5c0f\u5199\u5339\u914d","Find whole words only":"\u5168\u5b57\u5339\u914d","Find in selection":"\u5728\u9009\u533a\u4e2d\u67e5\u627e","Insert table":"\u63d2\u5165\u8868\u683c","Table properties":"\u8868\u683c\u5c5e\u6027","Delete table":"\u5220\u9664\u8868\u683c","Cell":"\u5355\u5143\u683c","Row":"\u884c","Column":"\u680f\u76ee","Cell properties":"\u5355\u5143\u683c\u5c5e\u6027","Merge cells":"\u5408\u5e76\u5355\u5143\u683c","Split cell":"\u62c6\u5206\u5355\u5143\u683c","Insert row before":"\u5728\u4e0a\u65b9\u63d2\u5165\u884c","Insert row after":"\u5728\u4e0b\u65b9\u63d2\u5165\u884c","Delete row":"\u5220\u9664\u884c","Row properties":"\u884c\u5c5e\u6027","Cut row":"\u526a\u5207\u884c","Cut column":"\u526a\u5207\u5217","Copy row":"\u590d\u5236\u884c","Copy column":"\u590d\u5236\u5217","Paste row before":"\u7c98\u8d34\u884c\u5230\u4e0a\u65b9","Paste column before":"\u7c98\u8d34\u6b64\u5217\u524d","Paste row after":"\u7c98\u8d34\u884c\u5230\u4e0b\u65b9","Paste column after":"\u7c98\u8d34\u540e\u9762\u7684\u5217","Insert column before":"\u5728\u5de6\u4fa7\u63d2\u5165\u5217","Insert column after":"\u5728\u53f3\u4fa7\u63d2\u5165\u5217","Delete column":"\u5220\u9664\u5217","Cols":"\u5217","Rows":"\u884c\u6570","Width":"\u5bbd\u5ea6","Height":"\u9ad8\u5ea6","Cell spacing":"\u5355\u5143\u683c\u5916\u95f4\u8ddd","Cell padding":"\u5355\u5143\u683c\u5185\u8fb9\u8ddd","Row clipboard actions":"\u884c\u526a\u8d34\u677f\u64cd\u4f5c","Column clipboard actions":"\u5217\u526a\u8d34\u677f\u64cd\u4f5c","Table styles":"\u8868\u683c\u6837\u5f0f","Cell styles":"\u5355\u5143\u683c\u6837\u5f0f","Column header":"\u5217\u6807\u9898","Row header":"\u884c\u5934","Table caption":"\u8868\u683c\u6807\u9898","Caption":"\u6807\u9898","Show caption":"\u663e\u793a\u6807\u9898","Left":"\u5de6","Center":"\u5c45\u4e2d","Right":"\u53f3","Cell type":"\u50a8\u5b58\u683c\u522b","Scope":"\u8303\u56f4","Alignment":"\u5bf9\u9f50","Horizontal align":"\u6c34\u5e73\u5bf9\u9f50","Vertical align":"\u5782\u76f4\u5bf9\u9f50","Top":"\u4e0a\u65b9\u5bf9\u9f50","Middle":"\u5c45\u4e2d\u5bf9\u9f50","Bottom":"\u4e0b\u65b9\u5bf9\u9f50","Header cell":"\u8868\u5934\u5355\u5143\u683c","Row group":"\u884c\u7ec4","Column group":"\u5217\u7ec4","Row type":"\u884c\u7c7b\u578b","Header":"\u8868\u5934","Body":"\u8868\u4f53","Footer":"\u8868\u5c3e","Border color":"\u6846\u7ebf\u989c\u8272","Solid":"\u5b9e\u7ebf","Dotted":"\u865a\u7ebf","Dashed":"\u865a\u7ebf","Double":"\u53cc\u7cbe\u5ea6","Groove":"\u51f9\u69fd","Ridge":"\u6d77\u810a\u5ea7","Inset":"\u5d4c\u5165","Outset":"\u5916\u7f6e","Hidden":"\u9690\u85cf","Insert template...":"\u63d2\u5165\u6a21\u677f...","Templates":"\u6a21\u677f","Template":"\u6a21\u677f","Insert Template":"\u63d2\u5165\u6a21\u677f","Text color":"\u6587\u672c\u989c\u8272","Background color":"\u80cc\u666f\u989c\u8272","Custom...":"\u81ea\u5b9a\u4e49......","Custom color":"\u81ea\u5b9a\u4e49\u989c\u8272","No color":"\u65e0","Remove color":"\u79fb\u9664\u989c\u8272","Show blocks":"\u663e\u793a\u533a\u5757\u8fb9\u6846","Show invisible characters":"\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26","Word count":"\u5b57\u6570","Count":"\u8ba1\u6570","Document":"\u6587\u6863","Selection":"\u9009\u62e9","Words":"\u5355\u8bcd","Words: {0}":"\u5b57\u6570\uff1a{0}","{0} words":"{0} \u5b57","File":"\u6587\u4ef6","Edit":"\u7f16\u8f91","Insert":"\u63d2\u5165","View":"\u67e5\u770b","Format":"\u683c\u5f0f","Table":"\u8868\u683c","Tools":"\u5de5\u5177","Powered by {0}":"\u7531{0}\u9a71\u52a8","Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help":"\u7f16\u8f91\u533a\u3002\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9","Image title":"\u56fe\u7247\u6807\u9898","Border width":"\u8fb9\u6846\u5bbd\u5ea6","Border style":"\u8fb9\u6846\u6837\u5f0f","Error":"\u9519\u8bef","Warn":"\u8b66\u544a","Valid":"\u6709\u6548","To open the popup, press Shift+Enter":"\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846","Rich Text Area":"\u5bcc\u6587\u672c\u533a\u57df","Rich Text Area. Press ALT-0 for help.":"\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002","System Font":"\u7cfb\u7edf\u5b57\u4f53","Failed to upload image: {0}":"\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}","Failed to load plugin: {0} from url {1}":"\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}","Failed to load plugin url: {0}":"\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}","Failed to initialize plugin: {0}":"\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}","example":"\u793a\u4f8b","Search":"\u641c\u7d22","All":"\u5168\u90e8","Currency":"\u8d27\u5e01","Text":"\u6587\u5b57","Quotations":"\u5f15\u7528","Mathematical":"\u6570\u5b66","Extended Latin":"\u62c9\u4e01\u8bed\u6269\u5145","Symbols":"\u7b26\u53f7","Arrows":"\u7bad\u5934","User Defined":"\u81ea\u5b9a\u4e49","dollar sign":"\u7f8e\u5143\u7b26\u53f7","currency sign":"\u8d27\u5e01\u7b26\u53f7","euro-currency sign":"\u6b27\u5143\u7b26\u53f7","colon sign":"\u5192\u53f7","cruzeiro sign":"\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7","french franc sign":"\u6cd5\u90ce\u7b26\u53f7","lira sign":"\u91cc\u62c9\u7b26\u53f7","mill sign":"\u5bc6\u5c14\u7b26\u53f7","naira sign":"\u5948\u62c9\u7b26\u53f7","peseta sign":"\u6bd4\u585e\u5854\u7b26\u53f7","rupee sign":"\u5362\u6bd4\u7b26\u53f7","won sign":"\u97e9\u5143\u7b26\u53f7","new sheqel sign":"\u65b0\u8c22\u514b\u5c14\u7b26\u53f7","dong sign":"\u8d8a\u5357\u76fe\u7b26\u53f7","kip sign":"\u8001\u631d\u57fa\u666e\u7b26\u53f7","tugrik sign":"\u56fe\u683c\u91cc\u514b\u7b26\u53f7","drachma sign":"\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7","german penny symbol":"\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7","peso sign":"\u6bd4\u7d22\u7b26\u53f7","guarani sign":"\u74dc\u62c9\u5c3c\u7b26\u53f7","austral sign":"\u6fb3\u5143\u7b26\u53f7","hryvnia sign":"\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7","cedi sign":"\u585e\u5730\u7b26\u53f7","livre tournois sign":"\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7","spesmilo sign":"spesmilo\u7b26\u53f7","tenge sign":"\u575a\u6208\u7b26\u53f7","indian rupee sign":"\u5370\u5ea6\u5362\u6bd4","turkish lira sign":"\u571f\u8033\u5176\u91cc\u62c9","nordic mark sign":"\u5317\u6b27\u9a6c\u514b","manat sign":"\u9a6c\u7eb3\u7279\u7b26\u53f7","ruble sign":"\u5362\u5e03\u7b26\u53f7","yen character":"\u65e5\u5143\u5b57\u6837","yuan character":"\u4eba\u6c11\u5e01\u5143\u5b57\u6837","yuan character, in hong kong and taiwan":"\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09","yen/yuan character variant one":"\u5143\u5b57\u6837\uff08\u5927\u5199\uff09","Emojis":"Emojis","Emojis...":"Emojis...","Loading emojis...":"\u6b63\u5728\u52a0\u8f7dEmojis...","Could not load emojis":"\u65e0\u6cd5\u52a0\u8f7dEmojis","People":"\u4eba\u7c7b","Animals and Nature":"\u52a8\u7269\u548c\u81ea\u7136","Food and Drink":"\u98df\u7269\u548c\u996e\u54c1","Activity":"\u6d3b\u52a8","Travel and Places":"\u65c5\u6e38\u548c\u5730\u70b9","Objects":"\u7269\u4ef6","Flags":"\u65d7\u5e1c","Characters":"\u5b57\u7b26","Characters (no spaces)":"\u5b57\u7b26(\u65e0\u7a7a\u683c)","{0} characters":"{0} \u4e2a\u5b57\u7b26","Error: Form submit field collision.":"\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002","Error: No form element found.":"\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002","Color swatch":"\u989c\u8272\u6837\u672c","Color Picker":"\u9009\u8272\u5668","Invalid hex color code: {0}":"\u5341\u516d\u8fdb\u5236\u989c\u8272\u4ee3\u7801\u65e0\u6548\uff1a {0}","Invalid input":"\u65e0\u6548\u8f93\u5165","R":"R","Red component":"\u7ea2\u8272\u90e8\u5206","G":"G","Green component":"\u7eff\u8272\u90e8\u5206","B":"B","Blue component":"\u767d\u8272\u90e8\u5206","#":"#","Hex color code":"\u5341\u516d\u8fdb\u5236\u989c\u8272\u4ee3\u7801","Range 0 to 255":"\u8303\u56f40\u81f3255","Turquoise":"\u9752\u7eff\u8272","Green":"\u7eff\u8272","Blue":"\u84dd\u8272","Purple":"\u7d2b\u8272","Navy Blue":"\u6d77\u519b\u84dd","Dark Turquoise":"\u6df1\u84dd\u7eff\u8272","Dark Green":"\u6df1\u7eff\u8272","Medium Blue":"\u4e2d\u84dd\u8272","Medium Purple":"\u4e2d\u7d2b\u8272","Midnight Blue":"\u6df1\u84dd\u8272","Yellow":"\u9ec4\u8272","Orange":"\u6a59\u8272","Red":"\u7ea2\u8272","Light Gray":"\u6d45\u7070\u8272","Gray":"\u7070\u8272","Dark Yellow":"\u6697\u9ec4\u8272","Dark Orange":"\u6df1\u6a59\u8272","Dark Red":"\u6df1\u7ea2\u8272","Medium Gray":"\u4e2d\u7070\u8272","Dark Gray":"\u6df1\u7070\u8272","Light Green":"\u6d45\u7eff\u8272","Light Yellow":"\u6d45\u9ec4\u8272","Light Red":"\u6d45\u7ea2\u8272","Light Purple":"\u6d45\u7d2b\u8272","Light Blue":"\u6d45\u84dd\u8272","Dark Purple":"\u6df1\u7d2b\u8272","Dark Blue":"\u6df1\u84dd\u8272","Black":"\u9ed1\u8272","White":"\u767d\u8272","Switch to or from fullscreen mode":"\u5207\u6362\u5168\u5c4f\u6a21\u5f0f","Open help dialog":"\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846","history":"\u5386\u53f2","styles":"\u6837\u5f0f","formatting":"\u683c\u5f0f\u5316","alignment":"\u5bf9\u9f50","indentation":"\u7f29\u8fdb","Font":"\u5b57\u4f53","Size":"\u5b57\u53f7","More...":"\u66f4\u591a...","Select...":"\u9009\u62e9...","Preferences":"\u9996\u9009\u9879","Yes":"\u662f","No":"\u5426","Keyboard Navigation":"\u952e\u76d8\u6307\u5f15","Version":"\u7248\u672c","Code view":"\u4ee3\u7801\u89c6\u56fe","Open popup menu for split buttons":"\u6253\u5f00\u5f39\u51fa\u5f0f\u83dc\u5355\uff0c\u7528\u4e8e\u62c6\u5206\u6309\u94ae","List Properties":"\u5217\u8868\u5c5e\u6027","List properties...":"\u6807\u9898\u5b57\u4f53\u5c5e\u6027","Start list at number":"\u4ee5\u6570\u5b57\u5f00\u59cb\u5217\u8868","Line height":"\u884c\u9ad8","Dropped file type is not supported":"\u6b64\u6587\u4ef6\u7c7b\u578b\u4e0d\u652f\u6301\u62d6\u653e","Loading...":"\u52a0\u8f7d\u4e2d...","ImageProxy HTTP error: Rejected request":"\u56fe\u7247\u4ee3\u7406\u8bf7\u6c42\u9519\u8bef\uff1a\u8bf7\u6c42\u88ab\u62d2\u7edd","ImageProxy HTTP error: Could not find Image Proxy":"\u56fe\u7247\u4ee3\u7406\u8bf7\u6c42\u9519\u8bef\uff1a\u65e0\u6cd5\u627e\u5230\u56fe\u7247\u4ee3\u7406","ImageProxy HTTP error: Incorrect Image Proxy URL":"\u56fe\u7247\u4ee3\u7406\u8bf7\u6c42\u9519\u8bef\uff1a\u56fe\u7247\u4ee3\u7406\u5730\u5740\u9519\u8bef","ImageProxy HTTP error: Unknown ImageProxy error":"\u56fe\u7247\u4ee3\u7406\u8bf7\u6c42\u9519\u8bef\uff1a\u672a\u77e5\u7684\u56fe\u7247\u4ee3\u7406\u9519\u8bef"}); diff --git a/public/skins/content/default/content.css b/public/skins/content/default/content.css new file mode 100644 index 0000000..7517787 --- /dev/null +++ b/public/skins/content/default/content.css @@ -0,0 +1,61 @@ +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + line-height: 1.4; + margin: 1rem; +} +table { + border-collapse: collapse; +} +/* Apply a default padding if legacy cellpadding attribute is missing */ +table:not([cellpadding]) th, +table:not([cellpadding]) td { + padding: 0.4rem; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-width"]) th, +table[border]:not([border="0"]):not([style*="border-width"]) td { + border-width: 1px; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-style"]) th, +table[border]:not([border="0"]):not([style*="border-style"]) td { + border-style: solid; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-color"]) th, +table[border]:not([border="0"]):not([style*="border-color"]) td { + border-color: #ccc; +} +figure { + display: table; + margin: 1rem auto; +} +figure figcaption { + color: #999; + display: block; + margin-top: 0.25rem; + text-align: center; +} +hr { + border-color: #ccc; + border-style: solid; + border-width: 1px 0 0 0; +} +code { + background-color: #e8e8e8; + border-radius: 3px; + padding: 0.1rem 0.2rem; +} +.mce-content-body:not([dir=rtl]) blockquote { + border-left: 2px solid #ccc; + margin-left: 1.5rem; + padding-left: 1rem; +} +.mce-content-body[dir=rtl] blockquote { + border-right: 2px solid #ccc; + margin-right: 1.5rem; + padding-right: 1rem; +} diff --git a/public/skins/content/default/content.min.css b/public/skins/content/default/content.min.css new file mode 100644 index 0000000..54bb28d --- /dev/null +++ b/public/skins/content/default/content.min.css @@ -0,0 +1 @@ +body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} diff --git a/public/skins/ui/oxide/content.css b/public/skins/ui/oxide/content.css new file mode 100644 index 0000000..08c8d6e --- /dev/null +++ b/public/skins/ui/oxide/content.css @@ -0,0 +1,785 @@ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; +} +.mce-content-body .mce-item-anchor:empty { + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor:not(:empty) { + background-position-x: 2px; + display: inline-block; + padding-left: 12px; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment[contenteditable="false"]:not([data-mce-selected]), +.tox-comments-visible span.tox-comment img:not([data-mce-selected]), +.tox-comments-visible span.tox-comment > audio:not([data-mce-selected]), +.tox-comments-visible span.tox-comment > video:not([data-mce-selected]), +.tox-comments-visible span.tox-comment span.mce-preview-object:not([data-mce-selected]) { + outline: 3px solid #ffe89d; +} +.tox-comments-visible .tox-comment[contenteditable="false"][data-mce-annotation-active="true"]:not([data-mce-selected]) { + outline: 3px solid #fed635; +} +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] img:not([data-mce-selected]), +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] > audio:not([data-mce-selected]), +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] > video:not([data-mce-selected]), +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"] span.mce-preview-object:not([data-mce-selected]) { + outline: 3px solid #fed635; +} +.tox-comments-visible span.tox-comment:not([data-mce-selected]) { + background-color: #ffe89d; + outline: none; +} +.tox-comments-visible span.tox-comment[data-mce-annotation-active="true"]:not([data-mce-selected="inline-boundary"]) { + background-color: #fed635; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + hyphens: none; +} +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} +.token.punctuation { + color: #999; +} +.token.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + /* This background color was intended by the author of this theme. */ + background: hsla(0, 0%, 100%, 0.5); +} +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} +.token.function, +.token.class-name { + color: #DD4A68; +} +.token.regex, +.token.important, +.token.variable { + color: #e90; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +div.mce-footnotes hr { + margin-inline-end: auto; + margin-inline-start: 0; + width: 25%; +} +div.mce-footnotes li > a.mce-footnotes-backlink { + text-decoration: none; +} +@media print { + sup.mce-footnote a { + color: black; + text-decoration: none; + } + div.mce-footnotes { + break-inside: avoid; + width: 100%; + } + div.mce-footnotes li > a.mce-footnotes-backlink { + display: none; + } +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-content-body .mce-mergetag { + cursor: default !important; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.mce-content-body .mce-mergetag:hover { + background-color: rgba(0, 108, 231, 0.1); +} +.mce-content-body .mce-mergetag-affix { + background-color: rgba(0, 108, 231, 0.1); + color: #006ce7; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 1298; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-resize-backdrop { + z-index: 10000; +} +.mce-content-body .mce-clonedresizable { + cursor: default; + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10001; +} +.mce-content-body .mce-clonedresizable.mce-resizetable-columns th, +.mce-content-body .mce-clonedresizable.mce-resizetable-columns td { + border: 0; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10002; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body video[data-mce-selected], +.mce-content-body audio[data-mce-selected], +.mce-content-body object[data-mce-selected], +.mce-content-body embed[data-mce-selected], +.mce-content-body table[data-mce-selected], +.mce-content-body details[data-mce-selected] { + outline: 3px solid #b4d7ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #b4d7ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #b4d7ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #b4d7ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + position: relative; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + outline: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.mce-content-body td[data-mce-selected]::after, +.mce-content-body th[data-mce-selected]::after { + background-color: rgba(180, 215, 255, 0.7); + border: 1px solid rgba(180, 215, 255, 0.7); + bottom: -1px; + content: ''; + left: -1px; + mix-blend-mode: multiply; + position: absolute; + right: -1px; + top: -1px; +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .mce-content-body td[data-mce-selected]::after, + .mce-content-body th[data-mce-selected]::after { + border-color: rgba(0, 84, 180, 0.7); + } +} +.mce-content-body img[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body img[data-mce-selected]::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #b4d7ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +[data-mce-block] { + display: block; +} +table[style*="border-width: 0px"], +.mce-item-table:not([border]), +.mce-item-table[border="0"], +table[style*="border-width: 0px"] td, +.mce-item-table:not([border]) td, +.mce-item-table[border="0"] td, +table[style*="border-width: 0px"] th, +.mce-item-table:not([border]) th, +.mce-item-table[border="0"] th, +table[style*="border-width: 0px"] caption, +.mce-item-table:not([border]) caption, +.mce-item-table[border="0"] caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/public/skins/ui/oxide/content.min.css b/public/skins/ui/oxide/content.min.css new file mode 100644 index 0000000..58c9b4b --- /dev/null +++ b/public/skins/ui/oxide/content.min.css @@ -0,0 +1 @@ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center}.mce-content-body .mce-item-anchor:empty{cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor:not(:empty){background-position-x:2px;display:inline-block;padding-left:12px}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment[contenteditable=false]:not([data-mce-selected]),.tox-comments-visible span.tox-comment img:not([data-mce-selected]),.tox-comments-visible span.tox-comment span.mce-preview-object:not([data-mce-selected]),.tox-comments-visible span.tox-comment>audio:not([data-mce-selected]),.tox-comments-visible span.tox-comment>video:not([data-mce-selected]){outline:3px solid #ffe89d}.tox-comments-visible .tox-comment[contenteditable=false][data-mce-annotation-active=true]:not([data-mce-selected]){outline:3px solid #fed635}.tox-comments-visible span.tox-comment[data-mce-annotation-active=true] img:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true] span.mce-preview-object:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]>audio:not([data-mce-selected]),.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]>video:not([data-mce-selected]){outline:3px solid #fed635}.tox-comments-visible span.tox-comment:not([data-mce-selected]){background-color:#ffe89d;outline:0}.tox-comments-visible span.tox-comment[data-mce-annotation-active=true]:not([data-mce-selected=inline-boundary]){background-color:#fed635}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}div.mce-footnotes hr{margin-inline-end:auto;margin-inline-start:0;width:25%}div.mce-footnotes li>a.mce-footnotes-backlink{text-decoration:none}@media print{sup.mce-footnote a{color:#000;text-decoration:none}div.mce-footnotes{break-inside:avoid;width:100%}div.mce-footnotes li>a.mce-footnotes-backlink{display:none}}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-content-body .mce-mergetag{cursor:default!important;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mce-content-body .mce-mergetag:hover{background-color:rgba(0,108,231,.1)}.mce-content-body .mce-mergetag-affix{background-color:rgba(0,108,231,.1);color:#006ce7}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body details[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body img[data-mce-selected]::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}[data-mce-block]{display:block}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/skins/ui/oxide/skin.css b/public/skins/ui/oxide/skin.css new file mode 100644 index 0000000..c64aa05 --- /dev/null +++ b/public/skins/ui/oxide/skin.css @@ -0,0 +1,3719 @@ +.tox { + box-shadow: none; + box-sizing: content-box; + color: #222f3e; + cursor: auto; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + font-style: normal; + font-weight: normal; + line-height: normal; + -webkit-tap-highlight-color: transparent; + text-decoration: none; + text-shadow: none; + text-transform: none; + vertical-align: initial; + white-space: normal; +} +.tox *:not(svg):not(rect) { + box-sizing: inherit; + color: inherit; + cursor: inherit; + direction: inherit; + font-family: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + line-height: inherit; + -webkit-tap-highlight-color: inherit; + text-align: inherit; + text-decoration: inherit; + text-shadow: inherit; + text-transform: inherit; + vertical-align: inherit; + white-space: inherit; +} +.tox *:not(svg):not(rect) { + /* stylelint-disable-line no-duplicate-selectors */ + background: transparent; + border: 0; + box-shadow: none; + float: none; + height: auto; + margin: 0; + max-width: none; + outline: 0; + padding: 0; + position: static; + width: auto; +} +.tox:not([dir=rtl]) { + direction: ltr; + text-align: left; +} +.tox[dir=rtl] { + direction: rtl; + text-align: right; +} +.tox-tinymce { + border: 2px solid #eeeeee; + border-radius: 10px; + box-shadow: none; + box-sizing: border-box; + display: flex; + flex-direction: column; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + overflow: hidden; + position: relative; + visibility: inherit !important; +} +.tox.tox-tinymce-inline { + border: none; + box-shadow: none; + overflow: initial; +} +.tox.tox-tinymce-inline .tox-editor-container { + overflow: initial; +} +.tox.tox-tinymce-inline .tox-editor-header { + background-color: #fff; + border: 2px solid #eeeeee; + border-radius: 10px; + box-shadow: none; + overflow: hidden; +} +.tox-tinymce-aux { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + z-index: 1300; +} +.tox-tinymce *:focus, +.tox-tinymce-aux *:focus { + outline: none; +} +button::-moz-focus-inner { + border: 0; +} +.tox[dir=rtl] .tox-icon--flip svg { + transform: rotateY(180deg); +} +.tox .accessibility-issue__header { + align-items: center; + display: flex; + margin-bottom: 4px; +} +.tox .accessibility-issue__description { + align-items: stretch; + border-radius: 6px; + display: flex; + justify-content: space-between; +} +.tox .accessibility-issue__description > div { + padding-bottom: 4px; +} +.tox .accessibility-issue__description > div > div { + align-items: center; + display: flex; + margin-bottom: 4px; +} +.tox .accessibility-issue__description > div > div .tox-icon svg { + display: block; +} +.tox .accessibility-issue__repair { + margin-top: 16px; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description { + background-color: rgba(0, 101, 216, 0.1); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 { + color: #006ce7; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg { + fill: #006ce7; +} +.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon { + background-color: #006ce7; + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:hover, +.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:focus { + background-color: #0060ce; +} +.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:active { + background-color: #0054b4; +} +.tox .tox-dialog__body-content .accessibility-issue--warn { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description { + background-color: rgba(255, 165, 0, 0.08); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 { + color: #8f5d00; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg { + fill: #8f5d00; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon { + background-color: #FFE89D; + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:hover, +.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:focus { + background-color: #F2D574; + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:active { + background-color: #E8C657; + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--error { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description { + background-color: rgba(204, 0, 0, 0.1); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 { + color: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg { + fill: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon { + background-color: #F2BFBF; + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:hover, +.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:focus { + background-color: #E9A4A4; + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:active { + background-color: #EE9494; + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description { + background-color: rgba(120, 171, 70, 0.1); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child { + display: none; +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 { + color: #527530; +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg { + fill: #527530; +} +.tox .tox-dialog__body-content .accessibility-issue__header .tox-form__group h1, +.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 { + font-size: 14px; + margin-top: 0; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-left: auto; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 4px 4px 8px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-right: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-right: auto; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 8px 4px 4px; +} +.tox .tox-advtemplate .tox-form__grid { + flex: 1; +} +.tox .tox-advtemplate .tox-form__grid > div:first-child { + display: flex; + flex-direction: column; + width: 30%; +} +.tox .tox-advtemplate .tox-form__grid > div:first-child > div:nth-child(2) { + flex-basis: 0; + flex-grow: 1; + overflow: auto; +} +@media only screen and (max-width: 767px ) { + body:not(.tox-force-desktop) .tox .tox-advtemplate .tox-form__grid > div:first-child { + width: 100%; + } +} +.tox .tox-advtemplate iframe { + border-color: #eeeeee; + border-radius: 10px; + border-style: solid; + border-width: 1px; + margin: 0 10px; +} +.tox .tox-anchorbar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-bottom-anchorbar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-bar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-button { + background-color: #006ce7; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #006ce7; + border-radius: 6px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + line-height: 24px; + margin: 0; + outline: none; + padding: 4px 16px; + position: relative; + text-align: center; + text-decoration: none; + text-transform: none; + white-space: nowrap; +} +.tox .tox-button::before { + border-radius: 6px; + bottom: -1px; + box-shadow: inset 0 0 0 2px #fff, 0 0 0 1px #006ce7, 0 0 0 3px rgba(0, 108, 231, 0.25); + content: ''; + left: -1px; + opacity: 0; + pointer-events: none; + position: absolute; + right: -1px; + top: -1px; +} +.tox .tox-button[disabled] { + background-color: #006ce7; + background-image: none; + border-color: #006ce7; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-button:focus:not(:disabled) { + background-color: #0060ce; + background-image: none; + border-color: #0060ce; + box-shadow: none; + color: #fff; +} +.tox .tox-button:focus-visible:not(:disabled)::before { + opacity: 1; +} +.tox .tox-button:hover:not(:disabled) { + background-color: #0060ce; + background-image: none; + border-color: #0060ce; + box-shadow: none; + color: #fff; +} +.tox .tox-button:active:not(:disabled) { + background-color: #0054b4; + background-image: none; + border-color: #0054b4; + box-shadow: none; + color: #fff; +} +.tox .tox-button.tox-button--enabled { + background-color: #0054b4; + background-image: none; + border-color: #0054b4; + box-shadow: none; + color: #fff; +} +.tox .tox-button.tox-button--enabled[disabled] { + background-color: #0054b4; + background-image: none; + border-color: #0054b4; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-button.tox-button--enabled:focus:not(:disabled) { + background-color: #00489b; + background-image: none; + border-color: #00489b; + box-shadow: none; + color: #fff; +} +.tox .tox-button.tox-button--enabled:hover:not(:disabled) { + background-color: #00489b; + background-image: none; + border-color: #00489b; + box-shadow: none; + color: #fff; +} +.tox .tox-button.tox-button--enabled:active:not(:disabled) { + background-color: #003c81; + background-image: none; + border-color: #003c81; + box-shadow: none; + color: #fff; +} +.tox .tox-button--icon-and-text, +.tox .tox-button.tox-button--icon-and-text, +.tox .tox-button.tox-button--secondary.tox-button--icon-and-text { + display: flex; + padding: 5px 4px; +} +.tox .tox-button--icon-and-text .tox-icon svg, +.tox .tox-button.tox-button--icon-and-text .tox-icon svg, +.tox .tox-button.tox-button--secondary.tox-button--icon-and-text .tox-icon svg { + display: block; + fill: currentColor; +} +.tox .tox-button--secondary { + background-color: #f0f0f0; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #f0f0f0; + border-radius: 6px; + border-style: solid; + border-width: 1px; + box-shadow: none; + color: #222f3e; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + outline: none; + padding: 4px 16px; + text-decoration: none; + text-transform: none; +} +.tox .tox-button--secondary[disabled] { + background-color: #f0f0f0; + background-image: none; + border-color: #f0f0f0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-button--secondary:focus:not(:disabled) { + background-color: #e3e3e3; + background-image: none; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary:hover:not(:disabled) { + background-color: #e3e3e3; + background-image: none; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary:active:not(:disabled) { + background-color: #d6d6d6; + background-image: none; + border-color: #d6d6d6; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary.tox-button--enabled { + background-color: #a8c8ed; + background-image: none; + border-color: #a8c8ed; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary.tox-button--enabled[disabled] { + background-color: #a8c8ed; + background-image: none; + border-color: #a8c8ed; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-button--secondary.tox-button--enabled:focus:not(:disabled) { + background-color: #93bbe9; + background-image: none; + border-color: #93bbe9; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary.tox-button--enabled:hover:not(:disabled) { + background-color: #93bbe9; + background-image: none; + border-color: #93bbe9; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary.tox-button--enabled:active:not(:disabled) { + background-color: #7daee4; + background-image: none; + border-color: #7daee4; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--icon, +.tox .tox-button.tox-button--icon, +.tox .tox-button.tox-button--secondary.tox-button--icon { + padding: 4px; +} +.tox .tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg { + display: block; + fill: currentColor; +} +.tox .tox-button-link { + background: 0; + border: none; + box-sizing: border-box; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + font-weight: normal; + line-height: 1.3; + margin: 0; + padding: 0; + white-space: nowrap; +} +.tox .tox-button-link--sm { + font-size: 14px; +} +.tox .tox-button--naked { + background-color: transparent; + border-color: transparent; + box-shadow: unset; + color: #222f3e; +} +.tox .tox-button--naked[disabled] { + background-color: rgba(34, 47, 62, 0.12); + border-color: transparent; + box-shadow: unset; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-button--naked:hover:not(:disabled) { + background-color: rgba(34, 47, 62, 0.12); + border-color: transparent; + box-shadow: unset; + color: #222f3e; +} +.tox .tox-button--naked:focus:not(:disabled) { + background-color: rgba(34, 47, 62, 0.12); + border-color: transparent; + box-shadow: unset; + color: #222f3e; +} +.tox .tox-button--naked:active:not(:disabled) { + background-color: rgba(34, 47, 62, 0.18); + border-color: transparent; + box-shadow: unset; + color: #222f3e; +} +.tox .tox-button--naked .tox-icon svg { + fill: currentColor; +} +.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) { + color: #222f3e; +} +.tox .tox-checkbox { + align-items: center; + border-radius: 6px; + cursor: pointer; + display: flex; + height: 36px; + min-width: 36px; +} +.tox .tox-checkbox__input { + /* Hide from view but visible to screen readers */ + height: 1px; + overflow: hidden; + position: absolute; + top: auto; + width: 1px; +} +.tox .tox-checkbox__icons { + align-items: center; + border-radius: 6px; + box-shadow: 0 0 0 2px transparent; + box-sizing: content-box; + display: flex; + height: 24px; + justify-content: center; + padding: calc(4px - 1px); + width: 24px; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: block; + fill: rgba(34, 47, 62, 0.3); +} +.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: none; + fill: #006ce7; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: none; + fill: #006ce7; +} +.tox .tox-checkbox--disabled { + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: block; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: block; +} +.tox input.tox-checkbox__input:focus + .tox-checkbox__icons { + border-radius: 6px; + box-shadow: inset 0 0 0 1px #006ce7; + padding: calc(4px - 1px); +} +.tox:not([dir=rtl]) .tox-checkbox__label { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-checkbox__input { + left: -10000px; +} +.tox:not([dir=rtl]) .tox-bar .tox-checkbox { + margin-left: 4px; +} +.tox[dir=rtl] .tox-checkbox__label { + margin-right: 4px; +} +.tox[dir=rtl] .tox-checkbox__input { + right: -10000px; +} +.tox[dir=rtl] .tox-bar .tox-checkbox { + margin-right: 4px; +} +.tox { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox .tox-collection--toolbar .tox-collection__group { + display: flex; + padding: 0; +} +.tox .tox-collection--grid .tox-collection__group { + display: flex; + flex-wrap: wrap; + max-height: 208px; + overflow-x: hidden; + overflow-y: auto; + padding: 0; +} +.tox .tox-collection--list .tox-collection__group { + border-bottom-width: 0; + border-color: #e3e3e3; + border-left-width: 0; + border-right-width: 0; + border-style: solid; + border-top-width: 1px; + padding: 4px 0; +} +.tox .tox-collection--list .tox-collection__group:first-child { + border-top-width: 0; +} +.tox .tox-collection__group-heading { + background-color: #fcfcfc; + color: rgba(34, 47, 62, 0.7); + cursor: default; + font-size: 12px; + font-style: normal; + font-weight: normal; + margin-bottom: 4px; + margin-top: -4px; + padding: 4px 8px; + text-transform: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.tox .tox-collection__item { + align-items: center; + border-radius: 3px; + color: #222f3e; + display: flex; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.tox .tox-collection--list .tox-collection__item { + padding: 4px 8px; +} +.tox .tox-collection--toolbar .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--grid .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--list .tox-collection__item--enabled { + background-color: #fff; + color: #222f3e; +} +.tox .tox-collection--list .tox-collection__item--active { + background-color: #cce2fa; +} +.tox .tox-collection--toolbar .tox-collection__item--enabled { + background-color: #a6ccf7; + color: #222f3e; +} +.tox .tox-collection--toolbar .tox-collection__item--active { + background-color: #cce2fa; +} +.tox .tox-collection--grid .tox-collection__item--enabled { + background-color: #a6ccf7; + color: #222f3e; +} +.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + background-color: #cce2fa; + color: #222f3e; +} +.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #222f3e; +} +.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #222f3e; +} +.tox .tox-collection__item-icon, +.tox .tox-collection__item-checkmark { + align-items: center; + display: flex; + height: 24px; + justify-content: center; + width: 24px; +} +.tox .tox-collection__item-icon svg, +.tox .tox-collection__item-checkmark svg { + fill: currentColor; +} +.tox .tox-collection--toolbar-lg .tox-collection__item-icon { + height: 48px; + width: 48px; +} +.tox .tox-collection__item-label { + color: currentColor; + display: inline-block; + flex: 1; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 24px; + text-transform: none; + word-break: break-all; +} +.tox .tox-collection__item-accessory { + color: rgba(34, 47, 62, 0.7); + display: inline-block; + font-size: 14px; + height: 24px; + line-height: 24px; + text-transform: none; +} +.tox .tox-collection__item-caret { + align-items: center; + display: flex; + min-height: 24px; +} +.tox .tox-collection__item-caret::after { + content: ''; + font-size: 0; + min-height: inherit; +} +.tox .tox-collection__item-caret svg { + fill: #222f3e; +} +.tox .tox-collection__item--state-disabled { + background-color: transparent; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg { + display: none; +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark { + display: none; +} +.tox .tox-collection--horizontal { + background-color: #fff; + border: 1px solid #e3e3e3; + border-radius: 6px; + box-shadow: 0 0 2px 0 rgba(34, 47, 62, 0.2), 0 4px 8px 0 rgba(34, 47, 62, 0.15); + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: nowrap; + margin-bottom: 0; + overflow-x: auto; + padding: 0; +} +.tox .tox-collection--horizontal .tox-collection__group { + align-items: center; + display: flex; + flex-wrap: nowrap; + margin: 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item { + height: 28px; + margin: 6px 1px 5px 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item-label { + white-space: nowrap; +} +.tox .tox-collection--horizontal .tox-collection__item-caret { + margin-left: 4px; +} +.tox .tox-collection__item-container { + display: flex; +} +.tox .tox-collection__item-container--row { + align-items: center; + flex: 1 1 auto; + flex-direction: row; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--align-left { + margin-right: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--align-right { + justify-content: flex-end; + margin-left: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top { + align-items: flex-start; + margin-bottom: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle { + align-items: center; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom { + align-items: flex-end; + margin-top: auto; +} +.tox .tox-collection__item-container--column { + align-self: center; + flex: 1 1 auto; + flex-direction: column; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--align-left { + align-items: flex-start; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--align-right { + align-items: flex-end; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top { + align-self: flex-start; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle { + align-self: center; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom { + align-self: flex-end; +} +.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-right: 1px solid transparent; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-collection__item-accessory { + margin-left: 16px; + text-align: right; +} +.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret { + margin-left: 16px; +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-left: 1px solid transparent; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child { + margin-right: 4px; +} +.tox[dir=rtl] .tox-collection__item-accessory { + margin-right: 16px; + text-align: left; +} +.tox[dir=rtl] .tox-collection .tox-collection__item-caret { + margin-right: 16px; + transform: rotateY(180deg); +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret { + margin-right: 4px; +} +.tox .tox-color-picker-container { + display: flex; + flex-direction: row; + height: 225px; + margin: 0; +} +.tox .tox-sv-palette { + box-sizing: border-box; + display: flex; + height: 100%; +} +.tox .tox-sv-palette-spectrum { + height: 100%; +} +.tox .tox-sv-palette, +.tox .tox-sv-palette-spectrum { + width: 225px; +} +.tox .tox-sv-palette-thumb { + background: none; + border: 1px solid black; + border-radius: 50%; + box-sizing: content-box; + height: 12px; + position: absolute; + width: 12px; +} +.tox .tox-sv-palette-inner-thumb { + border: 1px solid white; + border-radius: 50%; + height: 10px; + position: absolute; + width: 10px; +} +.tox .tox-hue-slider { + box-sizing: border-box; + height: 100%; + width: 25px; +} +.tox .tox-hue-slider-spectrum { + background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00); + height: 100%; + width: 100%; +} +.tox .tox-hue-slider, +.tox .tox-hue-slider-spectrum { + width: 20px; +} +.tox .tox-hue-slider-thumb { + background: white; + border: 1px solid black; + box-sizing: content-box; + height: 4px; + width: 100%; +} +.tox .tox-rgb-form { + display: flex; + flex-direction: column; + justify-content: space-between; +} +.tox .tox-rgb-form div { + align-items: center; + display: flex; + justify-content: space-between; + margin-bottom: 5px; + width: inherit; +} +.tox .tox-rgb-form input { + width: 6em; +} +.tox .tox-rgb-form input.tox-invalid { + /* Need !important to override Chrome's focus styling unfortunately */ + border: 1px solid red !important; +} +.tox .tox-rgb-form .tox-rgba-preview { + border: 1px solid black; + flex-grow: 2; + margin-bottom: 0; +} +.tox:not([dir=rtl]) .tox-sv-palette { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider-thumb { + margin-left: -1px; +} +.tox:not([dir=rtl]) .tox-rgb-form label { + margin-right: 0.5em; +} +.tox[dir=rtl] .tox-sv-palette { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider-thumb { + margin-right: -1px; +} +.tox[dir=rtl] .tox-rgb-form label { + margin-left: 0.5em; +} +.tox .tox-toolbar .tox-swatches, +.tox .tox-toolbar__primary .tox-swatches, +.tox .tox-toolbar__overflow .tox-swatches { + margin: 5px 0 6px 11px; +} +.tox .tox-collection--list .tox-collection__group .tox-swatches-menu { + border: 0; + margin: -4px -4px; +} +.tox .tox-swatches__row { + display: flex; +} +.tox .tox-swatch { + height: 30px; + transition: transform 0.15s, box-shadow 0.15s; + width: 30px; +} +.tox .tox-swatch:hover, +.tox .tox-swatch:focus { + box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset; + transform: scale(0.8); +} +.tox .tox-swatch--remove { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-swatch--remove svg path { + stroke: #e74c3c; +} +.tox .tox-swatches__picker-btn { + align-items: center; + background-color: transparent; + border: 0; + cursor: pointer; + display: flex; + height: 30px; + justify-content: center; + outline: none; + padding: 0; + width: 30px; +} +.tox .tox-swatches__picker-btn svg { + fill: #222f3e; + height: 24px; + width: 24px; +} +.tox .tox-swatches__picker-btn:hover { + background: #cce2fa; +} +.tox div.tox-swatch:not(.tox-swatch--remove) svg { + display: none; + fill: #222f3e; + height: 24px; + margin: calc((30px - 24px) / 2) calc((30px - 24px) / 2); + width: 24px; +} +.tox div.tox-swatch:not(.tox-swatch--remove) svg path { + fill: #fff; + paint-order: stroke; + stroke: #222f3e; + stroke-width: 2px; +} +.tox div.tox-swatch:not(.tox-swatch--remove).tox-collection__item--enabled svg { + display: block; +} +.tox:not([dir=rtl]) .tox-swatches__picker-btn { + margin-left: auto; +} +.tox[dir=rtl] .tox-swatches__picker-btn { + margin-right: auto; +} +.tox .tox-comment-thread { + background: #fff; + position: relative; +} +.tox .tox-comment-thread > *:not(:first-child) { + margin-top: 8px; +} +.tox .tox-comment { + background: #fff; + border: 1px solid #eeeeee; + border-radius: 6px; + box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1); + padding: 8px 8px 16px 8px; + position: relative; +} +.tox .tox-comment__header { + align-items: center; + color: #222f3e; + display: flex; + justify-content: space-between; +} +.tox .tox-comment__date { + color: #222f3e; + font-size: 12px; + line-height: 18px; +} +.tox .tox-comment__body { + color: #222f3e; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin-top: 8px; + position: relative; + text-transform: initial; +} +.tox .tox-comment__body textarea { + resize: none; + white-space: normal; + width: 100%; +} +.tox .tox-comment__expander { + padding-top: 8px; +} +.tox .tox-comment__expander p { + color: rgba(34, 47, 62, 0.7); + font-size: 14px; + font-style: normal; +} +.tox .tox-comment__body p { + margin: 0; +} +.tox .tox-comment__buttonspacing { + padding-top: 16px; + text-align: center; +} +.tox .tox-comment-thread__overlay::after { + background: #fff; + bottom: 0; + content: ""; + display: flex; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + top: 0; + z-index: 5; +} +.tox .tox-comment__reply { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 8px; +} +.tox .tox-comment__reply > *:first-child { + margin-bottom: 8px; + width: 100%; +} +.tox .tox-comment__edit { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 16px; +} +.tox .tox-comment__gradient::after { + background: linear-gradient(rgba(255, 255, 255, 0), #fff); + bottom: 0; + content: ""; + display: block; + height: 5em; + margin-top: -40px; + position: absolute; + width: 100%; +} +.tox .tox-comment__overlay { + background: #fff; + bottom: 0; + display: flex; + flex-direction: column; + flex-grow: 1; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + text-align: center; + top: 0; + z-index: 5; +} +.tox .tox-comment__loading-text { + align-items: center; + color: #222f3e; + display: flex; + flex-direction: column; + position: relative; +} +.tox .tox-comment__loading-text > div { + padding-bottom: 16px; +} +.tox .tox-comment__overlaytext { + bottom: 0; + flex-direction: column; + font-size: 14px; + left: 0; + padding: 1em; + position: absolute; + right: 0; + top: 0; + z-index: 10; +} +.tox .tox-comment__overlaytext p { + background-color: #fff; + box-shadow: 0 0 8px 8px #fff; + color: #222f3e; + text-align: center; +} +.tox .tox-comment__overlaytext div:nth-of-type(2) { + font-size: 0.8em; +} +.tox .tox-comment__busy-spinner { + align-items: center; + background-color: #fff; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 20; +} +.tox .tox-comment__scroll { + display: flex; + flex-direction: column; + flex-shrink: 1; + overflow: auto; +} +.tox .tox-conversations { + margin: 8px; +} +.tox:not([dir=rtl]) .tox-comment__edit { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child, +.tox:not([dir=rtl]) .tox-comment__edit > *:last-child, +.tox:not([dir=rtl]) .tox-comment__reply > *:last-child { + margin-left: 8px; +} +.tox[dir=rtl] .tox-comment__edit { + margin-right: 8px; +} +.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child, +.tox[dir=rtl] .tox-comment__edit > *:last-child, +.tox[dir=rtl] .tox-comment__reply > *:last-child { + margin-right: 8px; +} +.tox .tox-user { + align-items: center; + display: flex; +} +.tox .tox-user__avatar svg { + fill: rgba(34, 47, 62, 0.7); +} +.tox .tox-user__avatar img { + border-radius: 50%; + height: 36px; + object-fit: cover; + vertical-align: middle; + width: 36px; +} +.tox .tox-user__name { + color: #222f3e; + font-size: 14px; + font-style: normal; + font-weight: bold; + line-height: 18px; + text-transform: none; +} +.tox:not([dir=rtl]) .tox-user__avatar svg, +.tox:not([dir=rtl]) .tox-user__avatar img { + margin-right: 8px; +} +.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar svg, +.tox[dir=rtl] .tox-user__avatar img { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar + .tox-user__name { + margin-right: 8px; +} +.tox .tox-dialog-wrap { + align-items: center; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1100; +} +.tox .tox-dialog-wrap__backdrop { + background-color: rgba(255, 255, 255, 0.75); + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1; +} +.tox .tox-dialog-wrap__backdrop--opaque { + background-color: #fff; +} +.tox .tox-dialog { + background-color: #fff; + border-color: #eeeeee; + border-radius: 10px; + border-style: solid; + border-width: 0px; + box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15); + display: flex; + flex-direction: column; + max-height: 100%; + max-width: 480px; + overflow: hidden; + position: relative; + width: 95vw; + z-index: 2; +} +@media only screen and (max-width: 767px ) { + body:not(.tox-force-desktop) .tox .tox-dialog { + align-self: flex-start; + margin: 8px auto; + max-height: calc(100vh - 8px * 2); + width: calc(100vw - 16px); + } +} +.tox .tox-dialog-inline { + z-index: 1100; +} +.tox .tox-dialog__header { + align-items: center; + background-color: #fff; + border-bottom: none; + color: #222f3e; + display: flex; + font-size: 16px; + justify-content: space-between; + padding: 8px 16px 0 16px; + position: relative; +} +.tox .tox-dialog__header .tox-button { + z-index: 1; +} +.tox .tox-dialog__draghandle { + cursor: grab; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tox .tox-dialog__draghandle:active { + cursor: grabbing; +} +.tox .tox-dialog__dismiss { + margin-left: auto; +} +.tox .tox-dialog__title { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 20px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin: 0; + text-transform: none; +} +.tox .tox-dialog__body { + color: #222f3e; + display: flex; + flex: 1; + font-size: 16px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + min-width: 0; + text-align: left; + text-transform: none; +} +@media only screen and (max-width: 767px ) { + body:not(.tox-force-desktop) .tox .tox-dialog__body { + flex-direction: column; + } +} +.tox .tox-dialog__body-nav { + align-items: flex-start; + display: flex; + flex-direction: column; + flex-shrink: 0; + padding: 16px 16px; +} +@media only screen and (min-width: 768px ) { + .tox .tox-dialog__body-nav { + max-width: 11em; + } +} +@media only screen and (max-width: 767px ) { + body:not(.tox-force-desktop) .tox .tox-dialog__body-nav { + flex-direction: row; + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding-bottom: 0; + } +} +.tox .tox-dialog__body-nav-item { + border-bottom: 2px solid transparent; + color: rgba(34, 47, 62, 0.7); + display: inline-block; + flex-shrink: 0; + font-size: 14px; + line-height: 1.3; + margin-bottom: 8px; + max-width: 13em; + text-decoration: none; +} +.tox .tox-dialog__body-nav-item:focus { + background-color: rgba(0, 108, 231, 0.1); +} +.tox .tox-dialog__body-nav-item--active { + border-bottom: 2px solid #006ce7; + color: #006ce7; +} +.tox .tox-dialog__body-content { + box-sizing: border-box; + display: flex; + flex: 1; + flex-direction: column; + max-height: min(650px, calc(100vh - 110px)); + overflow: auto; + -webkit-overflow-scrolling: touch; + padding: 16px 16px; +} +.tox .tox-dialog__body-content > * { + margin-bottom: 0; + margin-top: 16px; +} +.tox .tox-dialog__body-content > *:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content > *:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content > *:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog__body-content a { + color: #006ce7; + cursor: pointer; + text-decoration: none; +} +.tox .tox-dialog__body-content a:hover, +.tox .tox-dialog__body-content a:focus { + color: #0054b4; + text-decoration: none; +} +.tox .tox-dialog__body-content a:active { + color: #0054b4; + text-decoration: none; +} +.tox .tox-dialog__body-content svg { + fill: #222f3e; +} +.tox .tox-dialog__body-content strong { + font-weight: bold; +} +.tox .tox-dialog__body-content ul { + list-style-type: disc; +} +.tox .tox-dialog__body-content ul, +.tox .tox-dialog__body-content ol, +.tox .tox-dialog__body-content dd { + padding-inline-start: 2.5rem; +} +.tox .tox-dialog__body-content ul, +.tox .tox-dialog__body-content ol, +.tox .tox-dialog__body-content dl { + margin-bottom: 16px; +} +.tox .tox-dialog__body-content ul, +.tox .tox-dialog__body-content ol, +.tox .tox-dialog__body-content dl, +.tox .tox-dialog__body-content dd, +.tox .tox-dialog__body-content dt { + display: block; + margin-inline-end: 0; + margin-inline-start: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1 { + color: #222f3e; + font-size: 20px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group h2 { + color: #222f3e; + font-size: 16px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group p { + margin-bottom: 16px; +} +.tox .tox-dialog__body-content .tox-form__group h1:first-child, +.tox .tox-dialog__body-content .tox-form__group h2:first-child, +.tox .tox-dialog__body-content .tox-form__group p:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:last-child, +.tox .tox-dialog__body-content .tox-form__group h2:last-child, +.tox .tox-dialog__body-content .tox-form__group p:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:only-child, +.tox .tox-dialog__body-content .tox-form__group h2:only-child, +.tox .tox-dialog__body-content .tox-form__group p:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog__body-content .tox-form__group .tox-label.tox-label--center { + text-align: center; +} +.tox .tox-dialog__body-content .tox-form__group .tox-label.tox-label--end { + text-align: end; +} +.tox .tox-dialog--width-lg { + height: 650px; + max-width: 1200px; +} +.tox .tox-dialog--fullscreen { + height: 100%; + max-width: 100%; +} +.tox .tox-dialog--fullscreen .tox-dialog__body-content { + max-height: 100%; +} +.tox .tox-dialog--width-md { + max-width: 800px; +} +.tox .tox-dialog--width-md .tox-dialog__body-content { + overflow: auto; +} +.tox .tox-dialog__body-content--centered { + text-align: center; +} +.tox .tox-dialog__footer { + align-items: center; + background-color: #fff; + border-top: none; + display: flex; + justify-content: space-between; + padding: 8px 16px; +} +.tox .tox-dialog__footer-start, +.tox .tox-dialog__footer-end { + display: flex; +} +.tox .tox-dialog__busy-spinner { + align-items: center; + background-color: rgba(255, 255, 255, 0.75); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 3; +} +.tox .tox-dialog__table { + border-collapse: collapse; + width: 100%; +} +.tox .tox-dialog__table thead th { + font-weight: bold; + padding-bottom: 8px; +} +.tox .tox-dialog__table thead th:first-child { + padding-right: 8px; +} +.tox .tox-dialog__table tbody tr { + border-bottom: 1px solid #626262; +} +.tox .tox-dialog__table tbody tr:last-child { + border-bottom: none; +} +.tox .tox-dialog__table td { + padding-bottom: 8px; + padding-top: 8px; +} +.tox .tox-dialog__table td:first-child { + padding-right: 8px; +} +.tox .tox-dialog__iframe { + min-height: 200px; +} +.tox .tox-dialog__iframe.tox-dialog__iframe--opaque { + background: #fff; +} +.tox .tox-navobj-bordered { + position: relative; +} +.tox .tox-navobj-bordered::before { + border: 1px solid #eeeeee; + border-radius: 6px; + content: ''; + inset: 0; + opacity: 1; + pointer-events: none; + position: absolute; + z-index: 1; +} +.tox .tox-navobj-bordered-focus.tox-navobj-bordered::before { + border-color: #006ce7; + box-shadow: 0 0 0 2px rgba(0, 108, 231, 0.25); + outline: none; +} +.tox .tox-dialog__popups { + position: absolute; + width: 100%; + z-index: 1100; +} +.tox .tox-dialog__body-iframe { + display: flex; + flex: 1; + flex-direction: column; +} +.tox .tox-dialog__body-iframe .tox-navobj { + display: flex; + flex: 1; +} +.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) { + flex: 1; + height: 100%; +} +.tox .tox-dialog-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox .tox-dialog-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox .tox-dialog-dock-transition { + transition: visibility 0s linear 0.3s, opacity 0.3s ease; +} +.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein { + transition-delay: 0s; +} +@media only screen and (max-width: 767px ) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav { + margin-right: 0; + } +} +@media only screen and (max-width: 767px ) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) { + margin-left: 8px; + } +} +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *, +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * { + margin-left: 8px; +} +.tox[dir=rtl] .tox-dialog__body { + text-align: right; +} +@media only screen and (max-width: 767px ) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav { + margin-left: 0; + } +} +@media only screen and (max-width: 767px ) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) { + margin-right: 8px; + } +} +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *, +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * { + margin-right: 8px; +} +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox .tox-dropzone-container { + display: flex; + flex: 1; +} +.tox .tox-dropzone { + align-items: center; + background: #fff; + border: 2px dashed #eeeeee; + box-sizing: border-box; + display: flex; + flex-direction: column; + flex-grow: 1; + justify-content: center; + min-height: 100px; + padding: 10px; +} +.tox .tox-dropzone p { + color: rgba(34, 47, 62, 0.7); + margin: 0 0 16px 0; +} +.tox .tox-edit-area { + display: flex; + flex: 1; + overflow: hidden; + position: relative; +} +.tox .tox-edit-area::before { + border: 2px solid #2D6ADF; + border-radius: 4px; + content: ''; + inset: 0; + opacity: 0; + pointer-events: none; + position: absolute; + transition: opacity 0.15s; + z-index: 1; +} +.tox .tox-edit-area__iframe { + background-color: #fff; + border: 0; + box-sizing: border-box; + flex: 1; + height: 100%; + position: absolute; + width: 100%; +} +.tox.tox-edit-focus .tox-edit-area::before { + opacity: 1; +} +.tox.tox-inline-edit-area { + border: 1px dotted #eeeeee; +} +.tox .tox-editor-container { + display: flex; + flex: 1 1 auto; + flex-direction: column; + overflow: hidden; +} +.tox .tox-editor-header { + display: grid; + grid-template-columns: 1fr min-content; + z-index: 2; +} +.tox:not(.tox-tinymce-inline) .tox-editor-header { + background-color: #fff; + border-bottom: none; + box-shadow: 0 2px 2px -2px rgba(34, 47, 62, 0.1), 0 8px 8px -4px rgba(34, 47, 62, 0.07); + padding: 4px 0; +} +.tox:not(.tox-tinymce-inline) .tox-editor-header:not(.tox-editor-dock-transition) { + transition: box-shadow 0.5s; +} +.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-bottom .tox-editor-header { + border-top: 1px solid #e3e3e3; + box-shadow: none; +} +.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on .tox-editor-header { + background-color: #fff; + box-shadow: 0 2px 2px -2px rgba(34, 47, 62, 0.2), 0 8px 8px -4px rgba(34, 47, 62, 0.15); + padding: 4px 0; +} +.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on.tox-tinymce--toolbar-bottom .tox-editor-header { + box-shadow: 0 2px 2px -2px rgba(34, 47, 62, 0.2), 0 8px 8px -4px rgba(34, 47, 62, 0.15); +} +.tox.tox:not(.tox-tinymce-inline) .tox-editor-header.tox-editor-header--empty { + background: none; + border: none; + box-shadow: none; + padding: 0; +} +.tox-editor-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox-editor-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox-editor-dock-transition { + transition: visibility 0s linear 0.25s, opacity 0.25s ease; +} +.tox-editor-dock-transition.tox-editor-dock-fadein { + transition-delay: 0s; +} +.tox .tox-control-wrap { + flex: 1; + position: relative; +} +.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid, +.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown, +.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid { + display: none; +} +.tox .tox-control-wrap svg { + display: block; +} +.tox .tox-control-wrap__status-icon-wrap { + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-control-wrap__status-icon-invalid svg { + fill: #c00; +} +.tox .tox-control-wrap__status-icon-unknown svg { + fill: orange; +} +.tox .tox-control-wrap__status-icon-valid svg { + fill: green; +} +.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield { + padding-right: 32px; +} +.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap { + right: 4px; +} +.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield { + padding-left: 32px; +} +.tox[dir=rtl] .tox-control-wrap__status-icon-wrap { + left: 4px; +} +.tox .tox-autocompleter { + max-width: 25em; +} +.tox .tox-autocompleter .tox-menu { + box-sizing: border-box; + max-width: 25em; +} +.tox .tox-autocompleter .tox-autocompleter-highlight { + font-weight: bold; +} +.tox .tox-color-input { + display: flex; + position: relative; + z-index: 1; +} +.tox .tox-color-input .tox-textfield { + z-index: -1; +} +.tox .tox-color-input span { + border-color: rgba(34, 47, 62, 0.2); + border-radius: 6px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + height: 24px; + position: absolute; + top: 6px; + width: 24px; +} +.tox .tox-color-input span:hover:not([aria-disabled=true]), +.tox .tox-color-input span:focus:not([aria-disabled=true]) { + border-color: #006ce7; + cursor: pointer; +} +.tox .tox-color-input span::before { + background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%); + background-position: 0 0, 0 6px, 6px -6px, -6px 0; + background-size: 12px 12px; + border: 1px solid #fff; + border-radius: 6px; + box-sizing: border-box; + content: ''; + height: 24px; + left: -1px; + position: absolute; + top: -1px; + width: 24px; + z-index: -1; +} +.tox .tox-color-input span[aria-disabled=true] { + cursor: not-allowed; +} +.tox:not([dir=rtl]) .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-color-input .tox-textfield { + padding-left: 36px; +} +.tox:not([dir=rtl]) .tox-color-input span { + left: 6px; +} +.tox[dir="rtl"] .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir="rtl"] .tox-color-input .tox-textfield { + padding-right: 36px; +} +.tox[dir="rtl"] .tox-color-input span { + right: 6px; +} +.tox .tox-label, +.tox .tox-toolbar-label { + color: rgba(34, 47, 62, 0.7); + display: block; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + padding: 0 8px 0 0; + text-transform: none; + white-space: nowrap; +} +.tox .tox-toolbar-label { + padding: 0 8px; +} +.tox[dir=rtl] .tox-label { + padding: 0 0 0 8px; +} +.tox .tox-form { + display: flex; + flex: 1; + flex-direction: column; +} +.tox .tox-form__group { + box-sizing: border-box; + margin-bottom: 4px; +} +.tox .tox-form-group--maximize { + flex: 1; +} +.tox .tox-form__group--error { + color: #c00; +} +.tox .tox-form__group--collection { + display: flex; +} +.tox .tox-form__grid { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; +} +.tox .tox-form__grid--2col > .tox-form__group { + width: calc(50% - (8px / 2)); +} +.tox .tox-form__grid--3col > .tox-form__group { + width: calc(100% / 3 - (8px / 2)); +} +.tox .tox-form__grid--4col > .tox-form__group { + width: calc(25% - (8px / 2)); +} +.tox .tox-form__controls-h-stack { + align-items: center; + display: flex; +} +.tox .tox-form__group--inline { + align-items: center; + display: flex; +} +.tox .tox-form__group--stretched { + display: flex; + flex: 1; + flex-direction: column; +} +.tox .tox-form__group--stretched .tox-textarea { + flex: 1; +} +.tox .tox-form__group--stretched .tox-navobj { + display: flex; + flex: 1; +} +.tox .tox-form__group--stretched .tox-navobj :nth-child(2) { + flex: 1; + height: 100%; +} +.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) { + margin-right: 4px; +} +.tox .tox-lock.tox-locked .tox-lock-icon__unlock, +.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock { + display: none; +} +.tox .tox-textfield, +.tox .tox-toolbar-textfield, +.tox .tox-listboxfield .tox-listbox--select, +.tox .tox-textarea, +.tox .tox-textarea-wrap .tox-textarea:focus { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #eeeeee; + border-radius: 6px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #222f3e; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 5.5px; + resize: none; + width: 100%; +} +.tox .tox-textfield[disabled], +.tox .tox-textarea[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-textfield:focus, +.tox .tox-listboxfield .tox-listbox--select:focus, +.tox .tox-textarea-wrap:focus-within, +.tox .tox-textarea:focus, +.tox .tox-custom-editor:focus-within { + background-color: #fff; + border-color: #006ce7; + box-shadow: 0 0 0 2px rgba(0, 108, 231, 0.25); + outline: none; +} +.tox .tox-toolbar-textfield { + border-width: 0; + margin-bottom: 3px; + margin-top: 2px; + max-width: 250px; +} +.tox .tox-naked-btn { + background-color: transparent; + border: 0; + border-color: transparent; + box-shadow: unset; + color: #006ce7; + cursor: pointer; + display: block; + margin: 0; + padding: 0; +} +.tox .tox-naked-btn svg { + display: block; + fill: #222f3e; +} +.tox:not([dir=rtl]) .tox-toolbar-textfield + * { + margin-left: 4px; +} +.tox[dir=rtl] .tox-toolbar-textfield + * { + margin-right: 4px; +} +.tox .tox-listboxfield { + cursor: pointer; + position: relative; +} +.tox .tox-listboxfield .tox-listbox--select[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-listbox__select-label { + cursor: default; + flex: 1; + margin: 0 4px; +} +.tox .tox-listbox__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-listbox__select-chevron svg { + fill: #222f3e; +} +.tox .tox-listboxfield .tox-listbox--select { + align-items: center; + display: flex; +} +.tox:not([dir=rtl]) .tox-listboxfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-listboxfield svg { + left: 8px; +} +.tox .tox-selectfield { + cursor: pointer; + position: relative; +} +.tox .tox-selectfield select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #eeeeee; + border-radius: 6px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #222f3e; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 5.5px; + resize: none; + width: 100%; +} +.tox .tox-selectfield select[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-selectfield select::-ms-expand { + display: none; +} +.tox .tox-selectfield select:focus { + background-color: #fff; + border-color: #006ce7; + box-shadow: 0 0 0 2px rgba(0, 108, 231, 0.25); + outline: none; +} +.tox .tox-selectfield svg { + pointer-events: none; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox:not([dir=rtl]) .tox-selectfield select[size="0"], +.tox:not([dir=rtl]) .tox-selectfield select[size="1"] { + padding-right: 24px; +} +.tox:not([dir=rtl]) .tox-selectfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-selectfield select[size="0"], +.tox[dir=rtl] .tox-selectfield select[size="1"] { + padding-left: 24px; +} +.tox[dir=rtl] .tox-selectfield svg { + left: 8px; +} +.tox .tox-textarea-wrap { + border-color: #eeeeee; + border-radius: 6px; + border-style: solid; + border-width: 1px; + display: flex; + flex: 1; + overflow: hidden; +} +.tox .tox-textarea { + -webkit-appearance: textarea; + -moz-appearance: textarea; + appearance: textarea; + white-space: pre-wrap; +} +.tox .tox-textarea-wrap .tox-textarea { + border: none; +} +.tox .tox-textarea-wrap .tox-textarea:focus { + border: none; +} +.tox-fullscreen { + border: 0; + height: 100%; + margin: 0; + overflow: hidden; + overscroll-behavior: none; + padding: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen, +.tox-shadowhost.tox-fullscreen { + left: 0; + position: fixed; + top: 0; + z-index: 1200; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; +} +.tox-fullscreen .tox.tox-tinymce-aux, +.tox-fullscreen ~ .tox.tox-tinymce-aux { + z-index: 1201; +} +.tox .tox-help__more-link { + list-style: none; + margin-top: 1em; +} +.tox .tox-imagepreview { + background-color: #666; + height: 380px; + overflow: hidden; + position: relative; + width: 100%; +} +.tox .tox-imagepreview.tox-imagepreview__loaded { + overflow: auto; +} +.tox .tox-imagepreview__container { + display: flex; + left: 100vw; + position: absolute; + top: 100vw; +} +.tox .tox-imagepreview__image { + background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==); +} +.tox .tox-image-tools .tox-spacer { + flex: 1; +} +.tox .tox-image-tools .tox-bar { + align-items: center; + display: flex; + height: 60px; + justify-content: center; +} +.tox .tox-image-tools .tox-imagepreview, +.tox .tox-image-tools .tox-imagepreview + .tox-bar { + margin-top: 8px; +} +.tox .tox-image-tools .tox-croprect-block { + background: black; + filter: alpha(opacity=50); + opacity: 0.5; + position: absolute; + zoom: 1; +} +.tox .tox-image-tools .tox-croprect-handle { + border: 2px solid white; + height: 20px; + left: 0; + position: absolute; + top: 0; + width: 20px; +} +.tox .tox-image-tools .tox-croprect-handle-move { + border: 0; + cursor: move; + position: absolute; +} +.tox .tox-image-tools .tox-croprect-handle-nw { + border-width: 2px 0 0 2px; + cursor: nw-resize; + left: 100px; + margin: -2px 0 0 -2px; + top: 100px; +} +.tox .tox-image-tools .tox-croprect-handle-ne { + border-width: 2px 2px 0 0; + cursor: ne-resize; + left: 200px; + margin: -2px 0 0 -20px; + top: 100px; +} +.tox .tox-image-tools .tox-croprect-handle-sw { + border-width: 0 0 2px 2px; + cursor: sw-resize; + left: 100px; + margin: -20px 2px 0 -2px; + top: 200px; +} +.tox .tox-image-tools .tox-croprect-handle-se { + border-width: 0 2px 2px 0; + cursor: se-resize; + left: 200px; + margin: -20px 0 0 -20px; + top: 200px; +} +.tox .tox-insert-table-picker { + display: flex; + flex-wrap: wrap; + width: 170px; +} +.tox .tox-insert-table-picker > div { + border-color: #eeeeee; + border-style: solid; + border-width: 0 1px 1px 0; + box-sizing: border-box; + height: 17px; + width: 17px; +} +.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker { + margin: -4px -4px; +} +.tox .tox-insert-table-picker .tox-insert-table-picker__selected { + background-color: rgba(0, 108, 231, 0.5); + border-color: rgba(0, 108, 231, 0.5); +} +.tox .tox-insert-table-picker__label { + color: rgba(34, 47, 62, 0.7); + display: block; + font-size: 14px; + padding: 4px; + text-align: center; + width: 100%; +} +.tox:not([dir=rtl]) { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) { + border-right: 0; +} +.tox[dir=rtl] { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) { + border-right: 0; +} +.tox { + /* stylelint-disable */ + /* stylelint-enable */ +} +.tox .tox-menu { + background-color: #fff; + border: 1px solid transparent; + border-radius: 6px; + box-shadow: 0 0 2px 0 rgba(34, 47, 62, 0.2), 0 4px 8px 0 rgba(34, 47, 62, 0.15); + display: inline-block; + overflow: hidden; + vertical-align: top; + z-index: 1150; +} +.tox .tox-menu.tox-collection.tox-collection--list { + padding: 0 4px; +} +.tox .tox-menu.tox-collection.tox-collection--toolbar { + padding: 8px; +} +.tox .tox-menu.tox-collection.tox-collection--grid { + padding: 8px; +} +@media only screen and (min-width: 768px ) { + .tox .tox-menu .tox-collection__item-label { + overflow-wrap: break-word; + word-break: normal; + } +} +.tox .tox-menu__label h1, +.tox .tox-menu__label h2, +.tox .tox-menu__label h3, +.tox .tox-menu__label h4, +.tox .tox-menu__label h5, +.tox .tox-menu__label h6, +.tox .tox-menu__label p, +.tox .tox-menu__label blockquote, +.tox .tox-menu__label code { + margin: 0; +} +.tox .tox-menubar { + background: repeating-linear-gradient(transparent 0px 1px, transparent 1px 39px) center top 39px / 100% calc(100% - 39px) no-repeat; + background-color: #fff; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + grid-column: 1 / -1; + grid-row: 1; + padding: 0 11px 0 12px; +} +.tox .tox-promotion + .tox-menubar { + grid-column: 1; +} +.tox .tox-promotion { + background: repeating-linear-gradient(transparent 0px 1px, transparent 1px 39px) center top 39px / 100% calc(100% - 39px) no-repeat; + background-color: #fff; + grid-column: 2; + grid-row: 1; + padding-inline-end: 8px; + padding-inline-start: 4px; + padding-top: 5px; +} +.tox .tox-promotion-link { + align-items: unsafe center; + background-color: #E8F1F8; + border-radius: 5px; + color: #086BE6; + cursor: pointer; + display: flex; + font-size: 14px; + height: 26.6px; + padding: 4px 8px; + white-space: nowrap; +} +.tox .tox-promotion-link:hover { + background-color: #B4D7FF; +} +.tox .tox-promotion-link:focus { + background-color: #D9EDF7; +} +/* Deprecated. Remove in next major release */ +.tox .tox-mbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #222f3e; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 28px; + justify-content: center; + margin: 5px 1px 6px 0; + outline: none; + overflow: hidden; + padding: 0 4px; + text-transform: none; + width: auto; +} +.tox .tox-mbtn[disabled] { + background-color: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-mbtn:focus:not(:disabled) { + background: #cce2fa; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn--active { + background: #a6ccf7; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) { + background: #cce2fa; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-mbtn[disabled] .tox-mbtn__select-label { + cursor: not-allowed; +} +.tox .tox-mbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; + display: none; +} +.tox .tox-notification { + border-radius: 6px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + display: grid; + font-size: 14px; + font-weight: normal; + grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + margin-top: 4px; + opacity: 0; + padding: 4px; + transition: transform 100ms ease-in, opacity 150ms ease-in; +} +.tox .tox-notification p { + font-size: 14px; + font-weight: normal; +} +.tox .tox-notification a { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-notification--in { + opacity: 1; +} +.tox .tox-notification--success { + background-color: #e4eeda; + border-color: #d7e6c8; + color: #222f3e; +} +.tox .tox-notification--success p { + color: #222f3e; +} +.tox .tox-notification--success a { + color: #517342; +} +.tox .tox-notification--success svg { + fill: #222f3e; +} +.tox .tox-notification--error { + background-color: #f5cccc; + border-color: #f0b3b3; + color: #222f3e; +} +.tox .tox-notification--error p { + color: #222f3e; +} +.tox .tox-notification--error a { + color: #77181f; +} +.tox .tox-notification--error svg { + fill: #222f3e; +} +.tox .tox-notification--warn, +.tox .tox-notification--warning { + background-color: #fff5cc; + border-color: #fff0b3; + color: #222f3e; +} +.tox .tox-notification--warn p, +.tox .tox-notification--warning p { + color: #222f3e; +} +.tox .tox-notification--warn a, +.tox .tox-notification--warning a { + color: #7a6e25; +} +.tox .tox-notification--warn svg, +.tox .tox-notification--warning svg { + fill: #222f3e; +} +.tox .tox-notification--info { + background-color: #d6e7fb; + border-color: #c1dbf9; + color: #222f3e; +} +.tox .tox-notification--info p { + color: #222f3e; +} +.tox .tox-notification--info a { + color: #2a64a6; +} +.tox .tox-notification--info svg { + fill: #222f3e; +} +.tox .tox-notification__body { + align-self: center; + color: #222f3e; + font-size: 14px; + grid-column-end: 3; + grid-column-start: 2; + grid-row-end: 2; + grid-row-start: 1; + text-align: center; + white-space: normal; + word-break: break-all; + word-break: break-word; +} +.tox .tox-notification__body > * { + margin: 0; +} +.tox .tox-notification__body > * + * { + margin-top: 1rem; +} +.tox .tox-notification__icon { + align-self: center; + grid-column-end: 2; + grid-column-start: 1; + grid-row-end: 2; + grid-row-start: 1; + justify-self: end; +} +.tox .tox-notification__icon svg { + display: block; +} +.tox .tox-notification__dismiss { + align-self: start; + grid-column-end: 4; + grid-column-start: 3; + grid-row-end: 2; + grid-row-start: 1; + justify-self: end; +} +.tox .tox-notification .tox-progress-bar { + grid-column-end: 4; + grid-column-start: 1; + grid-row-end: 3; + grid-row-start: 2; + justify-self: center; +} +.tox .tox-pop { + display: inline-block; + position: relative; +} +.tox .tox-pop--resizing { + transition: width 0.1s ease; +} +.tox .tox-pop--resizing .tox-toolbar, +.tox .tox-pop--resizing .tox-toolbar__group { + flex-wrap: nowrap; +} +.tox .tox-pop--transition { + transition: 0.15s ease; + transition-property: left, right, top, bottom; +} +.tox .tox-pop--transition::before, +.tox .tox-pop--transition::after { + transition: all 0.15s, visibility 0s, opacity 0.075s ease 0.075s; +} +.tox .tox-pop__dialog { + background-color: #fff; + border: 1px solid #eeeeee; + border-radius: 6px; + box-shadow: 0 0 2px 0 rgba(34, 47, 62, 0.2), 0 4px 8px 0 rgba(34, 47, 62, 0.15); + min-width: 0; + overflow: hidden; +} +.tox .tox-pop__dialog > *:not(.tox-toolbar) { + margin: 4px 4px 4px 8px; +} +.tox .tox-pop__dialog .tox-toolbar { + background-color: transparent; + margin-bottom: -1px; +} +.tox .tox-pop::before, +.tox .tox-pop::after { + border-style: solid; + content: ''; + display: block; + height: 0; + opacity: 1; + position: absolute; + width: 0; +} +.tox .tox-pop.tox-pop--inset::before, +.tox .tox-pop.tox-pop--inset::after { + opacity: 0; + transition: all 0s 0.15s, visibility 0s, opacity 0.075s ease; +} +.tox .tox-pop.tox-pop--bottom::before, +.tox .tox-pop.tox-pop--bottom::after { + left: 50%; + top: 100%; +} +.tox .tox-pop.tox-pop--bottom::after { + border-color: #fff transparent transparent transparent; + border-width: 8px; + margin-left: -8px; + margin-top: -1px; +} +.tox .tox-pop.tox-pop--bottom::before { + border-color: #eeeeee transparent transparent transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--top::before, +.tox .tox-pop.tox-pop--top::after { + left: 50%; + top: 0; + transform: translateY(-100%); +} +.tox .tox-pop.tox-pop--top::after { + border-color: transparent transparent #fff transparent; + border-width: 8px; + margin-left: -8px; + margin-top: 1px; +} +.tox .tox-pop.tox-pop--top::before { + border-color: transparent transparent #eeeeee transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--left::before, +.tox .tox-pop.tox-pop--left::after { + left: 0; + top: calc(50% - 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--left::after { + border-color: transparent #fff transparent transparent; + border-width: 8px; + margin-left: -15px; +} +.tox .tox-pop.tox-pop--left::before { + border-color: transparent #eeeeee transparent transparent; + border-width: 10px; + margin-left: -19px; +} +.tox .tox-pop.tox-pop--right::before, +.tox .tox-pop.tox-pop--right::after { + left: 100%; + top: calc(50% + 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--right::after { + border-color: transparent transparent transparent #fff; + border-width: 8px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--right::before { + border-color: transparent transparent transparent #eeeeee; + border-width: 10px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--align-left::before, +.tox .tox-pop.tox-pop--align-left::after { + left: 20px; +} +.tox .tox-pop.tox-pop--align-right::before, +.tox .tox-pop.tox-pop--align-right::after { + left: calc(100% - 20px); +} +.tox .tox-sidebar-wrap { + display: flex; + flex-direction: row; + flex-grow: 1; + min-height: 0; +} +.tox .tox-sidebar { + background-color: #fff; + display: flex; + flex-direction: row; + justify-content: flex-end; +} +.tox .tox-sidebar__slider { + display: flex; + overflow: hidden; +} +.tox .tox-sidebar__pane-container { + display: flex; +} +.tox .tox-sidebar__pane { + display: flex; +} +.tox .tox-sidebar--sliding-closed { + opacity: 0; +} +.tox .tox-sidebar--sliding-open { + opacity: 1; +} +.tox .tox-sidebar--sliding-growing, +.tox .tox-sidebar--sliding-shrinking { + transition: width 0.5s ease, opacity 0.5s ease; +} +.tox .tox-selector { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + display: inline-block; + height: 10px; + position: absolute; + width: 10px; +} +.tox.tox-platform-touch .tox-selector { + height: 12px; + width: 12px; +} +.tox .tox-slider { + align-items: center; + display: flex; + flex: 1; + height: 24px; + justify-content: center; + position: relative; +} +.tox .tox-slider__rail { + background-color: transparent; + border: 1px solid #eeeeee; + border-radius: 6px; + height: 10px; + min-width: 120px; + width: 100%; +} +.tox .tox-slider__handle { + background-color: #006ce7; + border: 2px solid #0054b4; + border-radius: 6px; + box-shadow: none; + height: 24px; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%); + width: 14px; +} +.tox .tox-form__controls-h-stack > .tox-slider:not(:first-of-type) { + margin-inline-start: 8px; +} +.tox .tox-form__controls-h-stack > .tox-form__group + .tox-slider { + margin-inline-start: 32px; +} +.tox .tox-form__controls-h-stack > .tox-slider + .tox-form__group { + margin-inline-start: 32px; +} +.tox .tox-source-code { + overflow: auto; +} +.tox .tox-spinner { + display: flex; +} +.tox .tox-spinner > div { + animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both; + background-color: rgba(34, 47, 62, 0.7); + border-radius: 100%; + height: 8px; + width: 8px; +} +.tox .tox-spinner > div:nth-child(1) { + animation-delay: -0.32s; +} +.tox .tox-spinner > div:nth-child(2) { + animation-delay: -0.16s; +} +@keyframes tam-bouncing-dots { + 0%, + 80%, + 100% { + transform: scale(0); + } + 40% { + transform: scale(1); + } +} +.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-spinner > div:not(:first-child) { + margin-right: 4px; +} +.tox .tox-statusbar { + align-items: center; + background-color: #fff; + border-top: 1px solid #e3e3e3; + color: rgba(34, 47, 62, 0.7); + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-weight: normal; + height: 25px; + overflow: hidden; + padding: 0 8px; + position: relative; + text-transform: none; +} +.tox .tox-statusbar__text-container { + display: flex; + flex: 1 1 auto; + justify-content: flex-end; + overflow: hidden; +} +.tox .tox-statusbar__path { + display: flex; + flex: 1 1 auto; + margin-right: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.tox .tox-statusbar__path > * { + display: inline; + white-space: nowrap; +} +.tox .tox-statusbar__wordcount { + flex: 0 0 auto; + margin-left: 1ch; +} +.tox .tox-statusbar a, +.tox .tox-statusbar__path-item, +.tox .tox-statusbar__wordcount { + color: rgba(34, 47, 62, 0.7); + text-decoration: none; +} +.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) { + color: #222f3e; + cursor: pointer; +} +.tox .tox-statusbar__branding svg { + fill: rgba(34, 47, 62, 0.8); + height: 1.14em; + vertical-align: -0.28em; + width: 3.6em; +} +.tox .tox-statusbar__branding a:hover:not(:disabled):not([aria-disabled=true]) svg, +.tox .tox-statusbar__branding a:focus:not(:disabled):not([aria-disabled=true]) svg { + fill: #222f3e; +} +.tox .tox-statusbar__resize-handle { + align-items: flex-end; + align-self: stretch; + cursor: nwse-resize; + display: flex; + flex: 0 0 auto; + justify-content: flex-end; + margin-left: auto; + margin-right: -8px; + padding-bottom: 3px; + padding-left: 1ch; + padding-right: 3px; +} +.tox .tox-statusbar__resize-handle svg { + display: block; + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-statusbar__resize-handle:focus svg { + background-color: #dee0e2; + border-radius: 1px 1px 5px 1px; + box-shadow: 0 0 0 2px #dee0e2; +} +.tox:not([dir=rtl]) .tox-statusbar__path > * { + margin-right: 4px; +} +.tox:not([dir=rtl]) .tox-statusbar__branding { + margin-left: 2ch; +} +.tox[dir=rtl] .tox-statusbar { + flex-direction: row-reverse; +} +.tox[dir=rtl] .tox-statusbar__path > * { + margin-left: 4px; +} +.tox .tox-throbber { + z-index: 1299; +} +.tox .tox-throbber__busy-spinner { + align-items: center; + background-color: rgba(255, 255, 255, 0.6); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; +} +.tox .tox-tbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #222f3e; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 28px; + justify-content: center; + margin: 6px 1px 5px 0; + outline: none; + overflow: hidden; + padding: 0; + text-transform: none; + width: 34px; +} +.tox .tox-tbtn svg { + display: block; + fill: #222f3e; +} +.tox .tox-tbtn.tox-tbtn-more { + padding-left: 5px; + padding-right: 5px; + width: inherit; +} +.tox .tox-tbtn:focus { + background: #cce2fa; + border: 0; + box-shadow: none; +} +.tox .tox-tbtn:hover { + background: #cce2fa; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn:hover svg { + fill: #222f3e; +} +.tox .tox-tbtn:active { + background: #a6ccf7; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn:active svg { + fill: #222f3e; +} +.tox .tox-tbtn--disabled .tox-tbtn--enabled svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tbtn--disabled, +.tox .tox-tbtn--disabled:hover, +.tox .tox-tbtn:disabled, +.tox .tox-tbtn:disabled:hover { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-tbtn--disabled svg, +.tox .tox-tbtn--disabled:hover svg, +.tox .tox-tbtn:disabled svg, +.tox .tox-tbtn:disabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tbtn--enabled, +.tox .tox-tbtn--enabled:hover { + background: #a6ccf7; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn--enabled > *, +.tox .tox-tbtn--enabled:hover > * { + transform: none; +} +.tox .tox-tbtn--enabled svg, +.tox .tox-tbtn--enabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: #222f3e; +} +.tox .tox-tbtn--enabled.tox-tbtn--disabled svg, +.tox .tox-tbtn--enabled:hover.tox-tbtn--disabled svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) { + color: #222f3e; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg { + fill: #222f3e; +} +.tox .tox-tbtn:active > * { + transform: none; +} +.tox .tox-tbtn--md { + height: 42px; + width: 51px; +} +.tox .tox-tbtn--lg { + flex-direction: column; + height: 56px; + width: 68px; +} +.tox .tox-tbtn--return { + align-self: stretch; + height: unset; + width: 16px; +} +.tox .tox-tbtn--labeled { + padding: 0 4px; + width: unset; +} +.tox .tox-tbtn__vlabel { + display: block; + font-size: 10px; + font-weight: normal; + letter-spacing: -0.025em; + margin-bottom: 4px; + white-space: nowrap; +} +.tox .tox-number-input { + border-radius: 3px; + display: flex; + margin: 6px 1px 5px 0; + padding: 0 4px; + width: auto; +} +.tox .tox-number-input .tox-input-wrapper { + background: #f7f7f7; + display: flex; + pointer-events: none; + text-align: center; +} +.tox .tox-number-input .tox-input-wrapper:focus { + background: #cce2fa; +} +.tox .tox-number-input input { + border-radius: 3px; + color: #222f3e; + font-size: 14px; + margin: 2px 0; + pointer-events: all; + width: 60px; +} +.tox .tox-number-input input:hover { + background: #cce2fa; + color: #222f3e; +} +.tox .tox-number-input input:focus { + background: #fff; + color: #222f3e; +} +.tox .tox-number-input input:disabled { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-number-input button { + background: #f7f7f7; + color: #222f3e; + height: 28px; + text-align: center; + width: 24px; +} +.tox .tox-number-input button svg { + display: block; + fill: #222f3e; + margin: 0 auto; + transform: scale(0.67); +} +.tox .tox-number-input button:focus { + background: #cce2fa; +} +.tox .tox-number-input button:hover { + background: #cce2fa; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-number-input button:hover svg { + fill: #222f3e; +} +.tox .tox-number-input button:active { + background: #a6ccf7; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-number-input button:active svg { + fill: #222f3e; +} +.tox .tox-number-input button:disabled { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-number-input button:disabled svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-number-input button.minus { + border-radius: 3px 0 0 3px; +} +.tox .tox-number-input button.plus { + border-radius: 0 3px 3px 0; +} +.tox .tox-number-input:focus:not(:active) > button, +.tox .tox-number-input:focus:not(:active) > .tox-input-wrapper { + background: #cce2fa; +} +.tox .tox-tbtn--select { + margin: 6px 1px 5px 0; + padding: 0 4px; + width: auto; +} +.tox .tox-tbtn__select-label { + cursor: default; + font-weight: normal; + height: initial; + margin: 0 4px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.tox .tox-tbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-tbtn__select-chevron svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tbtn--bespoke { + background: #f7f7f7; +} +.tox .tox-tbtn--bespoke + .tox-tbtn--bespoke { + margin-inline-start: 4px; +} +.tox .tox-tbtn--bespoke .tox-tbtn__select-label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 7em; +} +.tox .tox-tbtn--disabled .tox-tbtn__select-label, +.tox .tox-tbtn--select:disabled .tox-tbtn__select-label { + cursor: not-allowed; +} +.tox .tox-split-button { + border: 0; + border-radius: 3px; + box-sizing: border-box; + display: flex; + margin: 6px 1px 5px 0; + overflow: hidden; +} +.tox .tox-split-button:hover { + box-shadow: 0 0 0 1px #cce2fa inset; +} +.tox .tox-split-button:focus { + background: #cce2fa; + box-shadow: none; + color: #222f3e; +} +.tox .tox-split-button > * { + border-radius: 0; +} +.tox .tox-split-button__chevron { + width: 16px; +} +.tox .tox-split-button__chevron svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-split-button .tox-tbtn { + margin: 0; +} +.tox .tox-split-button.tox-tbtn--disabled:hover, +.tox .tox-split-button.tox-tbtn--disabled:focus, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus { + background: transparent; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox.tox-platform-touch .tox-split-button .tox-tbtn--select { + padding: 0 0px; +} +.tox.tox-platform-touch .tox-split-button .tox-tbtn:not(.tox-tbtn--select):first-child { + width: 30px; +} +.tox.tox-platform-touch .tox-split-button__chevron { + width: 20px; +} +.tox .tox-split-button.tox-tbtn--disabled svg #tox-icon-text-color__color, +.tox .tox-split-button.tox-tbtn--disabled svg #tox-icon-highlight-bg-color__color { + opacity: 0.6; +} +.tox .tox-toolbar-overlord { + background-color: #fff; +} +.tox .tox-toolbar, +.tox .tox-toolbar__primary, +.tox .tox-toolbar__overflow { + background-attachment: local; + background-color: #fff; + background-image: repeating-linear-gradient(#e3e3e3 0px 1px, transparent 1px 39px); + background-position: center top 40px; + background-repeat: no-repeat; + background-size: calc(100% - 11px * 2) calc(100% - 41px); + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 0px; + transform: perspective(1px); +} +.tox .tox-toolbar-overlord > .tox-toolbar, +.tox .tox-toolbar-overlord > .tox-toolbar__primary, +.tox .tox-toolbar-overlord > .tox-toolbar__overflow { + background-position: center top 0px; + background-size: calc(100% - 11px * 2) calc(100% - 0px); +} +.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed { + height: 0; + opacity: 0; + padding-bottom: 0; + padding-top: 0; + visibility: hidden; +} +.tox .tox-toolbar__overflow--growing { + transition: height 0.3s ease, opacity 0.2s linear 0.1s; +} +.tox .tox-toolbar__overflow--shrinking { + transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s; +} +.tox .tox-toolbar-overlord, +.tox .tox-anchorbar { + grid-column: 1 / -1; +} +.tox .tox-menubar + .tox-toolbar, +.tox .tox-menubar + .tox-toolbar-overlord { + border-top: 1px solid transparent; + margin-top: -1px; + padding-bottom: 1px; + padding-top: 1px; +} +.tox .tox-toolbar--scrolling { + flex-wrap: nowrap; + overflow-x: auto; +} +.tox .tox-pop .tox-toolbar { + border-width: 0; +} +.tox .tox-toolbar--no-divider { + background-image: none; +} +.tox .tox-toolbar-overlord .tox-toolbar:not(.tox-toolbar--scrolling):first-child, +.tox .tox-toolbar-overlord .tox-toolbar__primary { + background-position: center top 39px; +} +.tox .tox-editor-header > .tox-toolbar--scrolling, +.tox .tox-toolbar-overlord .tox-toolbar--scrolling:first-child { + background-image: none; +} +.tox.tox-tinymce-aux .tox-toolbar__overflow { + background-color: #fff; + background-position: center top 43px; + background-size: calc(100% - 8px * 2) calc(100% - 51px); + border: none; + border-radius: 6px; + box-shadow: 0 0 2px 0 rgba(34, 47, 62, 0.2), 0 4px 8px 0 rgba(34, 47, 62, 0.15); + overscroll-behavior: none; + padding: 4px 0; +} +.tox-pop .tox-pop__dialog { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox-pop .tox-pop__dialog .tox-toolbar { + background-position: center top 43px; + background-size: calc(100% - 11px * 2) calc(100% - 51px); + padding: 4px 0; +} +.tox .tox-toolbar__group { + align-items: center; + display: flex; + flex-wrap: wrap; + margin: 0 0; + padding: 0 11px 0 12px; +} +.tox .tox-toolbar__group--pull-right { + margin-left: auto; +} +.tox .tox-toolbar--scrolling .tox-toolbar__group { + flex-shrink: 0; + flex-wrap: nowrap; +} +.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) { + border-right: 1px solid transparent; +} +.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) { + border-left: 1px solid transparent; +} +.tox .tox-tooltip { + display: inline-block; + padding: 8px; + position: relative; +} +.tox .tox-tooltip__body { + background-color: #222f3e; + border-radius: 6px; + box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3); + color: rgba(255, 255, 255, 0.75); + font-size: 14px; + font-style: normal; + font-weight: normal; + padding: 4px 8px; + text-transform: none; +} +.tox .tox-tooltip__arrow { + position: absolute; +} +.tox .tox-tooltip--down .tox-tooltip__arrow { + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-top: 8px solid #222f3e; + bottom: 0; + left: 50%; + position: absolute; + transform: translateX(-50%); +} +.tox .tox-tooltip--up .tox-tooltip__arrow { + border-bottom: 8px solid #222f3e; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + left: 50%; + position: absolute; + top: 0; + transform: translateX(-50%); +} +.tox .tox-tooltip--right .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-left: 8px solid #222f3e; + border-top: 8px solid transparent; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-tooltip--left .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-right: 8px solid #222f3e; + border-top: 8px solid transparent; + left: 0; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-tree { + display: flex; + flex-direction: column; +} +.tox .tox-tree .tox-trbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 4px; + box-shadow: none; + color: #222f3e; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 28px; + margin-bottom: 4px; + margin-top: 4px; + outline: none; + overflow: hidden; + padding: 0; + padding-left: 8px; + text-transform: none; +} +.tox .tox-tree .tox-trbtn .tox-tree__label { + cursor: default; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.tox .tox-tree .tox-trbtn svg { + display: block; + fill: #222f3e; +} +.tox .tox-tree .tox-trbtn:focus { + background: #cce2fa; + border: 0; + box-shadow: none; +} +.tox .tox-tree .tox-trbtn:hover { + background: #cce2fa; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tree .tox-trbtn:hover svg { + fill: #222f3e; +} +.tox .tox-tree .tox-trbtn:active { + background: #a6ccf7; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tree .tox-trbtn:active svg { + fill: #222f3e; +} +.tox .tox-tree .tox-trbtn--disabled, +.tox .tox-tree .tox-trbtn--disabled:hover, +.tox .tox-tree .tox-trbtn:disabled, +.tox .tox-tree .tox-trbtn:disabled:hover { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-tree .tox-trbtn--disabled svg, +.tox .tox-tree .tox-trbtn--disabled:hover svg, +.tox .tox-tree .tox-trbtn:disabled svg, +.tox .tox-tree .tox-trbtn:disabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tree .tox-trbtn--enabled, +.tox .tox-tree .tox-trbtn--enabled:hover { + background: #a6ccf7; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tree .tox-trbtn--enabled > *, +.tox .tox-tree .tox-trbtn--enabled:hover > * { + transform: none; +} +.tox .tox-tree .tox-trbtn--enabled svg, +.tox .tox-tree .tox-trbtn--enabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: #222f3e; +} +.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled) { + color: #222f3e; +} +.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled) svg { + fill: #222f3e; +} +.tox .tox-tree .tox-trbtn:active > * { + transform: none; +} +.tox .tox-tree .tox-trbtn--return { + align-self: stretch; + height: unset; + width: 16px; +} +.tox .tox-tree .tox-trbtn--labeled { + padding: 0 4px; + width: unset; +} +.tox .tox-tree .tox-trbtn__vlabel { + display: block; + font-size: 10px; + font-weight: normal; + letter-spacing: -0.025em; + margin-bottom: 4px; + white-space: nowrap; +} +.tox .tox-tree .tox-tree--directory { + display: flex; + flex-direction: column; + /* stylelint-disable no-descending-specificity */ +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label { + font-weight: bold; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn { + margin-left: auto; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn svg { + fill: transparent; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn.tox-mbtn--active svg, +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn:focus svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover .tox-mbtn svg, +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:focus .tox-mbtn svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover) { + background-color: transparent; + color: #222f3e; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover) .tox-chevron svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-chevron { + margin-right: 6px; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:has(+ .tox-tree--directory__children--growing) .tox-chevron, +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:has(+ .tox-tree--directory__children--shrinking) .tox-chevron { + transition: transform 0.5s ease-in-out; +} +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:has(+ .tox-tree--directory__children--growing) .tox-chevron, +.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:has(+ .tox-tree--directory__children--open) .tox-chevron { + transform: rotate(90deg); +} +.tox .tox-tree .tox-tree--leaf__label { + font-weight: normal; +} +.tox .tox-tree .tox-tree--leaf__label .tox-mbtn { + margin-left: auto; +} +.tox .tox-tree .tox-tree--leaf__label .tox-mbtn svg { + fill: transparent; +} +.tox .tox-tree .tox-tree--leaf__label .tox-mbtn.tox-mbtn--active svg, +.tox .tox-tree .tox-tree--leaf__label .tox-mbtn:focus svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--leaf__label:hover .tox-mbtn svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover) { + background-color: transparent; + color: #222f3e; +} +.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover) .tox-chevron svg { + fill: #222f3e; +} +.tox .tox-tree .tox-tree--directory__children { + overflow: hidden; + padding-left: 16px; +} +.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--growing, +.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--shrinking { + transition: height 0.5s ease-in-out; +} +.tox .tox-tree .tox-trbtn.tox-tree--leaf__label { + display: flex; + justify-content: space-between; +} +.tox .tox-view-wrap, +.tox .tox-view-wrap__slot-container { + background-color: #fff; + display: flex; + flex: 1; + flex-direction: column; +} +.tox .tox-view { + display: flex; + flex: 1 1 auto; + flex-direction: column; + overflow: hidden; +} +.tox .tox-view__header { + align-items: center; + display: flex; + font-size: 16px; + justify-content: space-between; + padding: 8px 8px 0 8px; + position: relative; +} +.tox .tox-view--mobile.tox-view__header, +.tox .tox-view--mobile.tox-view__toolbar { + padding: 8px; +} +.tox .tox-view--scrolling { + flex-wrap: nowrap; + overflow-x: auto; +} +.tox .tox-view__toolbar { + display: flex; + flex-direction: row; + gap: 8px; + justify-content: space-between; + padding: 8px 8px 0 8px; +} +.tox .tox-view__toolbar__group { + display: flex; + flex-direction: row; + gap: 12px; +} +.tox .tox-view__header-start, +.tox .tox-view__header-end { + display: flex; +} +.tox .tox-view__pane { + height: 100%; + padding: 8px; + width: 100%; +} +.tox .tox-view__pane_panel { + border: 1px solid #eeeeee; + border-radius: 6px; +} +.tox:not([dir=rtl]) .tox-view__header .tox-view__header-start > *, +.tox:not([dir=rtl]) .tox-view__header .tox-view__header-end > * { + margin-left: 8px; +} +.tox[dir=rtl] .tox-view__header .tox-view__header-start > *, +.tox[dir=rtl] .tox-view__header .tox-view__header-end > * { + margin-right: 8px; +} +.tox .tox-well { + border: 1px solid #eeeeee; + border-radius: 6px; + padding: 8px; + width: 100%; +} +.tox .tox-well > *:first-child { + margin-top: 0; +} +.tox .tox-well > *:last-child { + margin-bottom: 0; +} +.tox .tox-well > *:only-child { + margin: 0; +} +.tox .tox-custom-editor { + border: 1px solid #eeeeee; + border-radius: 6px; + display: flex; + flex: 1; + overflow: hidden; + position: relative; +} +/* stylelint-disable */ +.tox { + /* stylelint-enable */ +} +.tox .tox-dialog-loading::before { + background-color: rgba(0, 0, 0, 0.5); + content: ""; + height: 100%; + position: absolute; + width: 100%; + z-index: 1000; +} +.tox .tox-tab { + cursor: pointer; +} +.tox .tox-dialog__content-js { + display: flex; + flex: 1; +} +.tox .tox-dialog__body-content .tox-collection { + display: flex; + flex: 1; +} diff --git a/public/skins/ui/oxide/skin.min.css b/public/skins/ui/oxide/skin.min.css new file mode 100644 index 0000000..0b47fd2 --- /dev/null +++ b/public/skins/ui/oxide/skin.min.css @@ -0,0 +1 @@ +.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:2px solid #eee;border-radius:10px;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox.tox-tinymce-inline{border:none;box-shadow:none;overflow:initial}.tox.tox-tinymce-inline .tox-editor-container{overflow:initial}.tox.tox-tinymce-inline .tox-editor-header{background-color:#fff;border:2px solid #eee;border-radius:10px;box-shadow:none;overflow:hidden}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border-radius:6px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>div>div .tox-icon svg{display:block}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(0,101,216,.1);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#006ce7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#006ce7}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon{background-color:#006ce7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:hover{background-color:#0060ce}.tox .tox-dialog__body-content .accessibility-issue--info a.tox-button--naked.tox-button--icon:active{background-color:#0054b4}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.08);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#8f5d00}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#8f5d00}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon{background-color:#ffe89d;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:hover{background-color:#f2d574;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn a.tox-button--naked.tox-button--icon:active{background-color:#e8c657;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon{background-color:#f2bfbf;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:focus,.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:hover{background-color:#e9a4a4;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error a.tox-button--naked.tox-button--icon:active{background-color:#ee9494;color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{display:none}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#527530}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#527530}.tox .tox-dialog__body-content .accessibility-issue__header .tox-form__group h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{font-size:14px;margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox .tox-advtemplate .tox-form__grid{flex:1}.tox .tox-advtemplate .tox-form__grid>div:first-child{display:flex;flex-direction:column;width:30%}.tox .tox-advtemplate .tox-form__grid>div:first-child>div:nth-child(2){flex-basis:0;flex-grow:1;overflow:auto}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-advtemplate .tox-form__grid>div:first-child{width:100%}}.tox .tox-advtemplate iframe{border-color:#eee;border-radius:10px;border-style:solid;border-width:1px;margin:0 10px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bottom-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#006ce7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#006ce7;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;position:relative;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button::before{border-radius:6px;bottom:-1px;box-shadow:inset 0 0 0 2px #fff,0 0 0 1px #006ce7,0 0 0 3px rgba(0,108,231,.25);content:'';left:-1px;opacity:0;pointer-events:none;position:absolute;right:-1px;top:-1px}.tox .tox-button[disabled]{background-color:#006ce7;background-image:none;border-color:#006ce7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#0060ce;background-image:none;border-color:#0060ce;box-shadow:none;color:#fff}.tox .tox-button:focus-visible:not(:disabled)::before{opacity:1}.tox .tox-button:hover:not(:disabled){background-color:#0060ce;background-image:none;border-color:#0060ce;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled{background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled[disabled]{background-color:#0054b4;background-image:none;border-color:#0054b4;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button.tox-button--enabled:focus:not(:disabled){background-color:#00489b;background-image:none;border-color:#00489b;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled:hover:not(:disabled){background-color:#00489b;background-image:none;border-color:#00489b;box-shadow:none;color:#fff}.tox .tox-button.tox-button--enabled:active:not(:disabled){background-color:#003c81;background-image:none;border-color:#003c81;box-shadow:none;color:#fff}.tox .tox-button--icon-and-text,.tox .tox-button.tox-button--icon-and-text,.tox .tox-button.tox-button--secondary.tox-button--icon-and-text{display:flex;padding:5px 4px}.tox .tox-button--icon-and-text .tox-icon svg,.tox .tox-button.tox-button--icon-and-text .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon-and-text .tox-icon svg{display:block;fill:currentColor}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--secondary.tox-button--enabled{background-color:#a8c8ed;background-image:none;border-color:#a8c8ed;box-shadow:none;color:#222f3e}.tox .tox-button--secondary.tox-button--enabled[disabled]{background-color:#a8c8ed;background-image:none;border-color:#a8c8ed;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary.tox-button--enabled:focus:not(:disabled){background-color:#93bbe9;background-image:none;border-color:#93bbe9;box-shadow:none;color:#222f3e}.tox .tox-button--secondary.tox-button--enabled:hover:not(:disabled){background-color:#93bbe9;background-image:none;border-color:#93bbe9;box-shadow:none;color:#222f3e}.tox .tox-button--secondary.tox-button--enabled:active:not(:disabled){background-color:#7daee4;background-image:none;border-color:#7daee4;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:rgba(34,47,62,.12);border-color:transparent;box-shadow:unset;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:rgba(34,47,62,.12);border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:rgba(34,47,62,.12);border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:rgba(34,47,62,.18);border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:6px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:6px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#006ce7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#006ce7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:6px;box-shadow:inset 0 0 0 1px #006ce7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#e3e3e3;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#fcfcfc;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;border-radius:3px;color:#222f3e;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#cce2fa}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#a6ccf7;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#cce2fa}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#a6ccf7;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#cce2fa;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(34,47,62,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #e3e3e3;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:28px;margin:6px 1px 5px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid transparent}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid transparent}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:5px 0 6px 11px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px -4px}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{fill:#222f3e;height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#cce2fa}.tox div.tox-swatch:not(.tox-swatch--remove) svg{display:none;fill:#222f3e;height:24px;margin:calc((30px - 24px)/ 2) calc((30px - 24px)/ 2);width:24px}.tox div.tox-swatch:not(.tox-swatch--remove) svg path{fill:#fff;paint-order:stroke;stroke:#222f3e;stroke-width:2px}.tox div.tox-swatch:not(.tox-swatch--remove).tox-collection__item--enabled svg{display:block}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #eee;border-radius:6px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:#222f3e;font-size:12px;line-height:18px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__avatar img{border-radius:50%;height:36px;object-fit:cover;vertical-align:middle;width:36px}.tox .tox-user__name{color:#222f3e;font-size:14px;font-style:normal;font-weight:700;line-height:18px;text-transform:none}.tox:not([dir=rtl]) .tox-user__avatar img,.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar img,.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#eee;border-radius:10px;border-style:solid;border-width:0;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;max-height:calc(100vh - 8px * 2);width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;flex-shrink:0;padding:16px 16px}@media only screen and (min-width:768px){.tox .tox-dialog__body-nav{max-width:11em}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;flex-shrink:0;font-size:14px;line-height:1.3;margin-bottom:8px;max-width:13em;text-decoration:none}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(0,108,231,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #006ce7;color:#006ce7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;max-height:min(650px,calc(100vh - 110px));overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#006ce7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#0054b4;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#0054b4;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content strong{font-weight:700}.tox .tox-dialog__body-content ul{list-style-type:disc}.tox .tox-dialog__body-content dd,.tox .tox-dialog__body-content ol,.tox .tox-dialog__body-content ul{padding-inline-start:2.5rem}.tox .tox-dialog__body-content dl,.tox .tox-dialog__body-content ol,.tox .tox-dialog__body-content ul{margin-bottom:16px}.tox .tox-dialog__body-content dd,.tox .tox-dialog__body-content dl,.tox .tox-dialog__body-content dt,.tox .tox-dialog__body-content ol,.tox .tox-dialog__body-content ul{display:block;margin-inline-end:0;margin-inline-start:0}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content .tox-form__group .tox-label.tox-label--center{text-align:center}.tox .tox-dialog__body-content .tox-form__group .tox-label.tox-label--end{text-align:end}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--fullscreen{height:100%;max-width:100%}.tox .tox-dialog--fullscreen .tox-dialog__body-content{max-height:100%}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:none;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table thead th:first-child{padding-right:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #626262}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__table td:first-child{padding-right:8px}.tox .tox-dialog__iframe{min-height:200px}.tox .tox-dialog__iframe.tox-dialog__iframe--opaque{background:#fff}.tox .tox-navobj-bordered{position:relative}.tox .tox-navobj-bordered::before{border:1px solid #eee;border-radius:6px;content:'';inset:0;opacity:1;pointer-events:none;position:absolute;z-index:1}.tox .tox-navobj-bordered-focus.tox-navobj-bordered::before{border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #eee;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;overflow:hidden;position:relative}.tox .tox-edit-area::before{border:2px solid #2d6adf;border-radius:4px;content:'';inset:0;opacity:0;pointer-events:none;position:absolute;transition:opacity .15s;z-index:1}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;height:100%;position:absolute;width:100%}.tox.tox-edit-focus .tox-edit-area::before{opacity:1}.tox.tox-inline-edit-area{border:1px dotted #eee}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{display:grid;grid-template-columns:1fr min-content;z-index:2}.tox:not(.tox-tinymce-inline) .tox-editor-header{background-color:#fff;border-bottom:none;box-shadow:0 2px 2px -2px rgba(34,47,62,.1),0 8px 8px -4px rgba(34,47,62,.07);padding:4px 0}.tox:not(.tox-tinymce-inline) .tox-editor-header:not(.tox-editor-dock-transition){transition:box-shadow .5s}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-bottom .tox-editor-header{border-top:1px solid #e3e3e3;box-shadow:none}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:#fff;box-shadow:0 2px 2px -2px rgba(34,47,62,.2),0 8px 8px -4px rgba(34,47,62,.15);padding:4px 0}.tox:not(.tox-tinymce-inline).tox-tinymce--toolbar-sticky-on.tox-tinymce--toolbar-bottom .tox-editor-header{box-shadow:0 2px 2px -2px rgba(34,47,62,.2),0 8px 8px -4px rgba(34,47,62,.15)}.tox.tox:not(.tox-tinymce-inline) .tox-editor-header.tox-editor-header--empty{background:0 0;border:none;box-shadow:none;padding:0}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{box-sizing:border-box;max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#006ce7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:6px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column}.tox .tox-form__group--stretched .tox-textarea{flex:1}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textarea-wrap .tox-textarea:focus,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#eee;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 5.5px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-custom-editor:focus-within,.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea-wrap:focus-within,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#006ce7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#eee;border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 5.5px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#006ce7;box-shadow:0 0 0 2px rgba(0,108,231,.25);outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea-wrap{border-color:#eee;border-radius:6px;border-style:solid;border-width:1px;display:flex;flex:1;overflow:hidden}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox .tox-textarea-wrap .tox-textarea{border:none}.tox .tox-textarea-wrap .tox-textarea:focus{border:none}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-imagepreview{background-color:#666;height:380px;overflow:hidden;position:relative;width:100%}.tox .tox-imagepreview.tox-imagepreview__loaded{overflow:auto}.tox .tox-imagepreview__container{display:flex;left:100vw;position:absolute;top:100vw}.tox .tox-imagepreview__image{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools .tox-spacer{flex:1}.tox .tox-image-tools .tox-bar{align-items:center;display:flex;height:60px;justify-content:center}.tox .tox-image-tools .tox-imagepreview,.tox .tox-image-tools .tox-imagepreview+.tox-bar{margin-top:8px}.tox .tox-image-tools .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-image-tools .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-image-tools .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-image-tools .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-image-tools .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-image-tools .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-image-tools .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#eee;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px -4px}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(0,108,231,.5);border-color:rgba(0,108,231,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid transparent;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0 4px}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:8px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:8px}@media only screen and (min-width:768px){.tox .tox-menu .tox-collection__item-label{overflow-wrap:break-word;word-break:normal}}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:repeating-linear-gradient(transparent 0 1px,transparent 1px 39px) center top 39px/100% calc(100% - 39px) no-repeat;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;grid-column:1/-1;grid-row:1;padding:0 11px 0 12px}.tox .tox-promotion+.tox-menubar{grid-column:1}.tox .tox-promotion{background:repeating-linear-gradient(transparent 0 1px,transparent 1px 39px) center top 39px/100% calc(100% - 39px) no-repeat;background-color:#fff;grid-column:2;grid-row:1;padding-inline-end:8px;padding-inline-start:4px;padding-top:5px}.tox .tox-promotion-link{align-items:unsafe center;background-color:#e8f1f8;border-radius:5px;color:#086be6;cursor:pointer;display:flex;font-size:14px;height:26.6px;padding:4px 8px;white-space:nowrap}.tox .tox-promotion-link:hover{background-color:#b4d7ff}.tox .tox-promotion-link:focus{background-color:#d9edf7}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;justify-content:center;margin:5px 1px 6px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:6px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:grid;font-size:14px;font-weight:400;grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#517342}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f5cccc;border-color:#f0b3b3;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#77181f}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fff5cc;border-color:#fff0b3;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#7a6e25}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d6e7fb;border-color:#c1dbf9;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#2a64a6}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{align-self:center;color:#222f3e;font-size:14px;grid-column-end:3;grid-column-start:2;grid-row-end:2;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{align-self:center;grid-column-end:2;grid-column-start:1;grid-row-end:2;grid-row-start:1;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{align-self:start;grid-column-end:4;grid-column-start:3;grid-row-end:2;grid-row-start:1;justify-self:end}.tox .tox-notification .tox-progress-bar{grid-column-end:4;grid-column-start:1;grid-row-end:3;grid-row-start:2;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #eee;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#eee transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #eee transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #eee transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #eee;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #eee;border-radius:6px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#006ce7;border:2px solid #0054b4;border-radius:6px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-form__controls-h-stack>.tox-slider:not(:first-of-type){margin-inline-start:8px}.tox .tox-form__controls-h-stack>.tox-form__group+.tox-slider{margin-inline-start:32px}.tox .tox-form__controls-h-stack>.tox-slider+.tox-form__group{margin-inline-start:32px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #e3e3e3;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:14px;font-weight:400;height:25px;overflow:hidden;padding:0 8px;position:relative;text-transform:none}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){color:#222f3e;cursor:pointer}.tox .tox-statusbar__branding svg{fill:rgba(34,47,62,.8);height:1.14em;vertical-align:-.28em;width:3.6em}.tox .tox-statusbar__branding a:focus:not(:disabled):not([aria-disabled=true]) svg,.tox .tox-statusbar__branding a:hover:not(:disabled):not([aria-disabled=true]) svg{fill:#222f3e}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-bottom:3px;padding-left:1ch;padding-right:3px}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.5)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px 1px 5px 1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:2ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;justify-content:center;margin:6px 1px 5px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#cce2fa;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled .tox-tbtn--enabled svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn--enabled.tox-tbtn--disabled svg,.tox .tox-tbtn--enabled:hover.tox-tbtn--disabled svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:42px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:56px;width:68px}.tox .tox-tbtn--return{align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-number-input{border-radius:3px;display:flex;margin:6px 1px 5px 0;padding:0 4px;width:auto}.tox .tox-number-input .tox-input-wrapper{background:#f7f7f7;display:flex;pointer-events:none;text-align:center}.tox .tox-number-input .tox-input-wrapper:focus{background:#cce2fa}.tox .tox-number-input input{border-radius:3px;color:#222f3e;font-size:14px;margin:2px 0;pointer-events:all;width:60px}.tox .tox-number-input input:hover{background:#cce2fa;color:#222f3e}.tox .tox-number-input input:focus{background:#fff;color:#222f3e}.tox .tox-number-input input:disabled{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-number-input button{background:#f7f7f7;color:#222f3e;height:28px;text-align:center;width:24px}.tox .tox-number-input button svg{display:block;fill:#222f3e;margin:0 auto;transform:scale(.67)}.tox .tox-number-input button:focus{background:#cce2fa}.tox .tox-number-input button:hover{background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-number-input button:hover svg{fill:#222f3e}.tox .tox-number-input button:active{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-number-input button:active svg{fill:#222f3e}.tox .tox-number-input button:disabled{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-number-input button:disabled svg{fill:rgba(34,47,62,.5)}.tox .tox-number-input button.minus{border-radius:3px 0 0 3px}.tox .tox-number-input button.plus{border-radius:0 3px 3px 0}.tox .tox-number-input:focus:not(:active)>.tox-input-wrapper,.tox .tox-number-input:focus:not(:active)>button{background:#cce2fa}.tox .tox-tbtn--select{margin:6px 1px 5px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;height:initial;margin:0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke{background:#f7f7f7}.tox .tox-tbtn--bespoke+.tox-tbtn--bespoke{margin-inline-start:4px}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-tbtn--disabled .tox-tbtn__select-label,.tox .tox-tbtn--select:disabled .tox-tbtn__select-label{cursor:not-allowed}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:6px 1px 5px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #cce2fa inset}.tox .tox-split-button:focus{background:#cce2fa;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox.tox-platform-touch .tox-split-button .tox-tbtn--select{padding:0 0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:not(.tox-tbtn--select):first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled svg #tox-icon-highlight-bg-color__color,.tox .tox-split-button.tox-tbtn--disabled svg #tox-icon-text-color__color{opacity:.6}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background-attachment:local;background-color:#fff;background-image:repeating-linear-gradient(#e3e3e3 0 1px,transparent 1px 39px);background-position:center top 40px;background-repeat:no-repeat;background-size:calc(100% - 11px * 2) calc(100% - 41px);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0;transform:perspective(1px)}.tox .tox-toolbar-overlord>.tox-toolbar,.tox .tox-toolbar-overlord>.tox-toolbar__overflow,.tox .tox-toolbar-overlord>.tox-toolbar__primary{background-position:center top 0;background-size:calc(100% - 11px * 2) calc(100% - 0px)}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-anchorbar,.tox .tox-toolbar-overlord{grid-column:1/-1}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord{border-top:1px solid transparent;margin-top:-1px;padding-bottom:1px;padding-top:1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox .tox-toolbar-overlord .tox-toolbar:not(.tox-toolbar--scrolling):first-child,.tox .tox-toolbar-overlord .tox-toolbar__primary{background-position:center top 39px}.tox .tox-editor-header>.tox-toolbar--scrolling,.tox .tox-toolbar-overlord .tox-toolbar--scrolling:first-child{background-image:none}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;background-position:center top 43px;background-size:calc(100% - 8px * 2) calc(100% - 51px);border:none;border-radius:6px;box-shadow:0 0 2px 0 rgba(34,47,62,.2),0 4px 8px 0 rgba(34,47,62,.15);overscroll-behavior:none;padding:4px 0}.tox-pop .tox-pop__dialog .tox-toolbar{background-position:center top 43px;background-size:calc(100% - 11px * 2) calc(100% - 51px);padding:4px 0}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 11px 0 12px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid transparent}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid transparent}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:6px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-tree{display:flex;flex-direction:column}.tox .tox-tree .tox-trbtn{align-items:center;background:0 0;border:0;border-radius:4px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:28px;margin-bottom:4px;margin-top:4px;outline:0;overflow:hidden;padding:0;padding-left:8px;text-transform:none}.tox .tox-tree .tox-trbtn .tox-tree__label{cursor:default;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-tree .tox-trbtn svg{display:block;fill:#222f3e}.tox .tox-tree .tox-trbtn:focus{background:#cce2fa;border:0;box-shadow:none}.tox .tox-tree .tox-trbtn:hover{background:#cce2fa;border:0;box-shadow:none;color:#222f3e}.tox .tox-tree .tox-trbtn:hover svg{fill:#222f3e}.tox .tox-tree .tox-trbtn:active{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-tree .tox-trbtn:active svg{fill:#222f3e}.tox .tox-tree .tox-trbtn--disabled,.tox .tox-tree .tox-trbtn--disabled:hover,.tox .tox-tree .tox-trbtn:disabled,.tox .tox-tree .tox-trbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tree .tox-trbtn--disabled svg,.tox .tox-tree .tox-trbtn--disabled:hover svg,.tox .tox-tree .tox-trbtn:disabled svg,.tox .tox-tree .tox-trbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tree .tox-trbtn--enabled,.tox .tox-tree .tox-trbtn--enabled:hover{background:#a6ccf7;border:0;box-shadow:none;color:#222f3e}.tox .tox-tree .tox-trbtn--enabled:hover>*,.tox .tox-tree .tox-trbtn--enabled>*{transform:none}.tox .tox-tree .tox-trbtn--enabled svg,.tox .tox-tree .tox-trbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled){color:#222f3e}.tox .tox-tree .tox-trbtn:focus:not(.tox-trbtn--disabled) svg{fill:#222f3e}.tox .tox-tree .tox-trbtn:active>*{transform:none}.tox .tox-tree .tox-trbtn--return{align-self:stretch;height:unset;width:16px}.tox .tox-tree .tox-trbtn--labeled{padding:0 4px;width:unset}.tox .tox-tree .tox-trbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tree .tox-tree--directory{display:flex;flex-direction:column}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label{font-weight:700}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn{margin-left:auto}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn svg{fill:transparent}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn.tox-mbtn--active svg,.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-mbtn:focus svg{fill:#222f3e}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:focus .tox-mbtn svg,.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover .tox-mbtn svg{fill:#222f3e}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover){background-color:transparent;color:#222f3e}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:hover:has(.tox-mbtn:hover) .tox-chevron svg{fill:#222f3e}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label .tox-chevron{margin-right:6px}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:has(+.tox-tree--directory__children--growing) .tox-chevron,.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:has(+.tox-tree--directory__children--shrinking) .tox-chevron{transition:transform .5s ease-in-out}.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:has(+.tox-tree--directory__children--growing) .tox-chevron,.tox .tox-tree .tox-tree--directory .tox-tree--directory__label:has(+.tox-tree--directory__children--open) .tox-chevron{transform:rotate(90deg)}.tox .tox-tree .tox-tree--leaf__label{font-weight:400}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn{margin-left:auto}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn svg{fill:transparent}.tox .tox-tree .tox-tree--leaf__label .tox-mbtn.tox-mbtn--active svg,.tox .tox-tree .tox-tree--leaf__label .tox-mbtn:focus svg{fill:#222f3e}.tox .tox-tree .tox-tree--leaf__label:hover .tox-mbtn svg{fill:#222f3e}.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover){background-color:transparent;color:#222f3e}.tox .tox-tree .tox-tree--leaf__label:hover:has(.tox-mbtn:hover) .tox-chevron svg{fill:#222f3e}.tox .tox-tree .tox-tree--directory__children{overflow:hidden;padding-left:16px}.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--growing,.tox .tox-tree .tox-tree--directory__children.tox-tree--directory__children--shrinking{transition:height .5s ease-in-out}.tox .tox-tree .tox-trbtn.tox-tree--leaf__label{display:flex;justify-content:space-between}.tox .tox-view-wrap,.tox .tox-view-wrap__slot-container{background-color:#fff;display:flex;flex:1;flex-direction:column}.tox .tox-view{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-view__header{align-items:center;display:flex;font-size:16px;justify-content:space-between;padding:8px 8px 0 8px;position:relative}.tox .tox-view--mobile.tox-view__header,.tox .tox-view--mobile.tox-view__toolbar{padding:8px}.tox .tox-view--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-view__toolbar{display:flex;flex-direction:row;gap:8px;justify-content:space-between;padding:8px 8px 0 8px}.tox .tox-view__toolbar__group{display:flex;flex-direction:row;gap:12px}.tox .tox-view__header-end,.tox .tox-view__header-start{display:flex}.tox .tox-view__pane{height:100%;padding:8px;width:100%}.tox .tox-view__pane_panel{border:1px solid #eee;border-radius:6px}.tox:not([dir=rtl]) .tox-view__header .tox-view__header-end>*,.tox:not([dir=rtl]) .tox-view__header .tox-view__header-start>*{margin-left:8px}.tox[dir=rtl] .tox-view__header .tox-view__header-end>*,.tox[dir=rtl] .tox-view__header .tox-view__header-start>*{margin-right:8px}.tox .tox-well{border:1px solid #eee;border-radius:6px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #eee;border-radius:6px;display:flex;flex:1;overflow:hidden;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1} diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..ee94b53 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/api/auth/auth.js b/src/api/auth/auth.js new file mode 100644 index 0000000..adaea62 --- /dev/null +++ b/src/api/auth/auth.js @@ -0,0 +1,9 @@ +import request from "@/utils/request.js"; + +export const modifyUser=(data)=>{ + return request({ + url:'/admin/user', + method:'put', + data + }) +} \ No newline at end of file diff --git a/src/api/cache.js b/src/api/cache.js new file mode 100644 index 0000000..9def912 --- /dev/null +++ b/src/api/cache.js @@ -0,0 +1,15 @@ +import request from '@/utils/request.js' + +export const getCacheOpt = (cacheKey) => { + return request({ + url: '/admin/dict/data/option/'+ cacheKey, + method: 'get', + }) +} + +export const getCacheType = (cacheKey) => { + return request({ + url: '/admin/dict/data/type/'+ cacheKey, + method: 'get', + }) +} \ No newline at end of file diff --git a/src/api/common/index.js b/src/api/common/index.js new file mode 100644 index 0000000..505aa7c --- /dev/null +++ b/src/api/common/index.js @@ -0,0 +1,9 @@ +import request from '@/utils/request.js' + +export const requestList = ( api, params, method = 'get' ) => { + return request({ + url: api, + method, + params + }) +} \ No newline at end of file diff --git a/src/api/custom-query/adapter.js b/src/api/custom-query/adapter.js new file mode 100644 index 0000000..051f503 --- /dev/null +++ b/src/api/custom-query/adapter.js @@ -0,0 +1,105 @@ +import request from "@/utils/request.js"; +import { method } from "lodash"; + +// 请求数据源适配器list +export const getDataAdapterList = (params) => { + return request({ + url: "/custom/query/query/adapter", + method: "get", + params, + }); +}; + +//获取到option列表 +export const getDataAdapterOpt = () => { + return request({ + url: "/custom/query/query/adapter/option", + method: "get", + }); +}; + +// 获取数据源适配器详情 +export const getDataAdapterDetails = (dataAdapterId) => { + return request({ + url: "/custom/query/query/adapter/" + dataAdapterId, + method: "get", + }); +}; + +// 新增数据源适配器 +export const addDataAdapter = (data) => { + return request({ + url: "/custom/query/query/adapter", + method: "post", + data, + }); +}; + +//模拟执行适配器函数 +export const executeAdapterMockData = (data) => { + return request({ + url: "/custom/query/query/adapter/mock/execute", + method: "post", + data, + }); +}; + +// 修改数据源适配器 +export const editDataAdapter = (data) => { + return request({ + url: "/custom/query/query/adapter", + method: "put", + data, + }); +}; + +// 删除数据源适配器 +export const delDataAdapter = (dataAdapterId) => { + return request({ + url: "/custom/query/query/adapter/" + dataAdapterId, + method: "delete", + }); +}; + +// 获取查询mock数据 +export const getMockData = (data) => { + return request({ + url: "/custom/query/portal/mock/data", + method: "post", + data, + }); +}; + +// 获取查询条件 +export const getMapFields = (queryId) => { + return request({ + url: "/custom/query/tool/con/" + queryId, + method: "get", + }); +}; + +// 获取专用适配器详情 +export const getSpecialDetail = (portalId) => { + return request({ + url: "/custom/query/portal/detail/" + portalId, + method: "get", + }); +}; + +// 模拟执行代码 +export const executeCode = (data) => { + return request({ + url: "/custom/query/portal/mock/execute", + method: "post", + data, + }); +}; + +// 保存代码 +export const savaCode = (data) => { + return request({ + url: "/custom/query/portal/save/code", + method: "post", + data, + }); +}; diff --git a/src/api/custom-query/datamodel.js b/src/api/custom-query/datamodel.js new file mode 100644 index 0000000..45ad7c0 --- /dev/null +++ b/src/api/custom-query/datamodel.js @@ -0,0 +1,66 @@ +import request from '@/utils/request.js' + +// 请求数据源管理list +export const getDataSourceManageList = (params) => { + return request({ + url: '/custom/query/datasource', + method: 'get', + params + }) +} + +//获取到option列表 +export const getDataSourceManageOpt = () => { + return request({ + url: '/custom/query/datasource/option', + method: 'get', + }) +} + +// 获取数据源管理详情 +export const getDataSourceManageDetails = (queryDataSourceId) => { + return request({ + url: '/custom/query/datasource/' + queryDataSourceId, + method: 'get' + }) +} +// 获取数据源管理详情 +export const getDataSourceType = () => { + return request({ + url: '/custom/query/datasource/option/type', + method: 'get' + }) +} +// 获取校验规则option +export const getDataSourceOption = () => { + return request({ + url: '/custom/query/datasource/option', + method: 'get' + }) +} +// 新增数据源管理 +export const addDataSourceManage = (data) => { + return request({ + url: '/custom/query/datasource', + method: 'post', + data + }) +} + +// 修改数据源管理 +export const editDataSourceManage = (data) => { + return request({ + url: '/custom/query/datasource', + method: 'put', + data + }) +} + +// 删除数据源管理 +export const delDataSourceManage =(queryDataSourceId) => { + return request({ + url: '/custom/query/datasource/' + queryDataSourceId, + method: 'delete' + }) +} + diff --git a/src/api/custom-query/echarts.js b/src/api/custom-query/echarts.js new file mode 100644 index 0000000..5102760 --- /dev/null +++ b/src/api/custom-query/echarts.js @@ -0,0 +1,36 @@ +import request from '@/utils/request.js' + +export const getEchartsList = (params) => { + return request({ + url: '/custom/query/echarts', + method: 'get', + params + }) +} +export const getEchartsDetails = (echartsId) => { + return request({ + url: '/custom/query/echarts/' + echartsId, + method: 'get' + }) +} + +export const addEcharts = (data) => { + return request({ + url: '/custom/query/echarts', + method: 'post', + data + }) +} +export const editEcharts = (data) => { + return request({ + url: '/custom/query/echarts', + method: 'put', + data + }) +} +export const delEcharts=(echartsIdList) => { + return request({ + url: '/custom/query/echarts/' + echartsIdList, + method: 'delete' + }) +} diff --git a/src/api/custom-query/portal.js b/src/api/custom-query/portal.js new file mode 100644 index 0000000..ada78a6 --- /dev/null +++ b/src/api/custom-query/portal.js @@ -0,0 +1,68 @@ +import request from "@/utils/request.js"; + +export const getPortalList = (params) => { + return request({ + url: "/custom/query/portal", + method: "get", + params, + }); +}; + +// 自定义查询结果列表 +export const getQueryList = (type) => { + return request({ + url: "/custom/query/tool/option/" + type, + method: "get", + }); +}; + +// 适配器列表 +export const getAdapterList = (params) => { + return request({ + url: "/custom/query/query/adapter", + method: "get", + params, + }); +}; + +// 参数映射字段 +export const getMapFields = (queryId) => { + return request({ + url: "/custom/query/tool/con/" + queryId, + method: "get", + }); +}; + +// 新增接口 +export const addPortal = (data) => { + return request({ + url: "/custom/query/portal", + method: "post", + data, + }); +}; + +// 获取接口详情 +export const getPortalDetail = (portalId) => { + return request({ + url: "/custom/query/portal/" + portalId, + method: "get", + }); +}; + +// 修改接口 +export const updatePortal = (data) => { + return request({ + url: "/custom/query/portal", + method: "put", + data, + }); +}; + +// 删除接口 +export const deletePortal = (portalId) => { + return request({ + url: "/custom/query/portal/" + portalId, + method: "delete", + }); +}; diff --git a/src/api/custom-query/query-page.js b/src/api/custom-query/query-page.js new file mode 100644 index 0000000..f25073d --- /dev/null +++ b/src/api/custom-query/query-page.js @@ -0,0 +1,22 @@ +import request from '@/utils/request.js' + +// 获取查询页面信息 +export const getPageInfo = (queryId, params) => { + return request({ + url: '/custom/query/page/' + queryId, + method: 'get', + params: params + }) +} + +// 获取到页面数据 +export const getPageData = (params, data) => { + return request({ + url: '/custom/query/page/data', + method: 'post', + params: params, + data: data + }) +} + + diff --git a/src/api/custom-query/sql-search.js b/src/api/custom-query/sql-search.js new file mode 100644 index 0000000..1d14914 --- /dev/null +++ b/src/api/custom-query/sql-search.js @@ -0,0 +1,37 @@ +import request from '@/utils/request.js' + +export const getSqlInfo = (queryId) => { + return request({ + url: '/custom/query/sql/search/' + queryId, + method: 'get' + }) +} + +export const previewSql= (data,pageInfo) => { + return request({ + url:'/custom/query/sql/search/preview' , + method: 'put', + data, + params:pageInfo + }) +} +export const saveSqlQueryParams = (data) => { + return request({ + url: '/custom/query/sql/search', + method: 'post', + data + }) +} +export const sqlToLine = (data) => { + return request({ + url: '/custom/query/sql/search/publish', + method: 'post', + data + }) +} +export const sqlDownLine = (queryId) => { + return request({ + url: '/custom/query/sql/search/cancel/'+queryId, + method: 'put' + }) +} diff --git a/src/api/custom-query/sql.js b/src/api/custom-query/sql.js new file mode 100644 index 0000000..d66bda8 --- /dev/null +++ b/src/api/custom-query/sql.js @@ -0,0 +1,42 @@ +import request from '@/utils/request.js' + +// 获取Sql List +export const getSqlList = (params) => { + return request({ + url: '/custom/query/sql/uni', + method: 'get', + params + }) +} +// 获取Sql详情 +export const getSqlDetails = (sqlId) => { + return request({ + url: '/custom/query/sql/uni/' + sqlId, + method: 'get' + }) +} +// 新增Sql +export const addSql = (data) => { + return request({ + url: '/custom/query/sql/uni', + method: 'post', + data + }) +} + +// 修改Sql +export const editSql = (data) => { + return request({ + url: '/custom/query/sql/uni', + method: 'put', + data + }) +} + +// 删除Sql +export const delSql =(idList) => { + return request({ + url: '/custom/query/sql/uni/' + idList, + method: 'delete' + }) +} diff --git a/src/api/custom-query/table.js b/src/api/custom-query/table.js new file mode 100644 index 0000000..63335e1 --- /dev/null +++ b/src/api/custom-query/table.js @@ -0,0 +1,70 @@ +import request from '@/utils/request.js' + +//获取表格维护列表 +export const getTableInfo = (params) => { + return request({ + url: '/custom/query/table', + method: 'get', + params + }) +} +export const getDynamicTableList = (params) => { + return request({ + url: '/custom/query/dynamic/table', + method: 'get', + params + }) +} +//根据数据源获取到表格option信息 +export const getAssociationTableOption = (datasourceId) => { + return request({ + url: '/custom/query/table/option/' + datasourceId, + method: 'get' + }) +} +//获取表格字段option信息 +export const getAssociationFieldOption = (tableId) => { + return request({ + url: '/custom/query/table/column/option/' + tableId, + method: 'get' + }) +} +// 获取详细信息 +export const getTableDetails = (tableId) => { + return request({ + url: '/custom/query/table/' + tableId, + method: 'get' + }) +} +// 导入表信息 +export const addTableInfo= (data) => { + return request({ + url: '/custom/query/table/import', + method: 'post', + data + }) +} + +// 修改自定义查询表格维护 +export const editTable = (data) => { + return request({ + url: '/custom/query/table', + method: 'put', + data + }) +} +// 同步数据库 +export const syncDatabase = (tableId) => { + return request({ + url: '/custom/query/table/sync/'+ tableId, + method: 'put' + }) +} + +// 删除自定义查询表格维护 +export const delTable=(tableId) => { + return request({ + url: '/custom/query/table/' + tableId, + method: 'delete' + }) +} diff --git a/src/api/custom-query/topo-search.js b/src/api/custom-query/topo-search.js new file mode 100644 index 0000000..a4cb4df --- /dev/null +++ b/src/api/custom-query/topo-search.js @@ -0,0 +1,47 @@ +import request from '@/utils/request.js' + +// 获取topo拖拽数据信息 +export const getTopoDragInfo = (queryId) => { + return request({ + url: '/custom/query/topo/search/' + queryId, + method: 'get' + }) +} +export const saveTopo = (data) => { + return request({ + url: '/custom/query/topo/search', + method: 'post', + data + }) +} +export const previewTopo = (data,pageInfo) => { + return request({ + url: '/custom/query/topo/search/preview', + method: 'post', + data, + params:pageInfo, + }) +} +export const previewTopologyData = (data,pageInfo) => { + return request({ + url: '/custom/query/topo/search/preview/data', + method: 'post', + data, + params:pageInfo, + }) +} + +export const topoToLine = (data) => { + return request({ + url: '/custom/query/topo/search/publish', + method: 'post', + data + }) +} + +export const topoDownLine = (queryId) => { + return request({ + url: '/custom/query/topo/search/cancel/'+queryId, + method: 'put' + }) +} diff --git a/src/api/custom-query/topo.js b/src/api/custom-query/topo.js new file mode 100644 index 0000000..2de4b31 --- /dev/null +++ b/src/api/custom-query/topo.js @@ -0,0 +1,42 @@ +import request from '@/utils/request.js' + +// 获取topoList +export const getTopoList = (params) => { + return request({ + url: '/custom/query/topo/uni', + method: 'get', + params + }) +} +// 获取topo详情 +export const getTopoDetails = (topoId) => { + return request({ + url: '/custom/query/topo/uni/' + topoId, + method: 'get' + }) +} +// 新增topo +export const addTopo = (data) => { + return request({ + url: '/custom/query/topo/uni', + method: 'post', + data + }) +} + +// 修改topo +export const editTopo = (data) => { + return request({ + url: '/custom/query/topo/uni', + method: 'put', + data + }) +} + +// 删除topo +export const delTopo =(idList) => { + return request({ + url: '/custom/query/topo/uni/' + idList, + method: 'delete' + }) +} diff --git a/src/api/dept/dept.js b/src/api/dept/dept.js new file mode 100644 index 0000000..56e9ccd --- /dev/null +++ b/src/api/dept/dept.js @@ -0,0 +1,54 @@ +import request from '@/utils/request.js' + +//获取部门信息 +export const getDeptList = (params) => { + return request({ + url: '/admin/dept', + method: 'get', + params + }) +} +//获取增加时的部门列表 +export const getDeptOption = () => { + return request({ + url: '/admin/dept/option', + method: 'get' + }) +} +//获取修改时的部门列表 +export const getDeptExcludeOption = (deptId) => { + return request({ + url: `/admin/dept/option/exclude/${deptId}`, + method: 'get' + }) +} +//新增部门 +export const addDept = (data) => { + return request({ + url: '/admin/dept', + method: 'post', + data + }) +} +//编辑部门 +export const editDept = (data) => { + return request({ + url: '/admin/dept', + method: 'put', + data + }) +} +//查询部门详情 +export const getDeptDetail = (deptId) => { + return request({ + url: `/admin/dept/${deptId}`, + method: "get" + }); +}; +//删除部门 +export const deleteDept = (deptId) => { + return request({ + url: `/admin/dept/${deptId}`, + method: "delete" + }); +}; diff --git a/src/api/ipblacklist/index.js b/src/api/ipblacklist/index.js new file mode 100644 index 0000000..86d848a --- /dev/null +++ b/src/api/ipblacklist/index.js @@ -0,0 +1,44 @@ +import request from '@/utils/request.js' + +// 获取list +export const getIPBlackList = (params) => { + return request({ + url: '/admin/ip/back', + method: 'get', + params + }) +} + +// 新增 +export const addIPBlack = (data) => { + return request({ + url: '/admin/ip/back', + method: 'post', + data + }) +} + +// 修改 +export const editIPBlack = (data) => { + return request({ + url: '/admin/ip/back', + method: 'put', + data + }) +} + +// 删除 +export const delIPBlack = (ids) => { + return request({ + url: '/admin/ip/back/'+ids, + method: 'delete' + }) +} + +// 详情 +export const getIPBlackDetail = (id) => { + return request({ + url: '/admin/ip/back/'+id, + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/log/login.js b/src/api/log/login.js new file mode 100644 index 0000000..2411f44 --- /dev/null +++ b/src/api/log/login.js @@ -0,0 +1,24 @@ +import request from "@/utils/request.js"; + +//查询登录日志 +export const getLoginLogList = (params) => { + return request({ + url: "/log/login-info/list", + method: "get", + params + }); +}; +//查询登录日志详情 +export const getLoginLogDetail = (infoId) => { + return request({ + url: `/log/login-info/${infoId}`, + method: "get" + }); +}; +//删除登录日志 +export const deleteLoginLog = (infoIds) => { + return request({ + url: `/log/login-info/${infoIds}`, + method: "delete" + }); +}; diff --git a/src/api/log/operation.js b/src/api/log/operation.js new file mode 100644 index 0000000..33c7ec7 --- /dev/null +++ b/src/api/log/operation.js @@ -0,0 +1,24 @@ +import request from "@/utils/request.js"; + +//查询操作日志 +export const getOperateLog = (params) => { + return request({ + url: "/log/log/list", + method: "get", + params + }); +}; +//查询操作日志详情 +export const getOperateLogDetail = (operId) => { + return request({ + url: `/log/log/${operId}`, + method: "get" + }); +}; +//删除操作日志 +export const deleteOperateLog = (operIds) => { + return request({ + url: `/log/log/${operIds}`, + method: "delete" + }); +}; diff --git a/src/api/login.js b/src/api/login.js new file mode 100644 index 0000000..0de6506 --- /dev/null +++ b/src/api/login.js @@ -0,0 +1,23 @@ +import request from '@/utils/request.js' + +export const getCodeImg = () => { + return request({ + url: '/auth/captchaImage', + method: 'get' + }) +} + +export const login = (data) => { + return request({ + url: '/auth/login', + method: 'post', + data + }) +} + +export const getUserInfo = () => { + return request({ + url: '/auth/info', + method: 'get', + }) +} diff --git a/src/api/notice/notice.js b/src/api/notice/notice.js new file mode 100644 index 0000000..a0ee333 --- /dev/null +++ b/src/api/notice/notice.js @@ -0,0 +1,30 @@ +import request from '@/utils/request.js' +export const getNoticeList = (params) => { + return request({ + url: '/notice/notice', + method: 'get', + params + }) +} +export const getNoticeDetail = (noticeId) => { + return request({ + url: '/notice/notice/'+noticeId, + method: "get" + }); +}; + + +export const addNotice = (data) => { + return request({ + url: '/notice/notice', + method: 'post', + data + }) +} + +export const deleteNotice = (noticeId) => { + return request({ + url: `/notice/notice/${noticeId}`, + method: "delete" + }); +}; diff --git a/src/api/notice/notify.js b/src/api/notice/notify.js new file mode 100644 index 0000000..bee5657 --- /dev/null +++ b/src/api/notice/notify.js @@ -0,0 +1,43 @@ +import request from '@/utils/request.js' +export const getNotifyList = (params) => { + return request({ + url: '/notice/notify', + method: 'get', + params + }) +} +export const getNotifyDetail = (noticeId) => { + return request({ + url: '/notice/notify/'+noticeId, + method: "get" + }); +}; +//已读单个消息 +export const readSingleNotify = (noticeId) => { + return request({ + url: '/notice/notify/read/'+noticeId, + method: 'put' + }) +} +//已读全部消息 +export const readAllNotify = () => { + return request({ + url: '/notice/notify/read/all', + method: 'put' + }) +} +//删除单个消息 +export const deleteSingleNotify = (noticeId) => { + return request({ + url: '/notice/notify/'+noticeId, + method: "delete" + }); +}; +//删除多个消息 +export const deleteMoreNotify = (noticeIds) => { + return request({ + url: '/notice/notify/batch/'+noticeIds, + method: "delete" + }); +}; + diff --git a/src/api/online/online.js b/src/api/online/online.js new file mode 100644 index 0000000..7a58a95 --- /dev/null +++ b/src/api/online/online.js @@ -0,0 +1,17 @@ +import request from "@/utils/request.js"; +//查询在线用户 +export const getOnlineList = (params) => { + return request({ + url: "/admin/online/user", + method: "get", + params + }); +}; + +//强制退出用户 +export const deleteOnlineUser= (tokenId) => { + return request({ + url: '/admin/online/user/'+tokenId, + method: "delete" + }); +}; diff --git a/src/api/post/post.js b/src/api/post/post.js new file mode 100644 index 0000000..002e53f --- /dev/null +++ b/src/api/post/post.js @@ -0,0 +1,48 @@ +import request from '@/utils/request.js' + +//获取岗位信息 +export const getPostList = (params) => { + return request({ + url: '/admin/post', + method: 'get', + params + }) +} +//查询岗位详情 +export const getPostDetail = (postId) => { + return request({ + url: `/admin/post/info/${postId}`, + method: "get" + }); +}; + +//新增岗位 +export const addPost = (data) => { + return request({ + url: '/admin/post', + method: 'post', + data + }) +} +//编辑岗位 +export const editPost = (data) => { + return request({ + url: '/admin/post', + method: 'put', + data + }) +} +//获取select下拉框数据 +export const getSelectOption = () => { + return request({ + url: '/admin/post/option', + method: 'get' + }) +} +//删除角色信息 +export const deletePost = (postId) => { + return request({ + url: `/admin/post/${postId}`, + method: "delete" + }); +}; diff --git a/src/api/rapid/code-gen.js b/src/api/rapid/code-gen.js new file mode 100644 index 0000000..266a3c1 --- /dev/null +++ b/src/api/rapid/code-gen.js @@ -0,0 +1,68 @@ +import request from '@/utils/request.js' + +export const getTableList = (params) => { + return request({ + url: '/code-gen/table', + method: 'get', + params + }) +} + +export const getDynamicTable = (params) => { + return request({ + url: '/code-gen/dynamic-table', + method: 'get', + params + }) +} + +export const getTableDetail = (tableId) => { + return request({ + url: `/code-gen/table/${tableId}`, + method: 'get', + }) +} + +export const previewCode = (tableId) => { + return request({ + url: `/code-gen/table/preview/${tableId}`, + method: 'get', + }) +} + + +export const deleteMoreTable = (params) => { + return request({ + url: '/code-gen/table', + method: 'delete', + params + }) +} +export const deleteTable = (tableId) => { + return request({ + url: `/code-gen/table/${tableId}`, + method: 'delete', + }) +} +export const importTable = (data) => { + return request({ + url: "/code-gen/table/import-table", + method: 'post', + data + }) +} + +export const editCodeGen = (data) => { + return request({ + url: '/code-gen/table', + method: 'put', + data + }) +} +export const syncDatabase = (tableId) => { + return request({ + url: '/code-gen/table/sync/'+tableId, + method: 'put' + }) +} + diff --git a/src/api/rapid/data-source.js b/src/api/rapid/data-source.js new file mode 100644 index 0000000..3f9a462 --- /dev/null +++ b/src/api/rapid/data-source.js @@ -0,0 +1,54 @@ +import request from '@/utils/request.js' + + +export const getDataSourceList = (params) => { + return request({ + url: '/code-gen/data-source', + method: 'get', + params + }) +} + +export const getDataSourceOption = () => { + return request({ + url: '/code-gen/data-source/option', + method: 'get' + }) +} + +export const getDataSourceOptionType=()=>{ + return request({ + url:'/code-gen/data-source/option/type', + method:'get' + }) +} + +export const getDataSource = (dsId) => { + return request({ + url: `/code-gen/data-source/${dsId}`, + method: 'get' + }) +} + +export const addDataSource = (data) => { + return request({ + url: '/code-gen/data-source', + method: 'post', + data + }) +} +export const editDataSource = (data) => { + return request({ + url: '/code-gen/data-source', + method: 'put', + data + }) +} + +export const deleteDataSource = (dsId) => { + return request({ + url: `/code-gen/data-source/${dsId}`, + method: 'delete' + }) +} + diff --git a/src/api/rapid/regular.js b/src/api/rapid/regular.js new file mode 100644 index 0000000..a94d4f1 --- /dev/null +++ b/src/api/rapid/regular.js @@ -0,0 +1,52 @@ +import request from '@/utils/request.js' + +// 请求校验规则表list +export const getRegularList = (params) => { + return request({ + url: '/code-gen/rapid/regular', + method: 'get', + params + }) +} + +// 获取校验规则表详情 +export const getRegularDetails = (regularId) => { + return request({ + url: '/code-gen/rapid/regular/' + regularId, + method: 'get' + }) +} + +// 获取校验规则选项列表 +export const getRegularOpt = (regularId) => { + return request({ + url: '/code-gen/rapid/regular/option', + method: 'get' + }) +} + +// 新增校验规则表 +export const addRegular = (data) => { + return request({ + url: '/code-gen/rapid/regular', + method: 'post', + data + }) +} + +// 修改校验规则表 +export const editRegular = (data) => { + return request({ + url: '/code-gen/rapid/regular', + method: 'put', + data + }) +} + +// 删除校验规则表 +export const delRegular =(regularId) => { + return request({ + url: '/code-gen/rapid/regular/' + regularId, + method: 'delete' + }) +} \ No newline at end of file diff --git a/src/api/role/role.js b/src/api/role/role.js new file mode 100644 index 0000000..73f3376 --- /dev/null +++ b/src/api/role/role.js @@ -0,0 +1,95 @@ +import request from '@/utils/request.js' + +export const getRoleList = (params) => { + return request({ + url: '/admin/role', + method: 'get', + params + }) +} +//查询角色option +export const getRoleOption = () => { + return request({ + url: '/admin/role/option', + method: "get" + }); +}; +//查询角色信息 +export const getRoleDetail = (roleId) => { + return request({ + url: `/admin/role/${roleId}`, + method: "get" + }); +}; +//根据菜单id获取分配的角色信息 +export const getRoleInfoByMenuId = (params) => { + return request({ + url: '/admin/role/menu', + method: 'get', + params + }) +} +//获取排除在外的角色 +export const getRoleExcludeMenuId = (params) => { + return request({ + url: '/admin/role/menu/list', + method: "get", + params + }); +}; +// 新增角色 +export const addRole = (data) => { + return request({ + url: '/admin/role', + method: 'post', + data + }) +} + +// 修改角色 +export const editRole = (data) => { + return request({ + url: '/admin/role', + method: 'put', + data + }) +} +//解除当前角色对应的所有菜单的绑定关系 +export const unbindAllRole = (menuId) => { + return request({ + url: '/admin/role/all/unbind/menu', + method: 'put', + data: { + id: menuId + } + }) +} +// 解除角色与菜单之间的绑定状态 +export const cancelAuthorization = (menuId, roleIds) => { + return request({ + url: '/admin/role/unbind/menu', + method: 'put', + data: { + id: menuId, + ids: roleIds + } + }) +} +//建立角色用户绑定关系 +export const bindRoleAndMenu = (menuId, roleIds) => { + return request({ + url: '/admin/role/bind/menu', + method: 'put', + data: { + id: menuId, + ids: roleIds + } + }) +} +//删除角色信息 +export const deleteRole = (roleId) => { + return request({ + url: `/admin/role/${roleId}`, + method: "delete" + }); +}; diff --git a/src/api/system/config.js b/src/api/system/config.js new file mode 100644 index 0000000..196a3ab --- /dev/null +++ b/src/api/system/config.js @@ -0,0 +1,47 @@ +import request from '@/utils/request.js' + +// 请求参数配置表list +export const getConfigList = (params) => { + return request({ + url: '/admin/config', + method: 'get', + params + }) +} + +//获取到option列表 + +// 获取参数配置表详情 +export const getConfigDetails = (configId) => { + return request({ + url: '/admin/config/' + configId, + method: 'get' + }) +} + +// 新增参数配置表 +export const addConfig = (data) => { + return request({ + url: '/admin/config', + method: 'post', + data + }) +} + +// 修改参数配置表 +export const editConfig = (data) => { + return request({ + url: '/admin/config', + method: 'put', + data + }) +} + +// 删除参数配置表 +export const delConfig =(configId) => { + return request({ + url: '/admin/config/' + configId, + method: 'delete' + }) +} + diff --git a/src/api/system/dict-data.js b/src/api/system/dict-data.js new file mode 100644 index 0000000..997e38e --- /dev/null +++ b/src/api/system/dict-data.js @@ -0,0 +1,44 @@ +import request from '@/utils/request.js' + +// 请求字典类型表list +export const getDictDataList = (params) => { + return request({ + url: '/admin/dict/data', + method: 'get', + params + }) +} + +// 获取字典数据表详情 +export const getDictDataDetails = (dictCode) => { + return request({ + url: '/admin/dict/data/' + dictCode, + method: 'get' + }) +} + +// 新增字典数据表 +export const addDictData = (data) => { + return request({ + url: '/admin/dict/data', + method: 'post', + data + }) +} + +// 修改字典类型表 +export const editDictData = (data) => { + return request({ + url: '/admin/dict/data', + method: 'put', + data + }) +} + +// 删除字典类型表 +export const delDictData = (dictCode) => { + return request({ + url: `/admin/dict/data/${dictCode}`, + method: 'delete' + }) +} diff --git a/src/api/system/dict-type.js b/src/api/system/dict-type.js new file mode 100644 index 0000000..63b4907 --- /dev/null +++ b/src/api/system/dict-type.js @@ -0,0 +1,51 @@ +import request from '@/utils/request.js' + +export const getDictOption = () => { + return request({ + url: '/admin/dict/type/option', + method: 'get' + }) +} + +// 请求字典类型表list +export const getDictTypeList = (params) => { + return request({ + url: '/admin/dict/type', + method: 'get', + params + }) +} + +// 获取字典类型表详情 +export const getDictTypeDetails = (dictTypeId) => { + return request({ + url: '/admin/dict/type/' + dictTypeId, + method: 'get' + }) +} + +// 新增字典类型表 +export const addDictType = (data) => { + return request({ + url: '/admin/dict/type', + method: 'post', + data + }) +} + +// 修改字典类型表 +export const editDictType = (data) => { + return request({ + url: '/admin/dict/type', + method: 'put', + data + }) +} + +// 删除字典类型表 +export const delDictType =(dictTypeId) => { + return request({ + url: '/admin/dict/type/' + dictTypeId, + method: 'delete' + }) +} diff --git a/src/api/system/mapping-switch.js b/src/api/system/mapping-switch.js new file mode 100644 index 0000000..a1c858d --- /dev/null +++ b/src/api/system/mapping-switch.js @@ -0,0 +1,16 @@ +import request from '@/utils/request.js' + +export const getMappingList = (params) => { + return request({ + url: '/admin/mapping/switch', + method: 'get', + params + }) +} +export const editMappingSwitch = (data) => { + return request({ + url: '/admin/mapping/switch', + method: 'put', + data + }) +} diff --git a/src/api/system/menu.js b/src/api/system/menu.js new file mode 100644 index 0000000..ba99504 --- /dev/null +++ b/src/api/system/menu.js @@ -0,0 +1,8 @@ +import request from '@/utils/request' + +export const getRouters = () => { + return request({ + url: '/auth/router', + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/system/menuman.js b/src/api/system/menuman.js new file mode 100644 index 0000000..6e916a0 --- /dev/null +++ b/src/api/system/menuman.js @@ -0,0 +1,53 @@ +import request from '@/utils/request.js' + +export const getMenuList = (params) => { + return request({ + url: '/admin/menu', + method: 'get', + params + }) +} + +export const editMenu = (data) => { + return request({ + url: '/admin/menu', + method: 'put', + data + }) +} + +export const addMenu = (data) => { + return request({ + url: '/admin/menu', + method: 'post', + data + }) +} + +export const delMenu = (menuId) => { + return request({ + url: '/admin/menu/'+menuId, + method: 'delete' + }) +} + +export const getMenuInfo = (menuId) => { + return request({ + url: '/admin/menu/info/'+menuId, + method: 'get' + }) +} + +export const getMenuOpt = (excludeId=0) => { + return request({ + url: '/admin/menu/option/'+excludeId, + method: 'get' + }) +} + +export const getMenuOptRole = (roleId) => { + return request({ + url: '/admin/menu/option/role/'+roleId, + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/user/user.js b/src/api/user/user.js new file mode 100644 index 0000000..519c7b0 --- /dev/null +++ b/src/api/user/user.js @@ -0,0 +1,132 @@ +import request from '@/utils/request.js' + +export const getUserList = (params) => { + return request({ + url: '/admin/user', + method: 'get', + params + }) +} + +//获取用户详情 +export const getUserDetail = (userId) => { + return request({ + url: `/admin/user/info/${userId}`, + method: "get" + }); +}; +// 新增用户 +export const addUser = (data) => { + return request({ + url: '/admin/user', + method: 'post', + data + }) +} +// 修改用户 +export const editUser = (data) => { + return request({ + url: '/admin/user', + method: 'put', + data + }) +} + +//删除用户信息 +export const deleteUser = (userId) => { + return request({ + url: `/admin/user/${userId}`, + method: "delete" + }); +}; +//根据roleId获取用户信息 +export const getUserByRoleId = (roleId, params) => { + return request({ + url: `/admin/user/role/${roleId}`, + method: "get", + params + }); +}; +//排除角色id获取用户信息 +export const getUserExcludeRoleId = (roleId, params) => { + return request({ + url: `/admin/user/role/exclude/${roleId}`, + method: "get", + params + }); +}; +//建立角色用户绑定关系 +export const roleBindUser = (data) => { + return request({ + url: '/admin/user/bind/role', + method: 'put', + data + }) +} +// 解除角色与用户之间的绑定状态 +export const cancelAuthorization = (data) => { + return request({ + url: '/admin/user/unbind/role', + method: 'put', + data + }) +} +//解除当前角色对应的所有用户的绑定关系 +export const unbindAllUser = (roleId) => { + return request({ + url: '/admin/user/all/unbind/role', + method: 'put', + data: { + id: roleId + } + }) +} + +//根据岗位id获取分配的用户信息 +export const getUserInfoByPostId = (postId, params) => { + return request({ + url: `/admin/user/post/${postId}`, + method: 'get', + params + }) +} +//排除岗位id获取用户信息 +export const getUserExcludePostId = (postId, params) => { + return request({ + url: `/admin/user/post/exclude/${postId}`, + method: "get", + params + }); +}; +//建立岗位与用户绑定关系 +export const postBindUser = (userIds, postId) => { + return request({ + url: '/admin/user/bind/post', + method: 'put', + data: { + ids: userIds, + id: postId + } + }) +} +// 解除岗位与用户之间的绑定状态 +export const cancelPostAndUserAuthorization = (userIds, postId) => { + return request({ + url: '/admin/user/unbind/post', + method: 'put', + data: { + ids: userIds, + id: postId + } + }) +} +//解除当前岗位对应的所有用户的绑定关系 +export const unbindAllUserByPost = (postId) => { + return request({ + url: '/admin/user/all/unbind/post', + method: 'put', + data: { + id: postId + } + }) +} diff --git a/src/api/workflow/process-definition.js b/src/api/workflow/process-definition.js new file mode 100644 index 0000000..98ca1bb --- /dev/null +++ b/src/api/workflow/process-definition.js @@ -0,0 +1,62 @@ +import request from '@/utils/request.js' + +export function getProcessDefinitionList(param) { + return request({ + url: "/workflow/process/definition", + method: "get", + params: param + }) +} + +export function getProcessDefinitionInfo(deploymentId) { + return request({ + url: "/workflow/process/definition/" + deploymentId, + method: "get", + }) +} + +export function getInitiateInfo(processDefinitionKey) { + return request({ + url: "/workflow/process/definition/key/" + processDefinitionKey, + method: "get", + }) +} + + +export function getHistoryVersion(processDefinitionKey) { + return request({ + url: "/workflow/process/definition/history/" + processDefinitionKey, + method: "get", + }) +} + +export function deleteHistoryVersion(deploymentId) { + return request({ + url: "/workflow/process/definition/" + deploymentId, + method: "delete", + }) +} + +export function suspendProcessDefinition(processDefinitionId) { + return request({ + url: "/workflow/process/definition/suspend", + method: "put", + data: processDefinitionId + }) +} + +export function activateProcessDefinition(processDefinitionId) { + return request({ + url: "/workflow/process/definition/activate", + method: "put", + data: processDefinitionId + }) +} + +export function addProcessDefinition(param) { + return request({ + url: "/workflow/process/definition", + method: "post", + data: param + }) +} diff --git a/src/api/workflow/process-file.js b/src/api/workflow/process-file.js new file mode 100644 index 0000000..55df86d --- /dev/null +++ b/src/api/workflow/process-file.js @@ -0,0 +1,9 @@ +import request from '@/utils/request.js' + +export function deleteFile(fileId) { + // 删除文件 + return request({ + url: '/workflow/process/file/' + fileId, + method: 'delete', + }) +} diff --git a/src/api/workflow/process-instance.js b/src/api/workflow/process-instance.js new file mode 100644 index 0000000..6b9ea8f --- /dev/null +++ b/src/api/workflow/process-instance.js @@ -0,0 +1,53 @@ +import request from '@/utils/request.js' + + +/** + * 开始实例流程 + * @param param + * @returns {*} + */ +export function startProcessInstance(param) { + return request({ + url: "/workflow/process/instance/start", + method: "post", + data: param + }) +} +export function restartProcessInstance(param) { + return request({ + url: "/workflow/process/instance/restart", + method: "post", + data: param + }) +} + +export function getAboutInstanceList(param) { + return request({ + url: "/workflow/process/instance/about", + method: "get", + params: param + }) +} + +export function getInitiatedInstanceList(param) { + return request({ + url: "/workflow/process/instance/self", + method: "get", + params: param + }) +} + +export function getInitiatedInstanceInfo(processInstanceId) { + return request({ + url: "/workflow/process/instance/info/"+processInstanceId, + method: "get", + }) +} + + +export function getInitiatedInstanceReInfo(instanceId) { + return request({ + url: "/workflow/process/instance/re/info/"+instanceId, + method: "get", + }) +} diff --git a/src/api/workflow/process-listen.js b/src/api/workflow/process-listen.js new file mode 100644 index 0000000..35bfc50 --- /dev/null +++ b/src/api/workflow/process-listen.js @@ -0,0 +1,46 @@ +import request from '@/utils/request.js' + +// 请求系统内置监听器list +export const getProcessListenerList = (params) => { + return request({ + url: '/workflow/process/listener', + method: 'get', + params + }) +} + +//获取到option列表 + +// 获取系统内置监听器详情 +export const getProcessListenerDetails = (processListenerId) => { + return request({ + url: '/workflow/process/listener/' + processListenerId, + method: 'get' + }) +} + +// 新增系统内置监听器 +export const addProcessListener = (data) => { + return request({ + url: '/workflow/process/listener', + method: 'post', + data + }) +} + +// 修改系统内置监听器 +export const editProcessListener = (data) => { + return request({ + url: '/workflow/process/listener', + method: 'put', + data + }) +} + +// 删除系统内置监听器 +export const delProcessListener =(processListenerId) => { + return request({ + url: '/workflow/process/listener/' + processListenerId, + method: 'delete' + }) +} diff --git a/src/api/workflow/process-task.js b/src/api/workflow/process-task.js new file mode 100644 index 0000000..fafcf44 --- /dev/null +++ b/src/api/workflow/process-task.js @@ -0,0 +1,45 @@ +import request from '@/utils/request.js' + +export function getTaskList() { + return request({ + url: "/workflow/process/task", + method: "get", + }) +} + +export function getTaskInfo(taskId) { + return request({ + url: "/workflow/process/task/"+taskId, + method: "get", + }) +} +export function completeTask(params) { + return request({ + url: "/workflow/process/task/complete", + method: "put", + data: params + }) +} +export function refuseTask(params) { + return request({ + url: "/workflow/process/task/refuse", + method: "put", + data: params + }) +} + +export function rollBackTask(params) { + return request({ + url: "/workflow/process/task/rollback", + method: "put", + data: params + }) +} + +export function addComment(params) { + return request({ + url: "/workflow/process/task/comment", + method: "post", + data: params + }) +} diff --git a/src/api/workflow/process-user.js b/src/api/workflow/process-user.js new file mode 100644 index 0000000..abbb07d --- /dev/null +++ b/src/api/workflow/process-user.js @@ -0,0 +1,24 @@ +import request from '@/utils/request.js' + +//根据角色或者部门获取到对应的数据 +export function getUserTree(type,chooseId){ + return request({ + url:`/admin/user/choose/${type}/${chooseId}`, + method:'get' + }) +} + +// 查询系统角色 +export function getRole() { + return request({ + url: 'admin/role/option', + method: 'get' + }) +} +//获取采取树形控件的部门option +export function getDepartmentTree() { + return request({ + url: 'admin/dept/option', + method: 'get' + }) +} diff --git a/src/assets/default_avatar.png b/src/assets/default_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..11161cf3462821fe54dc83ba26cd2f2375d2b26b GIT binary patch literal 85902 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

*Gp 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%0DD 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 literal 0 HcmV?d00001 diff --git a/src/assets/home/coffee.png b/src/assets/home/coffee.png new file mode 100644 index 0000000000000000000000000000000000000000..91fe68f5bd4c82c5a580f676959bde3fd0f94b87 GIT binary patch literal 7827 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

1?+_VG-l7xcZQ}AH}%K^suH{JlE%i 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 literal 0 HcmV?d00001 diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..7565660 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/src/assets/styles/echartsEditor.scss b/src/assets/styles/echartsEditor.scss new file mode 100644 index 0000000..f5c3696 --- /dev/null +++ b/src/assets/styles/echartsEditor.scss @@ -0,0 +1,144 @@ +* { + margin: 0; + padding: 0; + list-style: none; + box-sizing: border-box; +} + + +/* ==============X轴/Y轴区域样式=============*/ +.box-card-h { + height: 390px !important; +} +.box-card::-webkit-scrollbar { + width: 6px; +} + +// 滚动条轨道 +.box-card::-webkit-scrollbar-track { + background: rgb(239, 239, 239); + border-radius: 2px; +} + +// 小滑块 +.box-card::-webkit-scrollbar-thumb { + background: rgba(80, 81, 82, 0.29); + border-radius: 10px; +} +.box-card { + font-size: 15px; + height: 350px; + overflow-y: auto; + + .el-card__body { + padding: 15px; + } + + .x-y-axis { + margin-bottom: 10px; + } + + .list-group { + height: 100%; + } + + .cards { + margin-bottom: 10px; + + span:last-child { + color: #2a99ff; + } + + .update-color { + display: flex; + align-items: center; + justify-content: space-around; + > span{ + white-space: pre + } + + } + } + + .card-active { + outline: none; /* 隐藏默认的蓝色外边框 */ + box-shadow: 0 0 5px blue; /* 添加阴影效果,颜色为蓝色 */ + } + + .x-y-cards { + .el-card__body { + display: flex; + justify-content: space-around; + align-items: center; + height: 50px; + } + + .cards-right { + display: flex; + align-items: center; + justify-content: flex-end; + + > span:first-child { + color: #2a99ff; + } + } + } +} +//扩大拖拽区域 +.drag-block { + height: 329px; +} +.red-bgc { + background-color: red; +} + +.yellow-bgc { + background-color: yellow; +} + +/* ==============基础设置样式=============*/ +.basic-setup { + font-weight: bold; + font-size: 18px; + margin-bottom: 10px; +} +.setting { + display: flex; + flex-direction: column; + margin-bottom: 10px; + + .setting-title { + font-weight: bold; + font-size: 16px; + margin-bottom: 5px; + } + + .setting-item { + margin-bottom: 10px; + } +} +/* ==============高级设置样式=============*/ +.advanced-setting{ + .el-form-item { + display: block; + + .el-form-item__label { + font-weight: bold; + font-size: 18px; + } + + .el-form-item__content { + display: flex; + flex-direction: column; + align-items: flex-start; + font-size: 15px; + } + } +} +/* ==============echarts样式=============*/ +#container { + box-sizing: border-box; + height: 450px; + width: 80%; + margin: 0 auto; +} diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss new file mode 100644 index 0000000..12a71a0 --- /dev/null +++ b/src/assets/styles/index.scss @@ -0,0 +1,524 @@ +* { + margin: 0; + padding: 0; + list-style: none; + box-sizing: border-box; +} + +a { + text-decoration: none; + color: #333; +} + +html, body, #app, .el-container, .el-aside, .el-main { + height: 100%; +} + +.el-breadcrumb__item { + line-height: 65px; +} + +.el-main { + background: #F4F6F8; + padding: 0 0 0 18px; + //padding: 0; + position: fixed; + left: 200px; + transition: left ease 0.15s; + margin-left: 0; + transition: margin-left .15s; + // -webkit-transition: width .15s; + // transition: width 0.15s; + width: calc(100vw - 200px); + &::-webkit-scrollbar { + width: 6px; + } + + // 滚动条轨道 + &::-webkit-scrollbar-track { + background: rgb(239, 239, 239); + border-radius: 2px; + } + + // 小滑块 + &::-webkit-scrollbar-thumb { + background: rgba(80, 81, 82, 0.29); + border-radius: 10px; + } +} + +.main-collapse { + left: 64px; + width: calc(100vw - 64px); +} + +.el-aside { + //box-shadow: 4px 0 2px 1px rgb(171, 167, 167); + overflow: hidden; + width: 200px; + -webkit-transition: width .15s; + transition: width 0.15s; + position: fixed; + top: 0; + bottom: 0; + left: 0; + z-index: 1001; +} + +.el-dialog { + border-radius: 12px !important; + border: none; + + .el-dialog__header { + border-top-left-radius: 12px; + border-top-right-radius: 12px; + // background-color: #262626; + margin: 0; + // .el-dialog__title{ + // color: white; + // } + } +} + +.table-header-btn { + display: flex; + justify-content: flex-start; + align-items: center; + margin-bottom: 10px; +} +.el-dialog__body{ + padding: 10px 20px; +} +.stateIcon { + margin-top: 9px; + margin-right: 7px; + display: block; + width: 8px; + height: 8px; + border-radius: 4px; + opacity: 1; +} + +.query-form { + //margin-left: 14px; + margin-top: 15px; + + .el-tag__content { + font-size: 14px; + } + + .el-form-item { + //display: flex; + //align-items: center; + margin-right: 18px; + } + + .el-form-item__label { + font-weight: 700; + } + + .el-button { + font-size: 13px; + } + + .el-input { + width: 280px; + opacity: 1; + } +} + + +.query-btn { + margin-bottom: 10px; + + .el-button { + font-size: 13px; + } +} + + +.table { + //margin-top: 15px; + //margin-bottom: 20px; + .el-tag { + .el-tag__content { + font-size: 13px; + } + } + + .el-table { + border: none; + } + + thead .el-table-column--selection .cell { + display: none; + } + + .el-table__header-wrapper { + border-bottom: 1px solid #D1D4D6; + + .el-table__header { + .cell { + font-size: 16px; + font-family: DengXian-Bold, DengXian; + color: #333333; + } + } + } + + +} + +.dialog-form { + .el-form-item { + flex-direction: column; + margin-bottom: 10px; + + .el-form-item__content { + .el-select { + flex-grow: 1; + } + } + + .el-form-item__label { + justify-content: flex-start; + } + } +} + +.custom-dialog { + :deep .el-dialog__header { + padding: 10px 20px; + + .el-dialog__title { + font-size: 17px; + } + + .el-dialog__headerbtn { + top: 15px; + + .i { + font-size: large; + } + } + } + + :deep .el-dialog__footer { + padding: 10px 20px; + } +} + +//============node节点样式============ +.node-error-state { + .node-body { + box-shadow: 0px 0px 5px 0px #F56C6C !important; + } +} + +.node-error { + position: absolute; + right: -40px; + top: 20px; + font-size: 25px; + color: #F56C6C; +} + +.node-footer { + position: relative; + + .branch-merge { + font-size: 12px; + display: flex; + width: 38px; + border-radius: 50%; + left: 0; + right: 0; + margin: -20px auto 0; + background: #fff; + justify-content: center; + flex-direction: column; + box-shadow: 0 0 5px 0 #d8d8d8; + z-index: 0; + position: relative; + } + + .btn { + width: 100%; + display: flex; + padding: 20px 0 32px; + justify-content: center; + z-index: 0; + position: relative; + .el-icon{ + width: 1.4em; + height: 1.4em; + } + } + + .el-button { + //height: 32px; + } + + &::before { + content: ""; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + //z-index: -1; + margin: auto; + width: 2px; + height: 100%; + background-color: #CACACA; + } +} + +//el-dialog的样式类名 +.border { + .el-dialog__header { + border-bottom: 1px solid #e8e8e8; + } + + .el-dialog__footer { + border-top: 1px solid #e8e8e8; + } +} + +.layout { + display: flex; + justify-content: space-around; + .scrollbar-user { + height: calc(100vh - 250px)!important; + overflow: auto!important; + } + + .scrollbar-dict { + border: 1px solid #ebeef5; + //min-height: 30vh; + //height: 60vh; + height: calc(100vh - 300px); + overflow-y: auto; + overflow-x: hidden; + + &::-webkit-scrollbar { + width: 6px; + height: 6px; + } + + // 滚动条轨道 + &::-webkit-scrollbar-track { + background: rgb(239, 239, 239); + border-radius: 2px; + } + + // 小滑块 + &::-webkit-scrollbar-thumb { + background: rgba(80, 81, 82, 0.29); + border-radius: 10px; + } + + .el-tree--highlight-current + .el-tree-node.is-current + > .el-tree-node__content { + // 设置颜色 + background-color: rgba(135, 206, 235, 0.2); // 透明度为0.2的skyblue,作者比较喜欢的颜色 + color: #409eff; // 节点的字体颜色 + font-weight: bold; // 字体加粗 + } + } + + .layout-left { + width: 30%; + //border: 1px solid #ebeef5; + padding: 10px; + margin-top: 5px; + + .dict-tree { + width: 100%; + display: flex; + justify-content: space-between; + //:deep .el-button{ + // //border: 1px solid; + // background-color: #fff; + //} + .left-type { + margin-right: 20px; + font-size: 12px; + color: #999; + } + } + } + + .layout-right { + //width: 70%; + //border: 1px solid #ebeef5; + margin-left: 10px; + padding: 0 10px; + width: 80%; + border: none; + } +} + +.top-dialog { + .el-overlay-dialog { + left: 0 !important; + } +} + +.el-overlay-dialog { + left: 200px; +} + +//放大缩小按钮上外边距 +.scale { + margin-top: 10px; + z-index: 666; + position: absolute; +} + +.el-overlay-dialog { + left: 200px !important; +} + +.el-overlay-dialog::-webkit-scrollbar, .scrollbar-dict::-webkit-scrollbar { + width: 6px; +} + +// 滚动条轨道 +.el-overlay-dialog::-webkit-scrollbar-track, .scrollbar-dict::-webkit-scrollbar-track { + background: rgb(239, 239, 239); + border-radius: 2px; +} + +// 小滑块 +.el-overlay-dialog::-webkit-scrollbar-thumb, .scrollbar-dict::-webkit-scrollbar-thumb { + background: rgba(80, 81, 82, 0.29); + border-radius: 10px; +} + +.nowrap { + white-space: pre +} + +//SvgIcon组件的样式 +.svg-icon { + width: 1.2em; + height: 1.2em; + vertical-align: -0.15em; + fill: currentColor; + overflow: hidden; + margin-right: 5px; +} + +.er-icon { + cursor: pointer; + width: 1.2em; + height: 1.2em; + vertical-align: -0.15em; + fill: currentColor; + overflow: hidden; + margin-right: 5px; + + &:hover { + border: 1px solid darkgray; + } +} + +.disabled-icon { + width: 1.2em; + height: 1.2em; + vertical-align: -0.15em; + fill: currentColor; + overflow: hidden; + margin-right: 5px; +} + +.disabled-icon:hover { + cursor: not-allowed; +} + +.black-icon { + width: 1.2em; + height: 1.2em; + vertical-align: -0.15em; + fill: #383737; + overflow: hidden; + margin-right: 5px; +} + +.middle-icon { + width: 1.4em; + height: 1.4em; + margin-right: 5px; +} + +.close-icon { + width: 1.1em; + height: 1.1em; + margin-left: 5px; + vertical-align: -0.21em; +} + +.tag:hover { + color: #418DFF; + + .close-icon { + fill: #418DFF; + } +} + +.active { + .close-icon { + fill: #418DFF; + } +} + +.svg-icon:hover { + cursor: pointer; + //border: 1px solid #E9E9E9; +} + +//IconSelect组件的样式 +.icon-select { + width: 100%; + + .icon-name { + width: 110px; + overflow: hidden; //超出的文本隐藏 + text-overflow: ellipsis; //溢出用省略号显示 + white-space: nowrap; //溢出不换行 + } + + .el-popper { + .el-select-dropdown { + max-width: 592px !important; + + .el-select-dropdown__list { + display: flex !important; + flex-wrap: wrap; + + .el-select-dropdown__item { + display: flex; + align-items: center; + justify-content: flex-start; + width: 148px; + padding: 0 0 0 5px; + } + } + } + } +} + +.query-form { + .el-form-item__content { + .el-select__wrapper { + width: 200px; + } + } + +} + +.el-pagination { + margin-top: 10px; +} diff --git a/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss new file mode 100644 index 0000000..478bec1 --- /dev/null +++ b/src/assets/styles/sidebar.scss @@ -0,0 +1,43 @@ +.logo { + height: 106px; + background-color: #418DFF; + color: #ffffff; + font-weight: bold; + font-size: 26px; + display: flex; + justify-content: center; + align-items: center; +} +.port-link{ + display: block; + width: 200px; + height: 50px; + margin-left: -40px; + padding-left: 40px; +} +.el-menu { + border: none !important; + .el-sub-menu { + .el-sub-menu__title { + display: block; + font-size: 14px; + &:hover{ + //background-color: #1F315F; + } + } + + .el-menu-item { + font-size: 14px; + justify-content: flex-start; + align-items: center; + &:hover { + //background-color: #373350 !important; + //color: #EDC49A; + } + } + .el-menu-item.is-active { + background: #E9F4FF; + //background-color: #373350 !important; + } + } +} diff --git a/src/assets/svg/actual_size.svg b/src/assets/svg/actual_size.svg new file mode 100644 index 0000000..e94b45e --- /dev/null +++ b/src/assets/svg/actual_size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/bar_chart.svg b/src/assets/svg/bar_chart.svg new file mode 100644 index 0000000..f57d149 --- /dev/null +++ b/src/assets/svg/bar_chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/biaodan.svg b/src/assets/svg/biaodan.svg new file mode 100644 index 0000000..c172b4c --- /dev/null +++ b/src/assets/svg/biaodan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/bumenguanli.svg b/src/assets/svg/bumenguanli.svg new file mode 100644 index 0000000..ff2b8db --- /dev/null +++ b/src/assets/svg/bumenguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/canshu.svg b/src/assets/svg/canshu.svg new file mode 100644 index 0000000..8611563 --- /dev/null +++ b/src/assets/svg/canshu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/caozuorizhi.svg b/src/assets/svg/caozuorizhi.svg new file mode 100644 index 0000000..ffddd9f --- /dev/null +++ b/src/assets/svg/caozuorizhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/chart.svg b/src/assets/svg/chart.svg new file mode 100644 index 0000000..d6dc451 --- /dev/null +++ b/src/assets/svg/chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/chaxun.svg b/src/assets/svg/chaxun.svg new file mode 100644 index 0000000..c6a4218 --- /dev/null +++ b/src/assets/svg/chaxun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/clear.svg b/src/assets/svg/clear.svg new file mode 100644 index 0000000..58d2ba1 --- /dev/null +++ b/src/assets/svg/clear.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/close.svg b/src/assets/svg/close.svg new file mode 100644 index 0000000..5933fdb --- /dev/null +++ b/src/assets/svg/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/copy.svg b/src/assets/svg/copy.svg new file mode 100644 index 0000000..f70976f --- /dev/null +++ b/src/assets/svg/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/daimashengcheng.svg b/src/assets/svg/daimashengcheng.svg new file mode 100644 index 0000000..5732d0b --- /dev/null +++ b/src/assets/svg/daimashengcheng.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/data.svg b/src/assets/svg/data.svg new file mode 100644 index 0000000..68ade62 --- /dev/null +++ b/src/assets/svg/data.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/data_board.svg b/src/assets/svg/data_board.svg new file mode 100644 index 0000000..e429712 --- /dev/null +++ b/src/assets/svg/data_board.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/data_mining.svg b/src/assets/svg/data_mining.svg new file mode 100644 index 0000000..2f18ebf --- /dev/null +++ b/src/assets/svg/data_mining.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/datayuan.svg b/src/assets/svg/datayuan.svg new file mode 100644 index 0000000..168c634 --- /dev/null +++ b/src/assets/svg/datayuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/device_develop.svg b/src/assets/svg/device_develop.svg new file mode 100644 index 0000000..b8b41ef --- /dev/null +++ b/src/assets/svg/device_develop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/dingshirenwu.svg b/src/assets/svg/dingshirenwu.svg new file mode 100644 index 0000000..f61dc55 --- /dev/null +++ b/src/assets/svg/dingshirenwu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/fabu.svg b/src/assets/svg/fabu.svg new file mode 100644 index 0000000..eed0254 --- /dev/null +++ b/src/assets/svg/fabu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/fit.svg b/src/assets/svg/fit.svg new file mode 100644 index 0000000..2ebc313 --- /dev/null +++ b/src/assets/svg/fit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/group_manage.svg b/src/assets/svg/group_manage.svg new file mode 100644 index 0000000..901e220 --- /dev/null +++ b/src/assets/svg/group_manage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/guanlidenglurizhi.svg b/src/assets/svg/guanlidenglurizhi.svg new file mode 100644 index 0000000..8cf6f68 --- /dev/null +++ b/src/assets/svg/guanlidenglurizhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/initiate.svg b/src/assets/svg/initiate.svg new file mode 100644 index 0000000..acc0953 --- /dev/null +++ b/src/assets/svg/initiate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/jiaoyanguize.svg b/src/assets/svg/jiaoyanguize.svg new file mode 100644 index 0000000..ef1bbd0 --- /dev/null +++ b/src/assets/svg/jiaoyanguize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/jiekou.svg b/src/assets/svg/jiekou.svg new file mode 100644 index 0000000..0af3177 --- /dev/null +++ b/src/assets/svg/jiekou.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/me.svg b/src/assets/svg/me.svg new file mode 100644 index 0000000..444b036 --- /dev/null +++ b/src/assets/svg/me.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/mokuaiguanli.svg b/src/assets/svg/mokuaiguanli.svg new file mode 100644 index 0000000..b1b393b --- /dev/null +++ b/src/assets/svg/mokuaiguanli.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/more.svg b/src/assets/svg/more.svg new file mode 100644 index 0000000..ebe8c8f --- /dev/null +++ b/src/assets/svg/more.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/my_initiated.svg b/src/assets/svg/my_initiated.svg new file mode 100644 index 0000000..db32577 --- /dev/null +++ b/src/assets/svg/my_initiated.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/paste.svg b/src/assets/svg/paste.svg new file mode 100644 index 0000000..93357ea --- /dev/null +++ b/src/assets/svg/paste.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/quanxianzu.svg b/src/assets/svg/quanxianzu.svg new file mode 100644 index 0000000..06d00bb --- /dev/null +++ b/src/assets/svg/quanxianzu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/query.svg b/src/assets/svg/query.svg new file mode 100644 index 0000000..a694722 --- /dev/null +++ b/src/assets/svg/query.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/redo.svg b/src/assets/svg/redo.svg new file mode 100644 index 0000000..ce40cf7 --- /dev/null +++ b/src/assets/svg/redo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/selector.svg b/src/assets/svg/selector.svg new file mode 100644 index 0000000..aaae9cb --- /dev/null +++ b/src/assets/svg/selector.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/setting.svg b/src/assets/svg/setting.svg new file mode 100644 index 0000000..2faed2a --- /dev/null +++ b/src/assets/svg/setting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/show.svg b/src/assets/svg/show.svg new file mode 100644 index 0000000..47d79f3 --- /dev/null +++ b/src/assets/svg/show.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/shujujiankong.svg b/src/assets/svg/shujujiankong.svg new file mode 100644 index 0000000..092d746 --- /dev/null +++ b/src/assets/svg/shujujiankong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/shujuwajue.svg b/src/assets/svg/shujuwajue.svg new file mode 100644 index 0000000..f410ccf --- /dev/null +++ b/src/assets/svg/shujuwajue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/shujuyuan.svg b/src/assets/svg/shujuyuan.svg new file mode 100644 index 0000000..77c9e60 --- /dev/null +++ b/src/assets/svg/shujuyuan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/sql.svg b/src/assets/svg/sql.svg new file mode 100644 index 0000000..0b78318 --- /dev/null +++ b/src/assets/svg/sql.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/table.svg b/src/assets/svg/table.svg new file mode 100644 index 0000000..b927113 --- /dev/null +++ b/src/assets/svg/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/todolist.svg b/src/assets/svg/todolist.svg new file mode 100644 index 0000000..e545e13 --- /dev/null +++ b/src/assets/svg/todolist.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/tool.svg b/src/assets/svg/tool.svg new file mode 100644 index 0000000..dbefbcf --- /dev/null +++ b/src/assets/svg/tool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/tuoputu.svg b/src/assets/svg/tuoputu.svg new file mode 100644 index 0000000..42196b8 --- /dev/null +++ b/src/assets/svg/tuoputu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/undo.svg b/src/assets/svg/undo.svg new file mode 100644 index 0000000..7eece09 --- /dev/null +++ b/src/assets/svg/undo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/xiaoyanjieguo.svg b/src/assets/svg/xiaoyanjieguo.svg new file mode 100644 index 0000000..9282464 --- /dev/null +++ b/src/assets/svg/xiaoyanjieguo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/xitongjiankong.svg b/src/assets/svg/xitongjiankong.svg new file mode 100644 index 0000000..7a0f406 --- /dev/null +++ b/src/assets/svg/xitongjiankong.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/xitongjiekou.svg b/src/assets/svg/xitongjiekou.svg new file mode 100644 index 0000000..6a7366c --- /dev/null +++ b/src/assets/svg/xitongjiekou.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/yanshi.svg b/src/assets/svg/yanshi.svg new file mode 100644 index 0000000..89fff05 --- /dev/null +++ b/src/assets/svg/yanshi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/zaixianyonghu.svg b/src/assets/svg/zaixianyonghu.svg new file mode 100644 index 0000000..ef6d992 --- /dev/null +++ b/src/assets/svg/zaixianyonghu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/zidianpeizhi.svg b/src/assets/svg/zidianpeizhi.svg new file mode 100644 index 0000000..09613c1 --- /dev/null +++ b/src/assets/svg/zidianpeizhi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/zoom-in.svg b/src/assets/svg/zoom-in.svg new file mode 100644 index 0000000..56f5b3e --- /dev/null +++ b/src/assets/svg/zoom-in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/zoom-out.svg b/src/assets/svg/zoom-out.svg new file mode 100644 index 0000000..d31d616 --- /dev/null +++ b/src/assets/svg/zoom-out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svg/zu1773.svg b/src/assets/svg/zu1773.svg new file mode 100644 index 0000000..9a071fc --- /dev/null +++ b/src/assets/svg/zu1773.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/HelloWorld.vue b/src/components/HelloWorld.vue new file mode 100644 index 0000000..0a0988b --- /dev/null +++ b/src/components/HelloWorld.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/ParentView.vue b/src/components/ParentView.vue new file mode 100644 index 0000000..ba32c22 --- /dev/null +++ b/src/components/ParentView.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/components/PointTag.vue b/src/components/PointTag.vue new file mode 100644 index 0000000..5c873a4 --- /dev/null +++ b/src/components/PointTag.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/components/PopoverDelete.vue b/src/components/PopoverDelete.vue new file mode 100644 index 0000000..7ef03d1 --- /dev/null +++ b/src/components/PopoverDelete.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/components/Tag.vue b/src/components/Tag.vue new file mode 100644 index 0000000..86985ea --- /dev/null +++ b/src/components/Tag.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/components/TheWelcome.vue b/src/components/TheWelcome.vue new file mode 100644 index 0000000..5e64625 --- /dev/null +++ b/src/components/TheWelcome.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/components/Tinymce.vue b/src/components/Tinymce.vue new file mode 100644 index 0000000..f294790 --- /dev/null +++ b/src/components/Tinymce.vue @@ -0,0 +1,185 @@ + + + + + diff --git a/src/components/WelcomeItem.vue b/src/components/WelcomeItem.vue new file mode 100644 index 0000000..a5eca70 --- /dev/null +++ b/src/components/WelcomeItem.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/components/codeEdit/JavaCodeEdit.vue b/src/components/codeEdit/JavaCodeEdit.vue new file mode 100644 index 0000000..b4038b8 --- /dev/null +++ b/src/components/codeEdit/JavaCodeEdit.vue @@ -0,0 +1,69 @@ + + + diff --git a/src/components/codeEdit/JsCodeEdit.vue b/src/components/codeEdit/JsCodeEdit.vue new file mode 100644 index 0000000..e5963aa --- /dev/null +++ b/src/components/codeEdit/JsCodeEdit.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/codeEdit/SqlCodeEdit.vue b/src/components/codeEdit/SqlCodeEdit.vue new file mode 100644 index 0000000..1e85b48 --- /dev/null +++ b/src/components/codeEdit/SqlCodeEdit.vue @@ -0,0 +1,83 @@ + + + + diff --git a/src/components/iconSelect/index.vue b/src/components/iconSelect/index.vue new file mode 100644 index 0000000..8bcf034 --- /dev/null +++ b/src/components/iconSelect/index.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/components/iconSelect/requireIcons.js b/src/components/iconSelect/requireIcons.js new file mode 100644 index 0000000..9d5261f --- /dev/null +++ b/src/components/iconSelect/requireIcons.js @@ -0,0 +1,12 @@ +const iconArray=[] +const files = import.meta.glob("@/assets/svg/*.svg",{eager:true}) +for (const key of Object.entries(files)) { + let item =key[0] + const lastIndex=item.lastIndexOf("\/") + //svg图标名(带后缀svg) + item=item.substring(lastIndex+1,item.length) + //svg图标名字,剔除后缀.svg + item=item.substring(0,item.lastIndexOf("\.")) + iconArray.push(item) +} +export default iconArray diff --git a/src/components/icons/IconCommunity.vue b/src/components/icons/IconCommunity.vue new file mode 100644 index 0000000..2dc8b05 --- /dev/null +++ b/src/components/icons/IconCommunity.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconDocumentation.vue b/src/components/icons/IconDocumentation.vue new file mode 100644 index 0000000..6d4791c --- /dev/null +++ b/src/components/icons/IconDocumentation.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconEcosystem.vue b/src/components/icons/IconEcosystem.vue new file mode 100644 index 0000000..c3a4f07 --- /dev/null +++ b/src/components/icons/IconEcosystem.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconSupport.vue b/src/components/icons/IconSupport.vue new file mode 100644 index 0000000..7452834 --- /dev/null +++ b/src/components/icons/IconSupport.vue @@ -0,0 +1,7 @@ + diff --git a/src/components/icons/IconTooling.vue b/src/components/icons/IconTooling.vue new file mode 100644 index 0000000..660598d --- /dev/null +++ b/src/components/icons/IconTooling.vue @@ -0,0 +1,19 @@ + + diff --git a/src/components/pagination/index.vue b/src/components/pagination/index.vue new file mode 100644 index 0000000..187aebe --- /dev/null +++ b/src/components/pagination/index.vue @@ -0,0 +1,82 @@ + + + diff --git a/src/components/svgIcon/index.vue b/src/components/svgIcon/index.vue new file mode 100644 index 0000000..99f10ef --- /dev/null +++ b/src/components/svgIcon/index.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/directives/fixedtableheight.js b/src/directives/fixedtableheight.js new file mode 100644 index 0000000..fb9fe27 --- /dev/null +++ b/src/directives/fixedtableheight.js @@ -0,0 +1,20 @@ +import { useDebounce } from "../utils/publicvoid" + +let dom +export const fixedHeight = (el, binding, vnode) => { + dom = el + // 获取相对距离 + const relativeObj = el.getBoundingClientRect() + // 获取网页高度 + const clientHeight = document.body.clientHeight + // 70为分页器高度 + el.style.height = (clientHeight - relativeObj.top - 70) + 'px' + el.style.overflow = 'auto' +} + +window.addEventListener('resize', () => { + if (dom) { + const resizeHeight = useDebounce(fixedHeight(dom), 2000, false) + resizeHeight() + } +}) \ No newline at end of file diff --git a/src/directives/permission.js b/src/directives/permission.js new file mode 100644 index 0000000..65509b9 --- /dev/null +++ b/src/directives/permission.js @@ -0,0 +1,20 @@ +import { useAuthStore } from '@/stores/userstore.js' + +export const hasPerm = (el, binding, vnode) => { + const authStore = useAuthStore() + const allPermission = "*:*:*"; //所有权限 + const { value } = binding + const permisstions = authStore.permisstions + if (value && value instanceof Array && value.length > 0) { + const permissiosFlag = value + const hasPermission = permisstions.some(permission => { + return allPermission === permission || permissiosFlag.includes(permission) + }) + console.log(hasPermission); + if (!hasPermission) { + el.parentNode && el.parentNode.removeChild(el) + } + } else { + throw new Error('操作权限标识应为string[]') + } +} \ No newline at end of file diff --git a/src/fvcomponents/fvCheckbox/index.vue b/src/fvcomponents/fvCheckbox/index.vue new file mode 100644 index 0000000..014fb69 --- /dev/null +++ b/src/fvcomponents/fvCheckbox/index.vue @@ -0,0 +1,41 @@ + + + + + \ No newline at end of file diff --git a/src/fvcomponents/fvForm/index.vue b/src/fvcomponents/fvForm/index.vue new file mode 100644 index 0000000..a04d2ae --- /dev/null +++ b/src/fvcomponents/fvForm/index.vue @@ -0,0 +1,109 @@ + + + + + \ No newline at end of file diff --git a/src/fvcomponents/fvPagination/index.vue b/src/fvcomponents/fvPagination/index.vue new file mode 100644 index 0000000..187aebe --- /dev/null +++ b/src/fvcomponents/fvPagination/index.vue @@ -0,0 +1,82 @@ + + + diff --git a/src/fvcomponents/fvRadio/index.vue b/src/fvcomponents/fvRadio/index.vue new file mode 100644 index 0000000..ea6e821 --- /dev/null +++ b/src/fvcomponents/fvRadio/index.vue @@ -0,0 +1,48 @@ + + + + + \ No newline at end of file diff --git a/src/fvcomponents/fvSearchForm/index.vue b/src/fvcomponents/fvSearchForm/index.vue new file mode 100644 index 0000000..8afc13b --- /dev/null +++ b/src/fvcomponents/fvSearchForm/index.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/src/fvcomponents/fvSelect/index.vue b/src/fvcomponents/fvSelect/index.vue new file mode 100644 index 0000000..8d668ca --- /dev/null +++ b/src/fvcomponents/fvSelect/index.vue @@ -0,0 +1,59 @@ + + + + + \ No newline at end of file diff --git a/src/fvcomponents/fvTable/index.vue b/src/fvcomponents/fvTable/index.vue new file mode 100644 index 0000000..8833ea9 --- /dev/null +++ b/src/fvcomponents/fvTable/index.vue @@ -0,0 +1,188 @@ + + + + + \ No newline at end of file diff --git a/src/fvcomponents/fvTableColumn/index.vue b/src/fvcomponents/fvTableColumn/index.vue new file mode 100644 index 0000000..243a370 --- /dev/null +++ b/src/fvcomponents/fvTableColumn/index.vue @@ -0,0 +1,58 @@ + + + + + \ No newline at end of file diff --git a/src/layout/appmain/AppMain.vue b/src/layout/appmain/AppMain.vue new file mode 100644 index 0000000..50a43c4 --- /dev/null +++ b/src/layout/appmain/AppMain.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 0000000..0192176 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,50 @@ + + + + + \ No newline at end of file diff --git a/src/layout/navbar/BellSocket.vue b/src/layout/navbar/BellSocket.vue new file mode 100644 index 0000000..a864ed2 --- /dev/null +++ b/src/layout/navbar/BellSocket.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/src/layout/navbar/Breadcrumb.vue b/src/layout/navbar/Breadcrumb.vue new file mode 100644 index 0000000..a81e6e1 --- /dev/null +++ b/src/layout/navbar/Breadcrumb.vue @@ -0,0 +1,49 @@ + + + diff --git a/src/layout/navbar/Hamburger.vue b/src/layout/navbar/Hamburger.vue new file mode 100644 index 0000000..475c434 --- /dev/null +++ b/src/layout/navbar/Hamburger.vue @@ -0,0 +1,30 @@ + + + + + \ No newline at end of file diff --git a/src/layout/navbar/index.vue b/src/layout/navbar/index.vue new file mode 100644 index 0000000..7687717 --- /dev/null +++ b/src/layout/navbar/index.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src/layout/siderbar/MenuItem.vue b/src/layout/siderbar/MenuItem.vue new file mode 100644 index 0000000..cb9f4db --- /dev/null +++ b/src/layout/siderbar/MenuItem.vue @@ -0,0 +1,48 @@ + + + + diff --git a/src/layout/siderbar/index.vue b/src/layout/siderbar/index.vue new file mode 100644 index 0000000..2f9a0af --- /dev/null +++ b/src/layout/siderbar/index.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/layout/tagsview/index.vue b/src/layout/tagsview/index.vue new file mode 100644 index 0000000..2f1e438 --- /dev/null +++ b/src/layout/tagsview/index.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..ee23314 --- /dev/null +++ b/src/main.js @@ -0,0 +1,33 @@ +import { createApp } from 'vue' +import { createPinia } from 'pinia' + +import App from './App.vue' +import router from './router' + +import ElementPlus from 'element-plus' +import zhCn from 'element-plus/es/locale/lang/zh-cn' + +import {hasPerm } from '@/directives/permission.js' +import { fixedHeight } from './directives/fixedtableheight'; + +//导入图标组件 +import * as ElementPlusIconsVue from '@element-plus/icons-vue' +import 'element-plus/dist/index.css' +// 引入svg图标注册脚本 +import 'vite-plugin-svg-icons/register' + +import '@/assets/styles/index.scss' +import '@/assets/styles/sidebar.scss' +import '@/assets/styles/echartsEditor.scss' + +const app = createApp(App) +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component) +} +app.use(ElementPlus,{locale: zhCn}) +app.use(createPinia()) +app.use(router) +app.directive('perm',hasPerm) +app.directive('tabh',fixedHeight) + +app.mount('#app') diff --git a/src/router/index.js b/src/router/index.js new file mode 100644 index 0000000..02b0319 --- /dev/null +++ b/src/router/index.js @@ -0,0 +1,213 @@ +import { createRouter, createWebHistory } from "vue-router"; +import NProgress from "nprogress"; +import "nprogress/nprogress.css"; +import Layout from "@/layout/index.vue"; +import { getToken } from "../utils/auth"; +import { usePermisstionStroe } from "@/stores/permisstion.js"; +import { useAuthStore } from "@/stores/userstore.js"; +NProgress.configure({ showSpinner: false }); + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path: "/login", + name: "login", + component: () => import("@/views/login/index.vue"), + meta: { + hidden: true, + title: "登录", + }, + }, + { + path: "/", + name: "layout", + component: Layout, + redirect: "/home", + meta: { + hidden: false, + }, + children: [ + { + path: "/home", + name: "home", + component: () => import("@/views/home/index.vue"), + meta: { + title: "首页", + breadcrumb: true, + }, + }, + { + path: "/auth", + name: "auth", + component: () => import("@/views/auth/index.vue"), + meta: { + title: "个人中心", + breadcrumb: true, + }, + }, + { + path: "/rapid/gen/edit/:tableId(\\d+)", + name: "genEdit", + component: () => import("@/views/rapid/gen/editTable.vue"), + meta: { + title: "数据库生成配置", + breadcrumb: true, + }, + }, + { + path: "/workflow/process/edit/:deploymentId", + name: "processEdit", + component: () => import("@/views/workflow/process/ProcessEdit.vue"), + meta: { + title: "编辑流程", + breadcrumb: true, + }, + }, + { + path: "/workflow/process", + name: "process", + component: () => import("@/views/workflow/process/index.vue"), + meta: { + title: "流程管理", + breadcrumb: true, + }, + }, + { + path: "/workflow/process/edit", + name: "processAdd", + component: () => import("@/views/workflow/process/ProcessEdit.vue"), + meta: { + title: "新增流程", + breadcrumb: true, + }, + }, + { + path: "/role-auth/user/:roleId(\\d+)", + name: "distribute", + component: () => import("@/views/system/role/DistributeUser.vue"), + meta: { + title: "角色分配用户", + breadcrumb: true, + }, + }, + { + path: "/post-auth/user/:postId(\\d+)", + name: "assignUser", + component: () => import("@/views/system/post/DistributeUser.vue"), + meta: { + title: "岗位分配用户", + breadcrumb: true, + }, + }, + { + path: "/menu-auth/role/:menuId(\\d+)", + name: "assignRole", + component: () => import("@/views/system/menu/DistributeRole.vue"), + meta: { + title: "菜单分配角色", + breadcrumb: true, + }, + }, + { + path: "/system/notice/inform/index/:queryId", + name: "notify", + component: () => import("@/views/system/notice/inform/index.vue"), + meta: { + title: "通知公告", + breadcrumb: false, + }, + }, + { + path: "/custom/query/sql/design/:queryId", + name: "sql", + component: () => import("@/views/custom-query/sql/SqlDesign.vue"), + meta: { + title: "自定义sql查询配置", + breadcrumb: true, + }, + }, + { + path: "/custom/query/data/adapter/design/:queryId", + name: "dataAdapter", + component: () => + import("@/views/custom-query/data-adapter/DataAdapterDesign.vue"), + meta: { + title: "自定义数据适配器", + breadcrumb: true, + }, + }, + { + path: "/custom/query/echarts/design/:queryId", + name: "echarts", + component: () => + import("@/views/custom-query/echarts-editor/EchartsDesign.vue"), + meta: { + title: "自定义echarts查询配置", + breadcrumb: true, + }, + }, + { + path: "/rapid/data/:dsId(\\d+)", + name: "rapid", + component: () => import("@/views/rapid/gen/index.vue"), + meta: { + title: "数据源关联数据", + breadcrumb: true, + }, + }, + ], + }, + { + path: "/topo/design/:queryId", + name: "topEdit", + component: () => import("@/views/custom-query/topo/topologyDesign.vue"), + meta: { + title: "top", + breadcrumb: false, + }, + }, + { + path: "/forbidden", + name: "forbidden", + component: () => import("@/views/forbidden/index.vue"), + }, + ], +}); + +router.beforeEach(async (to, form, next) => { + const permisstionStore = usePermisstionStroe(); + const authStore = useAuthStore(); + NProgress.start(); + if (!getToken()) { + if (to.path === "/login" || to.path === "/forbidden") { + next(); + NProgress.done(); + } else { + next({ path: "/login" }); + } + } else { + if (to.path === "/login") { + next("/"); + NProgress.done(); + } else { + permisstionStore.setIsLoadRoutes(true); + if ( + permisstionStore.isLoadRoutes && + permisstionStore.asyncRouters.length == 0 + ) { + await permisstionStore.setAsyncRouters(); + await authStore.setUserInfo(); + next({ ...to, replace: true }); + } else { + next(); + } + } + } +}); + +router.afterEach(() => { + NProgress.done(); +}); + +export default router; diff --git a/src/stores/cache.js b/src/stores/cache.js new file mode 100644 index 0000000..8d81eca --- /dev/null +++ b/src/stores/cache.js @@ -0,0 +1,47 @@ +import {defineStore} from "pinia"; +import {ref} from "vue"; +import {getCacheOpt, getCacheType} from "../api/cache"; + +export const useCacheStore = defineStore('cache',()=>{ + const cacheKeyOpt = ref(new Map()) + const cacheKeyType = ref(new Map()) + + const setCacheKey = async (key) => { + try { + const { code, data } = await getCacheType(key) + if(code === 1000) { + cacheKeyType.value.set(key, data[key]) + } + } catch(err) { + new Error(err) + } + } + + const getDict = (key) => { + let dict + if (!cacheKeyType.value.has(key)) { + setCacheKey(key) + } else { + dict = cacheKeyType.value.get(key) + } + return dict + } + + + const checkKey = (keys) => { + let result = [] + for (let key of keys) { + if (!cacheKeyType.value.has(key) ) { + result.push(key) + } + } + return result; + } + + return { + cacheKeyOpt, + cacheKeyType, + setCacheKey, + getDict, + } +}) diff --git a/src/stores/permisstion.js b/src/stores/permisstion.js new file mode 100644 index 0000000..b7ef21e --- /dev/null +++ b/src/stores/permisstion.js @@ -0,0 +1,113 @@ +import { defineStore } from "pinia"; +import { ref } from "vue"; +import { getRouters } from "@/api/system/menu"; +import Layout from '@/layout/index.vue' +import ParentView from '@/components/ParentView.vue' +import router from "../router"; +const VueComUrl = import.meta.glob('../views/**/*.vue') + +export const usePermisstionStroe = defineStore('permisstion', () => { + const asyncRouters = ref([]) + //定义是否加载路由变量 + const isLoadRoutes = ref(false) + const menuList = ref([]) + + const setIsLoadRoutes = (status) => { + return isLoadRoutes.value = status + } + const setAsyncRouters = async () => { + await getRouters().then(res => { + if (res.code === 1000) { + const sRouter = JSON.parse(JSON.stringify(res.data)) + const mData = JSON.parse(JSON.stringify(res.data)) + asyncRouters.value = formatAsyncRouters(sRouter) + menuList.value = generateMenu(mData) + addAsyncRouters(asyncRouters.value) + isLoadRoutes.value = false + } else { + isLoadRoutes.value = true + setTimeout(() => setAsyncRouters(), 3000) + } + }) + } + + const formatAsyncRouters = (routers) => { + return routers.filter(route => { + if (route.component) { + if (route.component === 'Layout') { + route.component = Layout + } else if (route.component === 'ParentView') { + route.component = ParentView + } + else { + route.component = loadView(route.component) + } + } + if (route.children !== null && route.children && route.children.length !== 0) { + route.children = formatAsyncRouters(route.children) + } + return true + }) + } + + const addAsyncRouters = (routers) => { + routers.forEach(route => { + router.addRoute(route) + }) + } + + const generateMenu = (routes) => { + return routes.filter(item => { + if (item.children && item.children.length !== 0) { + generateMenu(item.children) + } + if (item.pathParams != null) { + item.path = formatPath(item.path, JSON.parse(item.pathParams)) + } + item.title = item.meta.title + item.icon = item.meta.icon + return true + }) + } + + // 拼接地址 + const formatPath = (path, query) => { + const queryArr = [] + let newPath = path + for (const key in query) { + queryArr.push({label: key, value: query[key]}) + } + queryArr.forEach((item, index)=>{ + if(!index) { + newPath += `?${item.label}=${item.value}` + } else { + newPath += `&${item.label}=${item.value}` + } + }) + return newPath + } + + + const loadView = (view) => { + if (import.meta.env.MODE === 'development') { + return () => import(/* @vite-ignore */`/src/views/${view}.vue`) + } else { + return VueComUrl['../views/' + view + '.vue'] + } + } + + const removeMenu = () => { + menuList.value.length = 0 + asyncRouters.value.length = 0 + } + + + return { + asyncRouters, + menuList, + isLoadRoutes, + setAsyncRouters, + setIsLoadRoutes, + removeMenu + } +}) \ No newline at end of file diff --git a/src/stores/processStore.js b/src/stores/processStore.js new file mode 100644 index 0000000..a882029 --- /dev/null +++ b/src/stores/processStore.js @@ -0,0 +1,112 @@ +import {defineStore} from "pinia"; +import {ref} from "vue"; + + +export const useProcessStore = defineStore('process', () => { + const nodeMap = ref(new Map()) + const parentMap = ref(new Map()) + const selectUserMap = ref(new Map()) + const isEdit = ref(null) + const selectFormItem = ref(null) + const selectedNode = ref([]) + const runningList = ref([]) + const endList = ref([]) + const noTakeList = ref([]) + const refuseList = ref([]) + const passList = ref([]) + const processData = ref({}) + const userTaskOption = ref({}) + + const getSelectedNode = () => { + return selectedNode.value + } + const setSelectedNode = (val) => { + selectedNode.value = val + } + const getSelectedFormItem = () => { + return selectFormItem.value + } + const setSelectedFormItem = (val) => { + selectFormItem.value = val + } + + const getProcess = () => { + return processData.value.process; + } + + const addProcess = (val) => { + console.log("添加节点成功") + processData.value.process.push(val) + } + const delProcess = (delNode) => { + processData.value.process.splice(processData.value.process.indexOf(delNode), 1) + console.log("删除数据") + console.log(processData.value.process) + } + + const getDesign = () => { + return processData.value + } + const getAssignedUser = () => { + return selectedNode.value.props.assignedUser || [] + } + + + const addAssignedUser = (val) => { + selectedNode.value.props.assignedUser.push(val) + } + + + const getFormMap = () => { + //表单映射对象 + const map = new Map(); + processData.value.formItems.forEach(item => itemToMap(map, item)) + return map + } + + const itemToMap = (map, item) => { + //对象转map + map.set(item.id, item) + if (item.name === 'SpanLayout') { + item.props.items.forEach(sub => itemToMap(map, sub)) + } + } + + const setDesign = (val) => { + processData.value = val + } + + const init = () => { + nodeMap.value.clear() + parentMap.value.clear() + } + + return { + nodeMap, + parentMap, + selectUserMap, + isEdit, + selectFormItem, + runningList, + endList, + noTakeList, + refuseList, + passList, + design: processData, + selectedNode, + userTaskOption, + init, + getSelectedNode, + setSelectedNode, + getSelectedFormItem, + setSelectedFormItem, + getDesign, + setDesign, + getProcess, + addProcess, + delProcess, + getFormMap, + getAssignedUser, + addAssignedUser + } +}) \ No newline at end of file diff --git a/src/stores/siderbar.js b/src/stores/siderbar.js new file mode 100644 index 0000000..a6ac7f3 --- /dev/null +++ b/src/stores/siderbar.js @@ -0,0 +1,20 @@ +import { defineStore } from "pinia"; +import { reactive, ref } from "vue"; +export const useSiderBar = defineStore('siderbar',()=>{ + //定义控制侧边栏是否展开变量默认展开 + const isCollapse = ref(false) + //获取侧边栏状态 + const getSiderBarStatus = () => { + return isCollapse.value + } + //设置侧边栏状态 + const setSiderBarStatus = () => { + isCollapse.value = !isCollapse.value + } + + return { + isCollapse, + getSiderBarStatus, + setSiderBarStatus, + } +}) \ No newline at end of file diff --git a/src/stores/tagsview.js b/src/stores/tagsview.js new file mode 100644 index 0000000..bcd8706 --- /dev/null +++ b/src/stores/tagsview.js @@ -0,0 +1,54 @@ +import { defineStore } from "pinia"; +import { ref } from "vue"; +import { useRouter } from "vue-router"; + +export const useTagsView = defineStore('tagsView',()=>{ + const router = useRouter() + //已显示的标签页list + const visitedViews = ref([]) + + //添加标签页面 + const addVisitedViews = ({path,meta}) => { + if(visitedViews.value.length == 0) { + visitedViews.value.push({path,meta}) + }else { + const paths = visitedViews.value.map(item => item.path) + if(paths.includes(path) == false) { + visitedViews.value.push({path,meta}) + } + } + } + + //删除标签页 + const delVisitedViews = (path) => { + if(visitedViews.value.length - 1 == 0) { + return + } + visitedViews.value.forEach((item,index)=>{ + if(item.path == path) { + visitedViews.value.splice(index,1) + } + }) + toLastTagView(visitedViews) + } + + //删除其他标签页 + const delOtherVisitedViews = ({path,meta}) => { + visitedViews.value = [] + visitedViews.value.push({path,meta}) + toLastTagView(visitedViews) + } + + //路由到末尾标签页 + const toLastTagView = (view) => { + const lastTagView = view.value.slice(-1)[0] + router.push(lastTagView.path) + } + + return { + visitedViews, + addVisitedViews, + delVisitedViews, + delOtherVisitedViews, + } +}) diff --git a/src/stores/userstore.js b/src/stores/userstore.js new file mode 100644 index 0000000..4e150f7 --- /dev/null +++ b/src/stores/userstore.js @@ -0,0 +1,42 @@ +import { defineStore } from "pinia"; +import { ref } from "vue"; +import { getUserInfo, login } from "../api/login"; +import { ElMessage } from "element-plus"; +import { removeToken, setToken} from "../utils/auth"; + +export const useAuthStore = defineStore('auth',()=>{ + const userinfo = ref({}) + const permisstions = ref([]) + const roles = ref([]) + const userLogin = async (data) => { + let flag + await login(data).then(res=>{ + if(res?.code === 1000) { + setToken(res.data) + flag = true + }else { + ElMessage.error(res.msg) + flag = false + } + }) + return flag + } + const userLogout = () => { + removeToken() + } + const setUserInfo = async () => { + await getUserInfo().then(res=>{ + userinfo.value = res.data.user + permisstions.value = res.data.permissions + roles.value = res.data.roles + }) + } + + return { + userinfo, + permisstions, + userLogin, + userLogout, + setUserInfo + } +}) diff --git a/src/utils/auth.js b/src/utils/auth.js new file mode 100644 index 0000000..55243e8 --- /dev/null +++ b/src/utils/auth.js @@ -0,0 +1,25 @@ +import Cookies from "js-cookie"; + +export const getToken = () => { + return Cookies.get('Authorization') +} + +export const setToken = (token) => { + return Cookies.set('Authorization', token) +} + +export const removeToken = () => { + return Cookies.remove('Authorization') +} + +export const getAuthInfo = () => { + return Cookies.get('authinfo') +} + +export const setAuthInfo = (info) => { + return Cookies.set('authinfo', info) +} + +export const removeAuthInfo = () => { + return Cookies.remove('authinfo') +} \ No newline at end of file diff --git a/src/utils/axiosCanceler.js b/src/utils/axiosCanceler.js new file mode 100644 index 0000000..d35676f --- /dev/null +++ b/src/utils/axiosCanceler.js @@ -0,0 +1,51 @@ +// 存储每个请求的标识和取消函数 +const pendingRequest = new Map() + +const getPendUrl = (config) => { + return `${config.method}&${config.url}` +} + +export class AxiosCanceler { + /** + * 添加请求 + * @param {*} config 请求配置 + */ + addPendingRequest(config) { + const url = getPendUrl(config) + const controller = new AbortController() // 请求中止控制器 + config.signal = controller.signal + if(!pendingRequest.has(url)) { + pendingRequest.set(url, controller) + } + } + + /** + * 移除请求 + * @param {*} config 请求配置 + */ + removePendingRequest(config) { + const url = getPendUrl(config) + if(pendingRequest.has(url)) { + const abortController = pendingRequest.get(url) + if(abortController) { + abortController.abort(url) + } + pendingRequest.delete(url) + } + } + + /** + * 移除所有请求 + */ + removeAllPendingRequest() { + for (const abortController of pendingRequest) { + if(abortController) + abortController.abort() + } + this.reset() + } + + reset() { + pendingRequest.clear() + } +} diff --git a/src/utils/downloadZip.js b/src/utils/downloadZip.js new file mode 100644 index 0000000..b116337 --- /dev/null +++ b/src/utils/downloadZip.js @@ -0,0 +1,66 @@ +import axios from 'axios' +import {getToken} from "./auth"; +import {ElMessage} from "element-plus"; + +const baseURL = import.meta.env.VITE_BASE_URL + +const mimeMap = { + xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + zip: 'application/zip' +} + + +export function downLoadZip(url) { + axios({ + method: 'get', + url: baseURL + url, + responseType: 'blob', + headers: {'Authorization': getToken()} + }).then(res => { + try { + resolveBlob(res, mimeMap.zip) + }catch (e) { + ElMessage.error("下载失败,请检查相关配置") + } + }) +} + +export function downLoadExcel(url,params) { + axios({ + method: 'get', + url: baseURL + url, + params, + responseType: 'blob', + headers: {'Authorization': getToken()} + }).then(res => { + console.log(res) + try { + resolveBlob(res, mimeMap.xlsx) + }catch (e) { + console.log(res) + ElMessage.error(res.data.msg) + } + }) +} + + +/** + * 解析blob响应内容并下载 + * @param {*} res blob响应内容 + * @param {String} mimeType MIME类型 + */ +export function resolveBlob(res, mimeType) { + const aLink = document.createElement('a') + let blob = new Blob([res.data], {type: mimeType}) + let reg = /fileName=([^&]+)/; + let contentDisposition = decodeURI(res.headers['content-disposition']) + let result = reg.exec(contentDisposition) + console.log(result) + let fileName = result[1] + fileName = fileName.replace(/\"/g, '') + aLink.href = URL.createObjectURL(blob) + aLink.setAttribute('download', fileName) // 设置下载文件名称 + document.body.appendChild(aLink) + aLink.click() + document.body.appendChild(aLink) +} \ No newline at end of file diff --git a/src/utils/publicvoid.js b/src/utils/publicvoid.js new file mode 100644 index 0000000..8b11ca0 --- /dev/null +++ b/src/utils/publicvoid.js @@ -0,0 +1,54 @@ +// import md5 from 'js-md5' +// import { useI18n } from 'vue-i18n' + +/** + * @author 温华 + * @description 这是一个加密函数 + * @param {string | number} data 需要加密的数据 + * @returns {result} 返回已加密的数据 + */ +// export const useEncryption = data => { +// const result = md5(data) +// return result +// } + +/** + * @author 温华 + * @param {function} func 需要添加防抖的函数 + * @param {number} wait 等待执行的时间 + * @param {boolean} immediate 是否立即执行 + * @returns + */ +export const useDebounce = function (func, wait = 1000, isImmediate = true) { + var timerId = null + var flag = true + return function () { + let context = this + let args = arguments + clearTimeout(timerId) + if (isImmediate) { + if (flag) { + func.apply(context, args) + flag = false + } + timerId = setTimeout(function () { + flag = true + }, wait) + } else { + timerId = setTimeout(function () { + func.apply(context, args) + }, wait) + } + } +} + +export const tableHead = { + backgroundColor: '#F6F9FF', + color: '#3D3F46', + textAlign: 'center', + // lineHeight: '30px' +} + +export const tabCell = { + textAlign: 'center', +} \ No newline at end of file diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 0000000..cb2fab9 --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,76 @@ +import axios from "axios"; +import { AxiosCanceler } from "./axiosCanceler"; +import { ElMessage, ElMessageBox } from "element-plus"; +import { getToken, removeToken } from "./auth"; + +axios.defaults.headers['Content-Type']='application/json' + +const serveice = axios.create({ + baseURL: import.meta.env.VITE_BASE_URL, + timeout: 6000 +}) +const axiosCanceler = new AxiosCanceler() +serveice.interceptors.request.use(config=>{ + const ACCESS_TOKEN = getToken() || '' + if(ACCESS_TOKEN!==undefined && ACCESS_TOKEN!=='') { + config.headers['Authorization']=ACCESS_TOKEN + } + // 检查是否有重复请求, 有则取消掉 + axiosCanceler.removePendingRequest(config) + // 将请求加入pendingMap + axiosCanceler.addPendingRequest(config) + return config +},error=>{ + Promise.reject(error) +}) +serveice.interceptors.response.use(response=>{ + axiosCanceler.removePendingRequest(response.config) + //二进制数据直接返回 + if(response.request.responseType === 'blob' || response.request.responseType === 'arraybuffer') { + return response.data + } + return response.data +},error=>{ + let response = error.response + const status = response.status; + switch(status) { + case 401: + ElMessageBox.confirm('登录状态已过期,请重新登录','系统提示',{ + confirmButtonText: '重新登录', + cancelButtonText: '取消', + type: 'warning', + closeOnClickModal: false + }).then(()=>{ + removeToken() + window.location = '/login' + }) + return Promise.reject('会话已过期,请重新登录') + case 402: + break; + case 403: + console.log(response) + ElMessage.warning(response.data.msg) + break; + case 404: + ElMessage.warning('不存在的地址') + break; + case 405: + ElMessage.warning('传输格式错误,请检查') + break; + case 511: + ElMessage.warning('黑名单') + removeToken() + window.location = '/forbidden' + break; + case 500: + if (response.data){ + return response.data + }else { + ElMessage.error('系统未知错误') + break; + } + } + return Promise.reject(error) +}) + +export default serveice diff --git a/src/utils/socket.js b/src/utils/socket.js new file mode 100644 index 0000000..22638ce --- /dev/null +++ b/src/utils/socket.js @@ -0,0 +1,46 @@ +class Socket { + constructor(url) { + this.wx = new WebSocket(url) + this.state = false + } + + open() { + this.wx.onopen = (e) => { + console.log('连接服务器成功'); + this.state = true + } + } + + close() { + this.wx.onclose = (e) => { + console.log('服务器关闭'); + this.state = false + } + } + + _error() { + this.wx.onerror = (e) => { + console.log('连接出错'); + this.state = false + this.close() + this.open() + } + } + + message() { + this.wx.onmessage = (e) => { + // 接收服务器发送的消息 + return e.data + } + } + + send(data) { + let sendMsg + if(data && data instanceof Object || data instanceof Array) { + sendMsg = JSON.stringify(data) + } else { + sendMsg = data.toString() + } + this.wx.send(sendMsg) + } +} \ No newline at end of file diff --git a/src/views/auth/index.vue b/src/views/auth/index.vue new file mode 100644 index 0000000..45e19cc --- /dev/null +++ b/src/views/auth/index.vue @@ -0,0 +1,220 @@ + + + \ No newline at end of file diff --git a/src/views/custom-query/data-adapter/DataAdapterDesign.vue b/src/views/custom-query/data-adapter/DataAdapterDesign.vue new file mode 100644 index 0000000..7001941 --- /dev/null +++ b/src/views/custom-query/data-adapter/DataAdapterDesign.vue @@ -0,0 +1,293 @@ + + + + + diff --git a/src/views/custom-query/data-adapter/index.vue b/src/views/custom-query/data-adapter/index.vue new file mode 100644 index 0000000..7ad2cda --- /dev/null +++ b/src/views/custom-query/data-adapter/index.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/src/views/custom-query/datamodel/index.vue b/src/views/custom-query/datamodel/index.vue new file mode 100644 index 0000000..8d1f4d1 --- /dev/null +++ b/src/views/custom-query/datamodel/index.vue @@ -0,0 +1,392 @@ + + + + diff --git a/src/views/custom-query/echarts-editor/EchartsDesign.vue b/src/views/custom-query/echarts-editor/EchartsDesign.vue new file mode 100644 index 0000000..f2e7f7c --- /dev/null +++ b/src/views/custom-query/echarts-editor/EchartsDesign.vue @@ -0,0 +1,233 @@ + + + diff --git a/src/views/custom-query/echarts-editor/components/AxisBox.vue b/src/views/custom-query/echarts-editor/components/AxisBox.vue new file mode 100644 index 0000000..459077f --- /dev/null +++ b/src/views/custom-query/echarts-editor/components/AxisBox.vue @@ -0,0 +1,538 @@ + + + diff --git a/src/views/custom-query/echarts-editor/components/ChartsOptions.vue b/src/views/custom-query/echarts-editor/components/ChartsOptions.vue new file mode 100644 index 0000000..c212d36 --- /dev/null +++ b/src/views/custom-query/echarts-editor/components/ChartsOptions.vue @@ -0,0 +1,307 @@ + + + diff --git a/src/views/custom-query/echarts-editor/components/EchartsEditor.vue b/src/views/custom-query/echarts-editor/components/EchartsEditor.vue new file mode 100644 index 0000000..59b1a15 --- /dev/null +++ b/src/views/custom-query/echarts-editor/components/EchartsEditor.vue @@ -0,0 +1,307 @@ + + + + diff --git a/src/views/custom-query/echarts-editor/components/barChart/AdvancedSettings.vue b/src/views/custom-query/echarts-editor/components/barChart/AdvancedSettings.vue new file mode 100644 index 0000000..91d15fd --- /dev/null +++ b/src/views/custom-query/echarts-editor/components/barChart/AdvancedSettings.vue @@ -0,0 +1,86 @@ + + + \ No newline at end of file diff --git a/src/views/custom-query/echarts-editor/components/barChart/BasicSetting.vue b/src/views/custom-query/echarts-editor/components/barChart/BasicSetting.vue new file mode 100644 index 0000000..48817c6 --- /dev/null +++ b/src/views/custom-query/echarts-editor/components/barChart/BasicSetting.vue @@ -0,0 +1,140 @@ + + + diff --git a/src/views/custom-query/echarts-editor/components/lineChart/AdvancedSettings.vue b/src/views/custom-query/echarts-editor/components/lineChart/AdvancedSettings.vue new file mode 100644 index 0000000..91d15fd --- /dev/null +++ b/src/views/custom-query/echarts-editor/components/lineChart/AdvancedSettings.vue @@ -0,0 +1,86 @@ + + + \ No newline at end of file diff --git a/src/views/custom-query/echarts-editor/components/lineChart/BasicSetting.vue b/src/views/custom-query/echarts-editor/components/lineChart/BasicSetting.vue new file mode 100644 index 0000000..dfce2e3 --- /dev/null +++ b/src/views/custom-query/echarts-editor/components/lineChart/BasicSetting.vue @@ -0,0 +1,160 @@ + + + diff --git a/src/views/custom-query/echarts-editor/components/pieChart/BasicSetting.vue b/src/views/custom-query/echarts-editor/components/pieChart/BasicSetting.vue new file mode 100644 index 0000000..a8a4a35 --- /dev/null +++ b/src/views/custom-query/echarts-editor/components/pieChart/BasicSetting.vue @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/src/views/custom-query/echarts-editor/components/pieChart/PieBox.vue b/src/views/custom-query/echarts-editor/components/pieChart/PieBox.vue new file mode 100644 index 0000000..dfd79bc --- /dev/null +++ b/src/views/custom-query/echarts-editor/components/pieChart/PieBox.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/views/custom-query/echarts-editor/components/radarChart/RadarBox.vue b/src/views/custom-query/echarts-editor/components/radarChart/RadarBox.vue new file mode 100644 index 0000000..4493dc0 --- /dev/null +++ b/src/views/custom-query/echarts-editor/components/radarChart/RadarBox.vue @@ -0,0 +1,110 @@ + + + + + diff --git a/src/views/custom-query/echarts-editor/index.vue b/src/views/custom-query/echarts-editor/index.vue new file mode 100644 index 0000000..f2e7f7c --- /dev/null +++ b/src/views/custom-query/echarts-editor/index.vue @@ -0,0 +1,233 @@ + + + diff --git a/src/views/custom-query/portal/ThreeSwitch.vue b/src/views/custom-query/portal/ThreeSwitch.vue new file mode 100644 index 0000000..f77c048 --- /dev/null +++ b/src/views/custom-query/portal/ThreeSwitch.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/views/custom-query/portal/fieldTable.vue b/src/views/custom-query/portal/fieldTable.vue new file mode 100644 index 0000000..c4d1806 --- /dev/null +++ b/src/views/custom-query/portal/fieldTable.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/src/views/custom-query/portal/index.vue b/src/views/custom-query/portal/index.vue new file mode 100644 index 0000000..2378115 --- /dev/null +++ b/src/views/custom-query/portal/index.vue @@ -0,0 +1,713 @@ + + + + + diff --git a/src/views/custom-query/query-page/index.vue b/src/views/custom-query/query-page/index.vue new file mode 100644 index 0000000..4e84915 --- /dev/null +++ b/src/views/custom-query/query-page/index.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/views/custom-query/sql/SqlDesign.vue b/src/views/custom-query/sql/SqlDesign.vue new file mode 100644 index 0000000..cf0a170 --- /dev/null +++ b/src/views/custom-query/sql/SqlDesign.vue @@ -0,0 +1,486 @@ + + + + + diff --git a/src/views/custom-query/sql/index.vue b/src/views/custom-query/sql/index.vue new file mode 100644 index 0000000..4dee0f7 --- /dev/null +++ b/src/views/custom-query/sql/index.vue @@ -0,0 +1,351 @@ + + + + + diff --git a/src/views/custom-query/table-management/editTable.vue b/src/views/custom-query/table-management/editTable.vue new file mode 100644 index 0000000..c87d211 --- /dev/null +++ b/src/views/custom-query/table-management/editTable.vue @@ -0,0 +1,378 @@ + + + + + diff --git a/src/views/custom-query/table-management/importTable.vue b/src/views/custom-query/table-management/importTable.vue new file mode 100644 index 0000000..0bcfd2c --- /dev/null +++ b/src/views/custom-query/table-management/importTable.vue @@ -0,0 +1,201 @@ + + + + diff --git a/src/views/custom-query/table-management/index.vue b/src/views/custom-query/table-management/index.vue new file mode 100644 index 0000000..f5c1df6 --- /dev/null +++ b/src/views/custom-query/table-management/index.vue @@ -0,0 +1,249 @@ + + + diff --git a/src/views/custom-query/topo/components/changeImage/ChangeImage.vue b/src/views/custom-query/topo/components/changeImage/ChangeImage.vue new file mode 100644 index 0000000..3ba888e --- /dev/null +++ b/src/views/custom-query/topo/components/changeImage/ChangeImage.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/views/custom-query/topo/components/changeImage/SettingImageDialog.vue b/src/views/custom-query/topo/components/changeImage/SettingImageDialog.vue new file mode 100644 index 0000000..1927844 --- /dev/null +++ b/src/views/custom-query/topo/components/changeImage/SettingImageDialog.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src/views/custom-query/topo/index.vue b/src/views/custom-query/topo/index.vue new file mode 100644 index 0000000..24c7dec --- /dev/null +++ b/src/views/custom-query/topo/index.vue @@ -0,0 +1,352 @@ + + + + + diff --git a/src/views/custom-query/topo/top/behavior/click-er-edge.js b/src/views/custom-query/topo/top/behavior/click-er-edge.js new file mode 100644 index 0000000..9668e04 --- /dev/null +++ b/src/views/custom-query/topo/top/behavior/click-er-edge.js @@ -0,0 +1,81 @@ +/** + * @author: clay + * @data: 2021/5/14 23:20 + * @email: clay@hchyun.com + * @description: node er图点击事件 + */ +let vm = null; + +const sendThis = (_this) => { + vm = _this; +}; + +export default { + sendThis, + name: "click-er-edge", + options: { + getEvents() { + return { + "edge:click": "onEdgeClick", + "edge:contextmenu": "onEdgeRightClick" + }; + }, + /** + * 点击连线函数 + * @param event + */ + onEdgeClick(event) { + let clickEdge = event.item; + clickEdge.setState("selected", !clickEdge.hasState("selected")); + this.singleClickEdge(event) + // vm.editCurrentFocus("edge") + // this.updateVmData(event); + }, + /** + * 右键点击线 + * @param event + */ + onEdgeRightClick(event) { + this.singleClickEdge(event) + }, + singleClickEdge(event) { + let graph = vm.getGraph(); + let clickEdge = event.item; + let clickEdgeModel = toRaw(clickEdge.getModel()); + let selectedEdges = graph.findAllByState("edge", "selected"); + // 如果当前点击节点不是之前选中的单个节点,才进行下面的处理 + if (!(selectedEdges.length === 1 && clickEdgeModel.id === selectedEdges[0].getModel().id)) { + // 先取消所有节点的选中状态 + graph.findAllByState("edge", "selected").forEach(edge => { + edge.setState("selected", false); + }); + // 再添加该节点的选中状态 + clickEdge.setState("selected", true); + vm.editCurrentFocus("edge") + this.updateVmData(event); + }else { + vm.editCurrentFocus("edge") + this.updateVmData(event); + } + }, + updateVmData(event) { + // 更新vm的data: selectedEdge 和 selectedEdgeParams + let clickEdge = event.item; + if (clickEdge.hasState("selected")) { + let clickEdgeModel = toRaw(clickEdge.getModel()); + vm.editSelectedEdge(clickEdge) + let edgeAppConfig = { ...vm.getEdgeAppConfig() }; + Object.keys(edgeAppConfig).forEach(function(key) { + edgeAppConfig[key] = ""; + }); + vm.editSelectedEdgeParams({ + label: clickEdgeModel.label || "", + relationalItem: clickEdgeModel.relationalItem, + sourceColumn: clickEdgeModel.sourceColumn, + targetColumn: clickEdgeModel.targetColumn, + appConfig: { ...edgeAppConfig, ...clickEdgeModel.appConfig } + }) + } + }, + } +}; diff --git a/src/views/custom-query/topo/top/behavior/click-er-node.js b/src/views/custom-query/topo/top/behavior/click-er-node.js new file mode 100644 index 0000000..b06e324 --- /dev/null +++ b/src/views/custom-query/topo/top/behavior/click-er-node.js @@ -0,0 +1,157 @@ +/** + * @author: clay + * @data: 2021/5/14 23:20 + * @email: clay@hchyun.com + * @description: node er图点击事件 + */ +const isInBBox = (point, bbox) => { + const { + x, + y + } = point; + const { + minX, + minY, + maxX, + maxY + } = bbox; + + return x < maxX && x > minX && y > minY && y < maxY; +}; + +let vm = null; +const sendThis = (_this) => { + vm = _this; +}; + +export default { + sendThis, + name: "click-er-node", + options: { + getEvents() { + return { + wheel: "scroll", + "node:click": "onNodeClick", + "node:contextmenu": "onNodeRightClick", + "canvas:click": "onCanvasClick" + }; + }, + //滚动事件监听 + scroll(event) { + //禁止滚动的默认事件 + event.preventDefault(); + let graph = vm.getGraph() + // ↓|| vm.getClickCtrlValue() === true + if (vm.getClickCtrlValue()) { + if (graph && !graph.destroyed) { + if (event.deltaY > 0) { + graph.zoom(0.8, {x: event.x, y: event.y}) + } else { + graph.zoom(1.2, {x: event.x, y: event.y}) + } + } + } else { + //graph.getNodes()获取 Combo 中所有子节点 + const nodes = graph.getNodes().filter((n) => { + const bbox = n.getBBox();//获取元素的包围盒。 + //将 clientX/clientY 坐标系的坐标值转换为 pointX/pointY 的坐标值。 + return isInBBox(graph.getPointByClient(event.clientX, event.clientY), bbox); + }); + if (nodes) { + nodes.forEach((node) => { + const model = node.getModel(); + if (model.columns.length < 9) { + return; + } + const idx = model.startIndex || 0; // 获取model的startIndex属性,如果没有则使用0赋值给变量idx + // this.start = idx; // 这里将idx赋值给变量this.start + let startX = model.startX || 0.5; // 获取model的startX属性,如果没有则使用0.5赋值给变量startX + //正值向下滚动,负值向上滚动 + let startIndex = idx + event.deltaY * 0.018; // 计算startIndex值,将idx与event的deltaY属性值乘以0.018相加赋值给变量startIndex + if ((model.columns.length - idx) < 10 && startIndex > idx) { // 判断条件,判断model的columns数组的长度减去idx的值是否小于10,并且startIndex的值是否大于idx + return; // 如果条件满足,则结束函数的执行 + } + startX -= event.deltaX;//deltaX 属性在向右滚动时返回正值,向左滚动时返回负值,否则为 0。 + + //对startIndex进行边界检查和调整 + if (startIndex < 0) { + startIndex = 0; + } + if (startX > 0) { + startX = 0; + } + if (startIndex > model.columns.length - 1) { + startIndex = model.columns.length - 1; + } + + graph.update(node, { + startIndex, + startX + }); + }); + } + } + }, + //节点左键点击监听 + onNodeClick(event) { + if (event) { + vm.editCurrentFocus("node") + vm.editRightMenuShow(false) + this.shrinkage(event); + this.updateVmData(event); + } + }, + /** + * todo 右键打开设置面板 + * @param event + */ + onNodeRightClick(event) { + this.updateVmData(event); + vm.editTableColumnEditOpen(true) + }, + onCanvasClick() { + vm.editCurrentFocus("canvas") + vm.editRightMenuShow(false) + }, + updateVmData(event) { + let clickNode = event.item; + clickNode.setState("selected", true); + vm.editSelectedNode(clickNode); + let clickNodeModel = toRaw(clickNode.getModel()); + let nodeAppConfig = {...vm.getNodeAppConfig()}; + Object.keys(nodeAppConfig).forEach(function (key) { + nodeAppConfig[key] = ""; + }); + vm.editSelectedNodeParams({ + label: clickNodeModel.label || "", + columns: clickNodeModel.columns, + appConfig: {...nodeAppConfig, ...clickNodeModel.appConfig} + }) + }, + shrinkage(e) { + if (!e.item) { + return; + } + const graph = vm.getGraph(); + const name=e.shape.get("name") + if (name === "collapse") { + graph.updateItem(e.item, { + collapsed: true, + size: [300, 50], + height: 44 + }); + setTimeout(() => graph.layout(), 100); + } else if (name === "expand") { + graph.updateItem(e.item, { + collapsed: false, + size: [300, 500], + height: 316 + }); + setTimeout(() => graph.layout(), 100); + } + // else { + // const model = e.item.getModel(); + // } + }, + } +}; diff --git a/src/views/custom-query/topo/top/behavior/drag-add-edge.js b/src/views/custom-query/topo/top/behavior/drag-add-edge.js new file mode 100644 index 0000000..8758774 --- /dev/null +++ b/src/views/custom-query/topo/top/behavior/drag-add-edge.js @@ -0,0 +1,232 @@ +/** + * @author: clay + * @data: 2019/07/16 + * @description: edit mode: 通过拖拽节点上的锚点添加连线 + */ +import utils from "../../utils"; +import theme from "../theme"; +import {ElMessage} from "element-plus"; + +// 用来获取调用此js的vue组件实例(this) +let vm = null; + +const sendThis = (_this) => { + vm = _this; +}; + +export default { + sendThis, // 暴露函数 + name: "drag-add-edge", + options: { + getEvents() { + return { + "node:mousedown": "onNodeMousedown", + "node:mouseup": "onNodeMouseup", + "edge:mouseup": "onEdgeMouseup", + "mousemove": "onMousemove" + }; + }, + onNodeMousedown(event) { + let self = this; + // 交互过程中的信息 + self.evtInfo = { + action: null, + node: event.item, + target: event.target, + }; + if (self.evtInfo.target && self.evtInfo.target.attrs.name) { + // todo...未来可能针对锚点增加其它功能(例如拖拽调整大小) + switch (self.evtInfo.target.attrs.name) { + case "anchor"://点击锚点中间 + self.evtInfo.action = "drawEdge"; + break; + case "anchorBg"://点击锚点 + self.evtInfo.action = "drawEdge"; + break; + } + } + if (self.evtInfo && self.evtInfo.action) { + self[self.evtInfo.action].start.call(self, event); + } + }, + onNodeMouseup(event) { + let self = this; + if (self.evtInfo && self.evtInfo.action) { + self[self.evtInfo.action].stop.call(self, event); + } + }, + onEdgeMouseup(event) { + let self = this; + if (self.evtInfo && self.evtInfo.action === "drawEdge") { + self[self.evtInfo.action].stop.call(self, event); + } + }, + onMousemove(event) { + let self = this; + if (self.evtInfo && self.evtInfo.action) { + self[self.evtInfo.action].move.call(self, event); + } + }, + drawEdge: { + isMoving: false, + currentLine: null, + start: function (event) { + let self = this; + let themeStyle = theme.defaultStyle; // todo...先使用默认主题,后期可能增加其它风格的主体 + + // ************** 暂存【连线】前的数据状态 start ************** + let graph = vm.getGraph(); + self.historyData = JSON.stringify(graph.save()); + // ************** 暂存【连线】前的数据状态 end ************** + + let sourceAnchor = self.evtInfo.node.getAnchorPoints(); + let sourceNodeModel = toRaw(self.evtInfo.node.getModel()); + // 锚点数据 + let anchorPoints = self.evtInfo.node.getAnchorPoints(); + // 处理线条目标点 + if (anchorPoints && anchorPoints.length) { + // 获取距离指定坐标最近的一个锚点 + sourceAnchor = self.evtInfo.node.getLinkPoint({ + x: event.x, + y: event.y + }) + } + // let relational = vm.getRelationalMap().get(sourceNodeModel.tableId) + let relational = vm.getRelationalMap().map(item => { + if (item.mainId === sourceNodeModel.tableId) { + return item + } + }) + //item.columnName+':'+item.columnComment + let columns = [] + sourceNodeModel.columns.forEach(item => { + let column = { + columnName: item.columnName, + columnComment: item.columnComment + } + columns.push(column) + }) + self.drawEdge.currentLine = self.graph.addItem("edge", { + // id: G6.Util.uniqueId(), // 这种生成id的方式有bug,会重复 + id: utils.generateUUID(), + // 起始节点 + source: sourceNodeModel.id, + sourceColumn: columns, + sourceAnchor: sourceAnchor ? sourceAnchor.anchorIndex : "", + // 终止节点/位置 + relational: relational, + target: { + x: event.x, + y: event.y + }, + type: self.graph.$C.edge.type || "top-cubic", + style: themeStyle.edgeStyle.default || self.graph.$C.edge.style + }); + self.drawEdge.isMoving = true; + }, + move(event) { + let self = this; + if (self.drawEdge.isMoving && self.drawEdge.currentLine) { + self.graph.updateItem(self.drawEdge.currentLine, { + target: { + x: event.x, + y: event.y + } + }); + } + }, + stop(event) { + let self = this; + if (self.drawEdge.isMoving) { + if (self.drawEdge.currentLine === event.item) { + // 画线过程中点击则移除当前画线 + self.graph.removeItem(event.item); + } else { + let targetNode = event.item; + let targetNodeModel = toRaw(targetNode.getModel());//节点的数据模型 + let targetAnchor = null; + // 锚点数据 + let anchorPoints = targetNode.getAnchorPoints(); + // 处理线条目标点 + let relational = self.drawEdge.currentLine.getModel().relational//边的数据模型,start函数中定义的包含该节点的关联关系 + let starts = false; + let relationalItem = null; + if (relational) { + relational.map(item => { + if (item) { + if (item.childId === targetNodeModel.tableId) { + starts = true + relationalItem = item + } else { + starts = false + } + } + }) + } + // 去掉关系验证 + // starts = true + if (starts) { + if (anchorPoints && anchorPoints.length > 0) { + // 获取距离指定坐标最近的一个锚点 + targetAnchor = targetNode.getLinkPoint({ + x: event.x, + y: event.y + }); + } + let columns = [] + targetNodeModel.columns.forEach(item => { + let column = { + columnName: item.columnName, + columnComment: item.columnComment + } + columns.push(column) + }) + self.graph.updateItem(self.drawEdge.currentLine, { + target: targetNodeModel.id, + relationalItem: relationalItem, + targetAnchor: targetAnchor ? targetAnchor.anchorIndex : "", + targetColumn: columns, + }); + + // ************** 记录historyData的逻辑 start ************** + if (self.historyData) { + let graph = self.graph; + // 如果当前点过【撤销】了,拖拽节点后没有【重做】功能 + // 重置undoCount,拖拽后的数据给(当前所在historyIndex + 1),且清空这个时间点之后的记录 + if (vm.getUndoCount() > 0) { + vm.editHistoryIndex(vm.getHistoryIndex() - vm.getUndoCount()); // 此时的historyIndex应当更新为【撤销】后所在的索引位置 + for (let i = 1; i <= vm.getUndoCount(); i++) { + let key = `graph_history_${vm.getHistoryIndex() + i}`; + vm.removeHistoryData(key); + } + vm.editUndoCount(0) + } else { + // 正常顺序执行的情况,记录拖拽线 前的数据状态 + let key = `graph_history_${vm.getHistoryIndex()}`; + vm.addHistoryData(key, self.historyData); + } + // 记录拖线后的数据状态 + const index = vm.getHistoryIndex() + 1; + vm.editHistoryIndex(index); + let key = `graph_history_${index}`; + let currentData = JSON.stringify(graph.save()); + vm.addHistoryData(key, currentData); + } + } else { + if (self.evtInfo.node.getModel().tableId === targetNodeModel.tableId) { + ElMessage.warning("不可连接自身") + } else { + ElMessage.warning("两表之间无关联关系") + } + self.graph.removeItem(self.drawEdge.currentLine); + } + // ************** 记录historyData的逻辑 end ************** + } + } + self.drawEdge.currentLine = null; + self.drawEdge.isMoving = false; + self.evtInfo = null; + } + } + } +}; diff --git a/src/views/custom-query/topo/top/behavior/drag-event-edit.js b/src/views/custom-query/topo/top/behavior/drag-event-edit.js new file mode 100644 index 0000000..10cfd43 --- /dev/null +++ b/src/views/custom-query/topo/top/behavior/drag-event-edit.js @@ -0,0 +1,57 @@ +/** + * @author: clay + * @data: 2019/07/16 + * @description: edit mode: 鼠标拖动节点的交互(记录拖拽前后的数据,用于【撤销】和【重做】) + */ + +// 用来获取调用此js的vue组件实例(this) +let vm = null +let historyData = null + +const sendThis = (_this) => { + vm = _this +} + +export default { + sendThis, // 暴露函数 + name: 'drag-event-edit', + options: { + getEvents() { + return { + 'node:dragstart': 'onNodeDragstart', + 'node:dragend': 'onNodeDragend' + } + }, + onNodeDragstart() { + let graph = vm.getGraph() + if(graph.cfg){ + historyData = JSON.stringify(graph.save()) + } + }, + onNodeDragend() { + if (historyData) { + let graph = vm.getGraph() + // 如果当前点过【撤销】了,拖拽节点后没有【重做】功能 + // 重置undoCount,拖拽后的数据给(当前所在historyIndex + 1),且清空这个时间点之后的记录 + if (vm.getUndoCount() > 0) { + vm.editHistoryIndex( vm.getHistoryIndex() - vm.getUndoCount()) // 此时的historyIndex应当更新为【撤销】后所在的索引位置 + for (let i = 1; i <= vm.getUndoCount(); i++) { + let key = `graph_history_${vm.getHistoryIndex() + i}` + vm.removeHistoryData(key) + } + vm.editUndoCount(0); + } else { + // 正常顺序执行的情况,记录拖拽前的数据状态 + let key = `graph_history_${vm.getHistoryIndex()}` + vm.addHistoryData(key, historyData) + } + // 记录拖拽后的数据状态 + const index=vm.getHistoryIndex()+ 1; + vm.editHistoryIndex(index); + let key = `graph_history_${index}` + let currentData = JSON.stringify(graph.save()) + vm.addHistoryData(key, currentData) + } + } + } +} diff --git a/src/views/custom-query/topo/top/behavior/hover-event-edit.js b/src/views/custom-query/topo/top/behavior/hover-event-edit.js new file mode 100644 index 0000000..c6bf0e6 --- /dev/null +++ b/src/views/custom-query/topo/top/behavior/hover-event-edit.js @@ -0,0 +1,66 @@ +/** + * @author: clay + * @data: 2019/07/16 + * @description: edit mode: 悬浮交互 + */ +// 用来获取调用此js的vue组件实例(this) +let vm = null; +let hourItem = null; +const sendThis = (topo) => { + vm = topo; +}; +export default { + sendThis, // 暴露函数 + name: "hover-event-edit", + options: { + getEvents() { + return { + "node:mouseover": "onNodeHover", + // "node:mouseout": "onNodeOut", + // "mouseleave":"onNodeLeave", + }; + }, + onNodeHover(event) { + let graph = vm.getGraph(); + let hoverNode = event.item; + const name = event.shape.get("name");//todo ?? + const item = event.item; + if (name && name.startsWith("item")) { + graph.updateItem(item, {//更新元素,包括更新数据、样式等 + selectedIndex: Number(name.split("-")[1]) + }); + } else { + graph.updateItem(item, { + selectedIndex: NaN + }); + } + if (name && name.startsWith("marker")) { + hoverNode.setState("hover", true, graph); + hourItem=hoverNode; + }else { + if (hourItem!=null){ + hourItem.setState("hover", false) + } + } + }, + // onNodeOut(event) { + // console.log('移出节点') + // const name = event.shape.get("name"); + // let hoverNode = event.item; + // console.log('name',name) + // if (name && name.startsWith("marker")) { + // hoverNode.setState("hover", false); + // } + // if (hourItem!=null){ + // hourItem.setState("hover", false) + // } + // hoverNode.setState("hover", false); + // }, + // onNodeLeave(event) { + // console.log('移出节点2') + // if (hourItem!=null){ + // hourItem.setState("hover", false) + // } + // } + } +}; diff --git a/src/views/custom-query/topo/top/behavior/index.js b/src/views/custom-query/topo/top/behavior/index.js new file mode 100644 index 0000000..c67b1b0 --- /dev/null +++ b/src/views/custom-query/topo/top/behavior/index.js @@ -0,0 +1,30 @@ +/** + * @author: clay + * @data: 2019/07/16 + * @description: register behaviors + */ + +import dragAddEdge from './drag-add-edge' +import hoverEventEdit from './hover-event-edit' +import dragEventEdit from './drag-event-edit' +import keyupEventEdit from './keyup-event-edit' +import clickErNode from './click-er-node' +import clickErEdge from './click-er-edge' + +const obj = { + dragAddEdge, + hoverEventEdit, + dragEventEdit, + keyupEventEdit, + clickErNode, + clickErEdge +} + +export default { + obj, + register(G6) { + Object.values(obj).map(item => { + G6.registerBehavior(item.name, item.options) + }) + } +} diff --git a/src/views/custom-query/topo/top/behavior/keyup-event-edit.js b/src/views/custom-query/topo/top/behavior/keyup-event-edit.js new file mode 100644 index 0000000..181bd83 --- /dev/null +++ b/src/views/custom-query/topo/top/behavior/keyup-event-edit.js @@ -0,0 +1,67 @@ +/** + * @author: clay + * @data: 2019/07/16 + * @description: edit mode: 键盘事件的交互,主要是删除节点和连线(记录删除前后的数据,用于【撤销】和【重做】) + */ + +// 用来获取调用此js的vue组件实例(this) +let vm = null; + +const sendThis = (_this) => { + vm = _this; +}; + +export default { + sendThis, // 暴露函数 + name: "keyup-event-edit", + options: { + getEvents() { + return { + "keyup": "onKeyup", + "keydown": "onKeydown", + }; + }, + onKeyup(event) { + let graph = vm.getGraph(); + let selectedNodes = graph.findAllByState("node", "selected"); + let selectedEdges = graph.findAllByState("edge", "selected"); + //按住键盘delete-46删除功能 + if (event.keyCode === 46 && (selectedNodes.length > 0 || selectedEdges.length > 0)) { + // ************** 记录【删除】前的数据状态 start ************** + let historyData = JSON.stringify(graph.save()); + let key = `graph_history_${vm.getHistoryIndex()}`; + vm.addHistoryData(key, historyData); + // ************** 记录【删除】前的数据状态 end ************** + + // 开始删除 + selectedNodes.forEach(item=>graph.removeItem(item)) + selectedEdges.forEach(item=>graph.removeItem(item)) + // ************** 记录【删除】后的数据状态 start ************** + // 如果当前点过【撤销】了,拖拽节点后将取消【重做】功能 + // 重置undoCount,【删除】后的数据状态给(当前所在historyIndex + 1),且清空这个时间点之后的记录 + if (vm.getUndoCount() > 0) { + vm.editHistoryIndex( vm.getHistoryIndex() - vm.getUndoCount()); // 此时的historyIndex应当更新为【撤销】后所在的索引位置 + for (let i = 1; i <= vm.getUndoCount(); i++) { + let key = `graph_history_${vm.getHistoryIndex() + i}`; + vm.removeHistoryData(key); + } + vm.editUndoCount(0); + } + // 记录【删除】后的数据状态 + const index=vm.getHistoryIndex()+ 1; + vm.editHistoryIndex(index); + key = `graph_history_${index}`; + let currentData = JSON.stringify(graph.save()); + vm.addHistoryData(key, currentData); + // ************** 记录【删除】后的数据状态 end ************** + } else if (event.keyCode == 17) {//ctrl键,将状态传给父组件,在clickErNode里面编写功能(按住ctrl,滚动后放大缩小ER图) + vm.editClickCtrl(false)//松开则为false + } + }, + onKeydown(event) { + if (event.keyCode == 17) {//ctrl键 + vm.editClickCtrl(true)//为true时:一直按着ctrl,以实现滚轮放大缩小功能 + } + } + } +}; diff --git a/src/views/custom-query/topo/top/components/FooterBar.vue b/src/views/custom-query/topo/top/components/FooterBar.vue new file mode 100644 index 0000000..4f5e008 --- /dev/null +++ b/src/views/custom-query/topo/top/components/FooterBar.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/views/custom-query/topo/top/components/HeaderBar.vue b/src/views/custom-query/topo/top/components/HeaderBar.vue new file mode 100644 index 0000000..eb4df07 --- /dev/null +++ b/src/views/custom-query/topo/top/components/HeaderBar.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/views/custom-query/topo/top/config/edge.js b/src/views/custom-query/topo/top/config/edge.js new file mode 100644 index 0000000..e908144 --- /dev/null +++ b/src/views/custom-query/topo/top/config/edge.js @@ -0,0 +1,13 @@ +/** + * @author: clay + * @data: 2019/08/16 + * @description: 线条的后期设置 + */ + +export default { + type: 'top-cubic', + style: { + startArrow: false, + endArrow: true + } +} diff --git a/src/views/custom-query/topo/top/config/index.js b/src/views/custom-query/topo/top/config/index.js new file mode 100644 index 0000000..abed973 --- /dev/null +++ b/src/views/custom-query/topo/top/config/index.js @@ -0,0 +1,11 @@ +/** + * @author: clay + * @data: 2019/08/16 + * @description: 配置 + */ + +import edge from './edge' + +export default { + edge +} diff --git a/src/views/custom-query/topo/top/edge/base.js b/src/views/custom-query/topo/top/edge/base.js new file mode 100644 index 0000000..f2b5599 --- /dev/null +++ b/src/views/custom-query/topo/top/edge/base.js @@ -0,0 +1,30 @@ +/** + * @author: Clay + * @data: 2019/07/18 + * @description: 线公共方法 + */ + +import utils from '../../utils' + +export default { + draw(cfg, group) { + const { startPoint, endPoint } = cfg + const keyShape = group.addShape('path', { + className: 'edge-shape', + attrs: { + ...cfg.style, + path: [ + ['M', startPoint.x, startPoint.y], + ['L', endPoint.x, endPoint.y] + ] + }, + name: 'edge-shape' + }) + keyShape.attrs.endArrow = true + return keyShape + }, + setState(name, value, item) { + // 设置边状态 + utils.edge.setState(name, value, item) + } +} diff --git a/src/views/custom-query/topo/top/edge/index.js b/src/views/custom-query/topo/top/edge/index.js new file mode 100644 index 0000000..bcbbbe4 --- /dev/null +++ b/src/views/custom-query/topo/top/edge/index.js @@ -0,0 +1,18 @@ +/** + * @author: clay + * @data: 2019/07/18 + * @description: register edges + */ + + +import topCubic from './top-cubic' + +const obj = { + topCubic +} + +export default function(G6) { + Object.values(obj).map(item => { + G6.registerEdge(item.name, item.options, item.extendName) + }) +} diff --git a/src/views/custom-query/topo/top/edge/top-cubic.js b/src/views/custom-query/topo/top/edge/top-cubic.js new file mode 100644 index 0000000..c53d53f --- /dev/null +++ b/src/views/custom-query/topo/top/edge/top-cubic.js @@ -0,0 +1,14 @@ +/** + * @author: Clay + * @data: 2019/07/18 + * @description: 曲线 + */ + +import base from './base' +export default { + name: 'top-cubic', + extendName: 'cubic', + options: { + ...base + } +} diff --git a/src/views/custom-query/topo/top/elements/button.vue b/src/views/custom-query/topo/top/elements/button.vue new file mode 100644 index 0000000..f9969c1 --- /dev/null +++ b/src/views/custom-query/topo/top/elements/button.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/views/custom-query/topo/top/elements/checkbox.vue b/src/views/custom-query/topo/top/elements/checkbox.vue new file mode 100644 index 0000000..b32dc05 --- /dev/null +++ b/src/views/custom-query/topo/top/elements/checkbox.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/views/custom-query/topo/top/elements/dropdown.vue b/src/views/custom-query/topo/top/elements/dropdown.vue new file mode 100644 index 0000000..4e995c3 --- /dev/null +++ b/src/views/custom-query/topo/top/elements/dropdown.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/views/custom-query/topo/top/elements/index.js b/src/views/custom-query/topo/top/elements/index.js new file mode 100644 index 0000000..ff793df --- /dev/null +++ b/src/views/custom-query/topo/top/elements/index.js @@ -0,0 +1,17 @@ +/** + * @author: clay + * @data: 2019/11/14 + * @description: ClayTop内部的通用组件 + */ + +import Checkbox from './checkbox.vue' +import Button from './button.vue' +import Dropdown from './dropdown.vue' +import Loading from './loading.vue' + +export { + Checkbox, + Button, + Dropdown, + Loading +} diff --git a/src/views/custom-query/topo/top/elements/loading.vue b/src/views/custom-query/topo/top/elements/loading.vue new file mode 100644 index 0000000..fc14dd1 --- /dev/null +++ b/src/views/custom-query/topo/top/elements/loading.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/views/custom-query/topo/top/graph/index.js b/src/views/custom-query/topo/top/graph/index.js new file mode 100644 index 0000000..7f9801d --- /dev/null +++ b/src/views/custom-query/topo/top/graph/index.js @@ -0,0 +1,162 @@ +/** + * @author: clay + * @data: 2019/07/05 + * @description: 图的布局方式/图的初始化 + */ + +// import d3 from '../plugins/d3-installer' +import * as d3 from 'd3' +import theme from '../theme' + +/** + * 图的布局方式/图的初始化 + * @type {{commonGraph: (function(*, *): G6.Graph)}} + */ +const initGraph = { + /** + * 一般布局 + * @param G6 + * @param options + * @returns {G6.Graph} + */ + commonGraph: function(G6, options) { + let graphData = options.graphData + let themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + // 生成G6实例 + let graph = new G6.Graph({ + plugins: options.plugins,//向 graph 注册插件 + container: options.container,//图的 DOM 容器,可以传入该 DOM 的 id 或者直接传入容器的 HTML 节点对象。 + width: options.width,//指定画布宽度,单位为 'px',默认为画布容器宽度。 + height: options.height,//指定画布高度 + // layout: { + // type: 'random', + // width: options.width, + // height: options.height + // }, + defaultNode: {//默认状态下节点的配置 + type: 'dice-er-box', + labelCfg: { + position: 'bottom' + } + }, + defaultEdge: {//默认状态下线的配置 + type: 'top-cubic', + labelCfg: { + position: 'center', + autoRotate: false + } + }, + nodeStateStyles: themeStyle.nodeStyle,//各个状态下节点的样式 + // nodeStyle: { + // selected: { + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + // } + // }, + edgeStateStyles:{ + edgeStyle: { + default: { + stroke: '#e2e2e2', + lineWidth: 3, + lineAppendWidth: 10 + }, + selected: { + shadowColor: '#626262', + shadowBlur: 3 + } + }, + },//各个状态下边的样式 + modes: options.modes//设置画布的交互模式 + }) + // 将 read 方法分解成 data() 和 render 方法,便于整个生命周期的管理 + graph.read(graphData) + // 渲染图 + graph.render() + // 返回G6实例 + return graph + }, + /** + * 力导布局 + * @param G6 + * @param options + * @returns {*} + */ + forceLayoutGraph: function(resolve, G6, options) { + let graphData = options.graphData + let themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + // 生成G6实例 + let graph = new G6.Graph({ + container: options.container, + width: options.width, + height: options.height, + nodeStateStyles: themeStyle.nodeStyle, + edgeStateStyles: themeStyle.edgeStyle + }) + // 初始化力导布局 + let simulation = d3 + .forceSimulation() + .force( + 'link', + d3 + .forceLink() + .id(function(d) { + return d.id + }) + .distance(linkDistance) + .strength(0.5) + ) + .force('charge', d3.forceManyBody().strength(-500).distanceMax(500).distanceMin(100)) + .force('center', d3.forceCenter(options.width / 2, options.height / 2)) + // 定义节点数据 + simulation.nodes(graphData.nodes).on('tick', ticked) + // 定义连线数据 + let edges = [] + for (let i = 0; i < graphData.edges.length; i++) { + edges.push({ + id: graphData.edges[i].id, + source: graphData.edges[i].source, + target: graphData.edges[i].target + }) + } + simulation.force('link').links(edges) + graph.data(graphData) + graph.render() + + function linkDistance(d) { + return 150 + } + + function ticked() { + // protect: planA: 移除事件监听器 planB: 手动停止力模拟 + if (graph.destroyed) { + // simulation.nodes(graphData.nodes).on('tick', null) + simulation.stop() + return + } + if (!graph.get('data')) { + // 若是第一次渲染,定义数据,渲染 + graph.data(graphData) + graph.render() + } else { + // 后续渲染,直接刷新所有点和边的位置 + graph.refreshPositions() + } + } + + // 控制时间: 只布局10秒 + let t = setTimeout(function() { + simulation.stop() + resolve(graph) + }, 10000) + + // 判断force-layout结束 + simulation.on('end', () => { + clearTimeout(t) + resolve(graph) + }) + } +} + +export default initGraph diff --git a/src/views/custom-query/topo/top/index.vue b/src/views/custom-query/topo/top/index.vue new file mode 100644 index 0000000..fa3d9fc --- /dev/null +++ b/src/views/custom-query/topo/top/index.vue @@ -0,0 +1,12 @@ + + + diff --git a/src/views/custom-query/topo/top/node/dice-er-box.js b/src/views/custom-query/topo/top/node/dice-er-box.js new file mode 100644 index 0000000..41bd657 --- /dev/null +++ b/src/views/custom-query/topo/top/node/dice-er-box.js @@ -0,0 +1,302 @@ +/** + * @author: clay + * @data: 2021/5/15 0:16 + * @email: clay@hchyun.com + * @description: draw anchor 绘制锚点 + */ +import utils from '../../utils/index' + +const itemHeight = 30; +export default { + name: 'dice-er-box', + options: { + /** + * 响应节点的状态变化。 + * 在需要使用动画来响应状态变化时需要被复写 + * @param {String} name 状态名称 + * @param {Object} value 状态值 + * @param {item} item 节点 + */ + setState(name, value, item) { + // 设置节点状态 + utils.node.setState(name, value, item); + // 设置锚点状态 + utils.anchor.setState(name, value, item); + }, + draw(cfg, group) { + const width = 250; + const height = 316; + const itemCount = 10; + const boxStyle = { + stroke: "#096DD9", + radius: 4, + }; + + const { + columns = [], + startIndex = 0, + selectedIndex, + collapsed, + icon, + } = cfg; + const list = columns; + const afterList = list.slice( + Math.floor(startIndex), + Math.floor(startIndex + itemCount - 1) + ); + const offsetY = (0.5 - (startIndex % 1)) * itemHeight + 30; + + //设置表名的容器 + group.addShape("rect", { + attrs: { + fill: boxStyle.stroke, + height: 30, + width, + radius: [boxStyle.radius, boxStyle.radius, 0, 0], + }, + draggable: true, + }); + + //设置左侧字体的边距 + let fontLeft = 12; + + // 设置图标 + if (icon && icon.show !== false) { + group.addShape("image", { + attrs: { + x: 8, + y: 8, + height: 16, + width: 16, + ...icon, + }, + }); + fontLeft += 18; + } + + //设置表名 + group.addShape("text", { + attrs: { + y: 22, + x: fontLeft, + fill: "#fff", + text: cfg.label, + fontSize: 12, + fontWeight: 500, + }, + }); + + //设置收缩部分的容器 + group.addShape("rect", { + attrs: { + x: 0, + y: collapsed ? 30 : 300, + height: 15, + width, + fill: "#eee", + radius: [0, 0, boxStyle.radius, boxStyle.radius], + cursor: "pointer", + }, + name: collapsed ? "expand" : "collapse", + }); + + //设置收缩显示字符 + group.addShape("text", { + attrs: { + x: width / 2 - 6, + y: (collapsed ? 30 : 300) + 12, + text: collapsed ? "+" : "-", + width, + fill: "#000", + radius: [0, 0, boxStyle.radius, boxStyle.radius], + cursor: "pointer", + }, + name: collapsed ? "expand" : "collapse", + }); + + //设置外边框 + const keyshape = group.addShape("rect", { + attrs: { + name: 'border', + x: 0, + y: 0, + width, + height: collapsed ? 45 : height, + ...boxStyle, + }, + //是否被允许拖拽 + draggable: true + }); + + //如果收缩状态,则返回当前图形 + if (collapsed) { + return keyshape; + } + //添加空白组 + const listContainer = group.addGroup({}); + //todo 设置裁剪对象,字体加粗? + listContainer.setClip({ + type: "rect", + attrs: { + x: -8, + y: 30, + width: width + 16, + height: 300 - 30, + }, + }); + listContainer.addShape({ + type: "rect", + attrs: { + x: 1, + y: 30, + width: width - 2, + height: 300 - 30, + fill: "#fff", + }, + draggable: true, + }); + + //如果list中的column字段超过10个 + if (list.length > itemCount) { + const barStyle = { + width: 4, + padding: 0, + boxStyle: { + stroke: "#00000022", + }, + innerStyle: { + fill: "#00000022", + }, + }; + + listContainer.addShape("rect", { + attrs: { + y: 30, + x: width - barStyle.padding - barStyle.width, + width: barStyle.width, + height: height - 30, + ...barStyle.boxStyle, + }, + }); + + //设置矩形高度 + const indexHeight = + afterList.length > itemCount ? + (afterList.length / list.length) * height : + 10; + + listContainer.addShape("rect", { + attrs: { + y: 30 + + barStyle.padding + + (startIndex / (list.length-8)) * (height - 30), + x: width - barStyle.padding - barStyle.width, + width: barStyle.width, + height: Math.min(height, indexHeight), + ...barStyle.innerStyle, + }, + }); + } + //渲染显示区域 + if (afterList) { + afterList.forEach((e, i) => { + //设置选中的列 + const isSelected = Math.floor(startIndex) + i === Number(selectedIndex); + let { + columnName = "", columnType,columnComment + } = e; + if (columnComment){ + columnName+= " : " + columnComment + } + if (columnType) { + columnName += " - " + columnType; + } + const label = columnName.length > 26 ? columnName.slice(0, 24) + "..." : columnName; + + listContainer.addShape("rect", { + attrs: { + x: 1, + y: i * itemHeight - itemHeight / 2 + offsetY, + width: width - 4, + height: itemHeight, + radius: 2, + fill:isSelected ? "#ddd" : "#fff", + lineWidth: 1, + cursor: "pointer", + }, + name: `item-${Math.floor(startIndex) + i}-content`, + draggable: true, + }); + + listContainer.addShape("text", { + attrs: { + x: 12, + y: i * itemHeight + offsetY + 6, + text: label, + fontSize: 12, + fill: "#000", + fontFamily: "Avenir,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol", + full: e, + fontWeight: isSelected ? 500 : 100, + cursor: "pointer", + }, + name: `item-${Math.floor(startIndex) + i}`, + }); + + //未来设置字段之间有锚点 + // if (!cfg.hideDot) { + // utils.anchor.erDrawLeft(group, label, 0, i * itemHeight + offsetY) + // utils.anchor.erDrawLeft(group,label,width,i * itemHeight + offsetY) + // listContainer.addShape("marker", { + // attrs: { + // x: 0, + // y: i * itemHeight + offsetY, + // r: 3, + // stroke: boxStyle.stroke, + // fill: "white", + // radius: 2, + // lineWidth: 1, + // cursor: "crosshair", + // }, + // + // name: 'marker-shape' + // }); + // listContainer.addShape("marker", { + // attrs: { + // x: width, + // y: i * itemHeight + offsetY, + // r: 3, + // stroke: boxStyle.stroke, + // fill: "white", + // radius: 2, + // lineWidth: 1, + // cursor: "crosshair", + // + // + // }, + // name: 'marker-shape' + // }); + // } + }); + } + return keyshape; + }, + // getAnchorPoints() { + // return [ + // [0, 0], + // [1, 0], + // ]; + // }, + // 绘制后附加锚点 + afterDraw(cfg, group) { + // 绘制锚点 + utils.anchor.drawMark(cfg, group) + }, + + } +} + + + + + diff --git a/src/views/custom-query/topo/top/node/index.js b/src/views/custom-query/topo/top/node/index.js new file mode 100644 index 0000000..7ed5492 --- /dev/null +++ b/src/views/custom-query/topo/top/node/index.js @@ -0,0 +1,20 @@ +/** + * @author: clay + * @data: 2019/07/05 + * @description: register nodes + */ + + +import diceErBox from './dice-er-box' +const obj = { + diceErBox +} + +export default { + obj, + register(G6) { + Object.values(obj).map(item => { + G6.registerNode(item.name, item.options, item.extendName) + }) + } +} diff --git a/src/views/custom-query/topo/top/theme/dark-style.js b/src/views/custom-query/topo/top/theme/dark-style.js new file mode 100644 index 0000000..5c04978 --- /dev/null +++ b/src/views/custom-query/topo/top/theme/dark-style.js @@ -0,0 +1,177 @@ +/** + * @author: clay + * @data: 2019/11/20 + * @description: dark style + */ + +export default { + // 节点样式 + nodeStyle: { + default: { + stroke: '#CED4D9', + fill: 'transparent', + shadowOffsetX: 0, + shadowOffsetY: 4, + shadowBlur: 10, + shadowColor: 'rgba(13, 26, 38, 0.08)', + lineWidth: 1, + radius: 4, + strokeOpacity: 0.7 + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + }, + unselected: { + shadowColor: '' + } + }, + //todo 节点标签样式??修改不起 + nodeLabelCfg: { + positions: 'center', + style: { + fill: '#fff' + } + }, + // 连线样式 + edgeStyle: { + default: { + stroke: '#000000', + lineWidth: 2, + strokeOpacity: 0.92, + lineAppendWidth: 10 + // endArrow: true + }, + active: { + shadowColor: 'red', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + inactive: { + shadowColor: '' + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + unselected: { + shadowColor: '' + } + }, + // 锚点样式 + anchorStyle: { + default: { + radius: 3, + symbol: 'circle', + fill: '#FFFFFF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 1, + strokeOpacity: 1 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + // 锚点背景样式 + anchorBgStyle: { + default: { + radius: 10, + symbol: 'circle', + fill: '#1890FF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + + + nodeActivedOutterStyle: { lineWidth: 0 }, + groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 }, + nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' }, + groupActivedStyle: { stroke: '#1890FF' }, + edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' }, + nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 }, + groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 }, + + groupBackgroundPadding: [40, 10, 10, 10], + groupLabelOffsetX: 10, + groupLabelOffsetY: 10, + edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + edgeLabelRectPadding: 4, + edgeLabelRectStyle: { fill: 'white' }, + nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + groupStyle: { stroke: '#CED4D9', radius: 4 }, + groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' }, + multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 }, + dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 }, + dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 }, + anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 }, + anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 }, + anchorHotsoptActivedStyle: { radius: 14 }, + anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' }, + nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' }, + edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 }, + nodeSelectedBoxStyle: { stroke: '#C2C2C2' }, + cursor: { + panningCanvas: '-webkit-grabbing', + beforePanCanvas: '-webkit-grab', + hoverNode: 'move', + hoverEffectiveAnchor: 'crosshair', + hoverEdge: 'default', + hoverGroup: 'move', + hoverUnEffectiveAnchor: 'default', + hoverEdgeControllPoint: 'crosshair', + multiSelect: 'crosshair' + }, + nodeDelegationStyle: { + stroke: '#1890FF', + fill: '#1890FF', + fillOpacity: .08, + lineDash: [4, 4], + radius: 4, + lineWidth: 1 + }, + edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 } +} diff --git a/src/views/custom-query/topo/top/theme/default-style.js b/src/views/custom-query/topo/top/theme/default-style.js new file mode 100644 index 0000000..7838462 --- /dev/null +++ b/src/views/custom-query/topo/top/theme/default-style.js @@ -0,0 +1,179 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: default style + */ + +export default { + // 节点样式 + nodeStyle: { + default: { + stroke: '#CED4D9', + fill: 'transparent', + // shadowOffsetX: 0, + // shadowOffsetY: 4, + shadowBlur: 10, + shadowColor: 'rgba(13, 26, 38, 0.08)', + lineWidth: 1, + radius: 4, + strokeOpacity: 0.7 + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 2, + // shadowOffsetX: 0, + // shadowOffsetY: 0, + // fontSize:'50' + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + }, + unselected: { + shadowColor: '' + } + }, + // 节点标签样式 + nodeLabelCfg: { + positions: 'center', + style: { + fill: '#000' + } + }, + // 连线样式 + edgeStyle: { + default: { + stroke: '#A3B1BF', + lineWidth: 2, + strokeOpacity: 0.92, + lineAppendWidth: 10 + // endArrow: true + }, + active: { + shadowColor: 'red', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + inactive: { + shadowColor: '' + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + unselected: { + shadowColor: '' + } + }, + // 锚点样式 + anchorStyle: { + default: { + r: 3, + symbol: 'circle', + lineWidth: 1, + fill: '#FFFFFF', + fillOpacity: 1, + stroke: '#096DD9', + strokeOpacity: 1, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 1, + strokeOpacity: 1 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + // 锚点背景样式 + anchorBgStyle: { + default: { + r: 10, + symbol: 'circle', + fill: '#1890FF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + + + nodeActivedOutterStyle: { lineWidth: 0 }, + groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 }, + nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' }, + groupActivedStyle: { stroke: '#1890FF' }, + edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' }, + nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 }, + groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 }, + + groupBackgroundPadding: [40, 10, 10, 10], + groupLabelOffsetX: 10, + groupLabelOffsetY: 10, + edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + edgeLabelRectPadding: 4, + edgeLabelRectStyle: { fill: 'white' }, + nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + groupStyle: { stroke: '#CED4D9', radius: 4 }, + groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' }, + multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 }, + dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 }, + dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 }, + anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 }, + anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 }, + anchorHotsoptActivedStyle: { radius: 14 }, + anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' }, + nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' }, + edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 }, + nodeSelectedBoxStyle: { stroke: '#C2C2C2' }, + cursor: { + panningCanvas: '-webkit-grabbing', + beforePanCanvas: '-webkit-grab', + hoverNode: 'move', + hoverEffectiveAnchor: 'crosshair', + hoverEdge: 'default', + hoverGroup: 'move', + hoverUnEffectiveAnchor: 'default', + hoverEdgeControllPoint: 'crosshair', + multiSelect: 'crosshair' + }, + nodeDelegationStyle: { + stroke: '#1890FF', + fill: '#1890FF', + fillOpacity: .08, + lineDash: [4, 4], + radius: 4, + lineWidth: 1 + }, + edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 } +} diff --git a/src/views/custom-query/topo/top/theme/index.js b/src/views/custom-query/topo/top/theme/index.js new file mode 100644 index 0000000..02e514a --- /dev/null +++ b/src/views/custom-query/topo/top/theme/index.js @@ -0,0 +1,15 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: 编辑器主题样式 - 节点、连线的预设样式 + */ + +import defaultStyle from './default-style' +import darkStyle from './dark-style' +import officeStyle from './office-style' + +export default { + defaultStyle, + darkStyle, + officeStyle +} diff --git a/src/views/custom-query/topo/top/theme/office-style.js b/src/views/custom-query/topo/top/theme/office-style.js new file mode 100644 index 0000000..b1e21a7 --- /dev/null +++ b/src/views/custom-query/topo/top/theme/office-style.js @@ -0,0 +1,177 @@ +/** + * @author: clay + * @data: 2019/11/21 + * @description: office style + */ + +export default { + // 节点样式 + nodeStyle: { + default: { + stroke: '#CED4D9', + fill: '#FFFFFF', + shadowOffsetX: 0, + shadowOffsetY: 4, + shadowBlur: 10, + shadowColor: 'rgba(13, 26, 38, 0.08)', + lineWidth: 1, + radius: 4, + strokeOpacity: 0.7 + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 1, + shadowOffsetY: 1 + // shadowColor: '#626262', + // shadowBlur: 8, + // shadowOffsetX: -1, + // shadowOffsetY: 3 + }, + unselected: { + shadowColor: '' + } + }, + // 节点标签样式 + nodeLabelCfg: { + positions: 'center', + style: { + fill: '#000' + } + }, + // 连线样式 + edgeStyle: { + default: { + stroke: '#41c23a', + lineWidth: 2, + strokeOpacity: 0.92, + lineAppendWidth: 10 + // endArrow: true + }, + active: { + shadowColor: 'red', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + inactive: { + shadowColor: '' + }, + selected: { + shadowColor: '#ff240b', + shadowBlur: 4, + shadowOffsetX: 0, + shadowOffsetY: 0 + }, + unselected: { + shadowColor: '' + } + }, + // 锚点样式 + anchorStyle: { + default: { + radius: 3, + symbol: 'circle', + fill: '#FFFFFF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 1, + strokeOpacity: 1 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + // 锚点背景样式 + anchorBgStyle: { + default: { + radius: 10, + symbol: 'circle', + fill: '#1890FF', + fillOpacity: 0, + stroke: '#1890FF', + strokeOpacity: 0, + cursor: 'crosshair' + }, + hover: { + fillOpacity: 1, + strokeOpacity: 1 + }, + unhover: { + fillOpacity: 0, + strokeOpacity: 0 + }, + active: { + fillOpacity: 0.3, + strokeOpacity: 0.5 + }, + inactive: { + fillOpacity: 0, + strokeOpacity: 0 + } + }, + + + nodeActivedOutterStyle: { lineWidth: 0 }, + groupSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + nodeSelectedOutterStyle: { stroke: '#E0F0FF', lineWidth: 2 }, + edgeActivedStyle: { stroke: '#1890FF', strokeOpacity: .92 }, + nodeActivedStyle: { fill: '#F3F9FF', stroke: '#1890FF' }, + groupActivedStyle: { stroke: '#1890FF' }, + edgeSelectedStyle: { lineWidth: 2, strokeOpacity: .92, stroke: '#A3B1BF' }, + nodeSelectedStyle: { fill: '#F3F9FF', stroke: '#1890FF', fillOpacity: .4 }, + groupSelectedStyle: { stroke: '#1890FF', fillOpacity: .92 }, + + groupBackgroundPadding: [40, 10, 10, 10], + groupLabelOffsetX: 10, + groupLabelOffsetY: 10, + edgeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + edgeLabelRectPadding: 4, + edgeLabelRectStyle: { fill: 'white' }, + nodeLabelStyle: { fill: '#666', textAlign: 'center', textBaseline: 'middle' }, + groupStyle: { stroke: '#CED4D9', radius: 4 }, + groupLabelStyle: { fill: '#666', textAlign: 'left', textBaseline: 'top' }, + multiSelectRectStyle: { fill: '#1890FF', fillOpacity: .08, stroke: '#1890FF', opacity: .1 }, + dragNodeHoverToGroupStyle: { stroke: '#1890FF', lineWidth: 2 }, + dragNodeLeaveFromGroupStyle: { stroke: '#BAE7FF', lineWidth: 2 }, + anchorPointStyle: { radius: 3.5, fill: '#fff', stroke: '#1890FF', lineAppendWidth: 12 }, + anchorHotsoptStyle: { radius: 12, fill: '#1890FF', fillOpacity: .25 }, + anchorHotsoptActivedStyle: { radius: 14 }, + anchorPointHoverStyle: { radius: 4, fill: '#1890FF', fillOpacity: 1, stroke: '#1890FF' }, + nodeControlPointStyle: { radius: 4, fill: '#fff', shadowBlur: 4, shadowColor: '#666' }, + edgeControlPointStyle: { radius: 6, symbol: 'square', lineAppendWidth: 6, fillOpacity: 0, strokeOpacity: 0 }, + nodeSelectedBoxStyle: { stroke: '#C2C2C2' }, + cursor: { + panningCanvas: '-webkit-grabbing', + beforePanCanvas: '-webkit-grab', + hoverNode: 'move', + hoverEffectiveAnchor: 'crosshair', + hoverEdge: 'default', + hoverGroup: 'move', + hoverUnEffectiveAnchor: 'default', + hoverEdgeControllPoint: 'crosshair', + multiSelect: 'crosshair' + }, + nodeDelegationStyle: { + stroke: '#1890FF', + fill: '#1890FF', + fillOpacity: .08, + lineDash: [4, 4], + radius: 4, + lineWidth: 1 + }, + edgeDelegationStyle: { stroke: '#1890FF', lineDash: [4, 4], lineWidth: 1 } +} diff --git a/src/views/custom-query/topo/top/toolbar-edit.vue b/src/views/custom-query/topo/top/toolbar-edit.vue new file mode 100644 index 0000000..57c9163 --- /dev/null +++ b/src/views/custom-query/topo/top/toolbar-edit.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/src/views/custom-query/topo/top/toolbar-preview.vue b/src/views/custom-query/topo/top/toolbar-preview.vue new file mode 100644 index 0000000..dadfb70 --- /dev/null +++ b/src/views/custom-query/topo/top/toolbar-preview.vue @@ -0,0 +1,183 @@ + + + + + diff --git a/src/views/custom-query/topo/top/topology.vue b/src/views/custom-query/topo/top/topology.vue new file mode 100644 index 0000000..bbf7134 --- /dev/null +++ b/src/views/custom-query/topo/top/topology.vue @@ -0,0 +1,1808 @@ + + + + + + diff --git a/src/views/custom-query/topo/topologyDesign.vue b/src/views/custom-query/topo/topologyDesign.vue new file mode 100644 index 0000000..aedb4b9 --- /dev/null +++ b/src/views/custom-query/topo/topologyDesign.vue @@ -0,0 +1,312 @@ + + + + + + + diff --git a/src/views/custom-query/topo/utils/anchor/draw_mark.js b/src/views/custom-query/topo/utils/anchor/draw_mark.js new file mode 100644 index 0000000..ee23076 --- /dev/null +++ b/src/views/custom-query/topo/utils/anchor/draw_mark.js @@ -0,0 +1,56 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: 画锚点 + */ + + import theme from '@/views/custom-query/topo/top/theme' +export default function(cfg, group) { + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + let { anchorPoints, width, height, id } = cfg + if (anchorPoints && anchorPoints.length) { + for (let i = 0, len = anchorPoints.length; i < len; i++) { + let [x, y] = anchorPoints[i] + // 计算Marker中心点坐标 + let anchorX = x * width + let anchorY = y * height + // 添加锚点背景 + let anchorBgShape = group.addShape('marker', { + id: id + '_anchor_bg_' + i, + attrs: { + name: 'anchorBg', + x: anchorX, + y: anchorY, + // 锚点默认样式 + ...themeStyle.anchorBgStyle.default + }, + draggable: false, + name: 'markerBg-shape' + }) + // 添加锚点Marker形状 + let anchorShape = group.addShape('marker', { + id: id + '_anchor_' + i, + attrs: { + name: 'anchor', + x: anchorX, + y: anchorY, + // 锚点默认样式 + ...themeStyle.anchorStyle.default + }, + draggable: false, + name: 'marker-shape' + }) + + anchorShape.on('mouseenter', function() { + anchorBgShape.attr({ + ...themeStyle.anchorBgStyle.active + }) + }) + anchorShape.on('mouseleave', function() { + anchorBgShape.attr({ + ...themeStyle.anchorBgStyle.inactive + }) + }) + } + } +} diff --git a/src/views/custom-query/topo/utils/anchor/index.js b/src/views/custom-query/topo/utils/anchor/index.js new file mode 100644 index 0000000..e272fab --- /dev/null +++ b/src/views/custom-query/topo/utils/anchor/index.js @@ -0,0 +1,13 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: anchor + */ + +import setState from './set-state' +import drawMark from './draw_mark' + +export default { + setState, + drawMark, +} diff --git a/src/views/custom-query/topo/utils/anchor/set-state.js b/src/views/custom-query/topo/utils/anchor/set-state.js new file mode 100644 index 0000000..e1ea5f8 --- /dev/null +++ b/src/views/custom-query/topo/utils/anchor/set-state.js @@ -0,0 +1,25 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: set anchor state + */ +import theme from '@/views/custom-query/topo/top/theme' + +export default function (name, value, item) { + const themeStyle = theme.defaultStyle + if (name === 'hover') { + let group = item.getContainer() + let children = group.get('children') + for (let i = 0, len = children.length; i < len; i++) { + let child = children[i] + // 处理锚点状态 + if (child.attrs.name === 'anchorBg') { + if (value) { + child.attr(themeStyle.anchorStyle.hover) + } else { + child.attr(themeStyle.anchorStyle.unhover) + } + } + } + } +} diff --git a/src/views/custom-query/topo/utils/anchor/update.js b/src/views/custom-query/topo/utils/anchor/update.js new file mode 100644 index 0000000..5de0430 --- /dev/null +++ b/src/views/custom-query/topo/utils/anchor/update.js @@ -0,0 +1,31 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: update anchor + */ + +export default function(cfg, group) { + let { anchorPoints, width, height, id } = cfg + if (anchorPoints && anchorPoints.length) { + for (let i = 0, len = anchorPoints.length; i < len; i++) { + let [x, y] = anchorPoints[i] + // 计算Marker中心点坐标 + let originX = -width / 2 + let originY = -height / 2 + let anchorX = x * width + originX + let anchorY = y * height + originY + // 锚点背景 + let anchorBgShape = group.findById(id + '_anchor_bg_' + i) + // 锚点 + let anchorShape = group.findById(id + '_anchor_' + i) + anchorBgShape.attr({ + x: anchorX, + y: anchorY + }) + anchorShape.attr({ + x: anchorX, + y: anchorY + }) + } + } +} \ No newline at end of file diff --git a/src/views/custom-query/topo/utils/collapse/index.js b/src/views/custom-query/topo/utils/collapse/index.js new file mode 100644 index 0000000..d43dc28 --- /dev/null +++ b/src/views/custom-query/topo/utils/collapse/index.js @@ -0,0 +1,11 @@ +/** + * @author: clay + * @data: 2021/5/11 17:28 + * @email: clay@hchyun.com + * @description: node + */ +import setState from './set-state' + +export default { + setState +} diff --git a/src/views/custom-query/topo/utils/collapse/set-state.js b/src/views/custom-query/topo/utils/collapse/set-state.js new file mode 100644 index 0000000..67e19f5 --- /dev/null +++ b/src/views/custom-query/topo/utils/collapse/set-state.js @@ -0,0 +1,32 @@ +/** + * @author: clay + * @data: 2021/5/11 17:28 + * @email: clay@hchyun.com + * @description: node 节点收缩和放大 + */ +export default function(e){ + const { + graph + } = this; + const item = e.item; + const shape = e.shape; + if (!item) { + return; + } + + //收缩 + if (shape.get("name") === "collapse") { + graph.updateItem(item, { + collapsed: true, + size: [300, 50], + }); + setTimeout(() => graph.layout(), 100); + //展开 + } else if (shape.get("name") === "expand") { + graph.updateItem(item, { + collapsed: false, + size: [300, 500], + }); + setTimeout(() => graph.layout(), 100); + } +} diff --git a/src/views/custom-query/topo/utils/date.js b/src/views/custom-query/topo/utils/date.js new file mode 100644 index 0000000..92dbc30 --- /dev/null +++ b/src/views/custom-query/topo/utils/date.js @@ -0,0 +1,106 @@ +//时间转换为String类型 +const simpleDateFormat=(pattern)=> { + const fmt = new Object(); + fmt.pattern = pattern; + fmt.parse = function (source) { + try { + return new Date(source); + } catch (e) { + console.log("字符串 " + source + " 转时间格式失败!"); + return null; + } + }; + fmt.format = function (date) { + if (typeof (date) == "undefined" || date == null || date == "") { + return ""; + } + try { + date = new Date(date); + } catch (e) { + console.log("时间 " + date + " 格式化失败!"); + return ""; + } + let strTime = this.pattern;//时间表达式的正则 + + 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(strTime)) { + strTime = strTime + .replace(RegExp.$1, (date.getFullYear() + "") + .substr(4 - RegExp.$1.length)); + } + for (const k in o) { + if (new RegExp("(" + k + ")").test(strTime)) { + strTime = strTime.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + } + } + return strTime; + }; + return fmt; +} + +//用于一个函数有多个时间格式转换 +export const simpleDateMoreFormat=(date, formatStr) =>{ + console.log(date,formatStr) + const fmt = simpleDateFormat(formatStr); + date = fmt.parse(date) + return fmt.format(date) +} + +//时间格式化为yyyy.MM +const simpleDateFormatByDot=(date) =>{ + const fmt = simpleDateFormat("yyyy.MM"); + date = fmt.parse(date) + return fmt.format(date) +} + +//时间格式化为yyyy-MM +const simpleDateFormatByLine=(date) =>{ + const fmt = simpleDateFormat("yyyy-MM"); + date = fmt.parse(date) + return fmt.format(date) +} + +//时间格式化为yyyy-MM-dd +const simpleDateFormatByMoreLine=(date) =>{ + const fmt = simpleDateFormat("yyyy-MM-dd"); + date = fmt.parse(date) + return fmt.format(date) +} + +//用于list表里每条记录中的startDate,endDate,格式化为yyyy.MM +const converListDateByDot=(list) =>{ + for (const item of list) { + item.startDate = simpleDateFormatByDot(item.startDate); + item.endDate = simpleDateFormatByDot(item.endDate); + } +} + +//用于data.startDate,data.endDate,格式化为yyyy-MM +const converListDateByLine=(date) =>{ + data.startDate = simpleDateFormatByLine(data.startDate); + data.endDate = simpleDateFormatByLine(data.endDate); +} + + +export default { + simpleDateFormat, + simpleDateMoreFormat, + simpleDateFormatByDot, + simpleDateFormatByLine, + simpleDateFormatByMoreLine, + converListDateByDot, + converListDateByLine +} + + + + + diff --git a/src/views/custom-query/topo/utils/edge/index.js b/src/views/custom-query/topo/utils/edge/index.js new file mode 100644 index 0000000..8002373 --- /dev/null +++ b/src/views/custom-query/topo/utils/edge/index.js @@ -0,0 +1,11 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: edge + */ + +import setState from './set-state' + +export default { + setState +} diff --git a/src/views/custom-query/topo/utils/edge/set-state.js b/src/views/custom-query/topo/utils/edge/set-state.js new file mode 100644 index 0000000..fde37f7 --- /dev/null +++ b/src/views/custom-query/topo/utils/edge/set-state.js @@ -0,0 +1,20 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: set edge state + */ + +import theme from '@/views/custom-query/topo/top/theme' + +export default function(name, value, item) { + const group = item.getContainer() + const shape = group.get('children')[0] // 顺序根据 draw 时确定 + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + if (name === 'selected') { + if (value) { + shape.attr(themeStyle.edgeStyle.selected) + } else { + shape.attr(themeStyle.edgeStyle.unselected) + } + } +} diff --git a/src/views/custom-query/topo/utils/index.js b/src/views/custom-query/topo/utils/index.js new file mode 100644 index 0000000..8cd64c9 --- /dev/null +++ b/src/views/custom-query/topo/utils/index.js @@ -0,0 +1,117 @@ +/** + * Created by clay on 2019/10/14 + * Description: common utils + */ + +/** + * This is just a simple version of deep copy + * Has a lot of edge cases bug + * If you want to use a perfect deep copy, use lodash's _.cloneDeep + * @param {Object} source + * @returns {Object} targetObj + */ +const deepClone = function(source) { + if (!source && typeof source !== 'object') { + throw new Error('error arguments: deepClone') + } + let targetObj = source.constructor === Array ? [] : {} + Object.keys(source).forEach(key => { + if (source[key] && typeof source[key] === 'object') { + targetObj[key] = deepClone(source[key]) + } else { + targetObj[key] = source[key] + } + }) + return targetObj +} + +/** + * Randomly extract one or more elements from an array + * If you want to use a perfect solution, use lodash's _.sample or _.sampleSize + * @param {Array} arr + * @param {number} count + * @returns {Array} arr + */ +const getRandomArrayElements = function(arr, count = 1) { + if (count > arr.length) { + throw new Error('error arguments: count is greater than length of array') + } + let shuffled = arr.slice(0), i = arr.length, min = i - count, temp, index + while (i-- > min) { + index = Math.floor((i + 1) * Math.random()) + temp = shuffled[index] + shuffled[index] = shuffled[i] + shuffled[i] = temp + } + return shuffled.slice(min) +} + +/** + * @author: clay + * @data: 2019/08/15 + * @description: graph utils + */ + +import node from './node' +import anchor from './anchor' +import edge from './edge' +import collapse from './collapse' + +/** + * 比较两个对象的内容是否相同(两个对象的键值都相同) + * @param obj1 + * @param obj2 + * @returns {*} + */ +const isObjectValueEqual = function(obj1, obj2) { + let o1 = obj1 instanceof Object + let o2 = obj2 instanceof Object + // 不是对象的情况 + if (!o1 || !o2) { + return obj1 === obj2 + } + // 对象的属性(key值)个数不相等 + if (Object.keys(obj1).length !== Object.keys(obj2).length) { + return false + } + // 判断每个属性(如果属性值也是对象则需要递归) + for (let attr in obj1) { + let t1 = obj1[attr] instanceof Object + let t2 = obj2[attr] instanceof Object + if (t1 && t2) { + return isObjectValueEqual(obj1[attr], obj2[attr]) + } else if (obj1[attr] !== obj2[attr]) { + return false + } + } + return true +} + + +/** + * 生成uuid算法,碰撞率低于1/2^^122 + * @returns {string} + */ +const generateUUID = function() { + let d = new Date().getTime() + // x 是 0-9 或 a-f 范围内的一个32位十六进制数 + let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + let r = (d + Math.random() * 16) % 16 | 0 + d = Math.floor(d / 16) + return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16) + }) + return uuid +} + +export default { + node, + anchor, + edge, + collapse, + // 通用工具类函数 + isObjectValueEqual, + generateUUID, + deepClone, + getRandomArrayElements +} + diff --git a/src/views/custom-query/topo/utils/node/index.js b/src/views/custom-query/topo/utils/node/index.js new file mode 100644 index 0000000..61e5741 --- /dev/null +++ b/src/views/custom-query/topo/utils/node/index.js @@ -0,0 +1,11 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: node + */ + +import setState from './set-state' + +export default { + setState +} diff --git a/src/views/custom-query/topo/utils/node/set-state.js b/src/views/custom-query/topo/utils/node/set-state.js new file mode 100644 index 0000000..b489c94 --- /dev/null +++ b/src/views/custom-query/topo/utils/node/set-state.js @@ -0,0 +1,26 @@ +/** + * @author: clay + * @data: 2019/08/15 + * @description: set node state + */ + +import theme from '@/views/custom-query/topo/top/theme' + +export default function(name, value, item) { + const group = item.getContainer() + const themeStyle = theme.defaultStyle // todo...先使用默认主题,后期可能增加其它风格的主体 + let children = group.get('children') + for (let i = 0; i < children.length; i++) { + let child = children[i] + //判断是否为er图的外围,是则改变样式 + if (child.attrs.name === 'border') { + if (name === 'selected') { + if (value) { + child.attr(themeStyle.nodeStyle.selected) + } else { + child.attr(themeStyle.nodeStyle.default) + } + } + } + } +} diff --git a/src/views/forbidden/index.vue b/src/views/forbidden/index.vue new file mode 100644 index 0000000..051426e --- /dev/null +++ b/src/views/forbidden/index.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/src/views/home/index.vue b/src/views/home/index.vue new file mode 100644 index 0000000..369c83d --- /dev/null +++ b/src/views/home/index.vue @@ -0,0 +1,371 @@ + + + + + diff --git a/src/views/login/index.vue b/src/views/login/index.vue new file mode 100644 index 0000000..dbd28cb --- /dev/null +++ b/src/views/login/index.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/views/monitor/druid/index.vue b/src/views/monitor/druid/index.vue new file mode 100644 index 0000000..a5514c7 --- /dev/null +++ b/src/views/monitor/druid/index.vue @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/src/views/monitor/job/index.vue b/src/views/monitor/job/index.vue new file mode 100644 index 0000000..adf9509 --- /dev/null +++ b/src/views/monitor/job/index.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/views/monitor/logininfor/index.vue b/src/views/monitor/logininfor/index.vue new file mode 100644 index 0000000..414ea2b --- /dev/null +++ b/src/views/monitor/logininfor/index.vue @@ -0,0 +1,205 @@ + + + diff --git a/src/views/monitor/online/index.vue b/src/views/monitor/online/index.vue new file mode 100644 index 0000000..8facdbf --- /dev/null +++ b/src/views/monitor/online/index.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/views/monitor/operlog/index.vue b/src/views/monitor/operlog/index.vue new file mode 100644 index 0000000..c3a0663 --- /dev/null +++ b/src/views/monitor/operlog/index.vue @@ -0,0 +1,337 @@ + + + + diff --git a/src/views/monitor/server/index.vue b/src/views/monitor/server/index.vue new file mode 100644 index 0000000..2e0013a --- /dev/null +++ b/src/views/monitor/server/index.vue @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/src/views/rapid/gen/basicInfoForm.vue b/src/views/rapid/gen/basicInfoForm.vue new file mode 100644 index 0000000..de9e4fd --- /dev/null +++ b/src/views/rapid/gen/basicInfoForm.vue @@ -0,0 +1,67 @@ + + + + + \ No newline at end of file diff --git a/src/views/rapid/gen/editTable.vue b/src/views/rapid/gen/editTable.vue new file mode 100644 index 0000000..ab9a19d --- /dev/null +++ b/src/views/rapid/gen/editTable.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/src/views/rapid/gen/importTable.vue b/src/views/rapid/gen/importTable.vue new file mode 100644 index 0000000..a8b34e1 --- /dev/null +++ b/src/views/rapid/gen/importTable.vue @@ -0,0 +1,185 @@ + + + diff --git a/src/views/rapid/gen/index.vue b/src/views/rapid/gen/index.vue new file mode 100644 index 0000000..d9bce77 --- /dev/null +++ b/src/views/rapid/gen/index.vue @@ -0,0 +1,362 @@ + + + diff --git a/src/views/rapid/gen/tableInfo.vue b/src/views/rapid/gen/tableInfo.vue new file mode 100644 index 0000000..cd78788 --- /dev/null +++ b/src/views/rapid/gen/tableInfo.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/src/views/rapid/regular/index.vue b/src/views/rapid/regular/index.vue new file mode 100644 index 0000000..8bdd0b8 --- /dev/null +++ b/src/views/rapid/regular/index.vue @@ -0,0 +1,302 @@ + + + diff --git a/src/views/rapid/source/index.vue b/src/views/rapid/source/index.vue new file mode 100644 index 0000000..7cc22ef --- /dev/null +++ b/src/views/rapid/source/index.vue @@ -0,0 +1,380 @@ + + + + + diff --git a/src/views/system/config/index.vue b/src/views/system/config/index.vue new file mode 100644 index 0000000..0b311d8 --- /dev/null +++ b/src/views/system/config/index.vue @@ -0,0 +1,304 @@ + + + diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue new file mode 100644 index 0000000..e00ad03 --- /dev/null +++ b/src/views/system/dept/index.vue @@ -0,0 +1,330 @@ + + + + + diff --git a/src/views/system/menu/DistributeRole.vue b/src/views/system/menu/DistributeRole.vue new file mode 100644 index 0000000..d14aa5a --- /dev/null +++ b/src/views/system/menu/DistributeRole.vue @@ -0,0 +1,362 @@ + + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue new file mode 100644 index 0000000..d6ae6e8 --- /dev/null +++ b/src/views/system/menu/index.vue @@ -0,0 +1,417 @@ + + + + + diff --git a/src/views/system/notice/inform/index.vue b/src/views/system/notice/inform/index.vue new file mode 100644 index 0000000..d403663 --- /dev/null +++ b/src/views/system/notice/inform/index.vue @@ -0,0 +1,158 @@ + + + + + diff --git a/src/views/system/notice/publish/index.vue b/src/views/system/notice/publish/index.vue new file mode 100644 index 0000000..7f3a637 --- /dev/null +++ b/src/views/system/notice/publish/index.vue @@ -0,0 +1,430 @@ + + + + + diff --git a/src/views/system/post/DistributeUser.vue b/src/views/system/post/DistributeUser.vue new file mode 100644 index 0000000..5bd1f72 --- /dev/null +++ b/src/views/system/post/DistributeUser.vue @@ -0,0 +1,356 @@ + + + diff --git a/src/views/system/post/index.vue b/src/views/system/post/index.vue new file mode 100644 index 0000000..39cb421 --- /dev/null +++ b/src/views/system/post/index.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/src/views/system/role/DistributeUser.vue b/src/views/system/role/DistributeUser.vue new file mode 100644 index 0000000..d5486f0 --- /dev/null +++ b/src/views/system/role/DistributeUser.vue @@ -0,0 +1,357 @@ + + + diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue new file mode 100644 index 0000000..3e606bf --- /dev/null +++ b/src/views/system/role/index.vue @@ -0,0 +1,486 @@ + + + + + diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue new file mode 100644 index 0000000..6944b58 --- /dev/null +++ b/src/views/system/user/index.vue @@ -0,0 +1,541 @@ + + + diff --git a/src/views/tool/componentdemo/index.vue b/src/views/tool/componentdemo/index.vue new file mode 100644 index 0000000..7280641 --- /dev/null +++ b/src/views/tool/componentdemo/index.vue @@ -0,0 +1,218 @@ + + + + + \ No newline at end of file diff --git a/src/views/tool/dict/index.vue b/src/views/tool/dict/index.vue new file mode 100644 index 0000000..13f5831 --- /dev/null +++ b/src/views/tool/dict/index.vue @@ -0,0 +1,582 @@ + + + + + diff --git a/src/views/tool/interface-switch/index.vue b/src/views/tool/interface-switch/index.vue new file mode 100644 index 0000000..a7de731 --- /dev/null +++ b/src/views/tool/interface-switch/index.vue @@ -0,0 +1,195 @@ + + + + + diff --git a/src/views/tool/ipblacklist/index.vue b/src/views/tool/ipblacklist/index.vue new file mode 100644 index 0000000..ff5266e --- /dev/null +++ b/src/views/tool/ipblacklist/index.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/src/views/workflow/about/index.vue b/src/views/workflow/about/index.vue new file mode 100644 index 0000000..c415c85 --- /dev/null +++ b/src/views/workflow/about/index.vue @@ -0,0 +1,155 @@ + + + + diff --git a/src/views/workflow/approve/InitiateProcess.vue b/src/views/workflow/approve/InitiateProcess.vue new file mode 100644 index 0000000..1c4b4c0 --- /dev/null +++ b/src/views/workflow/approve/InitiateProcess.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/src/views/workflow/approve/index.vue b/src/views/workflow/approve/index.vue new file mode 100644 index 0000000..0562011 --- /dev/null +++ b/src/views/workflow/approve/index.vue @@ -0,0 +1,170 @@ + + + + + diff --git a/src/views/workflow/common/Comment.vue b/src/views/workflow/common/Comment.vue new file mode 100644 index 0000000..abf8b4e --- /dev/null +++ b/src/views/workflow/common/Comment.vue @@ -0,0 +1,380 @@ + + + + + diff --git a/src/views/workflow/common/InstanceDetails.vue b/src/views/workflow/common/InstanceDetails.vue new file mode 100644 index 0000000..93f5808 --- /dev/null +++ b/src/views/workflow/common/InstanceDetails.vue @@ -0,0 +1,98 @@ + + + \ No newline at end of file diff --git a/src/views/workflow/common/OperationRender.vue b/src/views/workflow/common/OperationRender.vue new file mode 100644 index 0000000..1a1b139 --- /dev/null +++ b/src/views/workflow/common/OperationRender.vue @@ -0,0 +1,294 @@ + + + + + diff --git a/src/views/workflow/common/ProcessDiagramViewer.vue b/src/views/workflow/common/ProcessDiagramViewer.vue new file mode 100644 index 0000000..1050a29 --- /dev/null +++ b/src/views/workflow/common/ProcessDiagramViewer.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/views/workflow/common/TaskDetails.vue b/src/views/workflow/common/TaskDetails.vue new file mode 100644 index 0000000..92aa856 --- /dev/null +++ b/src/views/workflow/common/TaskDetails.vue @@ -0,0 +1,256 @@ + + + diff --git a/src/views/workflow/form/ComponentsConfigExport.js b/src/views/workflow/form/ComponentsConfigExport.js new file mode 100644 index 0000000..1d7b019 --- /dev/null +++ b/src/views/workflow/form/ComponentsConfigExport.js @@ -0,0 +1,255 @@ +import {ScaleToOriginal,EditPen,More,Edit,Tickets,Warning,CircleCheck,Money,FolderChecked,Calendar,Picture,User,SetUp,Star,FolderOpened } from '@element-plus/icons-vue' + + +export const ValueType = { + string: 'String', + object: 'Object', + array: 'Array', + number: 'Number', + date: 'Date', + user: 'User', + dept: 'Dept', + star: 'star', + dateRange: 'DateRange' +} + +export const baseComponents = [ + { + name: '布局', + components: [ + { + title: '分栏布局', + name: 'SpanLayout', + icon: 'ScaleToOriginal', + value: [], + valueType: ValueType.array, + props: { + items: [] + } + } + ] + }, { + name: '基础组件', + components: [ + { + title: '单行文本输入', + name: 'TextInput', + icon: 'EditPen', + value: '', + valueType: ValueType.string, + props: { + required: false, + enablePrint: true + } + }, + { + title: '多行文本输入', + name: 'TextareaInput', + icon: 'More', + value: '', + valueType: ValueType.string, + props: { + required: false, + enablePrint: true + } + }, + { + title: '数字输入框', + name: 'NumberInput', + icon: 'Edit', + value: '', + valueType: ValueType.number, + props: { + required: false, + enablePrint: true, + } + }, + { + title: '金额输入框', + name: 'AmountInput', + icon: 'Money', + value: '', + valueType: ValueType.number, + props: { + required: false, + enablePrint: true, + showChinese: true + } + }, + { + title: '单选框', + name: 'SelectInput', + icon: 'CircleCheck', + value: '', + valueType: ValueType.string, + props: { + required: false, + enablePrint: true, + expanding: false, + options: ['选项1', '选项2'] + } + }, + { + title: '多选框', + name: 'MultipleSelect', + icon: 'FolderChecked', + value: [], + valueType: ValueType.array, + props: { + required: false, + enablePrint: true, + expanding: false, + options: ['选项1', '选项2'] + } + }, + { + title: '日期时间点', + name: 'DateTime', + icon: 'Calendar', + value: '', + valueType: ValueType.date, + props: { + required: false, + enablePrint: true, + format: 'YYYY-MM-DD HH:mm', + } + }, + { + title: '日期时间区间', + name: 'DateTimeRange', + icon: 'Calendar', + valueType: ValueType.dateRange, + props: { + required: false, + enablePrint: true, + placeholder: ['开始时间', '结束时间'], + format: 'YYYY-MM-DD HH:mm', + showLength: false, + length: 0 + } + }, + { + title: '上传图片', + name: 'ImageUpload', + icon: 'Picture', + value: [], + valueType: ValueType.array, + props: { + required: false, + enablePrint: true, + maxSize: 5, //图片最大大小MB + maxNumber: 10, //最大上传数量 + enableZip: true, //图片压缩后再上传 + placeholder: '请选择图片', + } + }, + { + title: '上传附件', + name: 'FileUpload', + icon: 'FolderOpened', + value: [], + valueType: ValueType.array, + props: { + required: false, + enablePrint: true, + onlyRead: false, //是否只读,false只能在线预览,true可以下载 + maxSize: 100, //文件最大大小MB + maxNumber: 10, //最大上传数量 + fileTypes: [], //限制文件上传类型, + placeholder: '请选择附件', + } + }, + { + title: '人员选择', + name: 'UserPicker', + icon: 'User' , + value: [], + valueType: ValueType.user, + props: { + required: false, + enablePrint: true, + multiple: false + } + }, + { + title: '部门选择', + name: 'DeptPicker', + icon: 'SetUp', + value: [], + valueType: ValueType.dept, + props: { + required: false, + enablePrint: true, + multiple: false + } + }, + { + title: '评分', + name: 'RatePicker', + icon: 'Star', + value: '', + valueType: ValueType.star, + props: { + color: '#f0a732', + max: 5, + required: false, + enablePrint: true, + showScore: true, + enableHalf: true, + placeholder: undefined, + } + }, + { + title: '说明文字', + name: 'Description', + icon: 'Warning', + value: '', + valueType: ValueType.string, + props: { + required: false, + enablePrint: true + } + }, + ] + }, { + name: '扩展组件', + components: [ + { + title: '明细表', + name: 'TableList', + icon: 'Tickets', + value: [], + valueType: ValueType.array, + props: { + required: false, + enablePrint: true, + showBorder: true, + rowLayout: true, + showSummary: false, + summaryColumns: [], + maxSize: 0, //最大条数,为0则不限制 + columns: [] //列设置 + } + }, + { + title: '签名', + name: 'SignPanel', + icon: 'EditPen', + value: [], + valueType: ValueType.string, + props: { + required: false, + enablePrint: true, + isCrop: true, + lineColor: '#ff0000', + } + }, + ] + } +] + + +export default { + baseComponents +} + diff --git a/src/views/workflow/form/FormComponentConfig.vue b/src/views/workflow/form/FormComponentConfig.vue new file mode 100644 index 0000000..bccdfd5 --- /dev/null +++ b/src/views/workflow/form/FormComponentConfig.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/views/workflow/form/FormDesign.vue b/src/views/workflow/form/FormDesign.vue new file mode 100644 index 0000000..6468dba --- /dev/null +++ b/src/views/workflow/form/FormDesign.vue @@ -0,0 +1,596 @@ + + + + + diff --git a/src/views/workflow/form/FormDesignRender.vue b/src/views/workflow/form/FormDesignRender.vue new file mode 100644 index 0000000..49d2b28 --- /dev/null +++ b/src/views/workflow/form/FormDesignRender.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/src/views/workflow/form/FormRender.vue b/src/views/workflow/form/FormRender.vue new file mode 100644 index 0000000..b2ab6b5 --- /dev/null +++ b/src/views/workflow/form/FormRender.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/workflow/form/components/AmountInput.vue b/src/views/workflow/form/components/AmountInput.vue new file mode 100644 index 0000000..f51fe60 --- /dev/null +++ b/src/views/workflow/form/components/AmountInput.vue @@ -0,0 +1,179 @@ + + + + + diff --git a/src/views/workflow/form/components/AmountInputback.vue b/src/views/workflow/form/components/AmountInputback.vue new file mode 100644 index 0000000..f53c2db --- /dev/null +++ b/src/views/workflow/form/components/AmountInputback.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/src/views/workflow/form/components/DateTime.vue b/src/views/workflow/form/components/DateTime.vue new file mode 100644 index 0000000..52d9bf7 --- /dev/null +++ b/src/views/workflow/form/components/DateTime.vue @@ -0,0 +1,69 @@ + + + + + + diff --git a/src/views/workflow/form/components/DateTimeRange.vue b/src/views/workflow/form/components/DateTimeRange.vue new file mode 100644 index 0000000..cfd9099 --- /dev/null +++ b/src/views/workflow/form/components/DateTimeRange.vue @@ -0,0 +1,136 @@ + + + + + + + + diff --git a/src/views/workflow/form/components/DeptPicker.vue b/src/views/workflow/form/components/DeptPicker.vue new file mode 100644 index 0000000..053fe20 --- /dev/null +++ b/src/views/workflow/form/components/DeptPicker.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/src/views/workflow/form/components/Description.vue b/src/views/workflow/form/components/Description.vue new file mode 100644 index 0000000..3214a08 --- /dev/null +++ b/src/views/workflow/form/components/Description.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/views/workflow/form/components/FileUpload.vue b/src/views/workflow/form/components/FileUpload.vue new file mode 100644 index 0000000..dec60ce --- /dev/null +++ b/src/views/workflow/form/components/FileUpload.vue @@ -0,0 +1,104 @@ + + + + diff --git a/src/views/workflow/form/components/ImageUpload.vue b/src/views/workflow/form/components/ImageUpload.vue new file mode 100644 index 0000000..b0ba9cf --- /dev/null +++ b/src/views/workflow/form/components/ImageUpload.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/src/views/workflow/form/components/MultipleSelect.vue b/src/views/workflow/form/components/MultipleSelect.vue new file mode 100644 index 0000000..b62f598 --- /dev/null +++ b/src/views/workflow/form/components/MultipleSelect.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/views/workflow/form/components/NumberInput.vue b/src/views/workflow/form/components/NumberInput.vue new file mode 100644 index 0000000..39a89aa --- /dev/null +++ b/src/views/workflow/form/components/NumberInput.vue @@ -0,0 +1,61 @@ + + + + diff --git a/src/views/workflow/form/components/RatePicker.vue b/src/views/workflow/form/components/RatePicker.vue new file mode 100644 index 0000000..16cbf22 --- /dev/null +++ b/src/views/workflow/form/components/RatePicker.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/views/workflow/form/components/SelectInput.vue b/src/views/workflow/form/components/SelectInput.vue new file mode 100644 index 0000000..3973d2c --- /dev/null +++ b/src/views/workflow/form/components/SelectInput.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/views/workflow/form/components/SignPanel.vue b/src/views/workflow/form/components/SignPanel.vue new file mode 100644 index 0000000..dab0251 --- /dev/null +++ b/src/views/workflow/form/components/SignPanel.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/views/workflow/form/components/SpanLayout.vue b/src/views/workflow/form/components/SpanLayout.vue new file mode 100644 index 0000000..1d7c3c6 --- /dev/null +++ b/src/views/workflow/form/components/SpanLayout.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/src/views/workflow/form/components/TableList.vue b/src/views/workflow/form/components/TableList.vue new file mode 100644 index 0000000..a4578f4 --- /dev/null +++ b/src/views/workflow/form/components/TableList.vue @@ -0,0 +1,373 @@ + + + + + diff --git a/src/views/workflow/form/components/TextInput.vue b/src/views/workflow/form/components/TextInput.vue new file mode 100644 index 0000000..82f38d0 --- /dev/null +++ b/src/views/workflow/form/components/TextInput.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/views/workflow/form/components/TextareaInput.vue b/src/views/workflow/form/components/TextareaInput.vue new file mode 100644 index 0000000..6e32c38 --- /dev/null +++ b/src/views/workflow/form/components/TextareaInput.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/views/workflow/form/components/UserPicker.vue b/src/views/workflow/form/components/UserPicker.vue new file mode 100644 index 0000000..f70a165 --- /dev/null +++ b/src/views/workflow/form/components/UserPicker.vue @@ -0,0 +1,143 @@ + + + + + diff --git a/src/views/workflow/form/config/AmountInputConfig.vue b/src/views/workflow/form/config/AmountInputConfig.vue new file mode 100644 index 0000000..66b837b --- /dev/null +++ b/src/views/workflow/form/config/AmountInputConfig.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/views/workflow/form/config/DateTimeConfig.vue b/src/views/workflow/form/config/DateTimeConfig.vue new file mode 100644 index 0000000..af16bda --- /dev/null +++ b/src/views/workflow/form/config/DateTimeConfig.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/src/views/workflow/form/config/DateTimeRangeConfig.vue b/src/views/workflow/form/config/DateTimeRangeConfig.vue new file mode 100644 index 0000000..2756486 --- /dev/null +++ b/src/views/workflow/form/config/DateTimeRangeConfig.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/views/workflow/form/config/DescriptionConfig.vue b/src/views/workflow/form/config/DescriptionConfig.vue new file mode 100644 index 0000000..5d237a4 --- /dev/null +++ b/src/views/workflow/form/config/DescriptionConfig.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/views/workflow/form/config/FileUploadConfig.vue b/src/views/workflow/form/config/FileUploadConfig.vue new file mode 100644 index 0000000..af6d96c --- /dev/null +++ b/src/views/workflow/form/config/FileUploadConfig.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/views/workflow/form/config/ImageUploadConfig.vue b/src/views/workflow/form/config/ImageUploadConfig.vue new file mode 100644 index 0000000..cf2a300 --- /dev/null +++ b/src/views/workflow/form/config/ImageUploadConfig.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/views/workflow/form/config/LocationConfig.vue b/src/views/workflow/form/config/LocationConfig.vue new file mode 100644 index 0000000..ba8533f --- /dev/null +++ b/src/views/workflow/form/config/LocationConfig.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/src/views/workflow/form/config/MoneyInputConfig.vue b/src/views/workflow/form/config/MoneyInputConfig.vue new file mode 100644 index 0000000..e08ce27 --- /dev/null +++ b/src/views/workflow/form/config/MoneyInputConfig.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/src/views/workflow/form/config/NumberInputConfig.vue b/src/views/workflow/form/config/NumberInputConfig.vue new file mode 100644 index 0000000..69441c3 --- /dev/null +++ b/src/views/workflow/form/config/NumberInputConfig.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/views/workflow/form/config/OrgPickerConfig.vue b/src/views/workflow/form/config/OrgPickerConfig.vue new file mode 100644 index 0000000..519aa82 --- /dev/null +++ b/src/views/workflow/form/config/OrgPickerConfig.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/views/workflow/form/config/RatePickerConfig.vue b/src/views/workflow/form/config/RatePickerConfig.vue new file mode 100644 index 0000000..38cf9d9 --- /dev/null +++ b/src/views/workflow/form/config/RatePickerConfig.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/src/views/workflow/form/config/SelectInputConfig.vue b/src/views/workflow/form/config/SelectInputConfig.vue new file mode 100644 index 0000000..df2de19 --- /dev/null +++ b/src/views/workflow/form/config/SelectInputConfig.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/views/workflow/form/config/SignPanelConfig.vue b/src/views/workflow/form/config/SignPanelConfig.vue new file mode 100644 index 0000000..3c01029 --- /dev/null +++ b/src/views/workflow/form/config/SignPanelConfig.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/views/workflow/form/config/TableListConfig.vue b/src/views/workflow/form/config/TableListConfig.vue new file mode 100644 index 0000000..0b72036 --- /dev/null +++ b/src/views/workflow/form/config/TableListConfig.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/src/views/workflow/form/config/TextInputConfig.vue b/src/views/workflow/form/config/TextInputConfig.vue new file mode 100644 index 0000000..f8cebab --- /dev/null +++ b/src/views/workflow/form/config/TextInputConfig.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/views/workflow/form/config/TextareaInputConfig.vue b/src/views/workflow/form/config/TextareaInputConfig.vue new file mode 100644 index 0000000..30df210 --- /dev/null +++ b/src/views/workflow/form/config/TextareaInputConfig.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/views/workflow/form/utils/CustomUtil.js b/src/views/workflow/form/utils/CustomUtil.js new file mode 100644 index 0000000..ee42c93 --- /dev/null +++ b/src/views/workflow/form/utils/CustomUtil.js @@ -0,0 +1,27 @@ +Array.prototype.remove = function (value) { + let index = this.indexOf(value) + if (index > -1) { + this.splice(index, 1) + } + return index +} + +//移除对象数组,匹配唯一key +Array.prototype.removeByKey = function (key, val) { + let index = this.findIndex(value => value[key] === val) + if (index > -1) { + this.splice(index, 1) + } + return index +} + +//对象数组转map +Array.prototype.toMap = function (key) { + let map = new Map() + this.forEach(v => map.set(v[key], v)) + return map +} + + + + diff --git a/src/views/workflow/form/utils/date.js b/src/views/workflow/form/utils/date.js new file mode 100644 index 0000000..f75e3cd --- /dev/null +++ b/src/views/workflow/form/utils/date.js @@ -0,0 +1,118 @@ +//时间转换为String类型 +const moment = require("moment"); + +function simpleDateFormat(pattern) { + var fmt = new Object(); + fmt.pattern = pattern; + + fmt.parse = function (source) { + try { + return new Date(source); + } catch (e) { + console.log("字符串 " + source + " 转时间格式失败!"); + return null; + } + }; + + fmt.format = function (date) { + if (typeof (date) == "undefined" || date == null || date == "") { + return ""; + } + + try { + date = new Date(date); + } catch (e) { + console.log("时间 " + date + " 格式化失败!"); + return ""; + } + + var strTime = this.pattern;//时间表达式的正则 + + var 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(strTime)) { + strTime = strTime + .replace(RegExp.$1, (date.getFullYear() + "") + .substr(4 - RegExp.$1.length)); + } + for (var k in o) { + if (new RegExp("(" + k + ")").test(strTime)) { + strTime = strTime.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + } + } + + return strTime; + }; + return fmt; +} + +//时间格式化为yyyy-MM-dd +function simpleDateFormatByMoreLine(date) { + var fmt = simpleDateFormat("yyyy-MM-dd"); + date = fmt.parse(date) + return fmt.format(date) +} + +/** + * @param dateBegin 开始时间 + * @param dateEnd 结束时间 + * @returns {string} 时间差 天 小时 分钟 秒 + */ +function consumingTime(dateBegin, dateEnd) { + // //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了 + let submitTime = new Date(dateBegin) + let endTime = new Date(dateEnd) + var dateDiff = endTime - submitTime;//时间差的毫秒数 + var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数 + var leave1 = dateDiff % (24 * 3600 * 1000) //计算天数后剩余的毫秒数 + var hours = Math.floor(leave1 / (3600 * 1000))//计算出小时数 + //计算相差分钟数 + var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数 + var minutes = Math.floor(leave2 / (60 * 1000))//计算相差分钟数 + //计算相差秒数 + var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数 + var seconds = Math.round(leave3 / 1000) + return dayDiff + "天 " + hours + "小时 " + minutes + " 分钟" + seconds + " 秒"; +} + +export function timeLength(start, dateEnd) { + // //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了 + let mstart = moment(start); + let mend = moment(dateEnd); + let years = mend.diff(start, "years"); + let months = mend.diff(start, "months"); + let days = mend.diff(start, "days"); + let hours = mend.diff(start, "hours"); + let minutes = mend.diff(start, "minutes"); + minutes = minutes % 60; + hours = hours % 24; + months = months % 12; + //因为每月天不固定,所以天要特殊动态处理 + if (mstart.date() < mend.date()) { + days = mend.date() - mstart.date(); + if (minutes > 0 || hours > 0) { + days--; + } + } + //处理超过俩月且天超过31 + if (days > 31 && mend.month() - mstart.month() >= 2) { + //将日期推至上月求差 + days = mend.diff(mstart.add(mend.month() - mstart.month() - 1, "month"), "days"); + } + return `${years > 0 ? years + "年 " : " "}` + `${months > 0 ? months + "个月 " : " "}` + `${days > 0 ? days + "天 " : " "}` + + `${hours > 0 ? hours + "小时 " : " "}` + `${minutes > 0 ? minutes + "分钟 " : " "}`; +} + +module.exports = { + formatToYYYYMMDD: simpleDateFormatByMoreLine, + consumingTime: consumingTime, + timeLength: timeLength +} diff --git a/src/views/workflow/initiated/index.vue b/src/views/workflow/initiated/index.vue new file mode 100644 index 0000000..0d5086f --- /dev/null +++ b/src/views/workflow/initiated/index.vue @@ -0,0 +1,157 @@ + + + + diff --git a/src/views/workflow/listen/index.vue b/src/views/workflow/listen/index.vue new file mode 100644 index 0000000..0c3b274 --- /dev/null +++ b/src/views/workflow/listen/index.vue @@ -0,0 +1,341 @@ + + + diff --git a/src/views/workflow/process/DefaultNodeProps.js b/src/views/workflow/process/DefaultNodeProps.js new file mode 100644 index 0000000..fa9ebdb --- /dev/null +++ b/src/views/workflow/process/DefaultNodeProps.js @@ -0,0 +1,118 @@ +//审批节点默认属性 +export const APPROVAL_PROPS = { + assignedType: "ASSIGN_USER", //审批类型 + mode: "AND", //会签模式 + sign: false, //是否签字 + headerBgc: '#ff943e', //节点背景颜色 + nobody: { //没有审批的的时候需要的操作 + handler: "TO_PASS", //操作 + assignedUser: [] //审批人列表 + }, + timeLimit: { //边界事件 + timeout: { //超时提醒时间 + unit: "H", + value: 0 + }, + handler: { //超时提醒触发时候的操作 + type: "REFUSE", //操作 + notify: { + once: true, //是否循环 + hour: 1 + } + } + }, + assignedUser: [], // 审批人列表 + formPerms: [], //表单权限 + selfSelect: { //用户自选 + multiple: false //用户自选时是否是多选 + }, + leaderTop: { //领导 + endCondition: "TOP", + endLevel: 1, + }, + leader: { //第几级领导 + level: 1 + }, + listener:{ + state: false, + list:[] + }, + roleList: [], //角色列表 + refuse: { //拒绝的操作 + type: 'TO_END', //驳回规则 TO_END TO_NODE TO_BEFORE + target: '' //驳回到指定ID的节点 + }, + formUser: '' //表单用户 +} + +//根节点默认属性 +export const ROOT_PROPS = { + assignedUser: [], //审批人 + formPerms: [] //表单权限 +} + +//条件节点默认属性 +export const CONDITION_PROPS = { + groupsType: "OR", //条件组逻辑关系 OR、AND + groups: [ + { + groupType: "AND", //条件组内条件关系 OR、AND + cids: [], //条件ID集合 + conditions: [] //组内子条件 + } + ], + expression: "" //自定义表达式,灵活构建逻辑关系 +} + +//抄送节点默认属性 +export const CC_PROPS = { + shouldAdd: false, + assignedUser: [], + formPerms: [] +} + +//触发器节点默认属性 +export const TRIGGER_PROPS = { + type: 'WEBHOOK', + http: { + method: 'GET', //请求方法 支持GET/POST + url: '', //URL地址,可以直接带参数 + headers: [ //http header + { + name: '', + isField: true, + value: '' //支持表达式 ${xxx} xxx为表单字段id + } + ], + contentType: 'FORM', //请求参数类型 + params: [ //请求参数 + { + name: '', + isField: true, //是表单字段还是自定义 + value: '' //支持表达式 ${xxx} xxx为表单字段id + } + ], + retry: 1, + handlerByScript: false, + success: 'function handlerSuccess(res) {\n return {\n state: true, \n msg: "请求成功!" \n };\n}', + fail: 'function handlerFail(res) {\n return {\n state: true, \n msg: "请求失败!" \n };\n}' + }, + email: { + subject: '', + to: [], + cc: [], + content: '' + } +} + +//延时节点默认属性 +export const DELAY_PROPS = { + type: "FIXED", //延时类型 FIXED:到达当前节点后延时固定时长 、AUTO:延时到 dateTime设置的时间 + time: 0, //延时时间 + unit: "M", //时间单位 D天 H小时 M分钟 + dateTime: "" //如果当天没有超过设置的此时间点,就延时到这个指定的时间,到了就直接跳过不延时 +} + +export default { + APPROVAL_PROPS, CC_PROPS, DELAY_PROPS, CONDITION_PROPS, ROOT_PROPS, TRIGGER_PROPS +} diff --git a/src/views/workflow/process/ProcessDesign.vue b/src/views/workflow/process/ProcessDesign.vue new file mode 100644 index 0000000..323388e --- /dev/null +++ b/src/views/workflow/process/ProcessDesign.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/views/workflow/process/ProcessEdit.vue b/src/views/workflow/process/ProcessEdit.vue new file mode 100644 index 0000000..fbfc0b0 --- /dev/null +++ b/src/views/workflow/process/ProcessEdit.vue @@ -0,0 +1,346 @@ + + + + + diff --git a/src/views/workflow/process/ProcessTree.vue b/src/views/workflow/process/ProcessTree.vue new file mode 100644 index 0000000..1a9241d --- /dev/null +++ b/src/views/workflow/process/ProcessTree.vue @@ -0,0 +1,760 @@ + + + + diff --git a/src/views/workflow/process/common/AvatarEllipsis.vue b/src/views/workflow/process/common/AvatarEllipsis.vue new file mode 100644 index 0000000..883f400 --- /dev/null +++ b/src/views/workflow/process/common/AvatarEllipsis.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/views/workflow/process/common/DeptPicker.vue b/src/views/workflow/process/common/DeptPicker.vue new file mode 100644 index 0000000..ee8e558 --- /dev/null +++ b/src/views/workflow/process/common/DeptPicker.vue @@ -0,0 +1,329 @@ + + + + + diff --git a/src/views/workflow/process/common/Ellipsis.vue b/src/views/workflow/process/common/Ellipsis.vue new file mode 100644 index 0000000..f26c270 --- /dev/null +++ b/src/views/workflow/process/common/Ellipsis.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/views/workflow/process/common/InsertButton.vue b/src/views/workflow/process/common/InsertButton.vue new file mode 100644 index 0000000..5c04f18 --- /dev/null +++ b/src/views/workflow/process/common/InsertButton.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/views/workflow/process/common/RoleItems.vue b/src/views/workflow/process/common/RoleItems.vue new file mode 100644 index 0000000..22cf2b6 --- /dev/null +++ b/src/views/workflow/process/common/RoleItems.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/src/views/workflow/process/common/RolePicker.vue b/src/views/workflow/process/common/RolePicker.vue new file mode 100644 index 0000000..c61bf2a --- /dev/null +++ b/src/views/workflow/process/common/RolePicker.vue @@ -0,0 +1,276 @@ + + + + + diff --git a/src/views/workflow/process/common/UserPicker.vue b/src/views/workflow/process/common/UserPicker.vue new file mode 100644 index 0000000..d744aa1 --- /dev/null +++ b/src/views/workflow/process/common/UserPicker.vue @@ -0,0 +1,381 @@ + + + + + diff --git a/src/views/workflow/process/config/ApprovalNodeConfig.vue b/src/views/workflow/process/config/ApprovalNodeConfig.vue new file mode 100644 index 0000000..1224ba3 --- /dev/null +++ b/src/views/workflow/process/config/ApprovalNodeConfig.vue @@ -0,0 +1,402 @@ + + + + diff --git a/src/views/workflow/process/config/CcNodeConfig.vue b/src/views/workflow/process/config/CcNodeConfig.vue new file mode 100644 index 0000000..7040ec1 --- /dev/null +++ b/src/views/workflow/process/config/CcNodeConfig.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/src/views/workflow/process/config/ConditionGroupItemConfig.vue b/src/views/workflow/process/config/ConditionGroupItemConfig.vue new file mode 100644 index 0000000..fae3166 --- /dev/null +++ b/src/views/workflow/process/config/ConditionGroupItemConfig.vue @@ -0,0 +1,308 @@ + + + + + diff --git a/src/views/workflow/process/config/ConditionNodeConfig.vue b/src/views/workflow/process/config/ConditionNodeConfig.vue new file mode 100644 index 0000000..d454306 --- /dev/null +++ b/src/views/workflow/process/config/ConditionNodeConfig.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/src/views/workflow/process/config/DelayNodeConfig.vue b/src/views/workflow/process/config/DelayNodeConfig.vue new file mode 100644 index 0000000..699c7a0 --- /dev/null +++ b/src/views/workflow/process/config/DelayNodeConfig.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/views/workflow/process/config/FormAuthorityConfig.vue b/src/views/workflow/process/config/FormAuthorityConfig.vue new file mode 100644 index 0000000..5e8a5d2 --- /dev/null +++ b/src/views/workflow/process/config/FormAuthorityConfig.vue @@ -0,0 +1,117 @@ + + + + + diff --git a/src/views/workflow/process/config/NodeConfig.vue b/src/views/workflow/process/config/NodeConfig.vue new file mode 100644 index 0000000..2921b8b --- /dev/null +++ b/src/views/workflow/process/config/NodeConfig.vue @@ -0,0 +1,92 @@ + + + + + diff --git a/src/views/workflow/process/config/RootConfig.vue b/src/views/workflow/process/config/RootConfig.vue new file mode 100644 index 0000000..f87b6df --- /dev/null +++ b/src/views/workflow/process/config/RootConfig.vue @@ -0,0 +1,44 @@ + + + + + + \ No newline at end of file diff --git a/src/views/workflow/process/config/TriggerNodeConfig.vue b/src/views/workflow/process/config/TriggerNodeConfig.vue new file mode 100644 index 0000000..e0d06a0 --- /dev/null +++ b/src/views/workflow/process/config/TriggerNodeConfig.vue @@ -0,0 +1,342 @@ + + + + + diff --git a/src/views/workflow/process/index.vue b/src/views/workflow/process/index.vue new file mode 100644 index 0000000..e2101e1 --- /dev/null +++ b/src/views/workflow/process/index.vue @@ -0,0 +1,268 @@ + + + diff --git a/src/views/workflow/process/nodes/AddBranchNode.vue b/src/views/workflow/process/nodes/AddBranchNode.vue new file mode 100644 index 0000000..71566f9 --- /dev/null +++ b/src/views/workflow/process/nodes/AddBranchNode.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/views/workflow/process/nodes/ApprovalNode.vue b/src/views/workflow/process/nodes/ApprovalNode.vue new file mode 100644 index 0000000..6e4292d --- /dev/null +++ b/src/views/workflow/process/nodes/ApprovalNode.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/src/views/workflow/process/nodes/CcNode.vue b/src/views/workflow/process/nodes/CcNode.vue new file mode 100644 index 0000000..0f2b305 --- /dev/null +++ b/src/views/workflow/process/nodes/CcNode.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/views/workflow/process/nodes/ConcurrentNode.vue b/src/views/workflow/process/nodes/ConcurrentNode.vue new file mode 100644 index 0000000..ccec08f --- /dev/null +++ b/src/views/workflow/process/nodes/ConcurrentNode.vue @@ -0,0 +1,195 @@ + + + + + diff --git a/src/views/workflow/process/nodes/ConditionNode.vue b/src/views/workflow/process/nodes/ConditionNode.vue new file mode 100644 index 0000000..62e0d1e --- /dev/null +++ b/src/views/workflow/process/nodes/ConditionNode.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/src/views/workflow/process/nodes/DelayNode.vue b/src/views/workflow/process/nodes/DelayNode.vue new file mode 100644 index 0000000..9f12185 --- /dev/null +++ b/src/views/workflow/process/nodes/DelayNode.vue @@ -0,0 +1,86 @@ + + + diff --git a/src/views/workflow/process/nodes/EmptyNode.vue b/src/views/workflow/process/nodes/EmptyNode.vue new file mode 100644 index 0000000..15d0c40 --- /dev/null +++ b/src/views/workflow/process/nodes/EmptyNode.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/src/views/workflow/process/nodes/MergeNode.vue b/src/views/workflow/process/nodes/MergeNode.vue new file mode 100644 index 0000000..598ddf5 --- /dev/null +++ b/src/views/workflow/process/nodes/MergeNode.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/src/views/workflow/process/nodes/Node.vue b/src/views/workflow/process/nodes/Node.vue new file mode 100644 index 0000000..a2de9f9 --- /dev/null +++ b/src/views/workflow/process/nodes/Node.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/views/workflow/process/nodes/ProcessEndNode.vue b/src/views/workflow/process/nodes/ProcessEndNode.vue new file mode 100644 index 0000000..1b2c655 --- /dev/null +++ b/src/views/workflow/process/nodes/ProcessEndNode.vue @@ -0,0 +1,3 @@ + diff --git a/src/views/workflow/process/nodes/RootNode.vue b/src/views/workflow/process/nodes/RootNode.vue new file mode 100644 index 0000000..18c943b --- /dev/null +++ b/src/views/workflow/process/nodes/RootNode.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/views/workflow/process/nodes/TriggerNode.vue b/src/views/workflow/process/nodes/TriggerNode.vue new file mode 100644 index 0000000..d3992ed --- /dev/null +++ b/src/views/workflow/process/nodes/TriggerNode.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/src/views/workflow/task/index.vue b/src/views/workflow/task/index.vue new file mode 100644 index 0000000..58f11c4 --- /dev/null +++ b/src/views/workflow/task/index.vue @@ -0,0 +1,141 @@ + + + + diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..2f8895a --- /dev/null +++ b/vite.config.js @@ -0,0 +1,89 @@ +import { fileURLToPath, URL } from "node:url"; +import { defineConfig } from "vite"; +import AutoImport from "unplugin-auto-import/vite"; +import Components from "unplugin-vue-components/vite"; +import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; +import Icons from "unplugin-icons/vite"; +import IconsResolver from "unplugin-icons/resolver"; +import vue from "@vitejs/plugin-vue"; +import vueJsx from "@vitejs/plugin-vue-jsx"; +import Inspect from "vite-plugin-inspect"; +import viteSvgIcons from "vite-plugin-svg-icons"; +import path from "path"; +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + vueJsx(), + AutoImport({ + //自动导入vue相关函数 + imports: ["vue", "vue-router"], + + resolvers: [ + ElementPlusResolver(), + //自动导入图标组件 + IconsResolver({ + prefix: "Icon", + }), + ], + }), + Components({ + dirs: ["src/components", "src/fvcomponents"], + resolvers: [ + // 自动注册图标组件 + IconsResolver({ + enabledCollections: ["ep"], + }), + //自动导入组件 + ElementPlusResolver(), + ], + }), + Icons({ + autoInstall: true, + }), + viteSvgIcons({ + // 指定需要缓存的图标文件夹 + iconDirs: [path.resolve(__dirname, "src/assets/svg")], + // 指定symbolId格式 + symbolId: "icon-[dir]-[name]", + }), + Inspect(), + ], + resolve: { + alias: { + "@": fileURLToPath(new URL("./src", import.meta.url)), + }, + }, + build: { + minify: "esbuild", + terserOptions: { + compress: { + drop_console: false, // 生产环境移除log + drop_debugger: false, // 生产环境禁用debugger + }, + }, + }, + server: { + host: "0.0.0.0", + port: 8888, + strictPort: false, + open: true, + proxy: { + "/api/custom/": { + target: "http://clay.frp.feashow.cn", + // target: "http://10.7.127.57:8000", + changeOrigin: true, + rewrite: (path) => path.replace(/^\/api/, ""), + }, + "/api": { + target: "http://fateverse-vue.frp.feashow.cn", + changeOrigin: true, + }, + "/api/notice-ws": { + target: "ws://fateverse-vue.frp.feashow.cn/api/notice-ws", + ws: true, + changeOrigin: true, + }, + }, + }, +});