From 36fbdc5ed2cc44444eafe313ec7fd9e7787d6070 Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Wed, 21 May 2025 17:26:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cz-config.js | 32 + .eslintignore | 6 + .eslintrc.js | 30 + .gitignore | 67 + LICENSE | 187 + README.md | 102 + babel.config.js | 4 + examples/App.vue | 1134 ++ examples/components/AiTool.vue | 187 + examples/components/MakeDragRule.vue | 273 + examples/forms.js | 154 + examples/index.html | 18 + examples/main.js | 54 + examples/rule.js | 342 + gulpfile.js | 14 + index.html | 24 + package.json | 133 + pnpm-lock.yaml | 15286 ++++++++++++++++ src/assets/svg/dv-folder.svg | 4 + src/assets/svg/icon_dataset.svg | 11 + src/components/City.vue | 162 + src/components/DragBox.vue | 53 + src/components/DragTool.vue | 280 + src/components/EventConfig.vue | 961 + src/components/FcDesigner.vue | 3609 ++++ src/components/FetchConfig.vue | 302 + src/components/FetchTable.vue | 169 + src/components/FieldInput.vue | 310 + src/components/FieldList.vue | 95 + src/components/FnConfig.vue | 310 + src/components/FnEditor.vue | 252 + src/components/FnInput.vue | 101 + src/components/FormList.vue | 151 + src/components/GlobalClassConfig.vue | 383 + src/components/GlobalClassSelect.vue | 93 + src/components/GlobalEventConfig.vue | 325 + src/components/GlobalFetchConfig.vue | 528 + src/components/GlobalFetchSelect.vue | 111 + src/components/GlobalVariableConfig.vue | 302 + src/components/HideConfig.vue | 66 + src/components/HtmlEditor.vue | 124 + src/components/Id.vue | 39 + src/components/InlineForm.vue | 49 + src/components/JsonPreview.vue | 94 + src/components/PageInput.vue | 172 + src/components/PrintForm.vue | 398 + src/components/PromptInput.vue | 62 + src/components/PropsInput.vue | 80 + src/components/QuickLayout.vue | 120 + src/components/Required.vue | 75 + src/components/Row.vue | 25 + src/components/RuleSelect.vue | 135 + src/components/SignaturePad.vue | 144 + src/components/SlotsConfig.vue | 310 + src/components/SpanInput.vue | 59 + src/components/Struct.vue | 141 + src/components/StructEditor.vue | 121 + src/components/SubList.vue | 90 + src/components/TableOptions.vue | 208 + src/components/ToolsBar.vue | 138 + src/components/TreeOptions.vue | 226 + src/components/TypeSelect.vue | 140 + src/components/VNode.vue | 19 + src/components/Validate.vue | 246 + src/components/Warning.vue | 45 + src/components/ai/AiChat.vue | 431 + src/components/aide/AudioBox.vue | 46 + src/components/aide/BarCodeBox.vue | 60 + src/components/aide/FcTitle.vue | 69 + src/components/aide/IframeBox.vue | 30 + src/components/aide/Markdown.vue | 785 + src/components/aide/QrCodeBox.vue | 61 + src/components/aide/VideoBox.vue | 82 + src/components/cell/Cell.vue | 23 + src/components/cell/CellView.vue | 84 + src/components/computed/ComputedConfig.vue | 684 + src/components/computed/ConditionGroup.vue | 450 + src/components/computed/ConditionInput.vue | 69 + src/components/computed/PatternInput.vue | 137 + src/components/computed/ValueInput.vue | 88 + src/components/computed/VariableConfig.vue | 604 + src/components/dataSelect/DataSelect.vue | 200 + src/components/dataSelect/DataSelectView.vue | 62 + src/components/dataTable/DataTable.vue | 412 + .../dataTable/TableButtonConfig.vue | 248 + .../dataTable/TableColumnConfig.vue | 359 + src/components/dialog/Dialog.vue | 115 + src/components/dialog/DialogView.vue | 84 + src/components/drawer/Drawer.vue | 144 + src/components/drawer/DrawerView.vue | 97 + src/components/echarts/Echarts.vue | 425 + .../infiniteTableForm/InfiniteTableForm.vue | 465 + .../InfiniteTableFormView.vue | 50 + .../jsonComponent/JsonComponent.vue | 128 + .../jsonComponent/JsonComponentView.vue | 156 + src/components/language/LanguageConfig.vue | 165 + src/components/language/LanguageInput.vue | 192 + src/components/mobile/City.vue | 141 + src/components/mobile/SignaturePad.vue | 152 + src/components/mobile/popup/Popup.vue | 135 + src/components/mobile/popup/PopupView.vue | 89 + src/components/mobile/stepForm/StepForm.vue | 165 + .../mobile/stepForm/StepFormItemView.vue | 38 + .../mobile/stepForm/StepFormView.vue | 94 + .../nestedTableForm/NestedTableForm.vue | 444 + .../nestedTableForm/NestedTableFormView.vue | 79 + .../slotComponent/SlotComponent.vue | 47 + .../slotComponent/SlotComponentView.vue | 55 + src/components/stepForm/StepForm.vue | 169 + src/components/stepForm/StepFormItemView.vue | 38 + src/components/stepForm/StepFormView.vue | 97 + src/components/style/BorderInput.vue | 242 + src/components/style/BoxSizeInput.vue | 166 + src/components/style/BoxSpaceInput.vue | 269 + src/components/style/ColorInput.vue | 90 + src/components/style/ConfigItem.vue | 118 + src/components/style/ConfigTitle.vue | 33 + src/components/style/DisplayInput.vue | 267 + src/components/style/FontInput.vue | 174 + src/components/style/RadiusInput.vue | 164 + src/components/style/ShadowContent.vue | 335 + src/components/style/ShadowInput.vue | 93 + src/components/style/SizeInput.vue | 118 + src/components/style/StyleConfig.vue | 301 + src/components/style/StyleEditor.vue | 70 + src/components/table/Table.vue | 221 + src/components/table/TableView.vue | 679 + src/components/tableForm/TableForm.vue | 399 + .../tableForm/TableFormColumnView.vue | 113 + src/components/tableForm/TableFormPro.vue | 449 + src/components/tableForm/TableFormView.vue | 46 + src/components/value/Value.vue | 20 + src/components/value/ValueView.vue | 33 + src/config/base/advanced.js | 61 + src/config/base/field.js | 102 + src/config/base/form.js | 165 + src/config/base/style.js | 26 + src/config/base/validate.js | 15 + src/config/index.js | 135 + src/config/menu.js | 39 + src/config/rule/alert.js | 45 + src/config/rule/audio.js | 111 + src/config/rule/avatar.js | 50 + src/config/rule/barCode.js | 96 + src/config/rule/button.js | 51 + src/config/rule/card.js | 40 + src/config/rule/cascader.js | 130 + src/config/rule/cell.js | 32 + src/config/rule/charts/areaChart.js | 82 + src/config/rule/charts/barChart.js | 66 + src/config/rule/charts/customChart.js | 277 + src/config/rule/charts/funnelChart.js | 58 + src/config/rule/charts/gaugeChart.js | 49 + src/config/rule/charts/lineChart.js | 82 + src/config/rule/charts/pieChart.js | 58 + src/config/rule/charts/radarChart.js | 71 + src/config/rule/charts/scatterChart.js | 45 + src/config/rule/charts/stripeChart.js | 71 + src/config/rule/checkbox.js | 88 + src/config/rule/city.js | 62 + src/config/rule/col.js | 87 + src/config/rule/collapse.js | 47 + src/config/rule/collapseItem.js | 39 + src/config/rule/color.js | 85 + src/config/rule/dataSelect.js | 73 + src/config/rule/dataTable.js | 433 + src/config/rule/date.js | 86 + src/config/rule/dateRange.js | 66 + src/config/rule/descriptions.js | 73 + src/config/rule/descriptionsItem.js | 61 + src/config/rule/dialog.js | 98 + src/config/rule/divider.js | 35 + src/config/rule/drawer.js | 103 + src/config/rule/editor.js | 31 + src/config/rule/flex.js | 54 + src/config/rule/flex2.js | 124 + src/config/rule/formItem.js | 48 + src/config/rule/group.js | 54 + src/config/rule/html.js | 33 + src/config/rule/id.js | 32 + src/config/rule/iframe.js | 39 + src/config/rule/image.js | 41 + src/config/rule/infiniteTableForm.js | 99 + src/config/rule/inlineForm.js | 41 + src/config/rule/input.js | 63 + src/config/rule/json.js | 129 + src/config/rule/link.js | 58 + src/config/rule/markdown.js | 153 + src/config/rule/mention.js | 89 + src/config/rule/nestedSubTableForm.js | 79 + src/config/rule/nestedTableForm.js | 117 + src/config/rule/number.js | 51 + src/config/rule/password.js | 53 + src/config/rule/qrCodeBox.js | 59 + src/config/rule/radio.js | 62 + src/config/rule/rate.js | 45 + src/config/rule/row.js | 65 + src/config/rule/segmented.js | 56 + src/config/rule/select.js | 87 + src/config/rule/signaturePad.js | 35 + src/config/rule/slider.js | 54 + src/config/rule/slot.js | 32 + src/config/rule/space.js | 26 + src/config/rule/statistic.js | 30 + src/config/rule/stepForm.js | 80 + src/config/rule/stepFormItem.js | 40 + src/config/rule/subForm.js | 70 + src/config/rule/switch.js | 58 + src/config/rule/tabPane.js | 31 + src/config/rule/table.js | 152 + src/config/rule/tableForm.js | 109 + src/config/rule/tableForm2.js | 251 + src/config/rule/tableFormColumn.js | 45 + src/config/rule/tableFormColumn2.js | 61 + src/config/rule/tabs.js | 56 + src/config/rule/tag.js | 62 + src/config/rule/text.js | 33 + src/config/rule/textarea.js | 63 + src/config/rule/time.js | 89 + src/config/rule/timeRange.js | 79 + src/config/rule/title.js | 37 + src/config/rule/tooltip.js | 107 + src/config/rule/transfer.js | 70 + src/config/rule/tree.js | 87 + src/config/rule/treeSelect.js | 89 + src/config/rule/upload.js | 137 + src/config/rule/value.js | 31 + src/config/rule/video.js | 79 + src/config/rule/watermark.js | 77 + src/config/template/chineseAmount.js | 35 + src/config/template/col3.js | 45 + src/config/template/col4.js | 54 + src/config/template/duration.js | 184 + src/config/template/table43.js | 25 + src/form/elm.css | 11 + src/form/elm.js | 93 + src/form/mobile.css | 45 + src/form/mobile.js | 344 + src/index.js | 312 + src/locale/en.js | 1789 ++ src/locale/jp.js | 1790 ++ src/locale/zh-cn.js | 1790 ++ src/style/chart.png | Bin 0 -> 14912 bytes src/style/fonts/fc-icons.woff | Bin 0 -> 20740 bytes src/style/icon.css | 758 + src/style/index.css | 1296 ++ src/style/theme.css | 67 + src/utils/behavior.js | 553 + src/utils/easySlots.js | 23 + src/utils/extendApi.js | 23 + src/utils/extendMessageApi.js | 11 + src/utils/form.js | 30 + src/utils/formulas.js | 611 + src/utils/highlight/highlight.min.js | 307 + src/utils/highlight/javascript.min.js | 80 + src/utils/highlight/style.css | 1 + src/utils/highlight/xml.min.js | 29 + src/utils/index.js | 578 + src/utils/loadjs/loadjs.js | 379 + src/utils/locale.js | 23 + src/utils/message.js | 19 + src/utils/mobileForm.js | 44 + src/utils/preview.js | 90 + src/utils/sfc.js | 355 + src/utils/template.js | 130 + tsconfig.json | 21 + types/index.d.ts | 788 + vite.config.build.js | 125 + vite.config.elm.js | 75 + vite.config.locale.js | 76 + vite.config.mobile.js | 77 + vite.config.pc.js | 131 + vite.config.preview.js | 79 + vite.dev.config.js | 12 + 使用前必读.docx | Bin 0 -> 218828 bytes 275 files changed, 63666 insertions(+) create mode 100644 .cz-config.js create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 examples/App.vue create mode 100644 examples/components/AiTool.vue create mode 100644 examples/components/MakeDragRule.vue create mode 100644 examples/forms.js create mode 100644 examples/index.html create mode 100644 examples/main.js create mode 100644 examples/rule.js create mode 100644 gulpfile.js create mode 100644 index.html create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 src/assets/svg/dv-folder.svg create mode 100644 src/assets/svg/icon_dataset.svg create mode 100644 src/components/City.vue create mode 100644 src/components/DragBox.vue create mode 100644 src/components/DragTool.vue create mode 100644 src/components/EventConfig.vue create mode 100644 src/components/FcDesigner.vue create mode 100644 src/components/FetchConfig.vue create mode 100644 src/components/FetchTable.vue create mode 100644 src/components/FieldInput.vue create mode 100644 src/components/FieldList.vue create mode 100644 src/components/FnConfig.vue create mode 100644 src/components/FnEditor.vue create mode 100644 src/components/FnInput.vue create mode 100644 src/components/FormList.vue create mode 100644 src/components/GlobalClassConfig.vue create mode 100644 src/components/GlobalClassSelect.vue create mode 100644 src/components/GlobalEventConfig.vue create mode 100644 src/components/GlobalFetchConfig.vue create mode 100644 src/components/GlobalFetchSelect.vue create mode 100644 src/components/GlobalVariableConfig.vue create mode 100644 src/components/HideConfig.vue create mode 100644 src/components/HtmlEditor.vue create mode 100644 src/components/Id.vue create mode 100644 src/components/InlineForm.vue create mode 100644 src/components/JsonPreview.vue create mode 100644 src/components/PageInput.vue create mode 100644 src/components/PrintForm.vue create mode 100644 src/components/PromptInput.vue create mode 100644 src/components/PropsInput.vue create mode 100644 src/components/QuickLayout.vue create mode 100644 src/components/Required.vue create mode 100644 src/components/Row.vue create mode 100644 src/components/RuleSelect.vue create mode 100644 src/components/SignaturePad.vue create mode 100644 src/components/SlotsConfig.vue create mode 100644 src/components/SpanInput.vue create mode 100644 src/components/Struct.vue create mode 100644 src/components/StructEditor.vue create mode 100644 src/components/SubList.vue create mode 100644 src/components/TableOptions.vue create mode 100644 src/components/ToolsBar.vue create mode 100644 src/components/TreeOptions.vue create mode 100644 src/components/TypeSelect.vue create mode 100644 src/components/VNode.vue create mode 100644 src/components/Validate.vue create mode 100644 src/components/Warning.vue create mode 100644 src/components/ai/AiChat.vue create mode 100644 src/components/aide/AudioBox.vue create mode 100644 src/components/aide/BarCodeBox.vue create mode 100644 src/components/aide/FcTitle.vue create mode 100644 src/components/aide/IframeBox.vue create mode 100644 src/components/aide/Markdown.vue create mode 100644 src/components/aide/QrCodeBox.vue create mode 100644 src/components/aide/VideoBox.vue create mode 100644 src/components/cell/Cell.vue create mode 100644 src/components/cell/CellView.vue create mode 100644 src/components/computed/ComputedConfig.vue create mode 100644 src/components/computed/ConditionGroup.vue create mode 100644 src/components/computed/ConditionInput.vue create mode 100644 src/components/computed/PatternInput.vue create mode 100644 src/components/computed/ValueInput.vue create mode 100644 src/components/computed/VariableConfig.vue create mode 100644 src/components/dataSelect/DataSelect.vue create mode 100644 src/components/dataSelect/DataSelectView.vue create mode 100644 src/components/dataTable/DataTable.vue create mode 100644 src/components/dataTable/TableButtonConfig.vue create mode 100644 src/components/dataTable/TableColumnConfig.vue create mode 100644 src/components/dialog/Dialog.vue create mode 100644 src/components/dialog/DialogView.vue create mode 100644 src/components/drawer/Drawer.vue create mode 100644 src/components/drawer/DrawerView.vue create mode 100644 src/components/echarts/Echarts.vue create mode 100644 src/components/infiniteTableForm/InfiniteTableForm.vue create mode 100644 src/components/infiniteTableForm/InfiniteTableFormView.vue create mode 100644 src/components/jsonComponent/JsonComponent.vue create mode 100644 src/components/jsonComponent/JsonComponentView.vue create mode 100644 src/components/language/LanguageConfig.vue create mode 100644 src/components/language/LanguageInput.vue create mode 100644 src/components/mobile/City.vue create mode 100644 src/components/mobile/SignaturePad.vue create mode 100644 src/components/mobile/popup/Popup.vue create mode 100644 src/components/mobile/popup/PopupView.vue create mode 100644 src/components/mobile/stepForm/StepForm.vue create mode 100644 src/components/mobile/stepForm/StepFormItemView.vue create mode 100644 src/components/mobile/stepForm/StepFormView.vue create mode 100644 src/components/nestedTableForm/NestedTableForm.vue create mode 100644 src/components/nestedTableForm/NestedTableFormView.vue create mode 100644 src/components/slotComponent/SlotComponent.vue create mode 100644 src/components/slotComponent/SlotComponentView.vue create mode 100644 src/components/stepForm/StepForm.vue create mode 100644 src/components/stepForm/StepFormItemView.vue create mode 100644 src/components/stepForm/StepFormView.vue create mode 100644 src/components/style/BorderInput.vue create mode 100644 src/components/style/BoxSizeInput.vue create mode 100644 src/components/style/BoxSpaceInput.vue create mode 100644 src/components/style/ColorInput.vue create mode 100644 src/components/style/ConfigItem.vue create mode 100644 src/components/style/ConfigTitle.vue create mode 100644 src/components/style/DisplayInput.vue create mode 100644 src/components/style/FontInput.vue create mode 100644 src/components/style/RadiusInput.vue create mode 100644 src/components/style/ShadowContent.vue create mode 100644 src/components/style/ShadowInput.vue create mode 100644 src/components/style/SizeInput.vue create mode 100644 src/components/style/StyleConfig.vue create mode 100644 src/components/style/StyleEditor.vue create mode 100644 src/components/table/Table.vue create mode 100644 src/components/table/TableView.vue create mode 100644 src/components/tableForm/TableForm.vue create mode 100644 src/components/tableForm/TableFormColumnView.vue create mode 100644 src/components/tableForm/TableFormPro.vue create mode 100644 src/components/tableForm/TableFormView.vue create mode 100644 src/components/value/Value.vue create mode 100644 src/components/value/ValueView.vue create mode 100644 src/config/base/advanced.js create mode 100644 src/config/base/field.js create mode 100644 src/config/base/form.js create mode 100644 src/config/base/style.js create mode 100644 src/config/base/validate.js create mode 100644 src/config/index.js create mode 100644 src/config/menu.js create mode 100644 src/config/rule/alert.js create mode 100644 src/config/rule/audio.js create mode 100644 src/config/rule/avatar.js create mode 100644 src/config/rule/barCode.js create mode 100644 src/config/rule/button.js create mode 100644 src/config/rule/card.js create mode 100644 src/config/rule/cascader.js create mode 100644 src/config/rule/cell.js create mode 100644 src/config/rule/charts/areaChart.js create mode 100644 src/config/rule/charts/barChart.js create mode 100644 src/config/rule/charts/customChart.js create mode 100644 src/config/rule/charts/funnelChart.js create mode 100644 src/config/rule/charts/gaugeChart.js create mode 100644 src/config/rule/charts/lineChart.js create mode 100644 src/config/rule/charts/pieChart.js create mode 100644 src/config/rule/charts/radarChart.js create mode 100644 src/config/rule/charts/scatterChart.js create mode 100644 src/config/rule/charts/stripeChart.js create mode 100644 src/config/rule/checkbox.js create mode 100644 src/config/rule/city.js create mode 100644 src/config/rule/col.js create mode 100644 src/config/rule/collapse.js create mode 100644 src/config/rule/collapseItem.js create mode 100644 src/config/rule/color.js create mode 100644 src/config/rule/dataSelect.js create mode 100644 src/config/rule/dataTable.js create mode 100644 src/config/rule/date.js create mode 100644 src/config/rule/dateRange.js create mode 100644 src/config/rule/descriptions.js create mode 100644 src/config/rule/descriptionsItem.js create mode 100644 src/config/rule/dialog.js create mode 100644 src/config/rule/divider.js create mode 100644 src/config/rule/drawer.js create mode 100644 src/config/rule/editor.js create mode 100644 src/config/rule/flex.js create mode 100644 src/config/rule/flex2.js create mode 100644 src/config/rule/formItem.js create mode 100644 src/config/rule/group.js create mode 100644 src/config/rule/html.js create mode 100644 src/config/rule/id.js create mode 100644 src/config/rule/iframe.js create mode 100644 src/config/rule/image.js create mode 100644 src/config/rule/infiniteTableForm.js create mode 100644 src/config/rule/inlineForm.js create mode 100644 src/config/rule/input.js create mode 100644 src/config/rule/json.js create mode 100644 src/config/rule/link.js create mode 100644 src/config/rule/markdown.js create mode 100644 src/config/rule/mention.js create mode 100644 src/config/rule/nestedSubTableForm.js create mode 100644 src/config/rule/nestedTableForm.js create mode 100644 src/config/rule/number.js create mode 100644 src/config/rule/password.js create mode 100644 src/config/rule/qrCodeBox.js create mode 100644 src/config/rule/radio.js create mode 100644 src/config/rule/rate.js create mode 100644 src/config/rule/row.js create mode 100644 src/config/rule/segmented.js create mode 100644 src/config/rule/select.js create mode 100644 src/config/rule/signaturePad.js create mode 100644 src/config/rule/slider.js create mode 100644 src/config/rule/slot.js create mode 100644 src/config/rule/space.js create mode 100644 src/config/rule/statistic.js create mode 100644 src/config/rule/stepForm.js create mode 100644 src/config/rule/stepFormItem.js create mode 100644 src/config/rule/subForm.js create mode 100644 src/config/rule/switch.js create mode 100644 src/config/rule/tabPane.js create mode 100644 src/config/rule/table.js create mode 100644 src/config/rule/tableForm.js create mode 100644 src/config/rule/tableForm2.js create mode 100644 src/config/rule/tableFormColumn.js create mode 100644 src/config/rule/tableFormColumn2.js create mode 100644 src/config/rule/tabs.js create mode 100644 src/config/rule/tag.js create mode 100644 src/config/rule/text.js create mode 100644 src/config/rule/textarea.js create mode 100644 src/config/rule/time.js create mode 100644 src/config/rule/timeRange.js create mode 100644 src/config/rule/title.js create mode 100644 src/config/rule/tooltip.js create mode 100644 src/config/rule/transfer.js create mode 100644 src/config/rule/tree.js create mode 100644 src/config/rule/treeSelect.js create mode 100644 src/config/rule/upload.js create mode 100644 src/config/rule/value.js create mode 100644 src/config/rule/video.js create mode 100644 src/config/rule/watermark.js create mode 100644 src/config/template/chineseAmount.js create mode 100644 src/config/template/col3.js create mode 100644 src/config/template/col4.js create mode 100644 src/config/template/duration.js create mode 100644 src/config/template/table43.js create mode 100644 src/form/elm.css create mode 100644 src/form/elm.js create mode 100644 src/form/mobile.css create mode 100644 src/form/mobile.js create mode 100644 src/index.js create mode 100644 src/locale/en.js create mode 100644 src/locale/jp.js create mode 100644 src/locale/zh-cn.js create mode 100644 src/style/chart.png create mode 100644 src/style/fonts/fc-icons.woff create mode 100644 src/style/icon.css create mode 100644 src/style/index.css create mode 100644 src/style/theme.css create mode 100644 src/utils/behavior.js create mode 100644 src/utils/easySlots.js create mode 100644 src/utils/extendApi.js create mode 100644 src/utils/extendMessageApi.js create mode 100644 src/utils/form.js create mode 100644 src/utils/formulas.js create mode 100644 src/utils/highlight/highlight.min.js create mode 100644 src/utils/highlight/javascript.min.js create mode 100644 src/utils/highlight/style.css create mode 100644 src/utils/highlight/xml.min.js create mode 100644 src/utils/index.js create mode 100644 src/utils/loadjs/loadjs.js create mode 100644 src/utils/locale.js create mode 100644 src/utils/message.js create mode 100644 src/utils/mobileForm.js create mode 100644 src/utils/preview.js create mode 100644 src/utils/sfc.js create mode 100644 src/utils/template.js create mode 100644 tsconfig.json create mode 100644 types/index.d.ts create mode 100644 vite.config.build.js create mode 100644 vite.config.elm.js create mode 100644 vite.config.locale.js create mode 100644 vite.config.mobile.js create mode 100644 vite.config.pc.js create mode 100644 vite.config.preview.js create mode 100644 vite.dev.config.js create mode 100644 使用前必读.docx diff --git a/.cz-config.js b/.cz-config.js new file mode 100644 index 0000000..a8d7c28 --- /dev/null +++ b/.cz-config.js @@ -0,0 +1,32 @@ +module.exports = { + types: [ + {value: 'feat', name: 'feat: 新功能'}, + {value: 'fix', name: 'fix: 修复'}, + {value: 'docs', name: 'docs: 文档变更'}, + {value: 'style', name: 'style: 代码格式(不影响代码运行的变动)'}, + {value: 'cli', name: 'cli: 脚手架优化(不影响代码运行的变动)'}, + {value: 'refactor', name: 'refactor: 重构(既不是增加feature,也不是修复bug)'}, + {value: 'perf', name: 'perf: 性能优化'}, + {value: 'test', name: 'test: 增加测试'}, + {value: 'chore', name: 'chore: 构建过程或辅助工具的变动'}, + {value: 'revert', name: 'revert: 回退'}, + {value: 'build', name: 'build: 打包'} + ], + // override the messages, defaults are as follows + messages: { + type: '请选择提交类型:', + scope: '请输入文件修改范围(可选):', + // used if allowCustomScopes is true + customScope: '请输入修改范围(可选):', + subject: '请简要描述提交(必填):', + body: '请输入详细描述(可选,待优化去除,跳过即可):', + // breaking: 'List any BREAKING CHANGES (optional):\n', + footer: '请输入要关闭的issue(待优化去除,跳过即可):', + confirmCommit: '确认使用以上信息提交?(y/n/e/h)' + }, + allowCustomScopes: true, + // allowBreakingChanges: ['feat', 'fix'], + skipQuestions: ['body', 'footer'], + // limit subject length, commitlint默认是72 + subjectLimit: 72 +} \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..b593810 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,6 @@ +dist +node_modules +**/dist +**/node_modules +**/examples +**/*.d.ts diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..291c43f --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,30 @@ +module.exports = { + 'env': { + 'browser': true, + 'node': true, + 'es6': true, + 'jest': true, + 'commonjs': true + }, + 'rules': { + 'indent': [ + 'error', + 4 + ], + 'quotes': [ + 'error', + 'single' + ], + 'block-spacing': 'error', + 'no-unused-vars': 'warn', + 'no-irregular-whitespace': 'warn', + 'no-useless-escape': 'warn', + 'no-empty': 'warn', + 'object-curly-spacing': 'error', + 'no-console': 'warn', + 'vue/valid-v-model': 'warn', + 'vue/no-template-key': 'warn', + 'vue/valid-v-for': 'warn', + 'vue/require-v-for-key': 'warn', + } +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..91d2af6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,67 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +stats.html + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next +.idea + +# custom +dist +/locale diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a11ad6a --- /dev/null +++ b/LICENSE @@ -0,0 +1,187 @@ +FormCreate设计器商业版 软件使用协议 + +西安锦强未来科技有限公司版权所有 (c) 2024-至今 + +使用FormCreate设计器商业版,必须遵守以下协议: +1. 被授权者在软件程序使用过程中应遵守中国现行法律法规,我们不对被授权者的经营行为负任何法律责任。 +2. 免责声明:任何情况下根据相关法律,我们不对被授权者因使用本软件产生的数据损坏或丢失、软硬件故障和违法犯罪等问题承担任何责任。 +3. 本授权仅限于被授权主体(个人、企业或组织)使用,未经授权不得使用、修改或移除版权信息。 +4. 授权者务必尊重知识产权,严格保证不恶意传播产品源码、不得直接对授权的产品本身进行二次转售或倒卖、不得对授权的产品进行简单包装后声称为自己的产品等。否则我们有权利收回产品授权,并根据事态轻重追究相应法律责任。 +5. 我们有义务为被授权者提供有效期内的产品下载、更新和维护,一旦过期,授权者无法享有相应权限。终身授权则不受限制。 +6. 禁止进行反编译、逆向工程、破解或篡改本软件的授权机制。 +7. 本协议及本协议任何条款内容的最终解释权及修改权归西安锦强未来科技有限公司所有。 + +本软件使用到的开源软件协议 + + +Vue +The MIT License (MIT) + +Copyright (c) 2018-present, Yuxi (Evan) You + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@form-create/element-ui +MIT License + +Copyright (c) 2022 xaboy + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +Element-plus +MIT License + +Copyright (c) 2020 Element Plus + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +vuedraggable +The MIT License (MIT) + +Copyright (c) 2016-2019 David Desmaisons + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +wangeditor +MIT License + +Copyright (c) 2015-present wangeditor-team + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +codemirror +MIT License + +Copyright (C) 2017 by Marijn Haverbeke and others + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Highlight.js +BSD 3-Clause License + +Copyright (c) 2006, Ivan Sagalaev. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..5a42330 --- /dev/null +++ b/README.md @@ -0,0 +1,102 @@ +

+ + FormCreate + +

+ +

+ 官网 +  |  + 帮助文档 +  |  + 可视化表单设计器 +

+ +**FcDesigner Pro版是一款基于Vue的低代码可视化表单设计器工具,通过数据驱动表单渲染。可以通过拖拽的方式快速创建表单,提高开发者对表单的开发效率,节省开发者的时间。目前,在OA系统、ERP系统、电商系统、流程管理等系统中已稳定应用。** + +----- +本项目采用 Vue3.0 和 ElementPlus 进行页面构建,内置多语言解决方案,支持二次扩展开发,支持自定义组件扩展。 + + +## 特点 +- 多语言配置 + > 轻松在设计器中为表单各元素添加多语种文本,一键切换语言体系,打破语言隔阂,拓展全球业务版图,使您在应对全球化的过程中无忧无虑,轻松自如。 + +- 绑定事件 + > 产品提供了可配置的组件和表单事件功能,为您处理各种动态交互提供了便利。无论用户需求何种复杂度与多样性,我们都能迎刃而解,提供满足使用者需求的解决方案。 + +- 丰富的组件 + > 产品内置了50+种常用组件,广泛覆盖多种场景需求,以满足不同的用户需求。更为重要的是,我们支持灵活扩展自定义组件,以满足您独特、个人化的需求,为您提供更丰富的使用体验。 + +- 灵活的布局 + > 产品提供了多种复杂表单布局方式,包括栅格、弹性盒子、表格等,这些功能让复杂的表单布局变得趋于简洁明了。此举不仅拓宽用户选择范围,更是为用户提供了贴心可靠的使用体验。 + +- 阅读模式 + > 致力于实现表单编辑与数据查看模式的无缝切换,高效地提升代码复用性。这种改进将大大提高生产效率,同时也能让用户在任何情况下都能享受到流畅的使用体验。 + +- 公式计算 + > 内置了52种常用的函数计算公式,这不仅可以大幅度提高数据分析效率,而且也能够灵活满足您在实际业务中的特定计算需求,从而保证数据的准确有效性。 + +- 数据联动 + > 提供更灵活的条件设置和组件值联动功能。用户可为组件设置条件,条件满足时触发联动显示,例如动态展示其他组件的值,实现组件间值的实时同步。 + +- 可视化 + > 产品以可视化操作为主导,使您可以轻而易举地完成表单页面的编辑。通过直观的图形界面,无需深入繁琐复杂的代码便可完成操作,大大降低了使用门槛,让编辑工作变得更轻松、更高效。 + +- 行内布局 + > 行内布局功能打破传统表单组件单一纵向堆叠模式,通过简洁直观的操作界面,允许开发者自由拖拽组件,使其能够在同一行内 “并肩齐驱”。 + +- 5 种主题色切换 + > 预设5种主题色(蓝色、绿色、橙色、紫色、粉色主题),用户可以一键切换表单主题风格,多样化的主题选择,不仅美观、易用,同时也可以满足不同场景和品牌风格需求。 + +## 编译文件 + +``` +├─dist 编译文件目录 +│ ├─index.[es|umd].js 完整包,包含PC端设计器+移动端自适应预览,需要安装vant和@form-create/vant +│ ├─pc/index.[es|umd].js PC端设计器,不包含移动端自适应预览,无需安装vant和@form-create/vant +│ ├─render/vant/form-create.[es|umd].js 移动端runtime环境的渲染器, 无需导入设计器 +│ ├─render/element-plus/form-create.[es|umd].js PC端runtime环境的渲染器, 无需导入设计器 +│ +``` + +## 命令说明 + +运行开发环境 +``` +npm run dev +``` + +完整打包设计器 +``` +npm run build +``` + +打包多语言文件 +``` +npm run build:locale +``` + +打包PC端渲染器 +``` +npm run build:elm +``` + +打包移动端渲染器 +``` +npm run build:mobile +``` + +打包预览页面,输出 index.html +``` +npm run build:preview +``` + + +## 版权声明 + +FcDesigner Pro是由西安锦强未来科技有限公司的FormCreate团队负责的更新与维护,若需在您的项目中应用,需购买我们[授权](https://www.form-create.com/price.html)。 + +## 联系 + +![http://static.form-create.com/file/img/support.jpg](http://static.form-create.com/file/img/support.jpg) diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..1a3e147 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + 'presets': [['@vue/cli-plugin-babel/preset', {'useBuiltIns': false}]], + 'plugins': ['@vue/babel-plugin-jsx'] +} diff --git a/examples/App.vue b/examples/App.vue new file mode 100644 index 0000000..24fdc91 --- /dev/null +++ b/examples/App.vue @@ -0,0 +1,1134 @@ + + + + + diff --git a/examples/components/AiTool.vue b/examples/components/AiTool.vue new file mode 100644 index 0000000..49fb1f0 --- /dev/null +++ b/examples/components/AiTool.vue @@ -0,0 +1,187 @@ + + + + + \ No newline at end of file diff --git a/examples/components/MakeDragRule.vue b/examples/components/MakeDragRule.vue new file mode 100644 index 0000000..93ac070 --- /dev/null +++ b/examples/components/MakeDragRule.vue @@ -0,0 +1,273 @@ + + + + + \ No newline at end of file diff --git a/examples/forms.js b/examples/forms.js new file mode 100644 index 0000000..17668b2 --- /dev/null +++ b/examples/forms.js @@ -0,0 +1,154 @@ +const demoRule = "[{\"type\":\"input\",\"field\":\"Fnf4lxvqdnrrdbc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":true,\"_fc_id\":\"id_F15tlxvqdnrsdcc\",\"name\":\"ref_Fvjmlxvqdnrsddc\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"Frnvlxvqdo0ndec\",\"title\":\"多行输入框\",\"info\":\"\",\"$required\":false,\"props\":{\"type\":\"textarea\"},\"_fc_id\":\"id_F2p0lxvqdo0ndfc\",\"name\":\"ref_Fj0blxvqdo0ndgc\",\"_fc_drag_tag\":\"textarea\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"Fvjnlxvqdoatdhc\",\"title\":\"多行输入框\",\"info\":\"\",\"$required\":false,\"props\":{\"type\":\"textarea\"},\"_fc_id\":\"id_Fjnslxvqdoatdic\",\"name\":\"ref_Fgwalxvqdoatdjc\",\"_fc_drag_tag\":\"textarea\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"F62glxvqdopkdkc\",\"title\":\"密码输入框\",\"info\":\"\",\"$required\":false,\"props\":{\"type\":\"password\"},\"_fc_id\":\"id_F942lxvqdopkdlc\",\"name\":\"ref_Fvw8lxvqdopkdmc\",\"_fc_drag_tag\":\"password\",\"display\":true,\"hidden\":false},{\"type\":\"inputNumber\",\"field\":\"Fg6mlxvqdp61dnc\",\"title\":\"数字输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fbqzlxvqdp61doc\",\"name\":\"ref_F59vlxvqdp61dpc\",\"_fc_drag_tag\":\"inputNumber\",\"display\":true,\"hidden\":false},{\"type\":\"radio\",\"field\":\"Fg6rlxvqdpe9dqc\",\"title\":\"单选框\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项00\",\"value\":1},{\"label\":\"选项01\",\"value\":2},{\"label\":\"选项02\",\"value\":3}],\"_fc_id\":\"id_Fu7tlxvqdpe9drc\",\"name\":\"ref_F7u8lxvqdpe9dsc\",\"_fc_drag_tag\":\"radio\",\"display\":true,\"hidden\":false},{\"type\":\"checkbox\",\"field\":\"Fpz5lxvqdpnwdtc\",\"title\":\"多选框\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项00\",\"value\":1},{\"label\":\"选项01\",\"value\":2},{\"label\":\"选项02\",\"value\":3}],\"_fc_id\":\"id_Fbtklxvqdpnwduc\",\"name\":\"ref_Fqpalxvqdpnwdvc\",\"_fc_drag_tag\":\"checkbox\",\"display\":true,\"hidden\":false},{\"type\":\"select\",\"field\":\"Fnzulxvqdpzcdwc\",\"title\":\"选择器\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项00\",\"value\":1},{\"label\":\"选项01\",\"value\":2},{\"label\":\"选项02\",\"value\":3}],\"_fc_id\":\"id_Fxd1lxvqdpzddxc\",\"name\":\"ref_Fjtjlxvqdpzddyc\",\"_fc_drag_tag\":\"select\",\"display\":true,\"hidden\":false},{\"type\":\"switch\",\"field\":\"Fbk6lxvqdq7edzc\",\"title\":\"开关\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fdtflxvqdq7ee0c\",\"name\":\"ref_Fkeslxvqdq7ee1c\",\"_fc_drag_tag\":\"switch\",\"display\":true,\"hidden\":false},{\"type\":\"rate\",\"field\":\"F2lzlxvqdqg0e2c\",\"title\":\"评分\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F0oslxvqdqg0e3c\",\"name\":\"ref_Fegslxvqdqg0e4c\",\"_fc_drag_tag\":\"rate\",\"value\":0,\"display\":true,\"hidden\":false}]"; + +export default () => [ + { + label: '功能介绍', + children: [ + { + label: '多语言', + info: '轻松在设计器中为表单各元素添加多语种文本,一键切换语言体系', + rule: '[{"type":"input","field":"Fcbmm50kr34igic","title":"{{$t.ArX2XDpz}}","$required":false,"_fc_id":"id_F9ctm50kr34igjc","name":"ref_Fxjim50kr34igkc","display":true,"hidden":false,"_fc_drag_tag":"input"},{"type":"inputNumber","field":"F3f0m50kr3tyglc","title":"{{$t.BoS7ZoNX}}","$required":false,"_fc_id":"id_Fa60m50kr3tygmc","name":"ref_F6i1m50kr3tygnc","display":true,"hidden":false,"_fc_drag_tag":"inputNumber"}]', + options: '{"form":{"inline":false,"hideRequiredAsterisk":false,"labelPosition":"right","size":"small","labelWidth":"125px"},"globalEvent":{},"globalData":{},"language":{"zh-cn":{"ArX2XDpz":"商品名称","BoS7ZoNX":"商品价格"},"en":{"ArX2XDpz":"Goods name","BoS7ZoNX":"Goods price"}},"resetBtn":{"show":false,"innerText":"重置"},"submitBtn":{"show":true,"innerText":"提交"}}' + }, + { + label: '数据表格', + info: '高效展示、排序、搜索和分页数据列表,支持自定义列和动态操作', + rule: "[{\"type\":\"fcInlineForm\",\"_fc_id\":\"id_Fjdrm1vqsjnub0c\",\"name\":\"ref_F1mkm1vqsjnub1c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"fcInlineForm\",\"children\":[{\"type\":\"input\",\"field\":\"Fwqlm1vqu2c1b2c\",\"title\":\"关键字\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F6omm1vqu2c1b3c\",\"name\":\"ref_F8l5m1vqu2c1b4c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\",\"wrap\":{\"labelWidth\":\"5em\"},\"style\":{\"width\":\"180px\"}},{\"type\":\"select\",\"field\":\"Fkh7m1vqzakub7c\",\"title\":\"商品分类\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"熊熊百货\",\"value\":\"6\"},{\"label\":\"时尚优品\",\"value\":\"3\"}],\"_fc_id\":\"id_Ffb3m1vqzakub8c\",\"name\":\"ref_Floem1vqzakub9c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"select\",\"wrap\":{\"labelWidth\":\"6em\"},\"style\":{\"width\":\"180px\"}},{\"type\":\"elButton\",\"children\":[\"搜索\"],\"_fc_id\":\"id_Fgecm1vquanjb5c\",\"name\":\"ref_Fdshm1vquanjb6c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"elButton\",\"on\":{\"click\":\"$FNX:$inject.api.getRule('ref_Fd9xlxvrabk0jmc').props.fetch.action = `https://mer.crmeb.net/api/product/spu/lst?keywrod=${$inject.api.form.Fwqlm1vqu2c1b2c || ''}&mer_id=${$inject.api.form.Fkh7m1vqzakub7c || ''}`;\\n\\n$inject.api.el('ref_Fd9xlxvrabk0jmc').initPage();\"},\"style\":{\"marginLeft\":\"15px\"}}],\"style\":{\"display\":\"flex\",\"flexDirection\":\"row\",\"alignItems\":\"flex-start\"}},{\"type\":\"dataTable\",\"native\":true,\"props\":{\"height\":\"500px\",\"button\":{\"open\":true,\"column\":[{\"key\":1,\"name\":\"详情\",\"prop\":[\"link\"],\"type\":\"primary\",\"size\":\"small\",\"click\":\"[[FORM-CREATE-PREFIX-function click(scope, api){api.open('ref_Fraim1unt0jhisc', scope.row);}-FORM-CREATE-SUFFIX]]\"},{\"key\":2,\"name\":\"删除\",\"prop\":[\"link\"],\"type\":\"primary\",\"handle\":\"[[FORM-CREATE-PREFIX-function render(props, scope){return scope.row.spu_id % 2 === 1;}-FORM-CREATE-SUFFIX]]\",\"size\":\"small\"}],\"width\":\"100px\"},\"column\":[{\"format\":\"default\",\"prop\":\"spu_id\",\"label\":\"ID\",\"width\":\"150\"},{\"format\":\"default\",\"prop\":\"store_name\",\"label\":\"商品名称\",\"width\":\"\"},{\"format\":\"default\",\"prop\":\"stock\",\"label\":\"库存\",\"width\":\"100\"},{\"format\":\"tag\",\"prop\":\"unit_name\",\"label\":\"单位\",\"width\":\"100\"},{\"format\":\"image\",\"prop\":\"image\",\"label\":\"主图\",\"width\":\"200\"}],\"page\":{\"totalField\":\"count\",\"dataField\":\"list\",\"orderField\":\"order\",\"orderByField\":\"orderBy\",\"pageField\":\"page\",\"pageSizeField\":\"limit\",\"open\":true,\"props\":{\"pageSize\":10,\"small\":true,\"background\":true}},\"_optionType\":2,\"fetch\":{\"action\":\"https://mer.crmeb.net/api/product/spu/lst\",\"method\":\"GET\",\"headers\":{},\"data\":{},\"parse\":\"[[FORM-CREATE-PREFIX-function parse(res){return res.data;}-FORM-CREATE-SUFFIX]]\",\"onError\":\"\",\"to\":\"options\"},\"rowKey\":\"spu_id\"},\"_fc_id\":\"id_Fe33lxvrabk0jlc\",\"name\":\"ref_Fd9xlxvrabk0jmc\",\"_fc_drag_tag\":\"dataTable\",\"display\":true,\"hidden\":false},{\"type\":\"fcDialog\",\"props\":{\"title\":\"弹出框\",\"rule\":[{\"type\":\"input\",\"field\":\"store_name\",\"title\":\"商品名称\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F22lm1unts3aiuc\",\"name\":\"ref_Ft1nm1unts3aivc\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false},{\"type\":\"inputNumber\",\"field\":\"stock\",\"title\":\"库存\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fmzhm1ununlrixc\",\"name\":\"ref_Fhj5m1ununlriyc\",\"_fc_drag_tag\":\"inputNumber\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"unit_name\",\"title\":\"单位\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fzp1m1unv5trj0c\",\"name\":\"ref_Fxc0m1unv5trj1c\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false}]},\"_fc_id\":\"id_Ft1em1unt0jhirc\",\"name\":\"ref_Fraim1unt0jhisc\",\"_fc_drag_tag\":\"fcDialog\",\"display\":true,\"hidden\":false}]", + }, + { + label: '表格布局', + info: '创建灵活的网格布局,实现多行多列的表单项排列', + rule: "[{\"type\":\"fcTable\",\"props\":{\"rule\":{\"row\":5,\"col\":4,\"style\":{},\"class\":{},\"layout\":[{\"top\":3,\"left\":0,\"col\":3},{\"top\":3,\"left\":3,\"row\":2},{\"top\":4,\"left\":1,\"col\":2}]}},\"children\":[{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#FFA500\"],\"_fc_id\":\"id_F2tglxvr3ynxgnc\",\"name\":\"ref_Fovslxvr36znfwc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#FFA500\"},\"display\":true,\"hidden\":false},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"文字\"],\"_fc_id\":\"id_F30alxvr38b5fxc\",\"name\":\"ref_Fovslxvr36znfwc\",\"_fc_drag_tag\":\"text\",\"display\":true,\"hidden\":false},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#FF0000\"],\"_fc_id\":\"id_Fn9zlxvr32vdfuc\",\"name\":\"ref_Fxbglxvqyzvsfnc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#FF0000\"},\"display\":true,\"hidden\":false},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#FF0000\"],\"_fc_id\":\"id_F10mlxvr2xbdfsc\",\"name\":\"ref_Fxbglxvqyzvsfnc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#FF0000\"},\"display\":true,\"hidden\":false},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#FF0000\"],\"_fc_id\":\"id_Fuhvlxvr2ttifqc\",\"name\":\"ref_Fxbglxvqyzvsfnc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#FF0000\"},\"display\":true,\"hidden\":false},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#FF0000\"],\"_fc_id\":\"id_Fi4dlxvr2s48fpc\",\"name\":\"ref_Fxbglxvqyzvsfnc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#FF0000\"},\"display\":true,\"hidden\":false},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#E32636\"],\"_fc_id\":\"id_Fuublxvr52m1hic\",\"name\":\"ref_Fmeylxvr52m1hjc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#E32636\"},\"display\":true,\"hidden\":false,\"slot\":\"1:3\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#87CEFA\"],\"_fc_id\":\"id_Fb5mlxvr605xhoc\",\"name\":\"ref_Fce8lxvr605xhpc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#87CEFA\"},\"display\":true,\"hidden\":false,\"slot\":\"2:0\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#7FFFAA\"],\"_fc_id\":\"id_Fobklxvr682shqc\",\"name\":\"ref_Ftillxvr682shrc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#7FFFAA\"},\"display\":true,\"hidden\":false,\"slot\":\"2:1\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#3CB371\"],\"_fc_id\":\"id_Fyrulxvr6kl1hsc\",\"name\":\"ref_F5k6lxvr6kl1htc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#3CB371\"},\"display\":true,\"hidden\":false,\"slot\":\"2:2\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#D2B48C\"],\"_fc_id\":\"id_Fqoglxvr6sbjhuc\",\"name\":\"ref_F1bflxvr6sbjhvc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#D2B48C\"},\"display\":true,\"hidden\":false,\"slot\":\"2:3\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#70F3FF\"],\"_fc_id\":\"id_Fouflxvr7iq4i6c\",\"name\":\"ref_Fjc1lxvr7iq4i7c\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#70F3FF\"},\"display\":true,\"hidden\":false,\"slot\":\"3:0\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#E9BB1D\"],\"_fc_id\":\"id_Ftpjlxvr7ys4i9c\",\"name\":\"ref_F7lmlxvr7ys4iac\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#E9BB1D\"},\"display\":true,\"hidden\":false,\"slot\":\"3:3\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#DCD6D9\"],\"_fc_id\":\"id_Fwyqlxvr8fe4icc\",\"name\":\"ref_Fh9zlxvr8fe4idc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#DCD6D9\"},\"display\":true,\"hidden\":false,\"slot\":\"4:0\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#E0C38C\"],\"_fc_id\":\"id_Fqd6lxvr8g8miec\",\"name\":\"ref_F6a3lxvr8g8mifc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#E0C38C\"},\"display\":true,\"hidden\":false,\"slot\":\"4:1\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#FFA500\"],\"_fc_id\":\"id_Fd99lxvr36znfvc\",\"name\":\"ref_Fovslxvr36znfwc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#FFA500\"},\"display\":true,\"hidden\":false,\"slot\":\"0:0\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#FF0000\"],\"_fc_id\":\"id_F0gglxvqyzvsfmc\",\"name\":\"ref_Fxbglxvqyzvsfnc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#FF0000\"},\"display\":true,\"hidden\":false,\"slot\":\"0:1\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#FFFF00\"],\"_fc_id\":\"id_Fwqelxvr40hagoc\",\"name\":\"ref_F6tulxvr40hagpc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#FFFF00\"},\"display\":true,\"hidden\":false,\"slot\":\"0:2\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#CCFF00\"],\"_fc_id\":\"id_F73klxvr4e0ehec\",\"name\":\"ref_F0calxvr4e0ehfc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#CCFF00\"},\"display\":true,\"hidden\":false,\"slot\":\"0:3\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#6495ED\"],\"_fc_id\":\"id_Fmlglxvr4m7vhgc\",\"name\":\"ref_Fxo5lxvr4m7vhhc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#6495ED\"},\"display\":true,\"hidden\":false,\"slot\":\"1:0\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#FF00FF\"],\"_fc_id\":\"id_F8evlxvr5bi2hkc\",\"name\":\"ref_F1nslxvr5bi2hlc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#FF00FF\"},\"display\":true,\"hidden\":false,\"slot\":\"1:1\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"#9932CC\"],\"_fc_id\":\"id_Faiilxvr5ljjhmc\",\"name\":\"ref_Fj4xlxvr5ljjhnc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#9932CC\"},\"display\":true,\"hidden\":false,\"slot\":\"1:2\"}],\"_fc_id\":\"id_F1e6lxvqyq6qf8c\",\"name\":\"ref_Fx1ulxvqyq6qf9c\",\"_fc_drag_tag\":\"fcTable\",\"display\":true,\"hidden\":false}]", + }, + { + label: '表格表单', + info: '在表格中编辑数据,支持表单字段的操作和管理', + rule: "[{\"type\":\"tableForm\",\"field\":\"Fhm3lxvrai19jnc\",\"title\":\"表格表单\",\"info\":\"\",\"props\":{\"columns\":[{\"label\":\"用户名\",\"required\":false,\"style\":{\"width\":\"auto\"},\"rule\":[{\"type\":\"input\",\"field\":\"Fh8zlxvrakgdjrc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fnnjlxvrakgejsc\",\"name\":\"ref_Fx7flxvrakgejtc\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false}]},{\"label\":\"联系电话\",\"required\":false,\"style\":{\"width\":\"auto\"},\"rule\":[{\"type\":\"input\",\"field\":\"Fbhplxvranm8jvc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fecnlxvranm9jwc\",\"name\":\"ref_Fegnlxvranm9jxc\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false}]},{\"label\":\"性别\",\"required\":false,\"style\":{\"width\":\"auto\"},\"rule\":[{\"type\":\"radio\",\"field\":\"Fokrlxvrb54ujzc\",\"title\":\"单选框\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"props\":{\"type\":\"default\"},\"options\":[{\"label\":\"男\",\"value\":1},{\"label\":\"女\",\"value\":2}],\"_fc_id\":\"id_F12flxvrb54uk0c\",\"name\":\"ref_Fzcglxvrb54uk1c\",\"_fc_drag_tag\":\"radio\",\"display\":true,\"hidden\":false}]}]},\"_fc_id\":\"id_Fn5ilxvrai19joc\",\"name\":\"ref_Fofmlxvrai19jpc\",\"_fc_drag_tag\":\"tableForm\",\"display\":true,\"hidden\":false}]", + }, + { + label: '打开弹窗', + info: '在弹窗内显示表单,支持数据录入和交互确认操作', + rule: "[{\"type\":\"elButton\",\"children\":[\"打开弹窗\"],\"_fc_id\":\"id_Fdvalxvqbg1zd7c\",\"name\":\"ref_Foo9lxvqbg1zd8c\",\"_fc_drag_tag\":\"elButton\",\"style\":{\"display\":\"block\"},\"display\":true,\"hidden\":false,\"on\":{\"click\":\"$FNX:$inject.api.open('ref_F2vulxvqc841dac')\"}},{\"type\":\"fcDialog\",\"props\":{\"title\":\"演示表单\",\"rule\":[{\"type\":\"input\",\"field\":\"Fnf4lxvqdnrrdbc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":true,\"_fc_id\":\"id_F15tlxvqdnrsdcc\",\"name\":\"ref_Fvjmlxvqdnrsddc\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"Frnvlxvqdo0ndec\",\"title\":\"多行输入框\",\"info\":\"\",\"$required\":false,\"props\":{\"type\":\"textarea\"},\"_fc_id\":\"id_F2p0lxvqdo0ndfc\",\"name\":\"ref_Fj0blxvqdo0ndgc\",\"_fc_drag_tag\":\"textarea\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"Fvjnlxvqdoatdhc\",\"title\":\"多行输入框\",\"info\":\"\",\"$required\":false,\"props\":{\"type\":\"textarea\"},\"_fc_id\":\"id_Fjnslxvqdoatdic\",\"name\":\"ref_Fgwalxvqdoatdjc\",\"_fc_drag_tag\":\"textarea\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"F62glxvqdopkdkc\",\"title\":\"密码输入框\",\"info\":\"\",\"$required\":false,\"props\":{\"type\":\"password\"},\"_fc_id\":\"id_F942lxvqdopkdlc\",\"name\":\"ref_Fvw8lxvqdopkdmc\",\"_fc_drag_tag\":\"password\",\"display\":true,\"hidden\":false},{\"type\":\"inputNumber\",\"field\":\"Fg6mlxvqdp61dnc\",\"title\":\"数字输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fbqzlxvqdp61doc\",\"name\":\"ref_F59vlxvqdp61dpc\",\"_fc_drag_tag\":\"inputNumber\",\"display\":true,\"hidden\":false},{\"type\":\"radio\",\"field\":\"Fg6rlxvqdpe9dqc\",\"title\":\"单选框\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项00\",\"value\":1},{\"label\":\"选项01\",\"value\":2},{\"label\":\"选项02\",\"value\":3}],\"_fc_id\":\"id_Fu7tlxvqdpe9drc\",\"name\":\"ref_F7u8lxvqdpe9dsc\",\"_fc_drag_tag\":\"radio\",\"display\":true,\"hidden\":false},{\"type\":\"checkbox\",\"field\":\"Fpz5lxvqdpnwdtc\",\"title\":\"多选框\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项00\",\"value\":1},{\"label\":\"选项01\",\"value\":2},{\"label\":\"选项02\",\"value\":3}],\"_fc_id\":\"id_Fbtklxvqdpnwduc\",\"name\":\"ref_Fqpalxvqdpnwdvc\",\"_fc_drag_tag\":\"checkbox\",\"display\":true,\"hidden\":false},{\"type\":\"select\",\"field\":\"Fnzulxvqdpzcdwc\",\"title\":\"选择器\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项00\",\"value\":1},{\"label\":\"选项01\",\"value\":2},{\"label\":\"选项02\",\"value\":3}],\"_fc_id\":\"id_Fxd1lxvqdpzddxc\",\"name\":\"ref_Fjtjlxvqdpzddyc\",\"_fc_drag_tag\":\"select\",\"display\":true,\"hidden\":false},{\"type\":\"switch\",\"field\":\"Fbk6lxvqdq7edzc\",\"title\":\"开关\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fdtflxvqdq7ee0c\",\"name\":\"ref_Fkeslxvqdq7ee1c\",\"_fc_drag_tag\":\"switch\",\"display\":true,\"hidden\":false},{\"type\":\"rate\",\"field\":\"F2lzlxvqdqg0e2c\",\"title\":\"评分\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F0oslxvqdqg0e3c\",\"name\":\"ref_Fegslxvqdqg0e4c\",\"_fc_drag_tag\":\"rate\",\"value\":0,\"display\":true,\"hidden\":false}]},\"_fc_id\":\"id_Fo46lxvqc840d9c\",\"name\":\"ref_F2vulxvqc841dac\",\"_fc_drag_tag\":\"fcDialog\",\"display\":true,\"hidden\":false,\"on\":{\"submit\":\"$FNX:alert(JSON.stringify($inject.args[0]));\"}}]", + }, + { + label: '行内表单', + info: '将表单元素横向排列,适合简洁、紧凑的布局需求', + rule: "[{\"type\":\"fcInlineForm\",\"_fc_id\":\"id_Fg6tm1uoe42ce9c\",\"name\":\"ref_Fumhm1uoe42ceac\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"fcInlineForm\",\"children\":[{\"type\":\"input\",\"field\":\"Fbv9m1uoe66vebc\",\"title\":\"用户名\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fvjvm1uoe66vecc\",\"name\":\"ref_Fvpqm1uoe66vedc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\",\"wrap\":{\"labelWidth\":\"80px\"}},{\"type\":\"input\",\"field\":\"Fhd5m1uoebu2eec\",\"title\":\"订单ID\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F0otm1uoebu2efc\",\"name\":\"ref_F9sim1uoebu2egc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\",\"wrap\":{\"labelWidth\":\"80px\"},\"style\":{\"marginLeft\":\"10px\"}},{\"type\":\"select\",\"field\":\"F8qsm1uoehprehc\",\"title\":\"订单分类\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项01\",\"value\":\"1\"},{\"label\":\"选项02\",\"value\":\"2\"},{\"label\":\"选项03\",\"value\":\"3\"}],\"_fc_id\":\"id_Fcrum1uoehpreic\",\"name\":\"ref_Fjmfm1uoehprejc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"select\",\"wrap\":{\"class\":\"fc-wrap-right\",\"labelWidth\":\"80px\"},\"style\":{\"marginLeft\":\"10px\"}},{\"type\":\"elButton\",\"children\":[\"搜索\"],\"_fc_id\":\"id_Fc0um1uoeyekekc\",\"name\":\"ref_F7y6m1uoeyekelc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"elButton\",\"style\":{\"marginLeft\":\"10px\"}}]}]", + }, + { + label: '自定义组件样式', + info: '灵活设置组件样式,实现个性化的外观调整', + rule: "[{\"type\":\"input\",\"field\":\"Fm0am1uq0g76dwc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Foslm1uq0g76dxc\",\"name\":\"ref_Fvqfm1uq0g76dyc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\",\"style\":{\"borderRadius\":\"0px 0px 0px 0px\",\"paddingTop\":\"10px\",\"paddingRight\":\"10px\",\"paddingBottom\":\"10px\",\"paddingLeft\":\"10px\",\"borderStyle\":\"solid\",\"borderColor\":\"#484141FF\"}},{\"type\":\"div\",\"wrap\":{\"show\":false},\"native\":true,\"style\":{\"width\":\"100%\",\"height\":\"20px\"},\"_fc_id\":\"id_Ftj4m1uq2v5rdzc\",\"name\":\"ref_Fypam1uq2v5re0c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"space\"},{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"文字\"],\"_fc_id\":\"id_F847lxvsu1m4b0c\",\"name\":\"ref_Ftcalxvsu1m4b1c\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#FFFFFF\",\"backgroundColor\":\"#489356FF\",\"borderRadius\":\"5px 5px 5px 5px\",\"boxShadow\":\"3px 5px 7px 2px #CBCBCBFF\",\"scale\":\"91%\",\"width\":\"100%\",\"borderStyle\":\"solid\",\"borderColor\":\"#000000FF\",\"borderWidth\":\"2px\",\"display\":\"flex\",\"justifyContent\":\"center\"},\"display\":true,\"hidden\":false},{\"type\":\"div\",\"wrap\":{\"show\":false},\"native\":true,\"style\":{\"width\":\"100%\",\"height\":\"20px\"},\"_fc_id\":\"id_Fh8nm1uq8drie3c\",\"name\":\"ref_Fa5hm1uq8drie4c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"space\"},{\"type\":\"html\",\"title\":\"\",\"native\":true,\"attrs\":{\"innerHTML\":\"\"},\"style\":{\"height\":\"100%\",\"width\":\"100%\",\"display\":\"block\"},\"children\":[\"
\\n

JSON 表单生成

\\n

使用 JSON 数据生成表单,无需手动编写繁琐的表单代码

\\n
\"],\"_fc_id\":\"id_F3n8m1uq3a60e1c\",\"name\":\"ref_Fiz6m1uq3a60e2c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"html\"}]", + }, + { + label: '组件验证规则', + rule: "[{\"type\":\"elDivider\",\"children\":[\"必填\"],\"_fc_id\":\"id_Fus3m1uwfns9alc\",\"name\":\"ref_Fh7pm1uwfns9amc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"elDivider\"},{\"type\":\"input\",\"field\":\"Fa90m1uwfqzjanc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":true,\"_fc_id\":\"id_Fxhqm1uwfqzjaoc\",\"name\":\"ref_F9mbm1uwfqzjapc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\"},{\"type\":\"elDivider\",\"children\":[\"正则验证\"],\"_fc_id\":\"id_F34qm1uwfxioaqc\",\"name\":\"ref_Fh7pm1uwfns9amc\",\"_fc_drag_tag\":\"elDivider\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"Flrym1uwg3tiarc\",\"title\":\"手机号\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F882m1uwg3tiasc\",\"name\":\"ref_Fn4xm1uwg3tiatc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\",\"validate\":[{\"transform\":\"[[FORM-CREATE-PREFIX-function anonymous(val\\n) {\\nthis.type = Array.isArray(val) ? 'array' : (typeof val); return val;\\n}-FORM-CREATE-SUFFIX]]\",\"mode\":\"pattern\",\"trigger\":\"blur\",\"pattern\":\"^(?:(?:\\\\+|00)86)?1[3-9]\\\\d{9}$\"}]},{\"type\":\"elDivider\",\"children\":[\"自定义验证\"],\"_fc_id\":\"id_Fvncm1uwgo5iauc\",\"name\":\"ref_Fh7pm1uwfns9amc\",\"_fc_drag_tag\":\"elDivider\",\"display\":true,\"hidden\":false},{\"type\":\"fcRow\",\"children\":[{\"type\":\"fcCell\",\"children\":[{\"type\":\"datePicker\",\"field\":\"Frolm1uwgx52avc\",\"title\":\"开始时间\",\"info\":\"\",\"$required\":false,\"_fc_drag_tag\":\"datePicker\",\"validate\":[{\"type\":\"validator\",\"trigger\":\"change\",\"validator\":\"[[FORM-CREATE-PREFIX-function validator(rule, value, callback){this.api.validateField('F3n3m1uwgx52axc');\\ncallback();}-FORM-CREATE-SUFFIX]]\",\"mode\":\"validator\",\"message\":\"\"}],\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fzevm1uwgx53b0c\",\"name\":\"ref_Fk5om1uwgx53b1c\",\"display\":true,\"hidden\":false}],\"_fc_drag_tag\":\"fcCell\",\"style\":{\"width\":\"400px\"},\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fp60m1uwgx53b2c\",\"name\":\"ref_Fcmrm1uwgx53b3c\",\"display\":true,\"hidden\":false},{\"type\":\"fcCell\",\"children\":[{\"type\":\"select\",\"field\":\"Fvv0m1uwgx52awc\",\"title\":\"\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"上午\",\"value\":\"1\"},{\"label\":\"下午\",\"value\":\"1.5\"}],\"_fc_drag_tag\":\"select\",\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fwh8m1uwgx53b4c\",\"name\":\"ref_Fu5lm1uwgx53b5c\",\"display\":true,\"hidden\":false}],\"_fc_drag_tag\":\"fcCell\",\"style\":{\"paddingLeft\":\"10px\",\"width\":\"150px\"},\"_fc_template\":\"duration\",\"_fc_id\":\"id_F58mm1uwgx53b6c\",\"name\":\"ref_Fioum1uwgx53b7c\",\"display\":true,\"hidden\":false}],\"_fc_drag_tag\":\"fcFlex\",\"_fc_template\":\"duration\",\"_fc_id\":\"id_F7hxm1uwgx53b8c\",\"name\":\"ref_Fwbgm1uwgx53b9c\",\"display\":true,\"hidden\":false},{\"type\":\"fcRow\",\"children\":[{\"type\":\"fcCell\",\"children\":[{\"type\":\"datePicker\",\"field\":\"F3n3m1uwgx52axc\",\"title\":\"结束时间\",\"info\":\"\",\"$required\":false,\"_fc_drag_tag\":\"datePicker\",\"validate\":[{\"type\":\"validator\",\"trigger\":\"change\",\"validator\":\"[[FORM-CREATE-PREFIX-function validator(rule, value, callback){let startTime = this.api.getValue('Frolm1uwgx52avc');\\nif(startTime && value && Date.parse(startTime) > Date.parse(value)) {\\n\\tcallback(false);\\n return;\\n}\\ncallback()}-FORM-CREATE-SUFFIX]]\",\"mode\":\"min\",\"message\":\"开始时间不能大于结束时间\"}],\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fc33m1uwgx53bac\",\"name\":\"ref_F6f8m1uwgx53bbc\",\"display\":true,\"hidden\":false}],\"_fc_drag_tag\":\"fcCell\",\"style\":{\"width\":\"400px\"},\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fe25m1uwgx53bcc\",\"name\":\"ref_Fatbm1uwgx53bdc\",\"display\":true,\"hidden\":false},{\"type\":\"fcCell\",\"children\":[{\"type\":\"select\",\"field\":\"Fr8pm1uwgx52ayc\",\"title\":\"\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"上午\",\"value\":\"1\"},{\"label\":\"下午\",\"value\":\"1.5\"}],\"_fc_drag_tag\":\"select\",\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fm4em1uwgx53bec\",\"name\":\"ref_Fvpxm1uwgx53bfc\",\"display\":true,\"hidden\":false}],\"_fc_drag_tag\":\"fcCell\",\"style\":{\"paddingLeft\":\"10px\",\"width\":\"150px\"},\"_fc_template\":\"duration\",\"_fc_id\":\"id_F3idm1uwgx53bgc\",\"name\":\"ref_Fhmum1uwgx53bhc\",\"display\":true,\"hidden\":false}],\"_fc_drag_tag\":\"fcFlex\",\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fjqtm1uwgx53bic\",\"name\":\"ref_Fc97m1uwgx53bjc\",\"display\":true,\"hidden\":false},{\"type\":\"fcRow\",\"children\":[{\"type\":\"fcCell\",\"children\":[{\"type\":\"inputNumber\",\"field\":\"F0mkm1uwgx52azc\",\"title\":\"时长\",\"info\":\"\",\"$required\":false,\"props\":{\"controls\":false},\"_fc_drag_tag\":\"inputNumber\",\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fu0fm1uwgx53bkc\",\"name\":\"ref_Fzj2m1uwgx53blc\",\"display\":true,\"hidden\":false,\"computed\":{\"value\":\"MAX(IF(Frolm1uwgx52avc && F3n3m1uwgx52axc && TIMESTAMP(F3n3m1uwgx52axc) > TIMESTAMP(Frolm1uwgx52avc), DIFFDAYS(Frolm1uwgx52avc, F3n3m1uwgx52axc), -1) + IF(Fr8pm1uwgx52ayc && Fvv0m1uwgx52awc, Fr8pm1uwgx52ayc - Fvv0m1uwgx52awc + 0.5, 0), 0);\"}}],\"_fc_drag_tag\":\"fcCell\",\"style\":{\"width\":\"400px\"},\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fyi2m1uwgx53bmc\",\"name\":\"ref_Fojvm1uwgx53bnc\",\"display\":true,\"hidden\":false},{\"type\":\"fcCell\",\"_fc_drag_tag\":\"fcCell\",\"style\":{\"paddingLeft\":\"10px\",\"width\":\"30px\"},\"children\":[{\"type\":\"div\",\"title\":\"\",\"native\":true,\"children\":[\"天\"],\"_fc_drag_tag\":\"text\",\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fdn5m1uwgx53boc\",\"name\":\"ref_F4kmm1uwgx53bpc\",\"display\":true,\"hidden\":false}],\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fxe2m1uwgx53bqc\",\"name\":\"ref_F336m1uwgx53brc\",\"display\":true,\"hidden\":false}],\"_fc_drag_tag\":\"fcFlex\",\"style\":{\"display\":\"flex\",\"alignItems\":\"baseline\"},\"_fc_template\":\"duration\",\"_fc_id\":\"id_Fe7nm1uwgx53bsc\",\"name\":\"ref_F9h3m1uwgx53btc\",\"display\":true,\"hidden\":false}]", + }, + { + label: '懒加载表单数据', + info: '通过load方法加载表单列表中表单项的数据', + load() { + return new Promise(resolve => { + setTimeout(() => { + resolve({ + rule: "[{\"type\":\"input\",\"field\":\"F86hluigam0lanc\",\"title\":\"商品名称\",\"info\":\"\",\"$required\":true,\"props\":{\"placeholder\":\"请输入商品名称\"},\"_fc_drag_tag\":\"input\",\"_fc_id\":\"id_Ffipm1uyvz01asc\",\"name\":\"ref_Fdv9m1uyvz01atc\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"Fxhhluig9i7zadc\",\"title\":\"商品简介\",\"info\":\"\",\"$required\":false,\"props\":{\"type\":\"textarea\",\"placeholder\":\"请输入商品简介\"},\"_fc_drag_tag\":\"textarea\",\"_fc_id\":\"id_Fxjhm1uyvz01auc\",\"name\":\"ref_Fwknm1uyvz01avc\",\"display\":true,\"hidden\":false},{\"type\":\"inputNumber\",\"field\":\"Fbw5luigfcb7azc\",\"title\":\"商品价格\",\"info\":\"\",\"$required\":true,\"_fc_drag_tag\":\"inputNumber\",\"_fc_id\":\"id_Fpj2m1uyvz01awc\",\"name\":\"ref_Fjp4m1uyvz01axc\",\"display\":true,\"hidden\":false},{\"type\":\"fcValue\",\"field\":\"Fcpxluigfcb7b0c\",\"title\":\" \",\"info\":\"\",\"_fc_drag_tag\":\"fcValue\",\"style\":{\"color\":\"#999999\"},\"_fc_id\":\"id_Fjeym1uyvz01ayc\",\"name\":\"ref_Fwzem1uyvz01azc\",\"display\":true,\"hidden\":false,\"computed\":{\"value\":\"\\\"大写: \\\" + TOCHINSESAMOUNT(Fbw5luigfcb7azc || 0)\"}},{\"type\":\"checkbox\",\"field\":\"F5x2luig9sekahc\",\"title\":\"商品标签\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"数码\",\"value\":2},{\"label\":\"食品\",\"value\":3},{\"label\":\"服装\",\"value\":4}],\"_fc_drag_tag\":\"checkbox\",\"_fc_id\":\"id_Fxx7m1uyvz01b0c\",\"name\":\"ref_Fp0xm1uyvz01b1c\",\"display\":true,\"hidden\":false},{\"type\":\"upload\",\"field\":\"Fkwlluigjiikbgc\",\"title\":\"商品轮播图\",\"info\":\"\",\"$required\":false,\"props\":{\"onSuccess\":\"[[FORM-CREATE-PREFIX-function onSuccess(res, file) {\\n file.url = res.data.url;\\n }-FORM-CREATE-SUFFIX]]\"},\"_fc_drag_tag\":\"upload\",\"_fc_id\":\"id_Fb0em1uyvz01b2c\",\"name\":\"ref_Fce4m1uyvz01b3c\",\"display\":true,\"hidden\":false},{\"type\":\"select\",\"field\":\"Fcusluiga8nealc\",\"title\":\"商品分类\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":true,\"props\":{\"placeholder\":\"请选择商品分类\"},\"options\":[{\"label\":\"笔记本\",\"value\":2},{\"label\":\"选项01\",\"value\":3},{\"label\":\"选项02\",\"value\":4}],\"_fc_drag_tag\":\"select\",\"_fc_id\":\"id_Fxhmm1uyvz01b4c\",\"name\":\"ref_Fkgqm1uyvz01b5c\",\"display\":true,\"hidden\":false},{\"type\":\"datePicker\",\"field\":\"Fg4aluigb6wuapc\",\"title\":\"上架时间\",\"info\":\"\",\"$required\":false,\"props\":{\"placeholder\":\"请选择上架时间\"},\"_fc_drag_tag\":\"datePicker\",\"_fc_id\":\"id_F6v1m1uyvz01b6c\",\"name\":\"ref_F7rgm1uyvz01b7c\",\"display\":true,\"hidden\":false},{\"type\":\"tableForm\",\"field\":\"Fov6luigc191arc\",\"title\":\"商品属性\",\"info\":\"\",\"props\":{\"columns\":[{\"label\":\"属性名称\",\"required\":false,\"style\":{\"width\":\"auto\"},\"rule\":[{\"type\":\"input\",\"field\":\"F9flluigc3srauc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"props\":{\"placeholder\":\"请输入属性名称\"},\"_fc_drag_tag\":\"input\",\"_fc_id\":\"id_Fr2km1uyvz01b8c\",\"name\":\"ref_Fadsm1uyvz01b9c\",\"display\":true,\"hidden\":false}]},{\"label\":\"属性值\",\"required\":false,\"style\":{\"width\":\"auto\"},\"rule\":[{\"type\":\"input\",\"field\":\"Fa19luigcp3iaxc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"props\":{\"placeholder\":\"请输入属性值\"},\"_fc_drag_tag\":\"input\",\"_fc_id\":\"id_Fwvsm1uyvz01bbc\",\"name\":\"ref_Fdibm1uyvz01bcc\",\"display\":true,\"hidden\":false}]}]},\"_fc_drag_tag\":\"tableForm\",\"_fc_id\":\"id_Fpepm1uyvz01bec\",\"name\":\"ref_Fmv1m1uyvz01bfc\",\"display\":true,\"hidden\":false},{\"type\":\"fcRow\",\"children\":[{\"type\":\"col\",\"props\":{\"span\":6},\"_fc_drag_tag\":\"col\",\"children\":[{\"type\":\"switch\",\"field\":\"Fgsfluighkz0b8c\",\"title\":\"是否显示\",\"info\":\"\",\"$required\":false,\"_fc_drag_tag\":\"switch\",\"_fc_id\":\"id_Fzm6m1uyvz01bgc\",\"name\":\"ref_Fg44m1uyvz01bhc\",\"display\":true,\"hidden\":false}],\"_fc_id\":\"id_Flkxm1uyvz01bic\",\"name\":\"ref_Fz90m1uyvz01bjc\",\"display\":true,\"hidden\":false},{\"type\":\"col\",\"props\":{\"span\":6},\"_fc_drag_tag\":\"col\",\"children\":[{\"type\":\"switch\",\"field\":\"Fi28luighwk8bac\",\"title\":\"是否推荐\",\"info\":\"\",\"$required\":false,\"_fc_drag_tag\":\"switch\",\"_fc_id\":\"id_F8kym1uyvz01bkc\",\"name\":\"ref_F8njm1uyvz01blc\",\"display\":true,\"hidden\":false}],\"_fc_id\":\"id_Fnaym1uyvz01bmc\",\"name\":\"ref_F7l6m1uyvz01bnc\",\"display\":true,\"hidden\":false},{\"type\":\"col\",\"props\":{\"span\":6},\"_fc_drag_tag\":\"col\",\"children\":[{\"type\":\"switch\",\"field\":\"Frwqluigi5tvbcc\",\"title\":\"是否热门\",\"info\":\"\",\"$required\":false,\"_fc_drag_tag\":\"switch\",\"_fc_id\":\"id_Fqhzm1uyvz01boc\",\"name\":\"ref_Fdf4m1uyvz01bpc\",\"display\":true,\"hidden\":false}],\"_fc_id\":\"id_Fxt2m1uyvz01bqc\",\"name\":\"ref_Ff2jm1uyvz01brc\",\"display\":true,\"hidden\":false},{\"type\":\"col\",\"props\":{\"span\":6},\"_fc_drag_tag\":\"col\",\"children\":[{\"type\":\"switch\",\"field\":\"Fofaluigieppbec\",\"title\":\"是否新品\",\"info\":\"\",\"$required\":false,\"_fc_drag_tag\":\"switch\",\"_fc_id\":\"id_F6ism1uyvz01bsc\",\"name\":\"ref_Fv5xm1uyvz01btc\",\"display\":true,\"hidden\":false}],\"_fc_id\":\"id_F0jnm1uyvz01buc\",\"name\":\"ref_F6xqm1uyvz01bvc\",\"display\":true,\"hidden\":false}],\"_fc_drag_tag\":\"fcRow\",\"_fc_id\":\"id_F90zm1uyvz01bwc\",\"name\":\"ref_Fgqvm1uyvz01bxc\",\"display\":true,\"hidden\":false}]", + options: "{\"form\":{\"inline\":false,\"hideRequiredAsterisk\":false,\"labelPosition\":\"right\",\"size\":\"default\",\"labelWidth\":\"125px\"},\"globalEvent\":{\"event_Feq4lui56zxbabc\":{\"label\":\"自定义\",\"deletable\":false,\"handle\":\"[[FORM-CREATE-PREFIX-function handle($inject){aaa;}-FORM-CREATE-SUFFIX]]\"},\"event_Feq4lui56zxbab2c\":{\"label\":\"自定义2\",\"handle\":\"[[FORM-CREATE-PREFIX-function handle($inject) {\\n console.log($inject);\\n }-FORM-CREATE-SUFFIX]]\"}},\"globalData\":{\"data_Fk6dlui4k0xuabc\":{\"label\":\"自定义数据\",\"type\":\"static\",\"data\":[1,2,3,4]},\"data_Fs1elui4kttlacc\":{\"action\":\"http://192.168.1.4:8081/\",\"deletable\":false,\"method\":\"GET\",\"headers\":{},\"data\":{},\"parse\":\"[[FORM-CREATE-PREFIX-function parse(res){return res.data;}-FORM-CREATE-SUFFIX]]\",\"onError\":\"[[FORM-CREATE-PREFIX-function onError(e){}-FORM-CREATE-SUFFIX]]\",\"label\":\"自定义接口数据\",\"type\":\"fetch\"}},\"resetBtn\":{\"show\":false,\"innerText\":\"重置\"},\"submitBtn\":{\"show\":true,\"innerText\":\"提交\"},\"globalVariable\":{\"var_Fppdlz6gytmzb1c\":{\"label\":\"token\",\"deletable\":false,\"handle\":\"[[FORM-CREATE-PREFIX-function handle(get, api) {\\n return get('$cookie.token') || 'default Token';\\n }-FORM-CREATE-SUFFIX]]\"}},\"globalClass\":{\"cls_Fzmulzw3u0oib0c\":{\"label\":\"fff\",\"deletable\":false,\"style\":{\"color\":\"red\"}}}}", + }); + }, 3000); + }); + }, + } + ] + }, + { + label: '事件交互', + children: [ + { + label: '监听事件', + info: '捕捉组件交互事件,便于实现动态响应和逻辑处理', + rule: "[{\"type\":\"input\",\"field\":\"F7fjlxvqrlfzeic\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fzbxlxvqrlfzejc\",\"name\":\"ref_Frkelxvqrlfzekc\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false,\"on\":{\"blur\":\"$FNX:$inject.api.getRefRule('ref_Fyd6lxvqrvboemc').children = ['触发了blur事件' + Date.now()]\",\"focus\":\"$FNX:$inject.api.getRefRule('ref_Fyd6lxvqrvboemc').children = ['触发了focus事件' + Date.now()]\",\"input\":\"$FNX:$inject.api.getRefRule('ref_Fyd6lxvqrvboemc').children = ['触发了input事件' + Date.now()]\"}},{\"type\":\"div\",\"native\":false,\"children\":[\"未触发\"],\"_fc_id\":\"id_F3xilxvqrvboelc\",\"name\":\"ref_Fyd6lxvqrvboemc\",\"_fc_drag_tag\":\"text\",\"style\":{\"color\":\"#666666FF\"},\"display\":true,\"hidden\":false,\"title\":\"结果\"}]", + }, + { + label: '执行动作', + info: '允许触发特定行为,实现表单中的动态交互和流程控制', + rule: "[{\"type\":\"div\",\"title\":\"动作顺序\",\"native\":false,\"style\":{\"whiteSpace\":\"pre-line\",\"display\":\"block\",\"width\":\"100%\"},\"children\":[\"1. 验证表单\\n2. 验证通过后禁用\\\"输入框\\\"组件\\n3. 修改\\\"输入框\\\"组件的值为\\\"FormCreate\\\"\"],\"_fc_id\":\"id_Fak3m1up7t31klc\",\"name\":\"ref_F500m1up7t31kmc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"text\"},{\"type\":\"input\",\"field\":\"F71mm1up4r7pkic\",\"title\":\"输入框\",\"info\":\"\",\"$required\":true,\"_fc_id\":\"id_F22im1up4r7pkjc\",\"name\":\"ref_F2owm1up4r7pkkc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\"},{\"type\":\"elButton\",\"children\":[\"执行\"],\"_fc_id\":\"id_Ftobm1up4gjhkgc\",\"name\":\"ref_Fm29m1up4gjhkhc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"elButton\",\"$behavior\":{\"click\":[{\"method\":\"validate\",\"ignoreError\":false,\"stopPropagation\":\"\",\"expression\":\"\"},{\"method\":\"disabled\",\"ignoreError\":false,\"stopPropagation\":\"\",\"expression\":\"\",\"config\":{\"id\":[\"id_F22im1up4r7pkjc\"],\"compute\":false,\"status\":true}},{\"method\":\"setValue\",\"ignoreError\":false,\"stopPropagation\":\"\",\"expression\":\"\",\"config\":{\"formData\":[{\"id\":\"id_F22im1up4r7pkjc\",\"compute\":false,\"value\":\"FormCreate\"}]}}]},\"style\":{\"marginLeft\":\"125px\"}}]", + } + ], + }, + { + label: '组件联动', + children: [ + { + label: '公式计算', + info: '使用公式自动计算字段值,实现数据的动态运算和联动更新', + rule: "[{\"type\":\"input\",\"field\":\"Fynvm1upczxam2c\",\"title\":\"商品价格\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fvkym1upczxam3c\",\"name\":\"ref_F1v7m1upczxam4c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\"},{\"type\":\"input\",\"field\":\"Fabgm1upd7znm5c\",\"title\":\"销售数量\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fdwrm1upd7znm6c\",\"name\":\"ref_F4ssm1upd7znm7c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\"},{\"type\":\"input\",\"field\":\"F1gum1updrnum8c\",\"title\":\"退款数量\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F3cpm1updrnum9c\",\"name\":\"ref_Far3m1updrnumac\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\"},{\"type\":\"fcValue\",\"field\":\"F27gm1updxm7mbc\",\"title\":\"销售总价\",\"info\":\"\",\"_fc_id\":\"id_Fk79m1updxm7mcc\",\"name\":\"ref_Fse7m1updxm7mdc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"fcValue\",\"computed\":{\"value\":\"IF(GT(Fynvm1upczxam2c,0), MUL(Fynvm1upczxam2c || '', '' + SUB(TONUMBER(Fabgm1upd7znm5c || 0),TONUMBER(F1gum1updrnum8c || 0))), 0)\"}},{\"type\":\"fcValue\",\"field\":\"F8lbm1uphskcmec\",\"title\":\"中文大写\",\"info\":\"\",\"_fc_id\":\"id_Fvxom1uphskcmfc\",\"name\":\"ref_Fsn5m1uphskcmgc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"fcValue\",\"computed\":{\"value\":\"TOCHINSESAMOUNT(F27gm1updxm7mbc || 0)\"}}]", + options: "{\"form\":{\"inline\":false,\"hideRequiredAsterisk\":false,\"labelPosition\":\"right\",\"size\":\"default\",\"labelWidth\":\"125px\"},\"globalEvent\":{},\"globalData\":{},\"resetBtn\":{\"show\":false,\"innerText\":\"重置\"},\"submitBtn\":{\"show\":true,\"innerText\":\"提交\"},\"formData\":{\"Fynvm1upczxam2c\":\"100\",\"Fabgm1upd7znm5c\":\"300\",\"F1gum1updrnum8c\":\"90\",\"F27gm1updxm7mbc\":21000,\"F8lbm1uphskcmec\":\"贰万壹仟元整\"}}", + }, + { + label: '绑定变量', + info: '将组件值与变量关联,实现数据共享和实时更新', + rule: "[{\"type\":\"elDivider\",\"children\":[\"基础\"],\"_fc_id\":\"id_Flg8m1uqc2vaetc\",\"name\":\"ref_F9u8m1uqc2vaeuc\",\"_fc_drag_tag\":\"elDivider\",\"display\":true,\"hidden\":false},{\"type\":\"select\",\"field\":\"Fvixlz6gmhetc7c\",\"title\":\"选择器\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项00\",\"value\":\"1\"},{\"label\":\"选项01\",\"value\":\"2\"},{\"label\":\"选项02\",\"value\":\"3\"}],\"_fc_id\":\"id_Fdt0lz6gmhetc8c\",\"name\":\"ref_Flkglz6gmhetc9c\",\"_fc_drag_tag\":\"select\",\"display\":true,\"hidden\":false},{\"type\":\"select\",\"field\":\"Fe1fm1uqcszkevc\",\"title\":\"自动同步\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项00\",\"value\":\"1\"},{\"label\":\"选项01\",\"value\":\"2\"},{\"label\":\"选项02\",\"value\":\"3\"}],\"_fc_id\":\"id_Fswqm1uqcszkewc\",\"name\":\"ref_Flkglz6gmhetc9c\",\"_fc_drag_tag\":\"select\",\"display\":true,\"hidden\":false,\"$loadData\":[{\"attr\":\"$form.Fvixlz6gmhetc7c\",\"to\":\"value\",\"modify\":true}]},{\"type\":\"elDivider\",\"children\":[\"计算\"],\"_fc_id\":\"id_Fudxm1uqdtglexc\",\"name\":\"ref_F9u8m1uqc2vaeuc\",\"_fc_drag_tag\":\"elDivider\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"F3k5m1ur2ymyb4c\",\"title\":\"前缀\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F1ugm1ur2ymyb5c\",\"name\":\"ref_Fcvfm1ur2ymyb6c\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false},{\"type\":\"select\",\"field\":\"Fho3m1uqgvqcfcc\",\"title\":\"选择器\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项01\",\"value\":\"1\"},{\"label\":\"选项02\",\"value\":\"2\"},{\"label\":\"选项03\",\"value\":\"3\"}],\"_fc_id\":\"id_Fcivm1uqgvqcfdc\",\"name\":\"ref_Fk33m1uqgvqcfec\",\"_fc_drag_tag\":\"select\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"Fwlnm1uqgy8lfgc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F2vwm1uqgy8lfhc\",\"name\":\"ref_Ftdcm1uqgy8lfic\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false,\"$loadData\":[{\"attr\":\"$var.var_Fi61m2a3znylapc\",\"to\":\"value\",\"modify\":true}]},{\"type\":\"elDivider\",\"children\":[\"加载选项\"],\"_fc_id\":\"id_Fy3gm1urxwfzb7c\",\"name\":\"ref_F9u8m1uqc2vaeuc\",\"_fc_drag_tag\":\"elDivider\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"Fwy9m1uryfv6bec\",\"title\":\"前缀\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fj9sm1uryfv6bfc\",\"name\":\"ref_Ftc1m1uryfv6bgc\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false},{\"type\":\"select\",\"field\":\"Fwhzm1uryccob8c\",\"title\":\"选择器\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项01\",\"value\":\"1\"},{\"label\":\"选项02\",\"value\":\"2\"},{\"label\":\"选项03\",\"value\":\"3\"}],\"_fc_id\":\"id_F3lum1uryccob9c\",\"name\":\"ref_F21bm1uryccobac\",\"_fc_drag_tag\":\"select\",\"display\":true,\"hidden\":false,\"$loadData\":[{\"attr\":\"$var.var_Fiqem2a443swaqc\",\"to\":\"options\"}]},{\"type\":\"elDivider\",\"children\":[\"获取Token\"],\"_fc_id\":\"id_Fn6nm1us1nneblc\",\"name\":\"ref_F9u8m1uqc2vaeuc\",\"_fc_drag_tag\":\"elDivider\",\"display\":true,\"hidden\":false},{\"type\":\"upload\",\"field\":\"Fffzm1us1lqfbic\",\"title\":\"上传\",\"info\":\"\",\"$required\":false,\"props\":{\"action\":\"/\",\"onSuccess\":\"[[FORM-CREATE-PREFIX-function anonymous(res,file\\n) {\\nfile.url = res.data.url;\\n}-FORM-CREATE-SUFFIX]]\"},\"_fc_id\":\"id_Fvyjm1us1lqfbjc\",\"name\":\"ref_Fh4rm1us1lqfbkc\",\"_fc_drag_tag\":\"upload\",\"display\":true,\"hidden\":false,\"$loadData\":[{\"attr\":\"$var.var_Fhp2m2a46gezarc\",\"to\":\"props.headers\"}]}]", + options: "{\"form\":{\"inline\":false,\"hideRequiredAsterisk\":false,\"labelPosition\":\"right\",\"size\":\"default\",\"labelWidth\":\"125px\"},\"globalEvent\":{},\"globalData\":{},\"resetBtn\":{\"show\":false,\"innerText\":\"重置\"},\"submitBtn\":{\"show\":true,\"innerText\":\"提交\"},\"globalVariable\":{\"var_Fi61m2a3znylapc\":{\"label\":\"自动计算\",\"handle\":\"[[FORM-CREATE-PREFIX-function handle(get, api){return get('$form.F3k5m1ur2ymyb4c','default') + '-'+ get('$form.Fho3m1uqgvqcfcc', '');}-FORM-CREATE-SUFFIX]]\"},\"var_Fiqem2a443swaqc\":{\"label\":\"生成选项\",\"handle\":\"[[FORM-CREATE-PREFIX-function handle(get, api){const prefix = get('$form.Fwy9m1uryfv6bec','default');\\nreturn [\\n {\\n \\\"label\\\": prefix + \\\"-选项00\\\",\\n \\\"value\\\": \\\"1\\\"\\n },\\n {\\n \\\"label\\\": prefix + \\\"-选项01\\\",\\n \\\"value\\\": \\\"2\\\"\\n },\\n {\\n \\\"label\\\": prefix + \\\"-选项02\\\",\\n \\\"value\\\": \\\"3\\\"\\n }\\n ];}-FORM-CREATE-SUFFIX]]\"},\"var_Fhp2m2a46gezarc\":{\"label\":\"TOKEN\",\"handle\":\"[[FORM-CREATE-PREFIX-function handle(get, api){return {Token: get('$cookie.token', 'default')};}-FORM-CREATE-SUFFIX]]\"}}}", + }, + { + label: '数据联动', + info: '实现组件间的数据自动同步,根据输入动态更新其他字段', + rule: "[{\"type\":\"switch\",\"field\":\"Fum1m1upvn0nchc\",\"title\":\"开启联动\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Foe1m1upvn0ncic\",\"name\":\"ref_Fn1vm1upvn0ncjc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"switch\"},{\"type\":\"select\",\"field\":\"F7wfm1upvhevcbc\",\"title\":\"用户列表\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"用户01\",\"value\":\"1\"},{\"label\":\"用户02\",\"value\":\"2\"},{\"label\":\"用户03\",\"value\":\"3\"}],\"_fc_id\":\"id_Fgxmm1upvhewccc\",\"name\":\"ref_Fz9wm1upvhewcdc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"select\"},{\"type\":\"input\",\"field\":\"Flxtm1upvlvgcec\",\"title\":\"用户ID\",\"info\":\"\",\"$required\":true,\"props\":{\"readonly\":true},\"_fc_id\":\"id_F4q5m1upvlvgcfc\",\"name\":\"ref_Fnffm1upvlvgcgc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\",\"computed\":{\"value\":{\"mode\":\"AND\",\"group\":[{\"field\":\"Fum1m1upvn0nchc\",\"condition\":\"==\",\"value\":true}],\"linkage\":\"F7wfm1upvhevcbc\"}}}]", + }, + { + label: '控制组件状态', + info: '使用公式和逻辑条件灵活设置组件的显隐、禁用等状态', + rule: "[{\"type\":\"radio\",\"field\":\"F52hlxvqk4uge8c\",\"title\":\"逻辑控制\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"必填\",\"value\":1},{\"label\":\"禁用\",\"value\":2},{\"label\":\"隐藏\",\"value\":3}],\"_fc_id\":\"id_F5eqlxvqk4uge9c\",\"name\":\"ref_F363lxvqk4ugeac\",\"_fc_drag_tag\":\"radio\",\"display\":true,\"hidden\":false},{\"type\":\"switch\",\"field\":\"Febwlxvqktmiebc\",\"title\":\"逻辑开关\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_Fl9elxvqktmiecc\",\"name\":\"ref_F69wlxvqktmiedc\",\"_fc_drag_tag\":\"switch\",\"display\":true,\"hidden\":false},{\"type\":\"input\",\"field\":\"Fr0slxvqlc13eec\",\"title\":\"受控组件\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F3k7lxvqlc13efc\",\"name\":\"ref_Fhvvlxvqlc13egc\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false,\"computed\":{\"hidden\":{\"mode\":\"AND\",\"group\":[{\"field\":\"F52hlxvqk4uge8c\",\"condition\":\"==\",\"value\":3},{\"field\":\"Febwlxvqktmiebc\",\"condition\":\"==\",\"value\":true}]},\"$required\":{\"mode\":\"AND\",\"group\":[{\"field\":\"Febwlxvqktmiebc\",\"condition\":\"==\",\"value\":true},{\"field\":\"F52hlxvqk4uge8c\",\"condition\":\"==\",\"value\":1}]},\"props.disabled\":{\"mode\":\"AND\",\"group\":[{\"field\":\"F52hlxvqk4uge8c\",\"condition\":\"==\",\"value\":2},{\"field\":\"Febwlxvqktmiebc\",\"condition\":\"==\",\"value\":true}]}}}]", + } + ] + }, + { + label: '常见问题', + children: [ + { + label: '调用组件方法', + rule: "[{\"type\":\"elButton\",\"children\":[\"展开/收起所有面板\"],\"_fc_id\":\"id_Fyosm1uxmn6letc\",\"name\":\"ref_Fqfrm1uxmn6leuc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"elButton\",\"on\":{\"click\":\"$FNX:const flag = !$inject.api.getData('activeAllPanel', false);\\n$inject.api.el('ref_Fp2xm1uxm8lkejc').setActiveNames(flag ? ['Fihim1uxm8lkekc', 'Fh1wm1uxmddmenc', 'Fyakm1uxmdxzeqc'] : []);\\n$inject.api.setData('activeAllPanel', flag);\"}},{\"type\":\"elCollapse\",\"style\":{\"width\":\"100%\"},\"children\":[{\"type\":\"elCollapseItem\",\"props\":{\"title\":\"面板 1\",\"name\":\"Fihim1uxm8lkekc\"},\"children\":[{\"type\":\"input\",\"field\":\"Fir7m1uxng8tevc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F304m1uxng8tewc\",\"name\":\"ref_Fpynm1uxng8texc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"input\"}],\"_fc_id\":\"id_Fionm1uxm8lkelc\",\"name\":\"ref_F2w3m1uxm8lkemc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"elCollapseItem\"},{\"type\":\"elCollapseItem\",\"props\":{\"title\":\"面板 2\",\"name\":\"Fh1wm1uxmddmenc\"},\"children\":[{\"type\":\"input\",\"field\":\"Fu7zm1uxnjpveyc\",\"title\":\"多行输入框\",\"info\":\"\",\"$required\":false,\"props\":{\"type\":\"textarea\"},\"_fc_id\":\"id_Fw7um1uxnjpvezc\",\"name\":\"ref_Fitrm1uxnjpvf0c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"textarea\"}],\"_fc_id\":\"id_Fpx5m1uxmddmeoc\",\"name\":\"ref_F4rkm1uxmddmepc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"elCollapseItem\"},{\"type\":\"elCollapseItem\",\"props\":{\"title\":\"面板 3\",\"name\":\"Fyakm1uxmdxzeqc\"},\"children\":[{\"type\":\"select\",\"field\":\"Fzr4m1uxnm15f1c\",\"title\":\"选择器\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项01\",\"value\":\"1\"},{\"label\":\"选项02\",\"value\":\"2\"},{\"label\":\"选项03\",\"value\":\"3\"}],\"_fc_id\":\"id_Fvh6m1uxnm15f2c\",\"name\":\"ref_Fqssm1uxnm15f3c\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"select\"}],\"_fc_id\":\"id_Fsojm1uxmdxzerc\",\"name\":\"ref_Fln9m1uxmdxzesc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"elCollapseItem\"}],\"_fc_id\":\"id_Fa57m1uxm8lkeic\",\"name\":\"ref_Fp2xm1uxm8lkejc\",\"display\":true,\"hidden\":false,\"_fc_drag_tag\":\"elCollapse\"},{\"type\":\"div\",\"wrap\":{\"show\":false},\"native\":true,\"style\":{\"width\":\"100%\",\"height\":\"20px\"},\"_fc_id\":\"id_F8tim1uxjn98e5c\",\"name\":\"ref_F8dgm1uxjn98e6c\",\"_fc_drag_tag\":\"space\",\"display\":true,\"hidden\":false},{\"type\":\"elButton\",\"children\":[\"切换选项卡\"],\"_fc_id\":\"id_Fgdgm1uxhmsue3c\",\"name\":\"ref_F5wlm1uxhmsue4c\",\"_fc_drag_tag\":\"elButton\",\"display\":true,\"hidden\":false,\"on\":{\"click\":\"$FNX:const lst = ['Fo03m1uxgy70dlc', 'Fuaom1uxh3medrc', 'F0cdm1uxha6zdxc'];\\nconst el = $inject.api.el('ref_Fadmm1uxgy70dkc');\\nconst idx = lst.indexOf(el.currentName);\\n\\nel.currentName = lst[idx + 1] || lst[0];\"}},{\"type\":\"elTabs\",\"style\":{\"width\":\"100%\"},\"props\":{\"modelValue\":\"Fo03m1uxgy70dlc\"},\"sync\":[\"modelValue\"],\"children\":[{\"type\":\"elTabPane\",\"props\":{\"label\":\"选项卡 1\",\"name\":\"Fo03m1uxgy70dlc\"},\"children\":[{\"type\":\"input\",\"field\":\"Fy5bm1uxh274doc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F4anm1uxh274dpc\",\"name\":\"ref_F8wim1uxh274dqc\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false}],\"_fc_id\":\"id_Flfkm1uxgy70dmc\",\"name\":\"ref_Ff3um1uxgy70dnc\",\"_fc_drag_tag\":\"elTabPane\",\"display\":true,\"hidden\":false},{\"type\":\"elTabPane\",\"props\":{\"label\":\"选项卡 2\",\"name\":\"Fuaom1uxh3medrc\"},\"children\":[{\"type\":\"input\",\"field\":\"Fm20m1uxh5evduc\",\"title\":\"多行输入框\",\"info\":\"\",\"$required\":false,\"props\":{\"type\":\"textarea\"},\"_fc_id\":\"id_F298m1uxh5evdvc\",\"name\":\"ref_Feaem1uxh5evdwc\",\"_fc_drag_tag\":\"textarea\",\"display\":true,\"hidden\":false}],\"_fc_id\":\"id_F64km1uxh3medsc\",\"name\":\"ref_Fnxhm1uxh3medtc\",\"_fc_drag_tag\":\"elTabPane\",\"display\":true,\"hidden\":false},{\"type\":\"elTabPane\",\"props\":{\"label\":\"选项卡 3\",\"name\":\"F0cdm1uxha6zdxc\"},\"children\":[{\"type\":\"select\",\"field\":\"F4sum1uxhdpxe0c\",\"title\":\"选择器\",\"info\":\"\",\"effect\":{\"fetch\":\"\"},\"$required\":false,\"options\":[{\"label\":\"选项01\",\"value\":\"1\"},{\"label\":\"选项02\",\"value\":\"2\"},{\"label\":\"选项03\",\"value\":\"3\"}],\"_fc_id\":\"id_F3t8m1uxhdpxe1c\",\"name\":\"ref_Fs6jm1uxhdpxe2c\",\"_fc_drag_tag\":\"select\",\"display\":true,\"hidden\":false}],\"_fc_id\":\"id_Fhvbm1uxha6zdyc\",\"name\":\"ref_Fy08m1uxha6zdzc\",\"_fc_drag_tag\":\"elTabPane\",\"display\":true,\"hidden\":false}],\"_fc_id\":\"id_Fhufm1uxgy70djc\",\"name\":\"ref_Fadmm1uxgy70dkc\",\"_fc_drag_tag\":\"elTabs\",\"display\":true,\"hidden\":false}]", + }, + { + label: '修改表格表单行数据', + rule: "[{\"type\":\"tableForm\",\"field\":\"F4abm1uxvanaf8c\",\"title\":\"表格表单\",\"info\":\"\",\"props\":{\"columns\":[{\"label\":\"名称\",\"required\":false,\"style\":{\"width\":\"auto\"},\"rule\":[{\"type\":\"input\",\"field\":\"Fsyem1uxvez1fdc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F8lsm1uxvez1fec\",\"name\":\"ref_F761m1uxvez1ffc\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false}]},{\"label\":\"链接\",\"required\":false,\"style\":{\"width\":\"auto\"},\"rule\":[{\"type\":\"input\",\"field\":\"F2zim1uxvgm7fgc\",\"title\":\"输入框\",\"info\":\"\",\"$required\":false,\"_fc_id\":\"id_F8dum1uxvgm7fhc\",\"name\":\"ref_F2ojm1uxvgm7fic\",\"_fc_drag_tag\":\"input\",\"display\":true,\"hidden\":false}]},{\"label\":\"操作\",\"required\":false,\"style\":{\"width\":\"150px\"},\"rule\":[{\"type\":\"elButton\",\"props\":{\"type\":\"success\"},\"children\":[\"修改行数据\"],\"_fc_id\":\"id_Ffgwm1uxvm4rfkc\",\"name\":\"ref_Fofjm1uxvm4rflc\",\"_fc_drag_tag\":\"elButton\",\"style\":{\"flexDirection\":\"column\",\"alignItems\":\"center\"},\"display\":true,\"hidden\":false,\"on\":{\"click\":\"$FNX:const parent = $inject.api.getParentSubRule($inject.self);\\nconst formData = $inject.api.getChildrenFormData(parent);\\nconsole.log(formData);\\n$inject.api.setChildrenFormData(parent, {\\n 'Fsyem1uxvez1fdc': 'FormCreate',\\n 'F2zim1uxvgm7fgc': 'https://form-create.com/'\\n});\"}},{\"type\":\"elButton\",\"props\":{\"type\":\"warning\"},\"children\":[\"隐藏指定组件\"],\"_fc_id\":\"id_F9ozm2brl2hyafc\",\"name\":\"ref_F14nm2brl2hyagc\",\"_fc_drag_tag\":\"elButton\",\"style\":{\"marginLeft\":\"0px\",\"flexDirection\":\"column\",\"alignItems\":\"center\"},\"display\":true,\"hidden\":false,\"on\":{\"click\":\"$FNX:const fApi = $inject.api;\\nconst parent = fApi.getParentSubRule($inject.self);\\nconst children = fApi.getChildrenRuleList(parent);\\n\\nchildren.forEach(rule=>{\\n\\tif(rule.field === 'F2zim1uxvgm7fgc') {\\n\\t\\trule.hidden = !rule.hidden;\\n\\t}\\n});\"}}]}]},\"_fc_id\":\"id_Fq2nm1uxvanaf9c\",\"name\":\"ref_Fri4m1uxvanafac\",\"_fc_drag_tag\":\"tableForm\",\"display\":true,\"hidden\":false}]", + }, + ] + }, + { + label: '低代码表单(演示数据)', + children: [1, 2, 3, 4, 5, 6, 7, 8, 9].map(k => { + return { + label: '低代码表单' + k, + rule: demoRule + } + }) + }, + { + label: '组合数据(演示数据)', + children: [1, 2, 3, 4, 5, 6, 7, 8, 9].map(k => { + return { + label: '组合数据' + k, + rule: demoRule + } + }) + }, + { + label: '系统配置(演示数据)', + children: [1, 2, 3, 4, 5, 6, 7, 8, 9].map(k => { + return { + label: '系统配置' + k, + rule: demoRule + } + }) + }, + { + label: '数据库表维护(演示数据)', + children: [1, 2, 3, 4, 5, 6, 7, 8, 9].map(k => { + return { + label: '数据表' + k, + rule: demoRule + } + }) + }, +]; \ No newline at end of file diff --git a/examples/index.html b/examples/index.html new file mode 100644 index 0000000..1b1772e --- /dev/null +++ b/examples/index.html @@ -0,0 +1,18 @@ + + + + + Element Plus版本低代码设计器FcDesigner Pro在线演示 | FormCreate + + + + + +
+
+ + + diff --git a/examples/main.js b/examples/main.js new file mode 100644 index 0000000..85a9219 --- /dev/null +++ b/examples/main.js @@ -0,0 +1,54 @@ +import {createApp} from 'vue'; +import ELEMENT from 'element-plus'; +import vant from 'vant'; +import 'element-plus/dist/index.css'; +import 'vant/lib/index.css'; +import formCreate from '@form-create/element-ui'; +import App from './App.vue'; +import FcDesigner from '../src/index'; +import 'element-plus/theme-chalk/dark/css-vars.css' +// import install from "@form-create/element-ui/auto-import"; +// import 'element-plus/es/components/message/style/css'; + +const app = createApp(App); + +// formCreate.use(install); +app.use(ELEMENT); +app.use(vant); +app.use(formCreate); +app.use(FcDesigner); +FcDesigner.setFormula([ + { + menu: 'math', + name: 'test', + info: '扩展自定义计算函数示例', + example: 'test(val) == !!val', + handle(val) { + return !!val + } + } +]) + +FcDesigner.setBehavior([ + { + menu: 'other', + name: 'test', + label: '扩展自定义行为', + info: '扩展自定义行为示例', + rule() { + return [ + { + type: 'input', + field: 'custom', + title: '自定义配置' + } + ] + }, + handle(config) { + console.log(config) + } + } +]) + + +app.mount('#app') diff --git a/examples/rule.js b/examples/rule.js new file mode 100644 index 0000000..ecb15e4 --- /dev/null +++ b/examples/rule.js @@ -0,0 +1,342 @@ +export default function makeRule() { + return [ + { + "type": "radio", + "field": "type", + "title": "组件类型", + "effect": { + "fetch": "" + }, + "$required": false, + "props": { + "type": "button" + }, + "options": [ + { + "label": "表单组件", + "value": "2" + }, + { + "label": "选项类表单组件", + "value": "3" + }, + { + "label": "辅助组件", + "value": "1" + } + ], + "_fc_id": "id_F89qm5ulpnp9adc", + "name": "ref_Fsdxm5ulpnp9aec", + "_fc_drag_tag": "radio", + "display": true, + "hidden": false + }, + { + "type": "input", + "field": "name", + "title": "组件名称", + "$required": false, + "_fc_id": "id_F1njm5ultg7fajc", + "name": "ref_Fgcnm5ultg7fakc", + "_fc_drag_tag": "input", + "display": true, + "hidden": false + }, + { + "type": "input", + "field": "label", + "title": "组件别名", + "$required": false, + "_fc_id": "id_F1nxm5uluzpfamc", + "name": "ref_Ftxnm5uluzpfanc", + "_fc_drag_tag": "input", + "display": true, + "hidden": false + }, + { + "type": "tableForm", + "field": "options", + "title": "选择项", + "props": { + "columns": [ + { + "label": "名称", + "required": false, + "style": { + "width": "auto" + }, + "rule": [ + { + "type": "input", + "field": "label", + "title": "输入框", + "$required": false, + "_fc_id": "id_F0xkm5umkj3abyc", + "name": "ref_Fu3am5umbd2obsc", + "_fc_drag_tag": "input", + "display": true, + "hidden": false + } + ] + }, + { + "label": "值", + "required": false, + "style": { + "width": "auto" + }, + "rule": [ + { + "type": "input", + "field": "value", + "title": "值", + "$required": false, + "_fc_id": "id_Fg4xm5unpihhcec", + "name": "ref_Fhrsm5unpihhcgc", + "_fc_drag_tag": "input", + "display": true, + "hidden": false + } + ] + } + ] + }, + "_fc_id": "id_F1n2m5umkj3abzc", + "name": "ref_Ff4dm5umkj3abxc", + "_fc_drag_tag": "tableForm", + "display": true, + "hidden": false, + "computed": { + "hidden": { + "mode": "AND", + "group": [ + { + "field": "type", + "condition": "==", + "value": "3" + } + ], + "invert": true + } + } + }, + { + "type": "checkbox", + "field": "validate", + "title": "Value的数据类型", + "effect": { + "fetch": "" + }, + "$required": false, + "props": { + "type": "button" + }, + "options": [ + { + "label": "字符串", + "value": "string" + }, + { + "label": "数字", + "value": "number" + }, + { + "label": "数组", + "value": "array" + } + ], + "_fc_id": "id_Fs4dm5ulyrpmazc", + "name": "ref_F7q3m5ulyrpmb0c", + "_fc_drag_tag": "checkbox", + "display": true, + "hidden": false, + "computed": { + "hidden": { + "mode": "OR", + "group": [ + { + "field": "type", + "condition": "!=", + "value": "1" + } + ], + "invert": true + } + } + }, + { + "type": "tableForm", + "field": "event", + "title": "事件", + "props": { + "columns": [ + { + "label": "事件名称", + "required": false, + "style": { + "width": "auto" + }, + "rule": [ + { + "type": "input", + "field": "name", + "title": "事件", + "$required": false, + "_fc_id": "id_Ffl9m5ulxopqawc", + "name": "ref_Fn0om5ulxopqaxc", + "_fc_drag_tag": "input", + "display": true, + "hidden": false + } + ] + } + ] + }, + "_fc_id": "id_Fwcmm5ulxatsasc", + "name": "ref_Fwzrm5ulxatsatc", + "_fc_drag_tag": "tableForm", + "display": true, + "hidden": false + }, + { + "type": "group", + "field": "props", + "title": "配置项", + "$required": false, + "props": { + "expand": 1, + "rule": [ + { + "type": "input", + "field": "field", + "title": "字段名", + "$required": false, + "_fc_id": "id_Fl1ym5um4ygwb6c", + "name": "ref_F28mm5um4ygwb7c", + "_fc_drag_tag": "input", + "display": true, + "hidden": false + }, + { + "type": "input", + "field": "name", + "title": "配置名称", + "$required": false, + "_fc_id": "id_Fl1ym5um4ygwb6c", + "name": "ref_F28mm5um4ygwb7c", + "_fc_drag_tag": "input", + "display": true, + "hidden": false + }, + { + "type": "radio", + "field": "props_type", + "title": "配置类型", + "effect": { + "fetch": "" + }, + "$required": false, + "props": { + "type": "button" + }, + "options": [ + { + "label": "输入框", + "value": "input" + }, + { + "label": "数字", + "value": "inputNumber" + }, + { + "label": "布尔", + "value": "switch" + }, + { + "label": "选项", + "value": "select" + } + ], + "_fc_id": "id_Fl8zm5um9v76bkc", + "name": "ref_Fnaim5um9v76blc", + "_fc_drag_tag": "radio", + "display": true, + "hidden": false + }, + { + "type": "tableForm", + "field": "options", + "title": "选择项", + "props": { + "columns": [ + { + "label": "名称", + "required": false, + "style": { + "width": "auto" + }, + "rule": [ + { + "type": "input", + "field": "label", + "title": "名称", + "$required": false, + "_fc_id": "id_Fffzm5umbd2obrc", + "name": "ref_Fu3am5umbd2obsc", + "_fc_drag_tag": "input", + "display": true, + "hidden": false + } + ] + }, + { + "label": "值", + "required": false, + "style": { + "width": "auto" + }, + "rule": [ + { + "type": "input", + "field": "value", + "title": "值", + "$required": false, + "_fc_id": "id_Fbzcm5umprcqc2c", + "name": "ref_Fzc0m5umprcqc4c", + "_fc_drag_tag": "input", + "display": true, + "hidden": false + } + ] + } + ] + }, + "_fc_id": "id_Fx1am5umaxcibnc", + "name": "ref_F5c0m5umaxciboc", + "_fc_drag_tag": "tableForm", + "display": true, + "hidden": false, + "computed": { + "hidden": { + "mode": "AND", + "group": [ + { + "field": "props_type", + "condition": "==", + "value": "select" + } + ], + "invert": true + } + } + } + ] + }, + "_fc_id": "id_Fg4ym5um923gbec", + "name": "ref_Fzo9m5um923gbfc", + "_fc_drag_tag": "group", + "display": true, + "hidden": false + } + ]; +} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..f216b87 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,14 @@ +const gulp = require('gulp'); +const execa = require('execa'); +const fs = require('fs'); + +gulp.task('default', async function (cb) { + await execa('node_modules/.bin/rimraf', ['locale']); + fs.readdirSync('src/locale').forEach(async function (file) { + const res = /^(.*)\.js$/.exec(file); + if (res) { + await execa('./node_modules/.bin/vite', ['build', '--config', './vite.config.locale.js', '-m', res[1]]); + } + cb(); + }); +}); diff --git a/index.html b/index.html new file mode 100644 index 0000000..2435bf3 --- /dev/null +++ b/index.html @@ -0,0 +1,24 @@ + + + + + Element Plus版本低代码设计器FcDesigner Pro在线演示 | FormCreate + + + + + +
+
+ + + + diff --git a/package.json b/package.json new file mode 100644 index 0000000..38dc995 --- /dev/null +++ b/package.json @@ -0,0 +1,133 @@ +{ + "name": "fc-designer-pro", + "version": "5.7.0", + "description": "FormCreate设计器商业版", + "unpkg": "./dist/index.umd.js", + "jsdelivr": "./dist/index.umd.js", + "typings": "./types/index.d.ts", + "main": "./dist/index.umd.js", + "module": "./dist/index.es.js", + "exports": { + ".": { + "import": "./dist/index.es.js", + "types": "./types/index.d.ts", + "require": "./dist/index.umd.js" + }, + "./*": "./*" + }, + "scripts": { + "clean": "rimraf dist/", + "dev": "vite --config vite.dev.config.js", + "rollup": "rollup -c ./rollup.config.ts", + "build": "vite build --config ./vite.config.build.js && cross-env ONLY_PC=true vite build --config ./vite.config.pc.js && vite build --config ./vite.config.mobile.js && vite build --config ./vite.config.elm.js", + "build:mobile": "vite build --config ./vite.config.mobile.js", + "build:elm": "vite build --config ./vite.config.elm.js", + "build:locale": "gulp -f gulpfile.js", + "build:preview": "vite build --config ./vite.config.preview.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/xaboy/form-create-designer.git" + }, + "keywords": [ + "表单设计器", + "@form-create", + "form-builder", + "form-designer", + "draggable", + "form", + "components", + "vue3", + "element-ui", + "json-form", + "dynamic-form" + ], + "files": [ + "README.md", + "package.json", + "LICENSE", + "types", + "dist", + "locale" + ], + "license": "仅限于被授权主体(个人、企业或组织)使用,未经授权不得使用、修改或移除版权信息", + "author": "FormCreate Team", + "homepage": "http://form-create.com", + "publishConfig": { + "access": "public" + }, + "private": true, + "devDependencies": { + "@element-plus/icons-vue": "^0.2.6", + "@sixian/css-url": "^1.0.3", + "@types/chalk": "^2.2.0", + "@types/shelljs": "^0.8.9", + "@vitejs/plugin-vue": "^3.1.2", + "@vitejs/plugin-vue-jsx": "^2.0.1", + "@vue/babel-plugin-jsx": "^1.0.7", + "@vue/cli-plugin-babel": "^4.5.13", + "@vue/cli-service": "^4.5.3", + "@vue/compiler-sfc": "^3.0.11", + "babel-eslint": "^10.1.0", + "babel-loader": "^8.4.1", + "chalk": "^4.1.2", + "codemirror": "^6.65.7", + "commander": "^6.0.0", + "cross-env": "^7.0.2", + "css-loader": "^4.2.1", + "cssnano": "^5.1.13", + "cssnano-preset-advanced": "^5.3.8", + "element-plus": "^2.9.8", + "eslint": "^7.7.0", + "eslint-plugin-vue": "^7.2.2", + "esno": "^0.9.1", + "execa": "^5.1.1", + "fast-glob": "^3.2.7", + "figlet": "^1.5.0", + "fs-extra": "^10.0.0", + "gulp": "^4.0.2", + "html-webpack-plugin": "^4.3.0", + "humps": "^2.0.1", + "husky": "^4.2.5", + "javascript-obfuscator": "^4.1.0", + "jsonlint-mod": "^1.7.6", + "lint-staged": "^10.2.11", + "npm-run-all": "^4.1.5", + "ora": "^5.0.0", + "postcss": "^8.4.17", + "rimraf": "^3.0.2", + "rollup-plugin-visualizer": "^5.8.2", + "shelljs": "^0.8.4", + "stringify-author": "^0.1.3", + "tslib": "^2.3.1", + "typescript": "^4.4.3", + "unplugin-preprocessor-directives": "^1.0.3", + "vant": "^4", + "vite": "^3.2.11", + "vite-plugin-banner": "^0.5.0", + "vite-plugin-css-injected-by-js": "^2.1.0", + "vite-plugin-javascript-obfuscator": "^3.1.0", + "vue": "^3.1.5", + "vue-loader": "^15.9.3", + "vue-style-loader": "^4.1.2", + "vue-template-compiler": "^2.6.11" + }, + "dependencies": { + "@form-create/component-elm-select": "^3.1", + "@form-create/component-elm-tree": "^3.1", + "@form-create/component-elm-upload": "^3.1", + "@form-create/component-wangeditor": "^3.1", + "@form-create/element-ui": "^3.2.8", + "@form-create/utils": "^3.1.23", + "@form-create/vant": "^3.2.8", + "axios": "^1.9.0", + "dayjs": "^1.11.13", + "js-beautify": "^1.15.1", + "jsbarcode": "^3.11.6", + "marked": "^15.0.9", + "qr-code-styling": "^1.9.1", + "signature_pad": "^5.0.4", + "snowflake-id": "^1.1.0", + "vuedraggable": "4.1.0" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..568be8f --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,15286 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@form-create/component-elm-select': + specifier: ^3.1 + version: 3.2.18 + '@form-create/component-elm-tree': + specifier: ^3.1 + version: 3.2.18 + '@form-create/component-elm-upload': + specifier: ^3.1 + version: 3.2.18 + '@form-create/component-wangeditor': + specifier: ^3.1 + version: 3.2.14 + '@form-create/element-ui': + specifier: ^3.2.8 + version: 3.2.22(vue@3.5.13(typescript@4.9.5)) + '@form-create/utils': + specifier: ^3.1.23 + version: 3.2.18 + '@form-create/vant': + specifier: ^3.2.8 + version: 3.2.22(vue@3.5.13(typescript@4.9.5)) + axios: + specifier: ^1.9.0 + version: 1.9.0 + dayjs: + specifier: ^1.11.13 + version: 1.11.13 + js-beautify: + specifier: ^1.15.1 + version: 1.15.4 + jsbarcode: + specifier: ^3.11.6 + version: 3.11.6 + marked: + specifier: ^15.0.9 + version: 15.0.11 + qr-code-styling: + specifier: ^1.9.1 + version: 1.9.2 + signature_pad: + specifier: ^5.0.4 + version: 5.0.7 + snowflake-id: + specifier: ^1.1.0 + version: 1.1.0 + vuedraggable: + specifier: 4.1.0 + version: 4.1.0(vue@3.5.13(typescript@4.9.5)) + devDependencies: + '@element-plus/icons-vue': + specifier: ^0.2.6 + version: 0.2.7(vue@3.5.13(typescript@4.9.5)) + '@sixian/css-url': + specifier: ^1.0.3 + version: 1.0.3 + '@types/chalk': + specifier: ^2.2.0 + version: 2.2.4 + '@types/shelljs': + specifier: ^0.8.9 + version: 0.8.15 + '@vitejs/plugin-vue': + specifier: ^3.1.2 + version: 3.2.0(vite@3.2.11(@types/node@22.15.2))(vue@3.5.13(typescript@4.9.5)) + '@vitejs/plugin-vue-jsx': + specifier: ^2.0.1 + version: 2.1.1(vite@3.2.11(@types/node@22.15.2))(vue@3.5.13(typescript@4.9.5)) + '@vue/babel-plugin-jsx': + specifier: ^1.0.7 + version: 1.4.0(@babel/core@7.26.10) + '@vue/cli-plugin-babel': + specifier: ^4.5.13 + version: 4.5.19(@vue/cli-service@4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5)))(vue@3.5.13(typescript@4.9.5)) + '@vue/cli-service': + specifier: ^4.5.3 + version: 4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5)) + '@vue/compiler-sfc': + specifier: ^3.0.11 + version: 3.5.13 + babel-eslint: + specifier: ^10.1.0 + version: 10.1.0(eslint@7.32.0) + babel-loader: + specifier: ^8.4.1 + version: 8.4.1(@babel/core@7.26.10)(webpack@4.47.0) + chalk: + specifier: ^4.1.2 + version: 4.1.2 + codemirror: + specifier: ^6.65.7 + version: 6.65.7 + commander: + specifier: ^6.0.0 + version: 6.2.1 + cross-env: + specifier: ^7.0.2 + version: 7.0.3 + css-loader: + specifier: ^4.2.1 + version: 4.3.0(webpack@4.47.0) + cssnano: + specifier: ^5.1.13 + version: 5.1.15(postcss@8.5.3) + cssnano-preset-advanced: + specifier: ^5.3.8 + version: 5.3.10(postcss@8.5.3) + element-plus: + specifier: ^2.9.8 + version: 2.9.8(vue@3.5.13(typescript@4.9.5)) + eslint: + specifier: ^7.7.0 + version: 7.32.0 + eslint-plugin-vue: + specifier: ^7.2.2 + version: 7.20.0(eslint@7.32.0) + esno: + specifier: ^0.9.1 + version: 0.9.1 + execa: + specifier: ^5.1.1 + version: 5.1.1 + fast-glob: + specifier: ^3.2.7 + version: 3.3.3 + figlet: + specifier: ^1.5.0 + version: 1.8.1 + fs-extra: + specifier: ^10.0.0 + version: 10.1.0 + gulp: + specifier: ^4.0.2 + version: 4.0.2 + html-webpack-plugin: + specifier: ^4.3.0 + version: 4.5.2(webpack@4.47.0) + humps: + specifier: ^2.0.1 + version: 2.0.1 + husky: + specifier: ^4.2.5 + version: 4.3.8 + javascript-obfuscator: + specifier: ^4.1.0 + version: 4.1.1 + jsonlint-mod: + specifier: ^1.7.6 + version: 1.7.6 + lint-staged: + specifier: ^10.2.11 + version: 10.5.4 + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 + ora: + specifier: ^5.0.0 + version: 5.4.1 + postcss: + specifier: ^8.4.17 + version: 8.5.3 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + rollup-plugin-visualizer: + specifier: ^5.8.2 + version: 5.14.0 + shelljs: + specifier: ^0.8.4 + version: 0.8.5 + stringify-author: + specifier: ^0.1.3 + version: 0.1.3 + tslib: + specifier: ^2.3.1 + version: 2.8.1 + typescript: + specifier: ^4.4.3 + version: 4.9.5 + unplugin-preprocessor-directives: + specifier: ^1.0.3 + version: 1.0.3(esbuild@0.12.29)(vite@3.2.11(@types/node@22.15.2))(webpack@4.47.0) + vant: + specifier: ^4 + version: 4.9.19(vue@3.5.13(typescript@4.9.5)) + vite: + specifier: ^3.2.11 + version: 3.2.11(@types/node@22.15.2) + vite-plugin-banner: + specifier: ^0.5.0 + version: 0.5.0 + vite-plugin-css-injected-by-js: + specifier: ^2.1.0 + version: 2.4.0(vite@3.2.11(@types/node@22.15.2)) + vite-plugin-javascript-obfuscator: + specifier: ^3.1.0 + version: 3.1.0 + vue: + specifier: ^3.1.5 + version: 3.5.13(typescript@4.9.5) + vue-loader: + specifier: ^15.9.3 + version: 15.11.1(@vue/compiler-sfc@3.5.13)(css-loader@4.3.0(webpack@4.47.0))(lodash@4.17.21)(underscore@1.13.7)(vue-template-compiler@2.7.16)(webpack@4.47.0) + vue-style-loader: + specifier: ^4.1.2 + version: 4.1.3 + vue-template-compiler: + specifier: ^2.6.11 + version: 2.7.16 + +packages: + + '@achrinza/node-ipc@9.2.2': + resolution: {integrity: sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==} + engines: {node: 8 || 10 || 12 || 14 || 16 || 17} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.12.11': + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.8': + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.10': + resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.0': + resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.0': + resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.27.0': + resolution: {integrity: sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.27.0': + resolution: {integrity: sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.4': + resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.0': + resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.25.9': + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.0': + resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-decorators@7.25.9': + resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.25.9': + resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.26.8': + resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.26.5': + resolution: {integrity: sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.27.0': + resolution: {integrity: sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.26.3': + resolution: {integrity: sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.26.9': + resolution: {integrity: sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6': + resolution: {integrity: sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.27.0': + resolution: {integrity: sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.26.10': + resolution: {integrity: sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.26.8': + resolution: {integrity: sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.0': + resolution: {integrity: sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.27.0': + resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.9': + resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/runtime-corejs3@7.27.0': + resolution: {integrity: sha512-UWjX6t+v+0ckwZ50Y5ShZLnlk95pP5MyW/pon9tiYzl3+18pkTHTFNTKr7rQbfRXPkowt2QAn30o1b6oswszew==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.27.0': + resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.0': + resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.0': + resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.0': + resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} + engines: {node: '>=6.9.0'} + + '@ctrl/tinycolor@3.6.1': + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + + '@element-plus/icons-vue@0.2.7': + resolution: {integrity: sha512-S8kDbfVaWkQvbUYQE1ui448tzaHfUvyESCep9J6uPRlViyQPXjdIfwLBhV6AmQSOfFS8rL+xehJGhvzPXLrSBg==} + peerDependencies: + vue: ^3.2.0 + + '@element-plus/icons-vue@2.3.1': + resolution: {integrity: sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==} + peerDependencies: + vue: ^3.2.0 + + '@esbuild/android-arm@0.15.18': + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/linux-loong64@0.15.18': + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@eslint/eslintrc@0.4.3': + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + + '@floating-ui/core@1.6.9': + resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} + + '@floating-ui/dom@1.6.13': + resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==} + + '@floating-ui/utils@0.2.9': + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + + '@form-create/component-elm-checkbox@3.2.18': + resolution: {integrity: sha512-W8v4o+MZWPEJmIIWojKmnn87tFWpxyTbaIhWJU4Ca0S99YoXR7RdHKLt06HYwJixVLZqytNRj9BMxR4UZQ6JNg==} + + '@form-create/component-elm-frame@3.2.18': + resolution: {integrity: sha512-yob3jmO1xBbKfVfFNeO/xh80o1E2IbVx8NsnpTaaK9X0ARJFvhPvW53qX6TgJxdvzCGTsm/W6P6a4SaebQJtVQ==} + + '@form-create/component-elm-group@3.2.22': + resolution: {integrity: sha512-hy6ZqLpDITqDoTMc4Es2twVNffjXuX0HW7aY36+iyicnJj1Y9hMRj2HPbT4DNlQWZ3ybOb/AlcYN0BwIpW40qw==} + + '@form-create/component-elm-radio@3.2.18': + resolution: {integrity: sha512-kkb6xFOviqgoBRRLzsoZTnqKX9GSw2jaLCWWRPkwqEwA/aLNHRX0MuBdGNvpaaLaD1ph5g+N86GekHvvanbJlQ==} + + '@form-create/component-elm-select@3.2.18': + resolution: {integrity: sha512-gqBzPgNGJ6GwQ/pK/qCuoxQeM/fflNv7IqibETt2IFgutsGVM1lXYic8QJ/51YkuI0afkDKF+wAEbfB6zqaKIA==} + + '@form-create/component-elm-tree@3.2.18': + resolution: {integrity: sha512-s+0+NPh2t500pv4CA51dtwuWWlY2wW0qbL7ZE3steTBh8Z++7s+n/6y6joGPxTeP+7FkpfruA1TfJ7+5Ntpe1Q==} + + '@form-create/component-elm-upload@3.2.18': + resolution: {integrity: sha512-FVFJYarlk5+/Kjg9kJ9ElwyP8bt+DR0m/pPUMqmkEoUtv0Sr6nkk596THLjfyXV1WRFeoZMjzIS6qCyTnqWksQ==} + + '@form-create/component-subform@3.1.34': + resolution: {integrity: sha512-OJcFH/7MTHx7JLEjDK/weS27qfuFWAI+OK+gXTJ2jIt9aZkGWF/EWkjetiJLt5a0KMw4Z15wOS2XCY9pVK9vlA==} + + '@form-create/component-wangeditor@3.2.14': + resolution: {integrity: sha512-N/U/hFBdBu2OIguxoKe1Kslq5fW6XmtyhKDImLfKLn1xI6X5WUtt3r7QTaUPcVUl2vntpM9wJ/FBdG17RzF/Dg==} + + '@form-create/core@3.2.22': + resolution: {integrity: sha512-GC3b4Yrpy9TiPLqJFL9fiUFPjEv6ZBcHnOMB+GeF6iLsMV4TpZc0o/oFBPlhZqIYeljaNuxJyO2ABCStceOrZQ==} + peerDependencies: + vue: ^3.1.0 + + '@form-create/element-ui@3.2.22': + resolution: {integrity: sha512-6UfJloHWwCDkei4dQjigk5JzaFQiwEISpY0Tc5plSyJg8bt7JdqCp6C9+OQYmjTYaurwzdTvgD9NfbKDFC8xEQ==} + peerDependencies: + vue: ^3.1.0 + + '@form-create/utils@3.2.18': + resolution: {integrity: sha512-C98bFPdFVMltiHQvEZqv4rVdhcqthJgvxMbWDlniL03HS5oyusnUvxUE8jf0I9zk5dZRDGmxKOUtzE3JDWP9nQ==} + + '@form-create/vant@3.2.22': + resolution: {integrity: sha512-gNFHWABjJbFUUn45JoSJfMEAErwfvqUV8BwTXvIkzPKnIFlSGhH+o+Y+jweP9oQytNT7SGFCFE2M6e5NIsGyDQ==} + peerDependencies: + vue: ^3.1.0 + + '@hapi/address@2.1.4': + resolution: {integrity: sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==} + deprecated: Moved to 'npm install @sideway/address' + + '@hapi/bourne@1.3.2': + resolution: {integrity: sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==} + deprecated: This version has been deprecated and is no longer supported or maintained + + '@hapi/hoek@8.5.1': + resolution: {integrity: sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==} + deprecated: This version has been deprecated and is no longer supported or maintained + + '@hapi/joi@15.1.1': + resolution: {integrity: sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==} + deprecated: Switch to 'npm install joi' + + '@hapi/topo@3.1.6': + resolution: {integrity: sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==} + deprecated: This version has been deprecated and is no longer supported or maintained + + '@humanwhocodes/config-array@0.5.0': + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/object-schema@1.2.1': + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + deprecated: Use @eslint/object-schema instead + + '@intervolga/optimize-cssnano-plugin@1.0.6': + resolution: {integrity: sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==} + peerDependencies: + webpack: ^4.0.0 + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@javascript-obfuscator/escodegen@2.3.0': + resolution: {integrity: sha512-QVXwMIKqYMl3KwtTirYIA6gOCiJ0ZDtptXqAv/8KWLG9uQU2fZqTVy7a/A5RvcoZhbDoFfveTxuGxJ5ibzQtkw==} + engines: {node: '>=6.0'} + + '@javascript-obfuscator/estraverse@5.4.0': + resolution: {integrity: sha512-CZFX7UZVN9VopGbjTx4UXaXsi9ewoM1buL0kY7j1ftYdSs7p2spv9opxFjHlQ/QGTgh4UqufYqJJ0WKLml7b6w==} + engines: {node: '>=4.0'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@mrmlnc/readdir-enhanced@2.2.1': + resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} + engines: {node: '>=4'} + + '@node-ipc/js-queue@2.0.3': + resolution: {integrity: sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==} + engines: {node: '>=1.0.0'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@1.1.3': + resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} + engines: {node: '>= 6'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@one-ini/wasm@0.1.1': + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@sixian/css-url@1.0.3': + resolution: {integrity: sha512-yTZpmjC5rFb/3uvBuMvpZLF586bmf5vLH9QO4kP1j4v34cJradIRUy/mAaMet82aAVlo5vy1/bwyBY20wHRj0A==} + + '@soda/friendly-errors-webpack-plugin@1.8.1': + resolution: {integrity: sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==} + engines: {node: '>=8.0.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + '@soda/get-current-script@1.0.2': + resolution: {integrity: sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==} + + '@sxzz/popperjs-es@2.11.7': + resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/chalk@2.2.4': + resolution: {integrity: sha512-pb/QoGqtCpH2famSp72qEsXkNzcErlVmiXlQ/ww+5AddD8TmmYS7EWg5T20YiNCAiTgs8pMf2G8SJG5h/ER1ZQ==} + deprecated: This is a stub types definition. chalk provides its own type definitions, so you do not need this installed. + + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/express-serve-static-core@5.0.6': + resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} + + '@types/express@5.0.1': + resolution: {integrity: sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/html-minifier-terser@5.1.2': + resolution: {integrity: sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/http-proxy@1.17.16': + resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.17.16': + resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/node@22.15.2': + resolution: {integrity: sha512-uKXqKN9beGoMdBfcaTY1ecwz6ctxuJAcUlwE55938g0ZJ8lRxwAZqRz2AJ4pzpt5dHdTPMB863UZ0ESiFUcP7A==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/q@1.5.8': + resolution: {integrity: sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==} + + '@types/qs@6.9.18': + resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + + '@types/shelljs@0.8.15': + resolution: {integrity: sha512-vzmnCHl6hViPu9GNLQJ+DZFd6BQI2DBTUeOvYHqkWQLMfKAAQYMb/xAmZkTogZI/vqXHCWkqDRymDI5p0QTi5Q==} + + '@types/source-list-map@0.1.6': + resolution: {integrity: sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==} + + '@types/tapable@1.0.12': + resolution: {integrity: sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==} + + '@types/uglify-js@3.17.5': + resolution: {integrity: sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==} + + '@types/validator@13.15.0': + resolution: {integrity: sha512-nh7nrWhLr6CBq9ldtw0wx+z9wKnnv/uTVLA9g/3/TcOYxbpOSZE+MhKPmWqU+K0NvThjhv12uD8MuqijB0WzEA==} + + '@types/web-bluetooth@0.0.16': + resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} + + '@types/webpack-dev-server@3.11.6': + resolution: {integrity: sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==} + + '@types/webpack-sources@3.2.3': + resolution: {integrity: sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==} + + '@types/webpack@4.41.40': + resolution: {integrity: sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==} + + '@vant/popperjs@1.3.0': + resolution: {integrity: sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==} + + '@vant/use@1.6.0': + resolution: {integrity: sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==} + peerDependencies: + vue: ^3.0.0 + + '@vitejs/plugin-vue-jsx@2.1.1': + resolution: {integrity: sha512-JgDhxstQlwnHBvZ1BSnU5mbmyQ14/t5JhREc6YH5kWyu2QdAAOsLF6xgHoIWarj8tddaiwFrNzLbWJPudpXKYA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + vue: ^3.0.0 + + '@vitejs/plugin-vue@3.2.0': + resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + vue: ^3.2.25 + + '@vue/babel-helper-vue-jsx-merge-props@1.4.0': + resolution: {integrity: sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==} + + '@vue/babel-helper-vue-transform-on@1.4.0': + resolution: {integrity: sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==} + + '@vue/babel-plugin-jsx@1.4.0': + resolution: {integrity: sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.4.0': + resolution: {integrity: sha512-4xqDRRbQQEWHQyjlYSgZsWj44KfiF6D+ktCuXyZ8EnVDYV3pztmXJDf1HveAjUAXxAnR8daCQT51RneWWxtTyQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-plugin-transform-vue-jsx@1.4.0': + resolution: {integrity: sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-preset-app@4.5.19': + resolution: {integrity: sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==} + peerDependencies: + '@babel/core': '*' + core-js: ^3 + vue: ^2 || ^3.0.0-0 + peerDependenciesMeta: + core-js: + optional: true + vue: + optional: true + + '@vue/babel-preset-jsx@1.4.0': + resolution: {integrity: sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + vue: '*' + peerDependenciesMeta: + vue: + optional: true + + '@vue/babel-sugar-composition-api-inject-h@1.4.0': + resolution: {integrity: sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-sugar-composition-api-render-instance@1.4.0': + resolution: {integrity: sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-sugar-functional-vue@1.4.0': + resolution: {integrity: sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-sugar-inject-h@1.4.0': + resolution: {integrity: sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-sugar-v-model@1.4.0': + resolution: {integrity: sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/babel-sugar-v-on@1.4.0': + resolution: {integrity: sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/cli-overlay@4.5.19': + resolution: {integrity: sha512-GdxvNSmOw7NHIazCO8gTK+xZbaOmScTtxj6eHVeMbYpDYVPJ+th3VMLWNpw/b6uOjwzzcyKlA5dRQ1DAb+gF/g==} + + '@vue/cli-plugin-babel@4.5.19': + resolution: {integrity: sha512-8ebXzaMW9KNTMAN6+DzkhFsjty1ieqT7hIW5Lbk4v30Qhfjkms7lBWyXPGkoq+wAikXFa1Gnam2xmWOBqDDvWg==} + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + + '@vue/cli-plugin-router@4.5.19': + resolution: {integrity: sha512-3icGzH1IbVYmMMsOwYa0lal/gtvZLebFXdE5hcQJo2mnTwngXGMTyYAzL56EgHBPjbMmRpyj6Iw9k4aVInVX6A==} + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + + '@vue/cli-plugin-vuex@4.5.19': + resolution: {integrity: sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==} + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0-0 + + '@vue/cli-service@4.5.19': + resolution: {integrity: sha512-+Wpvj8fMTCt9ZPOLu5YaLkFCQmB4MrZ26aRmhhKiCQ/4PMoL6mLezfqdt6c+m2htM+1WV5RunRo+0WHl2DfwZA==} + engines: {node: '>=8'} + hasBin: true + peerDependencies: + '@vue/compiler-sfc': ^3.0.0-beta.14 + less-loader: '*' + pug-plain-loader: '*' + raw-loader: '*' + sass-loader: '*' + stylus-loader: '*' + vue-template-compiler: ^2.0.0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + less-loader: + optional: true + pug-plain-loader: + optional: true + raw-loader: + optional: true + sass-loader: + optional: true + stylus-loader: + optional: true + vue-template-compiler: + optional: true + + '@vue/cli-shared-utils@4.5.19': + resolution: {integrity: sha512-JYpdsrC/d9elerKxbEUtmSSU6QRM60rirVubOewECHkBHj+tLNznWq/EhCjswywtePyLaMUK25eTqnTSZlEE+g==} + + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} + + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + + '@vue/component-compiler-utils@3.3.0': + resolution: {integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==} + + '@vue/preload-webpack-plugin@1.1.2': + resolution: {integrity: sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==} + engines: {node: '>=6.0.0'} + peerDependencies: + html-webpack-plugin: '>=2.26.0' + webpack: '>=4.0.0' + + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} + + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} + + '@vue/runtime-dom@3.5.13': + resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} + + '@vue/server-renderer@3.5.13': + resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} + peerDependencies: + vue: 3.5.13 + + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + + '@vue/web-component-wrapper@1.3.0': + resolution: {integrity: sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==} + + '@vueuse/core@9.13.0': + resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==} + + '@vueuse/metadata@9.13.0': + resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==} + + '@vueuse/shared@9.13.0': + resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==} + + '@webassemblyjs/ast@1.9.0': + resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==} + + '@webassemblyjs/floating-point-hex-parser@1.9.0': + resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==} + + '@webassemblyjs/helper-api-error@1.9.0': + resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==} + + '@webassemblyjs/helper-buffer@1.9.0': + resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==} + + '@webassemblyjs/helper-code-frame@1.9.0': + resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==} + + '@webassemblyjs/helper-fsm@1.9.0': + resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==} + + '@webassemblyjs/helper-module-context@1.9.0': + resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==} + + '@webassemblyjs/helper-wasm-bytecode@1.9.0': + resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==} + + '@webassemblyjs/helper-wasm-section@1.9.0': + resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==} + + '@webassemblyjs/ieee754@1.9.0': + resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==} + + '@webassemblyjs/leb128@1.9.0': + resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==} + + '@webassemblyjs/utf8@1.9.0': + resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==} + + '@webassemblyjs/wasm-edit@1.9.0': + resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==} + + '@webassemblyjs/wasm-gen@1.9.0': + resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==} + + '@webassemblyjs/wasm-opt@1.9.0': + resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==} + + '@webassemblyjs/wasm-parser@1.9.0': + resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==} + + '@webassemblyjs/wast-parser@1.9.0': + resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==} + + '@webassemblyjs/wast-printer@1.9.0': + resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + JSV@4.0.2: + resolution: {integrity: sha512-ZJ6wx9xaKJ3yFUhq5/sk82PJMuUyLk277I8mQeyDgCTjGdjWJIvPfaU5LIXaMuaN2UO1X3kZH4+lgphublZUHw==} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn@6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv-errors@1.0.1: + resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==} + peerDependencies: + ajv: '>=5.0.0' + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + alphanum-sort@1.0.2: + resolution: {integrity: sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==} + + ansi-colors@1.1.0: + resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==} + engines: {node: '>=0.10.0'} + + ansi-colors@3.2.4: + resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==} + engines: {node: '>=6'} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-gray@0.1.1: + resolution: {integrity: sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==} + engines: {node: '>=0.10.0'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + ansi-wrap@0.1.0: + resolution: {integrity: sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==} + engines: {node: '>=0.10.0'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + append-buffer@1.0.2: + resolution: {integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==} + engines: {node: '>=0.10.0'} + + aproba@1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + + archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-filter@1.1.2: + resolution: {integrity: sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-map@2.0.2: + resolution: {integrity: sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-differ@3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} + + array-each@1.0.1: + resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==} + engines: {node: '>=0.10.0'} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-flatten@2.1.2: + resolution: {integrity: sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==} + + array-initial@1.1.0: + resolution: {integrity: sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==} + engines: {node: '>=0.10.0'} + + array-last@1.3.0: + resolution: {integrity: sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==} + engines: {node: '>=0.10.0'} + + array-slice@1.1.0: + resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==} + engines: {node: '>=0.10.0'} + + array-sort@1.0.0: + resolution: {integrity: sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==} + engines: {node: '>=0.10.0'} + + array-union@1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + + array.prototype.reduce@1.0.8: + resolution: {integrity: sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + + asn1.js@4.10.1: + resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + assert@1.5.1: + resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} + + assert@2.0.0: + resolution: {integrity: sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==} + + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-done@1.3.2: + resolution: {integrity: sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==} + engines: {node: '>= 0.10'} + + async-each@1.0.6: + resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + async-settle@1.0.0: + resolution: {integrity: sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==} + engines: {node: '>= 0.10'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + autoprefixer@9.8.8: + resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} + hasBin: true + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + axios@1.9.0: + resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==} + + babel-eslint@10.1.0: + resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} + engines: {node: '>=6'} + deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. + peerDependencies: + eslint: '>= 4.12.1' + + babel-loader@8.4.1: + resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + + babel-plugin-dynamic-import-node@2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + + babel-plugin-polyfill-corejs2@0.4.13: + resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.11.1: + resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.4: + resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-runtime@6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + + bach@1.2.0: + resolution: {integrity: sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==} + engines: {node: '>= 0.10'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + bfj@6.1.2: + resolution: {integrity: sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==} + engines: {node: '>= 6.0.0'} + + big.js@3.2.0: + resolution: {integrity: sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + binary-extensions@1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + bn.js@4.12.2: + resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + + bn.js@5.2.2: + resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + bonjour@3.5.0: + resolution: {integrity: sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserify-cipher@1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + + browserify-des@1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + + browserify-rsa@4.1.1: + resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==} + engines: {node: '>= 0.10'} + + browserify-sign@4.2.3: + resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==} + engines: {node: '>= 0.12'} + + browserify-zlib@0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-equal@1.0.1: + resolution: {integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==} + engines: {node: '>=0.4'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-indexof@1.1.1: + resolution: {integrity: sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==} + + buffer-json@2.0.0: + resolution: {integrity: sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cacache@12.0.4: + resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==} + + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + + cache-loader@4.1.0: + resolution: {integrity: sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase@3.0.0: + resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==} + engines: {node: '>=0.10.0'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + + caniuse-lite@1.0.30001715: + resolution: {integrity: sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==} + + case-sensitive-paths-webpack-plugin@2.4.0: + resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} + engines: {node: '>=4'} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chance@1.1.9: + resolution: {integrity: sha512-TfxnA/DcZXRTA4OekA2zL9GH8qscbbl6X0ZqU4tXhGveVY/mXWvEQLt5GwZcYXTEyEFflVtj+pG8nc8EwSm1RQ==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + check-types@8.0.3: + resolution: {integrity: sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==} + + chokidar@2.1.8: + resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + cipher-base@1.0.6: + resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==} + engines: {node: '>= 0.10'} + + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + + class-validator@0.14.1: + resolution: {integrity: sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==} + + clean-css@4.2.4: + resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} + engines: {node: '>= 4.0'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} + hasBin: true + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + + clipboardy@2.3.0: + resolution: {integrity: sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==} + engines: {node: '>=8'} + + cliui@3.2.0: + resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} + + cliui@5.0.0: + resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-buffer@1.0.0: + resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} + engines: {node: '>= 0.10'} + + clone-stats@1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + cloneable-readable@1.1.3: + resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} + + coa@2.0.2: + resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} + engines: {node: '>= 4.0'} + + code-point-at@1.1.0: + resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} + engines: {node: '>=0.10.0'} + + codemirror@6.65.7: + resolution: {integrity: sha512-HcfnUFJwI2FvH73YWVbbMh7ObWxZiHIycEhv9ZEXy6e8ZKDjtZKbbYFUtsLN46HFXPvU5V2Uvc2d55Z//oFW5A==} + deprecated: This is an accidentally mis-tagged instance of 5.65.7 + + collection-map@1.0.0: + resolution: {integrity: sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==} + engines: {node: '>=0.10.0'} + + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@10.0.0: + resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} + engines: {node: '>=14'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@2.17.1: + resolution: {integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==} + + commander@2.19.0: + resolution: {integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compare-versions@3.6.0: + resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.8.0: + resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + connect-history-api-fallback@1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + + console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + + consolidate@0.15.1: + resolution: {integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==} + engines: {node: '>= 0.10.0'} + deprecated: Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog + peerDependencies: + arc-templates: ^0.5.3 + atpl: '>=0.7.6' + babel-core: ^6.26.3 + bracket-template: ^1.1.5 + coffee-script: ^1.12.7 + dot: ^1.1.3 + dust: ^0.3.0 + dustjs-helpers: ^1.7.4 + dustjs-linkedin: ^2.7.5 + eco: ^1.1.0-rc-3 + ect: ^0.5.9 + ejs: ^3.1.5 + haml-coffee: ^1.14.1 + hamlet: ^0.3.3 + hamljs: ^0.6.2 + handlebars: ^4.7.6 + hogan.js: ^3.0.2 + htmling: ^0.0.8 + jade: ^1.11.0 + jazz: ^0.0.18 + jqtpl: ~1.1.0 + just: ^0.1.8 + liquid-node: ^3.0.1 + liquor: ^0.0.5 + lodash: ^4.17.20 + marko: ^3.14.4 + mote: ^0.2.0 + mustache: ^3.0.0 + nunjucks: ^3.2.2 + plates: ~0.4.11 + pug: ^3.0.0 + qejs: ^3.0.5 + ractive: ^1.3.12 + razor-tmpl: ^1.3.1 + react: ^16.13.1 + react-dom: ^16.13.1 + slm: ^2.0.0 + squirrelly: ^5.1.0 + swig: ^1.4.2 + swig-templates: ^2.0.3 + teacup: ^2.0.0 + templayed: '>=0.2.3' + then-jade: '*' + then-pug: '*' + tinyliquid: ^0.2.34 + toffee: ^0.3.6 + twig: ^1.15.2 + twing: ^5.0.2 + underscore: ^1.11.0 + vash: ^0.13.0 + velocityjs: ^2.0.1 + walrus: ^0.10.1 + whiskers: ^0.4.0 + peerDependenciesMeta: + arc-templates: + optional: true + atpl: + optional: true + babel-core: + optional: true + bracket-template: + optional: true + coffee-script: + optional: true + dot: + optional: true + dust: + optional: true + dustjs-helpers: + optional: true + dustjs-linkedin: + optional: true + eco: + optional: true + ect: + optional: true + ejs: + optional: true + haml-coffee: + optional: true + hamlet: + optional: true + hamljs: + optional: true + handlebars: + optional: true + hogan.js: + optional: true + htmling: + optional: true + jade: + optional: true + jazz: + optional: true + jqtpl: + optional: true + just: + optional: true + liquid-node: + optional: true + liquor: + optional: true + lodash: + optional: true + marko: + optional: true + mote: + optional: true + mustache: + optional: true + nunjucks: + optional: true + plates: + optional: true + pug: + optional: true + qejs: + optional: true + ractive: + optional: true + razor-tmpl: + optional: true + react: + optional: true + react-dom: + optional: true + slm: + optional: true + squirrelly: + optional: true + swig: + optional: true + swig-templates: + optional: true + teacup: + optional: true + templayed: + optional: true + then-jade: + optional: true + then-pug: + optional: true + tinyliquid: + optional: true + toffee: + optional: true + twig: + optional: true + twing: + optional: true + underscore: + optional: true + vash: + optional: true + velocityjs: + optional: true + walrus: + optional: true + whiskers: + optional: true + + constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + engines: {node: '>= 0.6'} + + copy-concurrently@1.0.5: + resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} + deprecated: This package is no longer supported. + + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + + copy-props@2.0.5: + resolution: {integrity: sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==} + + copy-webpack-plugin@5.1.2: + resolution: {integrity: sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + core-js-compat@3.41.0: + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} + + core-js-pure@3.41.0: + resolution: {integrity: sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==} + + core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + create-ecdh@4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@6.0.6: + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + crypto-browserify@3.12.1: + resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==} + engines: {node: '>= 0.10'} + + css-color-names@0.0.4: + resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} + + css-declaration-sorter@4.0.1: + resolution: {integrity: sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==} + engines: {node: '>4'} + + css-declaration-sorter@6.4.1: + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + + css-loader@3.6.0: + resolution: {integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + css-loader@4.3.0: + resolution: {integrity: sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.27.0 || ^5.0.0 + + css-select-base-adapter@0.1.1: + resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} + + css-select@2.1.0: + resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-tree@1.0.0-alpha.37: + resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} + engines: {node: '>=8.0.0'} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-what@3.4.2: + resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} + engines: {node: '>= 6'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-advanced@5.3.10: + resolution: {integrity: sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-preset-default@4.0.8: + resolution: {integrity: sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==} + engines: {node: '>=6.9.0'} + + cssnano-preset-default@5.2.14: + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-util-get-arguments@4.0.0: + resolution: {integrity: sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==} + engines: {node: '>=6.9.0'} + + cssnano-util-get-match@4.0.0: + resolution: {integrity: sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==} + engines: {node: '>=6.9.0'} + + cssnano-util-raw-cache@4.0.1: + resolution: {integrity: sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==} + engines: {node: '>=6.9.0'} + + cssnano-util-same-parent@4.0.1: + resolution: {integrity: sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==} + engines: {node: '>=6.9.0'} + + cssnano-utils@3.1.0: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano@4.1.11: + resolution: {integrity: sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==} + engines: {node: '>=6.9.0'} + + cssnano@5.1.15: + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + cyclist@1.0.2: + resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==} + + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-equal@1.1.2: + resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} + engines: {node: '>= 0.4'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@1.5.2: + resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==} + engines: {node: '>=0.10.0'} + + default-compare@1.0.0: + resolution: {integrity: sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==} + engines: {node: '>=0.10.0'} + + default-gateway@4.2.0: + resolution: {integrity: sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==} + engines: {node: '>=6'} + + default-gateway@5.0.5: + resolution: {integrity: sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==} + engines: {node: ^8.12.0 || >=9.7.0} + + default-resolution@2.0.0: + resolution: {integrity: sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==} + engines: {node: '>= 0.10'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + + del@4.1.1: + resolution: {integrity: sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==} + engines: {node: '>=6'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + des.js@1.1.0: + resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + diffie-hellman@5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + + dir-glob@2.2.2: + resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} + engines: {node: '>=4'} + + dns-equal@1.0.0: + resolution: {integrity: sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==} + + dns-packet@1.3.4: + resolution: {integrity: sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==} + + dns-txt@2.0.2: + resolution: {integrity: sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + domain-browser@1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotenv-expand@5.1.0: + resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + + dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + + each-props@1.3.2: + resolution: {integrity: sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + easy-stack@1.0.1: + resolution: {integrity: sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==} + engines: {node: '>=6.0.0'} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@2.7.4: + resolution: {integrity: sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==} + engines: {node: '>=0.10.0'} + + electron-to-chromium@1.5.143: + resolution: {integrity: sha512-QqklJMOFBMqe46k8iIOwA9l2hz57V2OKMmP5eSWcUvwx+mASAsbU+wkF1pHjn9ZVSBPrsYWr4/W/95y5SwYg2g==} + + element-plus@2.9.8: + resolution: {integrity: sha512-srViUaUdfblBKGMeuEPiXxxKlH5aUmKqEwmhb/At9Sj91DbU6od/jYN1955cTnzt3wTSA7GfnZF7UiRX9sdRHg==} + peerDependencies: + vue: ^3.2.0 + + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + + emoji-regex@7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + emojis-list@2.1.0: + resolution: {integrity: sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==} + engines: {node: '>= 0.10'} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + enhanced-resolve@4.5.0: + resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} + engines: {node: '>=6.9.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + es-abstract@1.23.9: + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + engines: {node: '>= 0.4'} + + es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-object-assign@1.1.0: + resolution: {integrity: sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + + esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + esbuild-android-arm64@0.13.15: + resolution: {integrity: sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==} + cpu: [arm64] + os: [android] + + esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + esbuild-darwin-64@0.13.15: + resolution: {integrity: sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==} + cpu: [x64] + os: [darwin] + + esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + esbuild-darwin-arm64@0.13.15: + resolution: {integrity: sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==} + cpu: [arm64] + os: [darwin] + + esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + esbuild-freebsd-64@0.13.15: + resolution: {integrity: sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==} + cpu: [x64] + os: [freebsd] + + esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + esbuild-freebsd-arm64@0.13.15: + resolution: {integrity: sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==} + cpu: [arm64] + os: [freebsd] + + esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + esbuild-linux-32@0.13.15: + resolution: {integrity: sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==} + cpu: [ia32] + os: [linux] + + esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + esbuild-linux-64@0.13.15: + resolution: {integrity: sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==} + cpu: [x64] + os: [linux] + + esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + esbuild-linux-arm64@0.13.15: + resolution: {integrity: sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==} + cpu: [arm64] + os: [linux] + + esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + esbuild-linux-arm@0.13.15: + resolution: {integrity: sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==} + cpu: [arm] + os: [linux] + + esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + esbuild-linux-mips64le@0.13.15: + resolution: {integrity: sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==} + cpu: [mips64el] + os: [linux] + + esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + esbuild-linux-ppc64le@0.13.15: + resolution: {integrity: sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==} + cpu: [ppc64] + os: [linux] + + esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + esbuild-netbsd-64@0.13.15: + resolution: {integrity: sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==} + cpu: [x64] + os: [netbsd] + + esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + esbuild-node-loader@0.3.2: + resolution: {integrity: sha512-4Y6sTwvB5pH+A7gmpd/xzyPkOZC4nmEWRoGBi4BQoE0DhZvrrzHqSmT+jb4x7m1rwv4BCuNbajN13LN8D0PGoA==} + + esbuild-openbsd-64@0.13.15: + resolution: {integrity: sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==} + cpu: [x64] + os: [openbsd] + + esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild-sunos-64@0.13.15: + resolution: {integrity: sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==} + cpu: [x64] + os: [sunos] + + esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + esbuild-windows-32@0.13.15: + resolution: {integrity: sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==} + cpu: [ia32] + os: [win32] + + esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + esbuild-windows-64@0.13.15: + resolution: {integrity: sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==} + cpu: [x64] + os: [win32] + + esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + esbuild-windows-arm64@0.13.15: + resolution: {integrity: sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==} + cpu: [arm64] + os: [win32] + + esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + esbuild@0.12.29: + resolution: {integrity: sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==} + hasBin: true + + esbuild@0.13.15: + resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==} + hasBin: true + + esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-vue@7.20.0: + resolution: {integrity: sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==} + engines: {node: '>=8.10'} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + + eslint-scope@4.0.3: + resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==} + engines: {node: '>=4.0.0'} + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + + eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint-visitor-keys@3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + + esno@0.9.1: + resolution: {integrity: sha512-3pnZ7fI0+8R7kJSTwuOfzAvXNXun7eaZsTSE5avkNRrxTokq3Jm32gaah3Zgl5opHQ1K9SJasoQQySzmfN8alw==} + hasBin: true + + espree@6.2.1: + resolution: {integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==} + engines: {node: '>=6.0.0'} + + espree@7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + event-pubsub@4.3.0: + resolution: {integrity: sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==} + engines: {node: '>=4.0.0'} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + eventsource@2.0.2: + resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} + engines: {node: '>=12.0.0'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + + execa@3.4.0: + resolution: {integrity: sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==} + engines: {node: ^8.12.0 || >=9.7.0} + + execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + engines: {node: '>= 0.10.0'} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fancy-log@1.3.3: + resolution: {integrity: sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==} + engines: {node: '>= 0.10'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@2.2.7: + resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} + engines: {node: '>=4.0.0'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@1.1.4: + resolution: {integrity: sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + figgy-pudding@3.5.2: + resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} + deprecated: This module is no longer supported. + + figlet@1.8.1: + resolution: {integrity: sha512-kEC3Sme+YvA8Hkibv0NR1oClGcWia0VB2fC1SlMy027cwe795Xx40Xiv/nw/iFAwQLupymWh+uhAAErn/7hwPg==} + engines: {node: '>= 0.4.0'} + hasBin: true + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-loader@4.3.0: + resolution: {integrity: sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + filesize@3.6.1: + resolution: {integrity: sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==} + engines: {node: '>= 0.4.0'} + + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + engines: {node: '>= 0.8'} + + find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-up@1.1.2: + resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} + engines: {node: '>=0.10.0'} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-versions@4.0.0: + resolution: {integrity: sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==} + engines: {node: '>=10'} + + findup-sync@2.0.0: + resolution: {integrity: sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==} + engines: {node: '>= 0.10'} + + findup-sync@3.0.0: + resolution: {integrity: sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==} + engines: {node: '>= 0.10'} + + fined@1.2.0: + resolution: {integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==} + engines: {node: '>= 0.10'} + + flagged-respawn@1.0.1: + resolution: {integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==} + engines: {node: '>= 0.10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + flush-write-stream@1.1.1: + resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + for-own@1.0.0: + resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==} + engines: {node: '>=0.10.0'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + form-data@4.0.2: + resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==} + engines: {node: '>= 6'} + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-mkdirp-stream@1.0.0: + resolution: {integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==} + engines: {node: '>= 0.10'} + + fs-write-stream-atomic@1.0.10: + resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} + deprecated: This package is no longer supported. + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: Upgrade to fsevents v2 to mitigate potential security issues + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functional-red-black-tree@1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@1.0.3: + resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-own-enumerable-property-symbols@3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + glob-parent@3.1.0: + resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-stream@6.1.0: + resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==} + engines: {node: '>= 0.10'} + + glob-to-regexp@0.3.0: + resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==} + + glob-watcher@5.0.5: + resolution: {integrity: sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==} + engines: {node: '>= 0.10'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + + globby@7.1.1: + resolution: {integrity: sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==} + engines: {node: '>=4'} + + globby@9.2.0: + resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} + engines: {node: '>=6'} + + glogg@1.0.2: + resolution: {integrity: sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==} + engines: {node: '>= 0.10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + gulp-cli@2.3.0: + resolution: {integrity: sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==} + engines: {node: '>= 0.10'} + hasBin: true + + gulp@4.0.2: + resolution: {integrity: sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==} + engines: {node: '>= 0.10'} + hasBin: true + + gulplog@1.0.0: + resolution: {integrity: sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==} + engines: {node: '>= 0.10'} + + gzip-size@5.1.1: + resolution: {integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==} + engines: {node: '>=6'} + + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + + has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + + hash-base@3.0.5: + resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==} + engines: {node: '>= 0.10'} + + hash-sum@1.0.2: + resolution: {integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==} + + hash-sum@2.0.0: + resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasha@5.2.2: + resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} + engines: {node: '>=8'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + hex-color-regex@1.1.0: + resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} + + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hoopy@0.1.4: + resolution: {integrity: sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==} + engines: {node: '>= 6.0.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + hsl-regex@1.0.0: + resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==} + + hsla-regex@1.0.0: + resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} + + html-entities@1.4.0: + resolution: {integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==} + + html-minifier-terser@5.1.1: + resolution: {integrity: sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==} + engines: {node: '>=6'} + hasBin: true + + html-minifier@3.5.21: + resolution: {integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==} + engines: {node: '>=4'} + hasBin: true + + html-tags@2.0.0: + resolution: {integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==} + engines: {node: '>=4'} + + html-webpack-plugin@3.2.0: + resolution: {integrity: sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==} + engines: {node: '>=6.9'} + deprecated: 3.x is no longer supported + peerDependencies: + webpack: ^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + + html-webpack-plugin@4.5.2: + resolution: {integrity: sha512-q5oYdzjKUIPQVjOosjgvCHQOv9Ett9CYYHlgvJeXG0qQvdSojnBq4vAdQBwn1+yGveAwHCoe/rMR86ozX3+c2A==} + engines: {node: '>=6.9'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.10: + resolution: {integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==} + + http-proxy-middleware@0.19.1: + resolution: {integrity: sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==} + engines: {node: '>=4.0.0'} + + http-proxy-middleware@1.3.1: + resolution: {integrity: sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==} + engines: {node: '>=8.0.0'} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + + https-browserify@1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + + human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + humps@2.0.1: + resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==} + + husky@4.3.8: + resolution: {integrity: sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==} + engines: {node: '>=10'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + icss-utils@4.1.1: + resolution: {integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==} + engines: {node: '>= 6'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + iferr@0.1.5: + resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} + + ignore@3.3.10: + resolution: {integrity: sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==} + + ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + + import-cwd@2.1.0: + resolution: {integrity: sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==} + engines: {node: '>=4'} + + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-from@2.1.0: + resolution: {integrity: sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==} + engines: {node: '>=4'} + + import-local@2.0.0: + resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==} + engines: {node: '>=6'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + indexes-of@1.0.1: + resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} + + infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + internal-ip@4.3.0: + resolution: {integrity: sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==} + engines: {node: '>=6'} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + inversify@6.0.1: + resolution: {integrity: sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ==} + + invert-kv@1.0.0: + resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} + engines: {node: '>=0.10.0'} + + ip-regex@2.1.0: + resolution: {integrity: sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==} + engines: {node: '>=4'} + + ip@1.1.9: + resolution: {integrity: sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + is-absolute-url@2.1.0: + resolution: {integrity: sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==} + engines: {node: '>=0.10.0'} + + is-absolute-url@3.0.3: + resolution: {integrity: sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==} + engines: {node: '>=8'} + + is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + + is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@1.0.1: + resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} + engines: {node: '>=0.10.0'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-color-stop@1.1.0: + resolution: {integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + + is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@1.0.0: + resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@3.1.0: + resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + + is-negated-glob@1.0.0: + resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} + engines: {node: '>=0.10.0'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + + is-number@4.0.0: + resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-cwd@2.2.0: + resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + engines: {node: '>=6'} + + is-path-in-cwd@2.1.0: + resolution: {integrity: sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==} + engines: {node: '>=6'} + + is-path-inside@2.1.0: + resolution: {integrity: sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==} + engines: {node: '>=6'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + + is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + + is-resolvable@1.1.0: + resolution: {integrity: sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-valid-glob@1.0.0: + resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==} + engines: {node: '>=0.10.0'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + javascript-obfuscator@4.1.1: + resolution: {integrity: sha512-gt+KZpIIrrxXHEQGD8xZrL8mTRwRY0U76/xz/YX0gZdPrSqQhT/c7dYLASlLlecT3r+FxE7je/+C0oLnTDCx4A==} + engines: {node: '>=12.22.0'} + hasBin: true + + javascript-stringify@2.1.0: + resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} + + js-beautify@1.15.4: + resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==} + engines: {node: '>=14'} + hasBin: true + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + + js-message@1.0.7: + resolution: {integrity: sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==} + engines: {node: '>=0.6.0'} + + js-string-escape@1.0.1: + resolution: {integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==} + engines: {node: '>= 0.8'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + jsbarcode@3.11.6: + resolution: {integrity: sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==} + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@0.5.1: + resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} + hasBin: true + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonlint-mod@1.7.6: + resolution: {integrity: sha512-oGuk6E1ehmIpw0w9ttgb2KsDQQgGXBzZczREW8OfxEm9eCQYL9/LCexSnh++0z3AiYGcXpBgqDSx9AAgzl/Bvg==} + engines: {node: '>= 0.6'} + hasBin: true + + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + + just-debounce@1.1.0: + resolution: {integrity: sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + killable@1.0.1: + resolution: {integrity: sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@5.1.0: + resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} + engines: {node: '>=0.10.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + last-run@1.1.1: + resolution: {integrity: sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==} + engines: {node: '>= 0.10'} + + launch-editor-middleware@2.10.0: + resolution: {integrity: sha512-RzZu7MeVlE3p1H6Sadc2BhuDGAj7bkeDCBpNq/zSENP4ohJGhso00k5+iYaRwKshIpiOAhMmimce+5D389xmSg==} + + launch-editor@2.10.0: + resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} + + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + + lcid@1.0.0: + resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==} + engines: {node: '>=0.10.0'} + + lead@1.0.0: + resolution: {integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==} + engines: {node: '>= 0.10'} + + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + libphonenumber-js@1.12.7: + resolution: {integrity: sha512-0nYZSNj/QEikyhcM5RZFXGlCB/mr4PVamnT1C2sKBnDDTYndrvbybYjvg+PMqAndQHlLbwQ3socolnL3WWTUFA==} + + liftoff@3.1.0: + resolution: {integrity: sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==} + engines: {node: '>= 0.8'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@10.5.4: + resolution: {integrity: sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==} + hasBin: true + + listr2@3.14.0: + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + load-json-file@1.1.0: + resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} + engines: {node: '>=0.10.0'} + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + + loader-runner@2.4.0: + resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==} + engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} + + loader-utils@0.2.17: + resolution: {integrity: sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==} + + loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash-unified@1.0.3: + resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} + peerDependencies: + '@types/lodash-es': '*' + lodash: '*' + lodash-es: '*' + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.defaultsdeep@4.6.1: + resolution: {integrity: sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.mapvalues@4.6.0: + resolution: {integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.transform@4.6.0: + resolution: {integrity: sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@2.2.0: + resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} + engines: {node: '>=4'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} + + lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-iterator@1.0.1: + resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==} + engines: {node: '>=0.10.0'} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + + marked@15.0.11: + resolution: {integrity: sha512-1BEXAU2euRCG3xwgLVT1y0xbJEld1XOrmRJpUwRCcy7rxhSCwMrmEu9LXoPhHSCJG41V7YcQ2mjKRr5BA3ITIA==} + engines: {node: '>= 18'} + hasBin: true + + matchdep@2.0.0: + resolution: {integrity: sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==} + engines: {node: '>= 0.10.0'} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + md5@2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + mdn-data@2.0.4: + resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + memoize-one@6.0.0: + resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} + + memory-fs@0.4.1: + resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==} + + memory-fs@0.5.0: + resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} + engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge-source-map@1.1.0: + resolution: {integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + miller-rabin@4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mini-css-extract-plugin@0.9.0: + resolution: {integrity: sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.4.0 + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mississippi@3.0.0: + resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==} + engines: {node: '>=4.0.0'} + + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@2.1.3: + resolution: {integrity: sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==} + engines: {node: '>=10'} + hasBin: true + + move-concurrently@1.0.1: + resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} + deprecated: This package is no longer supported. + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multicast-dns-service-types@1.1.0: + resolution: {integrity: sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==} + + multicast-dns@6.2.3: + resolution: {integrity: sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==} + hasBin: true + + multimatch@5.0.0: + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} + engines: {node: '>=10'} + + mute-stdout@1.0.1: + resolution: {integrity: sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==} + engines: {node: '>= 0.10'} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nan@2.22.2: + resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-forge@0.10.0: + resolution: {integrity: sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==} + engines: {node: '>= 6.0.0'} + + node-libs-browser@2.2.1: + resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@1.9.1: + resolution: {integrity: sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==} + engines: {node: '>=4'} + + normalize-url@3.3.0: + resolution: {integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==} + engines: {node: '>=6'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + normalize-wheel-es@1.2.0: + resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} + + now-and-later@2.0.1: + resolution: {integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==} + engines: {node: '>= 0.10'} + + npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + + npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@1.0.2: + resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + num2fraction@1.2.2: + resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} + + number-is-nan@1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} + + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.defaults@1.1.0: + resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==} + engines: {node: '>=0.10.0'} + + object.getownpropertydescriptors@2.1.8: + resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==} + engines: {node: '>= 0.8'} + + object.map@1.0.1: + resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} + engines: {node: '>=0.10.0'} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + object.reduce@1.0.1: + resolution: {integrity: sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==} + engines: {node: '>=0.10.0'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + opencollective-postinstall@2.0.3: + resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==} + hasBin: true + + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + + opn@5.5.0: + resolution: {integrity: sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==} + engines: {node: '>=4'} + + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@3.4.0: + resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==} + engines: {node: '>=6'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + ordered-read-streams@1.0.1: + resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==} + + os-browserify@0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + + os-locale@1.4.0: + resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==} + engines: {node: '>=0.10.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-finally@2.0.1: + resolution: {integrity: sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==} + engines: {node: '>=8'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-retry@3.0.1: + resolution: {integrity: sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==} + engines: {node: '>=6'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parallel-transform@1.2.0: + resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==} + + param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-asn1@5.1.7: + resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==} + engines: {node: '>= 0.10'} + + parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} + + parse-json@2.2.0: + resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} + engines: {node: '>=0.10.0'} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + + path-browserify@0.0.1: + resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} + + path-dirname@1.0.2: + resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==} + + path-exists@2.1.0: + resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} + engines: {node: '>=0.10.0'} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-is-inside@1.0.2: + resolution: {integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} + + path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + + path-type@1.1.0: + resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} + engines: {node: '>=0.10.0'} + + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + + please-upgrade-node@3.2.0: + resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} + + pnp-webpack-plugin@1.7.0: + resolution: {integrity: sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==} + engines: {node: '>=6'} + + portfinder@1.0.36: + resolution: {integrity: sha512-gMKUzCoP+feA7t45moaSx7UniU7PgGN3hA8acAB+3Qn7/js0/lJ07fYZlxt9riE9S3myyxDCyAFzSrLlta0c9g==} + engines: {node: '>= 10.12'} + + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-calc@7.0.5: + resolution: {integrity: sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==} + + postcss-calc@8.2.4: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + + postcss-colormin@4.0.3: + resolution: {integrity: sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==} + engines: {node: '>=6.9.0'} + + postcss-colormin@5.3.1: + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-convert-values@4.0.1: + resolution: {integrity: sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==} + engines: {node: '>=6.9.0'} + + postcss-convert-values@5.1.3: + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-comments@4.0.2: + resolution: {integrity: sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==} + engines: {node: '>=6.9.0'} + + postcss-discard-comments@5.1.2: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-duplicates@4.0.2: + resolution: {integrity: sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==} + engines: {node: '>=6.9.0'} + + postcss-discard-duplicates@5.1.0: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-empty@4.0.1: + resolution: {integrity: sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==} + engines: {node: '>=6.9.0'} + + postcss-discard-empty@5.1.1: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-overridden@4.0.1: + resolution: {integrity: sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==} + engines: {node: '>=6.9.0'} + + postcss-discard-overridden@5.1.0: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-unused@5.1.0: + resolution: {integrity: sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-load-config@2.1.2: + resolution: {integrity: sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==} + engines: {node: '>= 4'} + + postcss-loader@3.0.0: + resolution: {integrity: sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==} + engines: {node: '>= 6'} + + postcss-merge-idents@5.1.1: + resolution: {integrity: sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-merge-longhand@4.0.11: + resolution: {integrity: sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==} + engines: {node: '>=6.9.0'} + + postcss-merge-longhand@5.1.7: + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-merge-rules@4.0.3: + resolution: {integrity: sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==} + engines: {node: '>=6.9.0'} + + postcss-merge-rules@5.1.4: + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-font-values@4.0.2: + resolution: {integrity: sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==} + engines: {node: '>=6.9.0'} + + postcss-minify-font-values@5.1.0: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-gradients@4.0.2: + resolution: {integrity: sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==} + engines: {node: '>=6.9.0'} + + postcss-minify-gradients@5.1.1: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-params@4.0.2: + resolution: {integrity: sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==} + engines: {node: '>=6.9.0'} + + postcss-minify-params@5.1.4: + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-selectors@4.0.2: + resolution: {integrity: sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==} + engines: {node: '>=6.9.0'} + + postcss-minify-selectors@5.2.1: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-modules-extract-imports@2.0.0: + resolution: {integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==} + engines: {node: '>= 6'} + + postcss-modules-local-by-default@3.0.3: + resolution: {integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==} + engines: {node: '>= 6'} + + postcss-modules-scope@2.2.0: + resolution: {integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==} + engines: {node: '>= 6'} + + postcss-modules-values@3.0.0: + resolution: {integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==} + + postcss-normalize-charset@4.0.1: + resolution: {integrity: sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==} + engines: {node: '>=6.9.0'} + + postcss-normalize-charset@5.1.0: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-display-values@4.0.2: + resolution: {integrity: sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==} + engines: {node: '>=6.9.0'} + + postcss-normalize-display-values@5.1.0: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-positions@4.0.2: + resolution: {integrity: sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==} + engines: {node: '>=6.9.0'} + + postcss-normalize-positions@5.1.1: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-repeat-style@4.0.2: + resolution: {integrity: sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==} + engines: {node: '>=6.9.0'} + + postcss-normalize-repeat-style@5.1.1: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-string@4.0.2: + resolution: {integrity: sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==} + engines: {node: '>=6.9.0'} + + postcss-normalize-string@5.1.0: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-timing-functions@4.0.2: + resolution: {integrity: sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==} + engines: {node: '>=6.9.0'} + + postcss-normalize-timing-functions@5.1.0: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-unicode@4.0.1: + resolution: {integrity: sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==} + engines: {node: '>=6.9.0'} + + postcss-normalize-unicode@5.1.1: + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-url@4.0.1: + resolution: {integrity: sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==} + engines: {node: '>=6.9.0'} + + postcss-normalize-url@5.1.0: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-whitespace@4.0.2: + resolution: {integrity: sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==} + engines: {node: '>=6.9.0'} + + postcss-normalize-whitespace@5.1.1: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-ordered-values@4.1.2: + resolution: {integrity: sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==} + engines: {node: '>=6.9.0'} + + postcss-ordered-values@5.1.3: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-idents@5.2.0: + resolution: {integrity: sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-initial@4.0.3: + resolution: {integrity: sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==} + engines: {node: '>=6.9.0'} + + postcss-reduce-initial@5.1.2: + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-transforms@4.0.2: + resolution: {integrity: sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==} + engines: {node: '>=6.9.0'} + + postcss-reduce-transforms@5.1.0: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-selector-parser@3.1.2: + resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==} + engines: {node: '>=8'} + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-svgo@4.0.3: + resolution: {integrity: sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==} + engines: {node: '>=6.9.0'} + + postcss-svgo@5.1.0: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-unique-selectors@4.0.1: + resolution: {integrity: sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==} + engines: {node: '>=6.9.0'} + + postcss-unique-selectors@5.1.1: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-value-parser@3.3.1: + resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss-zindex@5.1.0: + resolution: {integrity: sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prepend-http@1.0.4: + resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} + engines: {node: '>=0.10.0'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + pretty-error@2.1.2: + resolution: {integrity: sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==} + + pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + public-encrypt@4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + + pump@2.0.1: + resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + pumpify@1.5.1: + resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + + qr-code-styling@1.9.2: + resolution: {integrity: sha512-RgJaZJ1/RrXJ6N0j7a+pdw3zMBmzZU4VN2dtAZf8ZggCfRB5stEQ3IoDNGaNhYY3nnZKYlYSLl5YkfWN5dPutg==} + engines: {node: '>=18.18.0'} + + qrcode-generator@1.4.4: + resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + + query-string@4.3.4: + resolution: {integrity: sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==} + engines: {node: '>=0.10.0'} + + querystring-es3@0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + randomfill@1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + read-pkg-up@1.0.1: + resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} + engines: {node: '>=0.10.0'} + + read-pkg@1.1.0: + resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} + engines: {node: '>=0.10.0'} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + reflect-metadata@0.1.13: + resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + remove-bom-buffer@3.0.0: + resolution: {integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==} + engines: {node: '>=0.10.0'} + + remove-bom-stream@1.2.0: + resolution: {integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==} + engines: {node: '>= 0.10'} + + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + + renderkid@2.0.7: + resolution: {integrity: sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==} + + repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + replace-ext@1.0.1: + resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} + engines: {node: '>= 0.10'} + + replace-homedir@1.0.0: + resolution: {integrity: sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==} + engines: {node: '>= 0.10'} + + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@1.0.1: + resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@2.0.0: + resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==} + engines: {node: '>=4'} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-options@1.1.0: + resolution: {integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==} + engines: {node: '>= 0.10'} + + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rgb-regex@1.0.1: + resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} + + rgba-regex@1.0.0: + resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + rollup-plugin-visualizer@5.14.0: + resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + rolldown: 1.x + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} + engines: {node: '>=10.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + run-queue@1.0.3: + resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + + schema-utils@1.0.0: + resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} + engines: {node: '>= 4'} + + schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@1.10.14: + resolution: {integrity: sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==} + + semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + + semver-greatest-satisfied-range@1.1.0: + resolution: {integrity: sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==} + engines: {node: '>= 0.10'} + + semver-regex@3.1.4: + resolution: {integrity: sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==} + engines: {node: '>=8'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + engines: {node: '>= 0.8.0'} + + serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + signature_pad@5.0.7: + resolution: {integrity: sha512-j2C6NTZ3c99G3hvFTsg6oOWy/tmftgwIXrvsr3+99+5SuPW6OdSpo++ZUzLVNfNHYmp2Z2Al76YV/3RhS/nDJg==} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + slash@1.0.0: + resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} + engines: {node: '>=0.10.0'} + + slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + + snowflake-id@1.1.0: + resolution: {integrity: sha512-aBOppRJ/HIe4PxkIxK5QMO4+X9pO6ejjE1i1gXgGXCEd312vtBZnvOfc2D7W2MKhVhyld7a7AwrO5ZIl297KbA==} + + sockjs-client@1.6.1: + resolution: {integrity: sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==} + engines: {node: '>=12'} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + + sort-keys@1.1.2: + resolution: {integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==} + engines: {node: '>=0.10.0'} + + sortablejs@1.14.0: + resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} + + source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + sparkles@1.0.1: + resolution: {integrity: sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==} + engines: {node: '>= 0.10'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + ssri@6.0.2: + resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==} + + ssri@8.0.1: + resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} + engines: {node: '>= 8'} + + stable@0.1.8: + resolution: {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' + + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + stream-browserify@2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + + stream-each@1.2.3: + resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} + + stream-exhaust@1.0.2: + resolution: {integrity: sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==} + + stream-http@2.8.3: + resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + strict-uri-encode@1.1.0: + resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} + engines: {node: '>=0.10.0'} + + string-argv@0.3.1: + resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} + engines: {node: '>=0.6.19'} + + string-template@1.0.0: + resolution: {integrity: sha512-SLqR3GBUXuoPP5MmYtD7ompvXiG87QjT6lzOszyXjTM86Uu7At7vNnt2xgyTLq5o9T4IxTYFyGxcULqpsmsfdg==} + + string-width@1.0.2: + resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} + engines: {node: '>=0.10.0'} + + string-width@3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.padend@3.1.6: + resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-author@0.1.3: + resolution: {integrity: sha512-OxmcAnr4DESGl/ics9lAv30DdOBC2bdqswEAzTiOZSQRqVpWfnmlr3cpfxTmExf7phS5WxBJ1flD1e3ResNTBA==} + engines: {node: '>=0.10.0'} + + stringify-object@3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + + stringz@2.1.0: + resolution: {integrity: sha512-KlywLT+MZ+v0IRepfMxRtnSvDCMc3nR1qqCs3m/qIbSOWkNZYT8XHQA31rS3TnKp0c5xjZu3M4GY/2aRKSi/6A==} + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@2.0.0: + resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} + engines: {node: '>=0.10.0'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + stylehacks@4.0.3: + resolution: {integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==} + engines: {node: '>=6.9.0'} + + stylehacks@5.1.1: + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@6.1.0: + resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} + engines: {node: '>=6'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + sver-compat@1.5.0: + resolution: {integrity: sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + svgo@1.3.2: + resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} + engines: {node: '>=4.0.0'} + deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + hasBin: true + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + + tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + + terser-webpack-plugin@1.4.6: + resolution: {integrity: sha512-2lBVf/VMVIddjSn3GqbT90GvIJ/eYXJkt8cTzU7NbjKqK8fwv18Ftr4PlbF46b/e88743iZFL5Dtr/rC4hjIeA==} + engines: {node: '>= 6.9.0'} + peerDependencies: + webpack: ^4.0.0 + + terser@4.8.1: + resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} + engines: {node: '>=6.0.0'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thread-loader@2.1.3: + resolution: {integrity: sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==} + engines: {node: '>= 6.9.0 <7.0.0 || >= 8.9.0'} + peerDependencies: + webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 + + through2-filter@3.0.0: + resolution: {integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + time-stamp@1.1.0: + resolution: {integrity: sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==} + engines: {node: '>=0.10.0'} + + timers-browserify@2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + + timsort@0.3.0: + resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} + + to-absolute-glob@2.0.2: + resolution: {integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==} + engines: {node: '>=0.10.0'} + + to-arraybuffer@1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + + to-through@2.0.0: + resolution: {integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==} + engines: {node: '>= 0.10'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + toposort@1.0.7: + resolution: {integrity: sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==} + + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + + tryer@1.0.1: + resolution: {integrity: sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==} + + ts-pnp@1.2.0: + resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} + engines: {node: '>=6'} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tty-browserify@0.0.0: + resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + uglify-js@3.4.10: + resolution: {integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==} + engines: {node: '>=0.8.0'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} + + underscore@1.13.7: + resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} + + undertaker-registry@1.0.1: + resolution: {integrity: sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==} + engines: {node: '>= 0.10'} + + undertaker@1.3.0: + resolution: {integrity: sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==} + engines: {node: '>= 0.10'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + + uniq@1.0.1: + resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} + + uniqs@2.0.0: + resolution: {integrity: sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==} + + unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + + unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + + unique-stream@2.3.1: + resolution: {integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-preprocessor-directives@1.0.3: + resolution: {integrity: sha512-l/ZZ7CpVSqzkG3v2zBl2DEur4sC+qUdHpc9TrKahXP+JbPCQYHKUgdCgFpbrM5hLLQqxoa9gVleIZJL/2Lk4Bg==} + peerDependencies: + '@nuxt/kit': ^3 + '@nuxt/schema': ^3 + '@rspack/core': '*' + esbuild: '*' + rollup: ^3 + vite: '>=3' + webpack: ^4 || ^5 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@nuxt/schema': + optional: true + '@rspack/core': + optional: true + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + + upath@1.2.0: + resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} + engines: {node: '>=4'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + + url-loader@2.3.0: + resolution: {integrity: sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==} + engines: {node: '>= 8.9.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 + peerDependenciesMeta: + file-loader: + optional: true + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util.promisify@1.0.0: + resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==} + + util.promisify@1.0.1: + resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} + + util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + + util@0.11.1: + resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-compile-cache@2.4.0: + resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} + + v8flags@3.2.0: + resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==} + engines: {node: '>= 0.10'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validator@13.15.0: + resolution: {integrity: sha512-36B2ryl4+oL5QxZ3AzD0t5SsMNGvTtQHpjgFO5tbNxfXbMFkY822ktCDe1MnlqV3301QQI9SLHDNJokDI+Z9pA==} + engines: {node: '>= 0.10'} + + value-or-function@3.0.0: + resolution: {integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==} + engines: {node: '>= 0.10'} + + vant@4.9.19: + resolution: {integrity: sha512-fRt32XI0fO0vB3/YGhZOpTnHKjplUiNuA05yZy8rPZntmbQE5GA57Y7iC7jmMDxSOaLebovynhgCvWnyk9zmDw==} + peerDependencies: + vue: ^3.0.0 + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vendors@1.0.4: + resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==} + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + vinyl-fs@3.0.3: + resolution: {integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==} + engines: {node: '>= 0.10'} + + vinyl-sourcemap@1.1.0: + resolution: {integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==} + engines: {node: '>= 0.10'} + + vinyl@2.2.1: + resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} + engines: {node: '>= 0.10'} + + vite-plugin-banner@0.5.0: + resolution: {integrity: sha512-GDyecw4mb7uUeE6BFsicFOJ4sL9KWof+QNRvASXehpNNwwQVYCtB9HAjvKt6ixgvwSp6jWR1gM9dKLqNDZaEjQ==} + + vite-plugin-css-injected-by-js@2.4.0: + resolution: {integrity: sha512-fQkJ5baPEasjjJLxHINLjXuPREO61VIDFUeUqleEBghOLfZZe/k/zrxG5b3kFZXu6JtdI11pnwtj3dh3CN9X4Q==} + peerDependencies: + vite: '>2.0.0-0' + + vite-plugin-javascript-obfuscator@3.1.0: + resolution: {integrity: sha512-sf4JFlG1iUPl7bLXHGOy+bKWOQUFyXzJFWa+n2S2xMMvyfM+V9R40HhpZoIF1eAjifArM1SF7fbSFIaTuUIbPA==} + + vite@3.2.11: + resolution: {integrity: sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-eslint-parser@7.11.0: + resolution: {integrity: sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==} + engines: {node: '>=8.10'} + peerDependencies: + eslint: '>=5.0.0' + + vue-hot-reload-api@2.3.4: + resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} + + vue-loader@15.11.1: + resolution: {integrity: sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==} + peerDependencies: + '@vue/compiler-sfc': ^3.0.8 + cache-loader: '*' + css-loader: '*' + prettier: '*' + vue-template-compiler: '*' + webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + cache-loader: + optional: true + prettier: + optional: true + vue-template-compiler: + optional: true + + vue-loader@16.8.3: + resolution: {integrity: sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==} + peerDependencies: + '@vue/compiler-sfc': ^3.0.8 + vue: ^3.2.13 + webpack: ^4.1.0 || ^5.0.0-0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + vue: + optional: true + + vue-style-loader@4.1.3: + resolution: {integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==} + + vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + + vue-template-es2015-compiler@1.9.1: + resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==} + + vue@3.5.13: + resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + vuedraggable@4.1.0: + resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==} + peerDependencies: + vue: ^3.0.1 + + wangeditor@4.7.15: + resolution: {integrity: sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==} + + watchpack-chokidar2@2.0.1: + resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==} + + watchpack@1.7.5: + resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webpack-bundle-analyzer@3.9.0: + resolution: {integrity: sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==} + engines: {node: '>= 6.14.4'} + hasBin: true + + webpack-chain@6.5.1: + resolution: {integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==} + engines: {node: '>=8'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + webpack-dev-middleware@3.7.3: + resolution: {integrity: sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==} + engines: {node: '>= 6'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + webpack-dev-server@3.11.3: + resolution: {integrity: sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==} + engines: {node: '>= 6.11.5'} + hasBin: true + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + webpack-log@2.0.0: + resolution: {integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==} + engines: {node: '>= 6'} + + webpack-merge@4.2.2: + resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==} + + webpack-sources@1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + webpack@4.47.0: + resolution: {integrity: sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==} + engines: {node: '>=6.11.5'} + hasBin: true + peerDependencies: + webpack-cli: '*' + webpack-command: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + webpack-command: + optional: true + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-module@1.0.0: + resolution: {integrity: sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-pm-runs@1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==} + engines: {node: '>=4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + worker-farm@1.7.0: + resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==} + + wrap-ansi@2.1.0: + resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} + engines: {node: '>=0.10.0'} + + wrap-ansi@5.1.0: + resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} + engines: {node: '>=6'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@3.2.2: + resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yargs-parser@13.1.2: + resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-parser@5.0.1: + resolution: {integrity: sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==} + + yargs@13.3.2: + resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yargs@7.1.2: + resolution: {integrity: sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@achrinza/node-ipc@9.2.2': + dependencies: + '@node-ipc/js-queue': 2.0.3 + event-pubsub: 4.3.0 + js-message: 1.0.7 + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.12.11': + dependencies: + '@babel/highlight': 7.25.9 + + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.8': {} + + '@babel/core@7.26.10': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helpers': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + convert-source-map: 2.0.0 + debug: 4.4.0(supports-color@6.1.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.0': + dependencies: + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.27.0 + + '@babel/helper-compilation-targets@7.27.0': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.27.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + debug: 4.4.0(supports-color@6.1.0) + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.27.0 + + '@babel/helper-plugin-utils@7.26.5': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.27.0': + dependencies: + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + + '@babel/highlight@7.25.9': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/parser@7.27.0': + dependencies: + '@babel/types': 7.27.0 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + + '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.26.5(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-block-scoping@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + '@babel/traverse': 7.27.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/template': 7.27.0 + + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-exponentiation-operator@7.26.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-for-of@7.26.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.27.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-nullish-coalescing-operator@7.26.6(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-regenerator@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-runtime@7.26.10(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-template-literals@7.26.8(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-typeof-symbol@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-create-regexp-features-plugin': 7.27.0(@babel/core@7.26.10) + '@babel/helper-plugin-utils': 7.26.5 + + '@babel/preset-env@7.26.9(@babel/core@7.26.10)': + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.10) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoped-functions': 7.26.5(@babel/core@7.26.10) + '@babel/plugin-transform-block-scoping': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-exponentiation-operator': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-for-of': 7.26.9(@babel/core@7.26.10) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.10) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-nullish-coalescing-operator': 7.26.6(@babel/core@7.26.10) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-regenerator': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.10) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-template-literals': 7.26.8(@babel/core@7.26.10) + '@babel/plugin-transform-typeof-symbol': 7.27.0(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.10) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.10) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) + core-js-compat: 3.41.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/types': 7.27.0 + esutils: 2.0.3 + + '@babel/runtime-corejs3@7.27.0': + dependencies: + core-js-pure: 3.41.0 + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.27.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.27.0 + '@babel/types': 7.27.0 + + '@babel/traverse@7.27.0': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.27.0 + '@babel/parser': 7.27.0 + '@babel/template': 7.27.0 + '@babel/types': 7.27.0 + debug: 4.4.0(supports-color@6.1.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@ctrl/tinycolor@3.6.1': {} + + '@element-plus/icons-vue@0.2.7(vue@3.5.13(typescript@4.9.5))': + dependencies: + vue: 3.5.13(typescript@4.9.5) + + '@element-plus/icons-vue@2.3.1(vue@3.5.13(typescript@4.9.5))': + dependencies: + vue: 3.5.13(typescript@4.9.5) + + '@esbuild/android-arm@0.15.18': + optional: true + + '@esbuild/linux-loong64@0.15.18': + optional: true + + '@eslint/eslintrc@0.4.3': + dependencies: + ajv: 6.12.6 + debug: 4.4.0(supports-color@6.1.0) + espree: 7.3.1 + globals: 13.24.0 + ignore: 4.0.6 + import-fresh: 3.3.1 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@floating-ui/core@1.6.9': + dependencies: + '@floating-ui/utils': 0.2.9 + + '@floating-ui/dom@1.6.13': + dependencies: + '@floating-ui/core': 1.6.9 + '@floating-ui/utils': 0.2.9 + + '@floating-ui/utils@0.2.9': {} + + '@form-create/component-elm-checkbox@3.2.18': + dependencies: + '@form-create/utils': 3.2.18 + + '@form-create/component-elm-frame@3.2.18': + dependencies: + '@form-create/utils': 3.2.18 + + '@form-create/component-elm-group@3.2.22': + dependencies: + '@form-create/utils': 3.2.18 + + '@form-create/component-elm-radio@3.2.18': + dependencies: + '@form-create/utils': 3.2.18 + + '@form-create/component-elm-select@3.2.18': + dependencies: + '@form-create/utils': 3.2.18 + + '@form-create/component-elm-tree@3.2.18': + dependencies: + '@form-create/utils': 3.2.18 + + '@form-create/component-elm-upload@3.2.18': + dependencies: + '@form-create/utils': 3.2.18 + + '@form-create/component-subform@3.1.34': {} + + '@form-create/component-wangeditor@3.2.14': + dependencies: + wangeditor: 4.7.15 + + '@form-create/core@3.2.22(vue@3.5.13(typescript@4.9.5))': + dependencies: + '@form-create/utils': 3.2.18 + vue: 3.5.13(typescript@4.9.5) + + '@form-create/element-ui@3.2.22(vue@3.5.13(typescript@4.9.5))': + dependencies: + '@form-create/component-elm-checkbox': 3.2.18 + '@form-create/component-elm-frame': 3.2.18 + '@form-create/component-elm-group': 3.2.22 + '@form-create/component-elm-radio': 3.2.18 + '@form-create/component-elm-select': 3.2.18 + '@form-create/component-elm-tree': 3.2.18 + '@form-create/component-elm-upload': 3.2.18 + '@form-create/component-subform': 3.1.34 + '@form-create/core': 3.2.22(vue@3.5.13(typescript@4.9.5)) + '@form-create/utils': 3.2.18 + vue: 3.5.13(typescript@4.9.5) + + '@form-create/utils@3.2.18': {} + + '@form-create/vant@3.2.22(vue@3.5.13(typescript@4.9.5))': + dependencies: + '@form-create/component-subform': 3.1.34 + '@form-create/core': 3.2.22(vue@3.5.13(typescript@4.9.5)) + '@form-create/utils': 3.2.18 + dayjs: 1.11.13 + vue: 3.5.13(typescript@4.9.5) + + '@hapi/address@2.1.4': {} + + '@hapi/bourne@1.3.2': {} + + '@hapi/hoek@8.5.1': {} + + '@hapi/joi@15.1.1': + dependencies: + '@hapi/address': 2.1.4 + '@hapi/bourne': 1.3.2 + '@hapi/hoek': 8.5.1 + '@hapi/topo': 3.1.6 + + '@hapi/topo@3.1.6': + dependencies: + '@hapi/hoek': 8.5.1 + + '@humanwhocodes/config-array@0.5.0': + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.4.0(supports-color@6.1.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/object-schema@1.2.1': {} + + '@intervolga/optimize-cssnano-plugin@1.0.6(webpack@4.47.0)': + dependencies: + cssnano: 4.1.11 + cssnano-preset-default: 4.0.8 + postcss: 7.0.39 + webpack: 4.47.0 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@javascript-obfuscator/escodegen@2.3.0': + dependencies: + '@javascript-obfuscator/estraverse': 5.4.0 + esprima: 4.0.1 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + + '@javascript-obfuscator/estraverse@5.4.0': {} + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@mrmlnc/readdir-enhanced@2.2.1': + dependencies: + call-me-maybe: 1.0.2 + glob-to-regexp: 0.3.0 + + '@node-ipc/js-queue@2.0.3': + dependencies: + easy-stack: 1.0.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@1.1.3': {} + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@one-ini/wasm@0.1.1': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@sixian/css-url@1.0.3': + dependencies: + hasha: 5.2.2 + + '@soda/friendly-errors-webpack-plugin@1.8.1(webpack@4.47.0)': + dependencies: + chalk: 3.0.0 + error-stack-parser: 2.1.4 + string-width: 4.2.3 + strip-ansi: 6.0.1 + webpack: 4.47.0 + + '@soda/get-current-script@1.0.2': {} + + '@sxzz/popperjs-es@2.11.7': {} + + '@trysound/sax@0.2.0': {} + + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 22.15.2 + + '@types/chalk@2.2.4': + dependencies: + chalk: 4.1.2 + + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 5.0.6 + '@types/node': 22.15.2 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 22.15.2 + + '@types/express-serve-static-core@5.0.6': + dependencies: + '@types/node': 22.15.2 + '@types/qs': 6.9.18 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@5.0.1': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 5.0.6 + '@types/serve-static': 1.15.7 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.15.2 + + '@types/html-minifier-terser@5.1.2': {} + + '@types/http-errors@2.0.4': {} + + '@types/http-proxy@1.17.16': + dependencies: + '@types/node': 22.15.2 + + '@types/json-schema@7.0.15': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.16 + + '@types/lodash@4.17.16': {} + + '@types/mime@1.3.5': {} + + '@types/minimatch@3.0.5': {} + + '@types/minimatch@5.1.2': {} + + '@types/minimist@1.2.5': {} + + '@types/node@22.15.2': + dependencies: + undici-types: 6.21.0 + + '@types/normalize-package-data@2.4.4': {} + + '@types/parse-json@4.0.2': {} + + '@types/q@1.5.8': {} + + '@types/qs@6.9.18': {} + + '@types/range-parser@1.2.7': {} + + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 22.15.2 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 22.15.2 + '@types/send': 0.17.4 + + '@types/shelljs@0.8.15': + dependencies: + '@types/glob': 7.2.0 + '@types/node': 22.15.2 + + '@types/source-list-map@0.1.6': {} + + '@types/tapable@1.0.12': {} + + '@types/uglify-js@3.17.5': + dependencies: + source-map: 0.6.1 + + '@types/validator@13.15.0': {} + + '@types/web-bluetooth@0.0.16': {} + + '@types/webpack-dev-server@3.11.6(debug@4.4.0)': + dependencies: + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 5.0.1 + '@types/serve-static': 1.15.7 + '@types/webpack': 4.41.40 + http-proxy-middleware: 1.3.1(debug@4.4.0) + transitivePeerDependencies: + - debug + + '@types/webpack-sources@3.2.3': + dependencies: + '@types/node': 22.15.2 + '@types/source-list-map': 0.1.6 + source-map: 0.7.4 + + '@types/webpack@4.41.40': + dependencies: + '@types/node': 22.15.2 + '@types/tapable': 1.0.12 + '@types/uglify-js': 3.17.5 + '@types/webpack-sources': 3.2.3 + anymatch: 3.1.3 + source-map: 0.6.1 + + '@vant/popperjs@1.3.0': {} + + '@vant/use@1.6.0(vue@3.5.13(typescript@4.9.5))': + dependencies: + vue: 3.5.13(typescript@4.9.5) + + '@vitejs/plugin-vue-jsx@2.1.1(vite@3.2.11(@types/node@22.15.2))(vue@3.5.13(typescript@4.9.5))': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.26.10) + '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.26.10) + vite: 3.2.11(@types/node@22.15.2) + vue: 3.5.13(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@3.2.0(vite@3.2.11(@types/node@22.15.2))(vue@3.5.13(typescript@4.9.5))': + dependencies: + vite: 3.2.11(@types/node@22.15.2) + vue: 3.5.13(typescript@4.9.5) + + '@vue/babel-helper-vue-jsx-merge-props@1.4.0': {} + + '@vue/babel-helper-vue-transform-on@1.4.0': {} + + '@vue/babel-plugin-jsx@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/template': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + '@vue/babel-helper-vue-transform-on': 1.4.0 + '@vue/babel-plugin-resolve-type': 1.4.0(@babel/core@7.26.10) + '@vue/shared': 3.5.13 + optionalDependencies: + '@babel/core': 7.26.10 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/parser': 7.27.0 + '@vue/compiler-sfc': 3.5.13 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-transform-vue-jsx@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-module-imports': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 + html-tags: 2.0.0 + lodash.kebabcase: 4.1.1 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-preset-app@4.5.19(@babel/core@7.26.10)(vue@3.5.13(typescript@4.9.5))': + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-compilation-targets': 7.27.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.10) + '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.10) + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) + '@babel/preset-env': 7.26.9(@babel/core@7.26.10) + '@babel/runtime': 7.27.0 + '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.26.10) + '@vue/babel-preset-jsx': 1.4.0(@babel/core@7.26.10)(vue@3.5.13(typescript@4.9.5)) + babel-plugin-dynamic-import-node: 2.3.3 + core-js-compat: 3.41.0 + semver: 6.3.1 + optionalDependencies: + vue: 3.5.13(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + + '@vue/babel-preset-jsx@1.4.0(@babel/core@7.26.10)(vue@3.5.13(typescript@4.9.5))': + dependencies: + '@babel/core': 7.26.10 + '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.26.10) + '@vue/babel-sugar-composition-api-inject-h': 1.4.0(@babel/core@7.26.10) + '@vue/babel-sugar-composition-api-render-instance': 1.4.0(@babel/core@7.26.10) + '@vue/babel-sugar-functional-vue': 1.4.0(@babel/core@7.26.10) + '@vue/babel-sugar-inject-h': 1.4.0(@babel/core@7.26.10) + '@vue/babel-sugar-v-model': 1.4.0(@babel/core@7.26.10) + '@vue/babel-sugar-v-on': 1.4.0(@babel/core@7.26.10) + optionalDependencies: + vue: 3.5.13(typescript@4.9.5) + transitivePeerDependencies: + - supports-color + + '@vue/babel-sugar-composition-api-inject-h@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + + '@vue/babel-sugar-composition-api-render-instance@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + + '@vue/babel-sugar-functional-vue@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + + '@vue/babel-sugar-inject-h@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + + '@vue/babel-sugar-v-model@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.26.10) + camelcase: 5.3.1 + html-tags: 2.0.0 + svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color + + '@vue/babel-sugar-v-on@1.4.0(@babel/core@7.26.10)': + dependencies: + '@babel/core': 7.26.10 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.10) + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.26.10) + camelcase: 5.3.1 + transitivePeerDependencies: + - supports-color + + '@vue/cli-overlay@4.5.19': {} + + '@vue/cli-plugin-babel@4.5.19(@vue/cli-service@4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5)))(vue@3.5.13(typescript@4.9.5))': + dependencies: + '@babel/core': 7.26.10 + '@vue/babel-preset-app': 4.5.19(@babel/core@7.26.10)(vue@3.5.13(typescript@4.9.5)) + '@vue/cli-service': 4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5)) + '@vue/cli-shared-utils': 4.5.19 + babel-loader: 8.4.1(@babel/core@7.26.10)(webpack@4.47.0) + cache-loader: 4.1.0(webpack@4.47.0) + thread-loader: 2.1.3(webpack@4.47.0) + webpack: 4.47.0 + transitivePeerDependencies: + - core-js + - supports-color + - vue + - webpack-cli + - webpack-command + + '@vue/cli-plugin-router@4.5.19(@vue/cli-service@4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5)))': + dependencies: + '@vue/cli-service': 4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5)) + '@vue/cli-shared-utils': 4.5.19 + + '@vue/cli-plugin-vuex@4.5.19(@vue/cli-service@4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5)))': + dependencies: + '@vue/cli-service': 4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5)) + + '@vue/cli-service@4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5))': + dependencies: + '@intervolga/optimize-cssnano-plugin': 1.0.6(webpack@4.47.0) + '@soda/friendly-errors-webpack-plugin': 1.8.1(webpack@4.47.0) + '@soda/get-current-script': 1.0.2 + '@types/minimist': 1.2.5 + '@types/webpack': 4.41.40 + '@types/webpack-dev-server': 3.11.6(debug@4.4.0) + '@vue/cli-overlay': 4.5.19 + '@vue/cli-plugin-router': 4.5.19(@vue/cli-service@4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5))) + '@vue/cli-plugin-vuex': 4.5.19(@vue/cli-service@4.5.19(@vue/compiler-sfc@3.5.13)(lodash@4.17.21)(typescript@4.9.5)(underscore@1.13.7)(vue-template-compiler@2.7.16)(vue@3.5.13(typescript@4.9.5))) + '@vue/cli-shared-utils': 4.5.19 + '@vue/component-compiler-utils': 3.3.0(lodash@4.17.21)(underscore@1.13.7) + '@vue/preload-webpack-plugin': 1.1.2(html-webpack-plugin@3.2.0(webpack@4.47.0))(webpack@4.47.0) + '@vue/web-component-wrapper': 1.3.0 + acorn: 7.4.1 + acorn-walk: 7.2.0 + address: 1.2.2 + autoprefixer: 9.8.8 + browserslist: 4.24.4 + cache-loader: 4.1.0(webpack@4.47.0) + case-sensitive-paths-webpack-plugin: 2.4.0 + cli-highlight: 2.1.11 + clipboardy: 2.3.0 + cliui: 6.0.0 + copy-webpack-plugin: 5.1.2(webpack@4.47.0) + css-loader: 3.6.0(webpack@4.47.0) + cssnano: 4.1.11 + debug: 4.4.0(supports-color@6.1.0) + default-gateway: 5.0.5 + dotenv: 8.6.0 + dotenv-expand: 5.1.0 + file-loader: 4.3.0(webpack@4.47.0) + fs-extra: 7.0.1 + globby: 9.2.0 + hash-sum: 2.0.0 + html-webpack-plugin: 3.2.0(webpack@4.47.0) + launch-editor-middleware: 2.10.0 + lodash.defaultsdeep: 4.6.1 + lodash.mapvalues: 4.6.0 + lodash.transform: 4.6.0 + mini-css-extract-plugin: 0.9.0(webpack@4.47.0) + minimist: 1.2.8 + pnp-webpack-plugin: 1.7.0(typescript@4.9.5) + portfinder: 1.0.36(supports-color@6.1.0) + postcss-loader: 3.0.0 + ssri: 8.0.1 + terser-webpack-plugin: 1.4.6(webpack@4.47.0) + thread-loader: 2.1.3(webpack@4.47.0) + url-loader: 2.3.0(file-loader@4.3.0(webpack@4.47.0))(webpack@4.47.0) + vue-loader: 15.11.1(@vue/compiler-sfc@3.5.13)(cache-loader@4.1.0(webpack@4.47.0))(css-loader@3.6.0(webpack@4.47.0))(lodash@4.17.21)(underscore@1.13.7)(vue-template-compiler@2.7.16)(webpack@4.47.0) + vue-style-loader: 4.1.3 + webpack: 4.47.0 + webpack-bundle-analyzer: 3.9.0 + webpack-chain: 6.5.1 + webpack-dev-server: 3.11.3(webpack@4.47.0) + webpack-merge: 4.2.2 + optionalDependencies: + '@vue/compiler-sfc': 3.5.13 + vue-loader-v16: vue-loader@16.8.3(@vue/compiler-sfc@3.5.13)(vue@3.5.13(typescript@4.9.5))(webpack@4.47.0) + vue-template-compiler: 2.7.16 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - bufferutil + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - prettier + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - typescript + - underscore + - utf-8-validate + - vash + - velocityjs + - vue + - walrus + - webpack-cli + - webpack-command + - whiskers + + '@vue/cli-shared-utils@4.5.19': + dependencies: + '@achrinza/node-ipc': 9.2.2 + '@hapi/joi': 15.1.1 + chalk: 2.4.2 + execa: 1.0.0 + launch-editor: 2.10.0 + lru-cache: 5.1.1 + open: 6.4.0 + ora: 3.4.0 + read-pkg: 5.2.0 + request: 2.88.2 + semver: 6.3.1 + strip-ansi: 6.0.1 + + '@vue/compiler-core@3.5.13': + dependencies: + '@babel/parser': 7.27.0 + '@vue/shared': 3.5.13 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.13': + dependencies: + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/compiler-sfc@3.5.13': + dependencies: + '@babel/parser': 7.27.0 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + estree-walker: 2.0.2 + magic-string: 0.30.17 + postcss: 8.5.3 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.13': + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/component-compiler-utils@3.3.0(lodash@4.17.21)(underscore@1.13.7)': + dependencies: + consolidate: 0.15.1(lodash@4.17.21)(underscore@1.13.7) + hash-sum: 1.0.2 + lru-cache: 4.1.5 + merge-source-map: 1.1.0 + postcss: 7.0.39 + postcss-selector-parser: 6.1.2 + source-map: 0.6.1 + vue-template-es2015-compiler: 1.9.1 + optionalDependencies: + prettier: 2.8.8 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + + '@vue/preload-webpack-plugin@1.1.2(html-webpack-plugin@3.2.0(webpack@4.47.0))(webpack@4.47.0)': + dependencies: + html-webpack-plugin: 3.2.0(webpack@4.47.0) + webpack: 4.47.0 + + '@vue/reactivity@3.5.13': + dependencies: + '@vue/shared': 3.5.13 + + '@vue/runtime-core@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 + + '@vue/runtime-dom@3.5.13': + dependencies: + '@vue/reactivity': 3.5.13 + '@vue/runtime-core': 3.5.13 + '@vue/shared': 3.5.13 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@4.9.5))': + dependencies: + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@4.9.5) + + '@vue/shared@3.5.13': {} + + '@vue/web-component-wrapper@1.3.0': {} + + '@vueuse/core@9.13.0(vue@3.5.13(typescript@4.9.5))': + dependencies: + '@types/web-bluetooth': 0.0.16 + '@vueuse/metadata': 9.13.0 + '@vueuse/shared': 9.13.0(vue@3.5.13(typescript@4.9.5)) + vue-demi: 0.14.10(vue@3.5.13(typescript@4.9.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@vueuse/metadata@9.13.0': {} + + '@vueuse/shared@9.13.0(vue@3.5.13(typescript@4.9.5))': + dependencies: + vue-demi: 0.14.10(vue@3.5.13(typescript@4.9.5)) + transitivePeerDependencies: + - '@vue/composition-api' + - vue + + '@webassemblyjs/ast@1.9.0': + dependencies: + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + + '@webassemblyjs/floating-point-hex-parser@1.9.0': {} + + '@webassemblyjs/helper-api-error@1.9.0': {} + + '@webassemblyjs/helper-buffer@1.9.0': {} + + '@webassemblyjs/helper-code-frame@1.9.0': + dependencies: + '@webassemblyjs/wast-printer': 1.9.0 + + '@webassemblyjs/helper-fsm@1.9.0': {} + + '@webassemblyjs/helper-module-context@1.9.0': + dependencies: + '@webassemblyjs/ast': 1.9.0 + + '@webassemblyjs/helper-wasm-bytecode@1.9.0': {} + + '@webassemblyjs/helper-wasm-section@1.9.0': + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + + '@webassemblyjs/ieee754@1.9.0': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.9.0': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.9.0': {} + + '@webassemblyjs/wasm-edit@1.9.0': + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/helper-wasm-section': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-opt': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + '@webassemblyjs/wast-printer': 1.9.0 + + '@webassemblyjs/wasm-gen@1.9.0': + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + + '@webassemblyjs/wasm-opt@1.9.0': + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-buffer': 1.9.0 + '@webassemblyjs/wasm-gen': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + + '@webassemblyjs/wasm-parser@1.9.0': + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-wasm-bytecode': 1.9.0 + '@webassemblyjs/ieee754': 1.9.0 + '@webassemblyjs/leb128': 1.9.0 + '@webassemblyjs/utf8': 1.9.0 + + '@webassemblyjs/wast-parser@1.9.0': + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/floating-point-hex-parser': 1.9.0 + '@webassemblyjs/helper-api-error': 1.9.0 + '@webassemblyjs/helper-code-frame': 1.9.0 + '@webassemblyjs/helper-fsm': 1.9.0 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/wast-printer@1.9.0': + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/wast-parser': 1.9.0 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + JSV@4.0.2: {} + + abbrev@2.0.0: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-jsx@5.3.2(acorn@7.4.1): + dependencies: + acorn: 7.4.1 + + acorn-walk@7.2.0: {} + + acorn@6.4.2: {} + + acorn@7.4.1: {} + + acorn@8.14.1: {} + + acorn@8.8.2: {} + + address@1.2.2: {} + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv-errors@1.0.1(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + alphanum-sort@1.0.2: {} + + ansi-colors@1.1.0: + dependencies: + ansi-wrap: 0.1.0 + + ansi-colors@3.2.4: {} + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-gray@0.1.1: + dependencies: + ansi-wrap: 0.1.0 + + ansi-html-community@0.0.8: {} + + ansi-regex@2.1.1: {} + + ansi-regex@4.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + ansi-wrap@0.1.0: {} + + any-promise@1.3.0: {} + + anymatch@2.0.0(supports-color@6.1.0): + dependencies: + micromatch: 3.1.10(supports-color@6.1.0) + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + append-buffer@1.0.2: + dependencies: + buffer-equal: 1.0.1 + + aproba@1.2.0: {} + + arch@2.2.0: {} + + archy@1.0.0: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + arr-diff@4.0.0: {} + + arr-filter@1.1.2: + dependencies: + make-iterator: 1.0.1 + + arr-flatten@1.1.0: {} + + arr-map@2.0.2: + dependencies: + make-iterator: 1.0.1 + + arr-union@3.1.0: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-differ@3.0.0: {} + + array-each@1.0.1: {} + + array-flatten@1.1.1: {} + + array-flatten@2.1.2: {} + + array-initial@1.1.0: + dependencies: + array-slice: 1.1.0 + is-number: 4.0.0 + + array-last@1.3.0: + dependencies: + is-number: 4.0.0 + + array-slice@1.1.0: {} + + array-sort@1.0.0: + dependencies: + default-compare: 1.0.0 + get-value: 2.0.6 + kind-of: 5.1.0 + + array-union@1.0.2: + dependencies: + array-uniq: 1.0.3 + + array-union@2.1.0: {} + + array-uniq@1.0.3: {} + + array-unique@0.3.2: {} + + array.prototype.reduce@1.0.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-array-method-boxes-properly: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + is-string: 1.1.1 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + arrify@2.0.1: {} + + asn1.js@4.10.1: + dependencies: + bn.js: 4.12.2 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} + + assert@1.5.1: + dependencies: + object.assign: 4.1.7 + util: 0.10.4 + + assert@2.0.0: + dependencies: + es6-object-assign: 1.1.0 + is-nan: 1.3.2 + object-is: 1.1.6 + util: 0.12.5 + + assign-symbols@1.0.0: {} + + astral-regex@2.0.0: {} + + async-done@1.3.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + process-nextick-args: 2.0.1 + stream-exhaust: 1.0.2 + + async-each@1.0.6: {} + + async-function@1.0.0: {} + + async-limiter@1.0.1: {} + + async-settle@1.0.0: + dependencies: + async-done: 1.3.2 + + async-validator@4.2.5: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + atob@2.1.2: {} + + autoprefixer@10.4.21(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001715 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + autoprefixer@9.8.8: + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001715 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + picocolors: 0.2.1 + postcss: 7.0.39 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + + axios@1.9.0: + dependencies: + follow-redirects: 1.15.9(debug@4.4.0) + form-data: 4.0.2 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + babel-eslint@10.1.0(eslint@7.32.0): + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.27.0 + '@babel/traverse': 7.27.0 + '@babel/types': 7.27.0 + eslint: 7.32.0 + eslint-visitor-keys: 1.3.0 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + babel-loader@8.4.1(@babel/core@7.26.10)(webpack@4.47.0): + dependencies: + '@babel/core': 7.26.10 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 4.47.0 + + babel-plugin-dynamic-import-node@2.3.3: + dependencies: + object.assign: 4.1.7 + + babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): + dependencies: + '@babel/compat-data': 7.26.8 + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + core-js-compat: 3.41.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.26.10): + dependencies: + '@babel/core': 7.26.10 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + transitivePeerDependencies: + - supports-color + + babel-runtime@6.26.0: + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + + bach@1.2.0: + dependencies: + arr-filter: 1.1.2 + arr-flatten: 1.1.0 + arr-map: 2.0.2 + array-each: 1.0.1 + array-initial: 1.1.0 + array-last: 1.3.0 + async-done: 1.3.2 + async-settle: 1.0.0 + now-and-later: 2.0.1 + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + + batch@0.6.1: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + bfj@6.1.2: + dependencies: + bluebird: 3.7.2 + check-types: 8.0.3 + hoopy: 0.1.4 + tryer: 1.0.1 + + big.js@3.2.0: {} + + big.js@5.2.2: {} + + binary-extensions@1.13.1: {} + + binary-extensions@2.3.0: + optional: true + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + optional: true + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird@3.7.2: {} + + bn.js@4.12.2: {} + + bn.js@5.2.2: {} + + body-parser@1.20.3(supports-color@6.1.0): + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9(supports-color@6.1.0) + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.13.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + bonjour@3.5.0: + dependencies: + array-flatten: 2.1.2 + deep-equal: 1.1.2 + dns-equal: 1.0.0 + dns-txt: 2.0.2 + multicast-dns: 6.2.3 + multicast-dns-service-types: 1.1.0 + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@2.3.2(supports-color@6.1.0): + 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.4 + snapdragon: 0.8.2(supports-color@6.1.0) + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.6 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-cipher@1.0.1: + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + + browserify-des@1.0.2: + dependencies: + cipher-base: 1.0.6 + des.js: 1.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserify-rsa@4.1.1: + dependencies: + bn.js: 5.2.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + browserify-sign@4.2.3: + dependencies: + bn.js: 5.2.2 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.6.1 + hash-base: 3.0.5 + inherits: 2.0.4 + parse-asn1: 5.1.7 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + + browserify-zlib@0.2.0: + dependencies: + pako: 1.0.11 + + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001715 + electron-to-chromium: 1.5.143 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.4) + + buffer-equal@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer-indexof@1.1.1: {} + + buffer-json@2.0.0: {} + + buffer-xor@1.0.3: {} + + buffer@4.9.2: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-status-codes@3.0.0: {} + + bytes@3.1.2: {} + + cacache@12.0.4: + dependencies: + bluebird: 3.7.2 + chownr: 1.1.4 + figgy-pudding: 3.5.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + mississippi: 3.0.0 + mkdirp: 0.5.6 + move-concurrently: 1.0.1 + promise-inflight: 1.0.1(bluebird@3.7.2) + rimraf: 2.7.1 + ssri: 6.0.2 + unique-filename: 1.1.1 + y18n: 4.0.3 + + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + + cache-loader@4.1.0(webpack@4.47.0): + dependencies: + buffer-json: 2.0.0 + find-cache-dir: 3.3.2 + loader-utils: 1.4.2 + mkdirp: 0.5.6 + neo-async: 2.6.2 + schema-utils: 2.7.1 + webpack: 4.47.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + call-me-maybe@1.0.2: {} + + caller-callsite@2.0.0: + dependencies: + callsites: 2.0.0 + + caller-path@2.0.0: + dependencies: + caller-callsite: 2.0.0 + + callsites@2.0.0: {} + + callsites@3.1.0: {} + + camel-case@3.0.0: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + + camelcase@3.0.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-api@3.0.0: + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001715 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001715: {} + + case-sensitive-paths-webpack-plugin@2.4.0: {} + + caseless@0.12.0: {} + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chance@1.1.9: {} + + char-regex@1.0.2: {} + + charenc@0.0.2: {} + + check-types@8.0.3: {} + + chokidar@2.1.8(supports-color@6.1.0): + dependencies: + anymatch: 2.0.0(supports-color@6.1.0) + async-each: 1.0.6 + braces: 2.3.2(supports-color@6.1.0) + glob-parent: 3.1.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 4.0.3 + normalize-path: 3.0.0 + path-is-absolute: 1.0.1 + readdirp: 2.2.1(supports-color@6.1.0) + upath: 1.2.0 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + optional: true + + chownr@1.1.4: {} + + chrome-trace-event@1.0.4: {} + + ci-info@2.0.0: {} + + cipher-base@1.0.6: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + + class-validator@0.14.1: + dependencies: + '@types/validator': 13.15.0 + libphonenumber-js: 1.12.7 + validator: 13.15.0 + + clean-css@4.2.4: + dependencies: + source-map: 0.6.1 + + clean-stack@2.2.0: {} + + cli-cursor@2.1.0: + dependencies: + restore-cursor: 2.0.0 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-highlight@2.1.11: + dependencies: + chalk: 4.1.2 + highlight.js: 10.7.3 + mz: 2.7.0 + parse5: 5.1.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + yargs: 16.2.0 + + cli-spinners@2.9.2: {} + + cli-truncate@2.1.0: + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + + clipboardy@2.3.0: + dependencies: + arch: 2.2.0 + execa: 1.0.0 + is-wsl: 2.2.0 + + cliui@3.2.0: + dependencies: + string-width: 1.0.2 + strip-ansi: 3.0.1 + wrap-ansi: 2.1.0 + + cliui@5.0.0: + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone-buffer@1.0.0: {} + + clone-stats@1.0.0: {} + + clone@1.0.4: {} + + clone@2.1.2: {} + + cloneable-readable@1.1.3: + dependencies: + inherits: 2.0.4 + process-nextick-args: 2.0.1 + readable-stream: 2.3.8 + + coa@2.0.2: + dependencies: + '@types/q': 1.5.8 + chalk: 2.4.2 + q: 1.5.1 + + code-point-at@1.1.0: {} + + codemirror@6.65.7: {} + + collection-map@1.0.0: + dependencies: + arr-map: 2.0.2 + for-own: 1.0.0 + make-iterator: 1.0.1 + + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color-support@1.1.3: {} + + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + + colord@2.9.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@10.0.0: {} + + commander@10.0.1: {} + + commander@2.17.1: {} + + commander@2.19.0: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@6.2.1: {} + + commander@7.2.0: {} + + commondir@1.0.1: {} + + compare-versions@3.6.0: {} + + component-emitter@1.3.1: {} + + compressible@2.0.18: + dependencies: + mime-db: 1.54.0 + + compression@1.8.0(supports-color@6.1.0): + dependencies: + bytes: 3.1.2 + compressible: 2.0.18 + debug: 2.6.9(supports-color@6.1.0) + negotiator: 0.6.4 + on-headers: 1.0.2 + safe-buffer: 5.2.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + concat-map@0.0.1: {} + + concat-stream@1.6.2: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + connect-history-api-fallback@1.6.0: {} + + console-browserify@1.2.0: {} + + consolidate@0.15.1(lodash@4.17.21)(underscore@1.13.7): + dependencies: + bluebird: 3.7.2 + optionalDependencies: + lodash: 4.17.21 + underscore: 1.13.7 + + constants-browserify@1.0.0: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.7.1: {} + + copy-concurrently@1.0.5: + dependencies: + aproba: 1.2.0 + fs-write-stream-atomic: 1.0.10 + iferr: 0.1.5 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + + copy-descriptor@0.1.1: {} + + copy-props@2.0.5: + dependencies: + each-props: 1.3.2 + is-plain-object: 5.0.0 + + copy-webpack-plugin@5.1.2(webpack@4.47.0): + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + glob-parent: 3.1.0 + globby: 7.1.1 + is-glob: 4.0.3 + loader-utils: 1.4.2 + minimatch: 3.1.2 + normalize-path: 3.0.0 + p-limit: 2.3.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + webpack: 4.47.0 + webpack-log: 2.0.0 + + core-js-compat@3.41.0: + dependencies: + browserslist: 4.24.4 + + core-js-pure@3.41.0: {} + + core-js@2.6.12: {} + + core-util-is@1.0.2: {} + + core-util-is@1.0.3: {} + + cosmiconfig@5.2.1: + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + create-ecdh@4.0.4: + dependencies: + bn.js: 4.12.2 + elliptic: 6.6.1 + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.6 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.6 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.6 + + cross-spawn@6.0.6: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypt@0.0.2: {} + + crypto-browserify@3.12.1: + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.3 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + hash-base: 3.0.5 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + + css-color-names@0.0.4: {} + + css-declaration-sorter@4.0.1: + dependencies: + postcss: 7.0.39 + timsort: 0.3.0 + + css-declaration-sorter@6.4.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + css-loader@3.6.0(webpack@4.47.0): + dependencies: + camelcase: 5.3.1 + cssesc: 3.0.0 + icss-utils: 4.1.1 + loader-utils: 1.4.2 + normalize-path: 3.0.0 + postcss: 7.0.39 + postcss-modules-extract-imports: 2.0.0 + postcss-modules-local-by-default: 3.0.3 + postcss-modules-scope: 2.2.0 + postcss-modules-values: 3.0.0 + postcss-value-parser: 4.2.0 + schema-utils: 2.7.1 + semver: 6.3.1 + webpack: 4.47.0 + + css-loader@4.3.0(webpack@4.47.0): + dependencies: + camelcase: 6.3.0 + cssesc: 3.0.0 + icss-utils: 4.1.1 + loader-utils: 2.0.4 + postcss: 7.0.39 + postcss-modules-extract-imports: 2.0.0 + postcss-modules-local-by-default: 3.0.3 + postcss-modules-scope: 2.2.0 + postcss-modules-values: 3.0.0 + postcss-value-parser: 4.2.0 + schema-utils: 2.7.1 + semver: 7.7.1 + webpack: 4.47.0 + + css-select-base-adapter@0.1.1: {} + + css-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-tree@1.0.0-alpha.37: + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-what@3.4.2: {} + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + cssnano-preset-advanced@5.3.10(postcss@8.5.3): + dependencies: + autoprefixer: 10.4.21(postcss@8.5.3) + cssnano-preset-default: 5.2.14(postcss@8.5.3) + postcss: 8.5.3 + postcss-discard-unused: 5.1.0(postcss@8.5.3) + postcss-merge-idents: 5.1.1(postcss@8.5.3) + postcss-reduce-idents: 5.2.0(postcss@8.5.3) + postcss-zindex: 5.1.0(postcss@8.5.3) + + cssnano-preset-default@4.0.8: + dependencies: + css-declaration-sorter: 4.0.1 + cssnano-util-raw-cache: 4.0.1 + postcss: 7.0.39 + postcss-calc: 7.0.5 + postcss-colormin: 4.0.3 + postcss-convert-values: 4.0.1 + postcss-discard-comments: 4.0.2 + postcss-discard-duplicates: 4.0.2 + postcss-discard-empty: 4.0.1 + postcss-discard-overridden: 4.0.1 + postcss-merge-longhand: 4.0.11 + postcss-merge-rules: 4.0.3 + postcss-minify-font-values: 4.0.2 + postcss-minify-gradients: 4.0.2 + postcss-minify-params: 4.0.2 + postcss-minify-selectors: 4.0.2 + postcss-normalize-charset: 4.0.1 + postcss-normalize-display-values: 4.0.2 + postcss-normalize-positions: 4.0.2 + postcss-normalize-repeat-style: 4.0.2 + postcss-normalize-string: 4.0.2 + postcss-normalize-timing-functions: 4.0.2 + postcss-normalize-unicode: 4.0.1 + postcss-normalize-url: 4.0.1 + postcss-normalize-whitespace: 4.0.2 + postcss-ordered-values: 4.1.2 + postcss-reduce-initial: 4.0.3 + postcss-reduce-transforms: 4.0.2 + postcss-svgo: 4.0.3 + postcss-unique-selectors: 4.0.1 + + cssnano-preset-default@5.2.14(postcss@8.5.3): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.5.3) + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-calc: 8.2.4(postcss@8.5.3) + postcss-colormin: 5.3.1(postcss@8.5.3) + postcss-convert-values: 5.1.3(postcss@8.5.3) + postcss-discard-comments: 5.1.2(postcss@8.5.3) + postcss-discard-duplicates: 5.1.0(postcss@8.5.3) + postcss-discard-empty: 5.1.1(postcss@8.5.3) + postcss-discard-overridden: 5.1.0(postcss@8.5.3) + postcss-merge-longhand: 5.1.7(postcss@8.5.3) + postcss-merge-rules: 5.1.4(postcss@8.5.3) + postcss-minify-font-values: 5.1.0(postcss@8.5.3) + postcss-minify-gradients: 5.1.1(postcss@8.5.3) + postcss-minify-params: 5.1.4(postcss@8.5.3) + postcss-minify-selectors: 5.2.1(postcss@8.5.3) + postcss-normalize-charset: 5.1.0(postcss@8.5.3) + postcss-normalize-display-values: 5.1.0(postcss@8.5.3) + postcss-normalize-positions: 5.1.1(postcss@8.5.3) + postcss-normalize-repeat-style: 5.1.1(postcss@8.5.3) + postcss-normalize-string: 5.1.0(postcss@8.5.3) + postcss-normalize-timing-functions: 5.1.0(postcss@8.5.3) + postcss-normalize-unicode: 5.1.1(postcss@8.5.3) + postcss-normalize-url: 5.1.0(postcss@8.5.3) + postcss-normalize-whitespace: 5.1.1(postcss@8.5.3) + postcss-ordered-values: 5.1.3(postcss@8.5.3) + postcss-reduce-initial: 5.1.2(postcss@8.5.3) + postcss-reduce-transforms: 5.1.0(postcss@8.5.3) + postcss-svgo: 5.1.0(postcss@8.5.3) + postcss-unique-selectors: 5.1.1(postcss@8.5.3) + + cssnano-util-get-arguments@4.0.0: {} + + cssnano-util-get-match@4.0.0: {} + + cssnano-util-raw-cache@4.0.1: + dependencies: + postcss: 7.0.39 + + cssnano-util-same-parent@4.0.1: {} + + cssnano-utils@3.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + cssnano@4.1.11: + dependencies: + cosmiconfig: 5.2.1 + cssnano-preset-default: 4.0.8 + is-resolvable: 1.1.0 + postcss: 7.0.39 + + cssnano@5.1.15(postcss@8.5.3): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.5.3) + lilconfig: 2.1.0 + postcss: 8.5.3 + yaml: 1.10.2 + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + csstype@3.1.3: {} + + cyclist@1.0.2: {} + + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dayjs@1.11.13: {} + + de-indent@1.0.2: {} + + debug@2.6.9(supports-color@6.1.0): + dependencies: + ms: 2.0.0 + optionalDependencies: + supports-color: 6.1.0 + + debug@3.2.7(supports-color@6.1.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 6.1.0 + + debug@4.4.0(supports-color@6.1.0): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 6.1.0 + + decamelize@1.2.0: {} + + decode-uri-component@0.2.2: {} + + dedent@0.7.0: {} + + deep-equal@1.1.2: + dependencies: + is-arguments: 1.2.0 + is-date-object: 1.1.0 + is-regex: 1.2.1 + object-is: 1.1.6 + object-keys: 1.1.1 + regexp.prototype.flags: 1.5.4 + + deep-is@0.1.4: {} + + deepmerge@1.5.2: {} + + default-compare@1.0.0: + dependencies: + kind-of: 5.1.0 + + default-gateway@4.2.0: + dependencies: + execa: 1.0.0 + ip-regex: 2.1.0 + + default-gateway@5.0.5: + dependencies: + execa: 3.4.0 + + default-resolution@2.0.0: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.7 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.3 + + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + + del@4.1.1: + dependencies: + '@types/glob': 7.2.0 + globby: 6.1.0 + is-path-cwd: 2.2.0 + is-path-in-cwd: 2.1.0 + p-map: 2.1.0 + pify: 4.0.1 + rimraf: 2.7.1 + + delayed-stream@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + des.js@1.1.0: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + destroy@1.2.0: {} + + detect-file@1.0.0: {} + + detect-node@2.1.0: {} + + diffie-hellman@5.0.3: + dependencies: + bn.js: 4.12.2 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + + dir-glob@2.2.2: + dependencies: + path-type: 3.0.0 + + dns-equal@1.0.0: {} + + dns-packet@1.3.4: + dependencies: + ip: 1.1.9 + safe-buffer: 5.2.1 + + dns-txt@2.0.2: + dependencies: + buffer-indexof: 1.1.1 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-serializer@0.2.2: + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + domain-browser@1.2.0: {} + + domelementtype@1.3.1: {} + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@1.7.0: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv-expand@5.1.0: {} + + dotenv@8.6.0: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + duplexify@3.7.1: + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.3 + + each-props@1.3.2: + dependencies: + is-plain-object: 2.0.4 + object.defaults: 1.1.0 + + eastasianwidth@0.2.0: {} + + easy-stack@1.0.1: {} + + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + editorconfig@1.0.4: + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.7.1 + + ee-first@1.1.1: {} + + ejs@2.7.4: {} + + electron-to-chromium@1.5.143: {} + + element-plus@2.9.8(vue@3.5.13(typescript@4.9.5)): + dependencies: + '@ctrl/tinycolor': 3.6.1 + '@element-plus/icons-vue': 2.3.1(vue@3.5.13(typescript@4.9.5)) + '@floating-ui/dom': 1.6.13 + '@popperjs/core': '@sxzz/popperjs-es@2.11.7' + '@types/lodash': 4.17.16 + '@types/lodash-es': 4.17.12 + '@vueuse/core': 9.13.0(vue@3.5.13(typescript@4.9.5)) + async-validator: 4.2.5 + dayjs: 1.11.13 + escape-html: 1.0.3 + lodash: 4.17.21 + lodash-es: 4.17.21 + lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21) + memoize-one: 6.0.0 + normalize-wheel-es: 1.2.0 + vue: 3.5.13(typescript@4.9.5) + transitivePeerDependencies: + - '@vue/composition-api' + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emoji-regex@7.0.3: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@2.1.0: {} + + emojis-list@3.0.0: {} + + encodeurl@1.0.2: {} + + encodeurl@2.0.0: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + enhanced-resolve@4.5.0: + dependencies: + graceful-fs: 4.2.11 + memory-fs: 0.5.0 + tapable: 1.1.3 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + entities@2.2.0: {} + + entities@4.5.0: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + es-abstract@1.23.9: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-array-method-boxes-properly@1.0.0: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-object-assign@1.1.0: {} + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + es6-weak-map@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + + esbuild-android-64@0.15.18: + optional: true + + esbuild-android-arm64@0.13.15: + optional: true + + esbuild-android-arm64@0.15.18: + optional: true + + esbuild-darwin-64@0.13.15: + optional: true + + esbuild-darwin-64@0.15.18: + optional: true + + esbuild-darwin-arm64@0.13.15: + optional: true + + esbuild-darwin-arm64@0.15.18: + optional: true + + esbuild-freebsd-64@0.13.15: + optional: true + + esbuild-freebsd-64@0.15.18: + optional: true + + esbuild-freebsd-arm64@0.13.15: + optional: true + + esbuild-freebsd-arm64@0.15.18: + optional: true + + esbuild-linux-32@0.13.15: + optional: true + + esbuild-linux-32@0.15.18: + optional: true + + esbuild-linux-64@0.13.15: + optional: true + + esbuild-linux-64@0.15.18: + optional: true + + esbuild-linux-arm64@0.13.15: + optional: true + + esbuild-linux-arm64@0.15.18: + optional: true + + esbuild-linux-arm@0.13.15: + optional: true + + esbuild-linux-arm@0.15.18: + optional: true + + esbuild-linux-mips64le@0.13.15: + optional: true + + esbuild-linux-mips64le@0.15.18: + optional: true + + esbuild-linux-ppc64le@0.13.15: + optional: true + + esbuild-linux-ppc64le@0.15.18: + optional: true + + esbuild-linux-riscv64@0.15.18: + optional: true + + esbuild-linux-s390x@0.15.18: + optional: true + + esbuild-netbsd-64@0.13.15: + optional: true + + esbuild-netbsd-64@0.15.18: + optional: true + + esbuild-node-loader@0.3.2: + dependencies: + esbuild: 0.13.15 + + esbuild-openbsd-64@0.13.15: + optional: true + + esbuild-openbsd-64@0.15.18: + optional: true + + esbuild-register@3.6.0(esbuild@0.12.29): + dependencies: + debug: 4.4.0(supports-color@6.1.0) + esbuild: 0.12.29 + transitivePeerDependencies: + - supports-color + + esbuild-sunos-64@0.13.15: + optional: true + + esbuild-sunos-64@0.15.18: + optional: true + + esbuild-windows-32@0.13.15: + optional: true + + esbuild-windows-32@0.15.18: + optional: true + + esbuild-windows-64@0.13.15: + optional: true + + esbuild-windows-64@0.15.18: + optional: true + + esbuild-windows-arm64@0.13.15: + optional: true + + esbuild-windows-arm64@0.15.18: + optional: true + + esbuild@0.12.29: {} + + esbuild@0.13.15: + optionalDependencies: + esbuild-android-arm64: 0.13.15 + esbuild-darwin-64: 0.13.15 + esbuild-darwin-arm64: 0.13.15 + esbuild-freebsd-64: 0.13.15 + esbuild-freebsd-arm64: 0.13.15 + esbuild-linux-32: 0.13.15 + esbuild-linux-64: 0.13.15 + esbuild-linux-arm: 0.13.15 + esbuild-linux-arm64: 0.13.15 + esbuild-linux-mips64le: 0.13.15 + esbuild-linux-ppc64le: 0.13.15 + esbuild-netbsd-64: 0.13.15 + esbuild-openbsd-64: 0.13.15 + esbuild-sunos-64: 0.13.15 + esbuild-windows-32: 0.13.15 + esbuild-windows-64: 0.13.15 + esbuild-windows-arm64: 0.13.15 + + esbuild@0.15.18: + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + eslint-plugin-vue@7.20.0(eslint@7.32.0): + dependencies: + eslint: 7.32.0 + eslint-utils: 2.1.0 + natural-compare: 1.4.0 + semver: 6.3.1 + vue-eslint-parser: 7.11.0(eslint@7.32.0) + transitivePeerDependencies: + - supports-color + + eslint-scope@4.0.3: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-utils@2.1.0: + dependencies: + eslint-visitor-keys: 1.3.0 + + eslint-visitor-keys@1.3.0: {} + + eslint-visitor-keys@2.1.0: {} + + eslint-visitor-keys@3.3.0: {} + + eslint@7.32.0: + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0(supports-color@6.1.0) + doctrine: 3.0.0 + enquirer: 2.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.24.0 + ignore: 4.0.6 + import-fresh: 3.3.1 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.7.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.9.0 + text-table: 0.2.0 + v8-compile-cache: 2.4.0 + transitivePeerDependencies: + - supports-color + + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + + esno@0.9.1: + dependencies: + cross-spawn: 7.0.6 + esbuild: 0.12.29 + esbuild-node-loader: 0.3.2 + esbuild-register: 3.6.0(esbuild@0.12.29) + transitivePeerDependencies: + - supports-color + + espree@6.2.1: + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + eslint-visitor-keys: 1.3.0 + + espree@7.3.1: + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + eslint-visitor-keys: 1.3.0 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + etag@1.8.1: {} + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + + event-pubsub@4.3.0: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + eventsource@2.0.2: {} + + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + execa@1.0.0: + dependencies: + cross-spawn: 6.0.6 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + + execa@3.4.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + p-finally: 2.0.1 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@4.1.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + expand-brackets@2.1.4(supports-color@6.1.0): + dependencies: + debug: 2.6.9(supports-color@6.1.0) + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2(supports-color@6.1.0) + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + express@4.21.2(supports-color@6.1.0): + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.3(supports-color@6.1.0) + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.7.1 + cookie-signature: 1.0.6 + debug: 2.6.9(supports-color@6.1.0) + depd: 2.0.0 + encodeurl: 2.0.0 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.3.1(supports-color@6.1.0) + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.3 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.12 + proxy-addr: 2.0.7 + qs: 6.13.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.19.0(supports-color@6.1.0) + serve-static: 1.16.2(supports-color@6.1.0) + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + ext@1.7.0: + dependencies: + type: 2.7.3 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + + extend@3.0.2: {} + + extglob@2.0.4(supports-color@6.1.0): + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4(supports-color@6.1.0) + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2(supports-color@6.1.0) + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + extsprintf@1.3.0: {} + + fancy-log@1.3.3: + dependencies: + ansi-gray: 0.1.1 + color-support: 1.1.3 + parse-node-version: 1.0.1 + time-stamp: 1.1.0 + + fast-deep-equal@3.1.3: {} + + fast-glob@2.2.7: + dependencies: + '@mrmlnc/readdir-enhanced': 2.2.1 + '@nodelib/fs.stat': 1.1.3 + glob-parent: 3.1.0 + is-glob: 4.0.3 + merge2: 1.4.1 + micromatch: 3.1.10(supports-color@6.1.0) + transitivePeerDependencies: + - supports-color + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@1.1.4: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + figgy-pudding@3.5.2: {} + + figlet@1.8.1: {} + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-loader@4.3.0(webpack@4.47.0): + dependencies: + loader-utils: 1.4.2 + schema-utils: 2.7.1 + webpack: 4.47.0 + + file-uri-to-path@1.0.0: + optional: true + + filesize@3.6.1: {} + + fill-range@4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.3.1(supports-color@6.1.0): + dependencies: + debug: 2.6.9(supports-color@6.1.0) + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-cache-dir@2.1.0: + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + + find-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + find-up@1.1.2: + dependencies: + path-exists: 2.1.0 + pinkie-promise: 2.0.1 + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-versions@4.0.0: + dependencies: + semver-regex: 3.1.4 + + findup-sync@2.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 3.1.0 + micromatch: 3.1.10(supports-color@6.1.0) + resolve-dir: 1.0.1 + transitivePeerDependencies: + - supports-color + + findup-sync@3.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 3.1.10(supports-color@6.1.0) + resolve-dir: 1.0.1 + transitivePeerDependencies: + - supports-color + + fined@1.2.0: + dependencies: + expand-tilde: 2.0.2 + is-plain-object: 2.0.4 + object.defaults: 1.1.0 + object.pick: 1.3.0 + parse-filepath: 1.0.2 + + flagged-respawn@1.0.1: {} + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.3: {} + + flush-write-stream@1.1.1: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + follow-redirects@1.15.9(debug@4.4.0): + optionalDependencies: + debug: 4.4.0(supports-color@6.1.0) + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + for-in@1.0.2: {} + + for-own@1.0.0: + dependencies: + for-in: 1.0.2 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forever-agent@0.6.1: {} + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@4.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + + fresh@0.5.2: {} + + from2@2.3.0: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-mkdirp-stream@1.0.0: + dependencies: + graceful-fs: 4.2.11 + through2: 2.0.5 + + fs-write-stream-atomic@1.0.10: + dependencies: + graceful-fs: 4.2.11 + iferr: 0.1.5 + imurmurhash: 0.1.4 + readable-stream: 2.3.8 + + fs.realpath@1.0.0: {} + + fsevents@1.2.13: + dependencies: + bindings: 1.5.0 + nan: 2.22.2 + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functional-red-black-tree@1.0.1: {} + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@1.0.3: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-own-enumerable-property-symbols@3.0.2: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@4.1.0: + dependencies: + pump: 3.0.2 + + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + + get-stream@6.0.1: {} + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-value@2.0.6: {} + + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + + glob-parent@3.1.0: + dependencies: + is-glob: 3.1.0 + path-dirname: 1.0.2 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-stream@6.1.0: + dependencies: + extend: 3.0.2 + glob: 7.2.3 + glob-parent: 3.1.0 + is-negated-glob: 1.0.0 + ordered-read-streams: 1.0.1 + pumpify: 1.5.1 + readable-stream: 2.3.8 + remove-trailing-separator: 1.1.0 + to-absolute-glob: 2.0.2 + unique-stream: 2.3.1 + + glob-to-regexp@0.3.0: {} + + glob-watcher@5.0.5: + dependencies: + anymatch: 2.0.0(supports-color@6.1.0) + async-done: 1.3.2 + chokidar: 2.1.8(supports-color@6.1.0) + is-negated-glob: 1.0.0 + just-debounce: 1.1.0 + normalize-path: 3.0.0 + object.defaults: 1.1.0 + transitivePeerDependencies: + - supports-color + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globby@6.1.0: + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + + globby@7.1.1: + dependencies: + array-union: 1.0.2 + dir-glob: 2.2.2 + glob: 7.2.3 + ignore: 3.3.10 + pify: 3.0.0 + slash: 1.0.0 + + globby@9.2.0: + dependencies: + '@types/glob': 7.2.0 + array-union: 1.0.2 + dir-glob: 2.2.2 + fast-glob: 2.2.7 + glob: 7.2.3 + ignore: 4.0.6 + pify: 4.0.1 + slash: 2.0.0 + transitivePeerDependencies: + - supports-color + + glogg@1.0.2: + dependencies: + sparkles: 1.0.1 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + gulp-cli@2.3.0: + dependencies: + ansi-colors: 1.1.0 + archy: 1.0.0 + array-sort: 1.0.0 + color-support: 1.1.3 + concat-stream: 1.6.2 + copy-props: 2.0.5 + fancy-log: 1.3.3 + gulplog: 1.0.0 + interpret: 1.4.0 + isobject: 3.0.1 + liftoff: 3.1.0 + matchdep: 2.0.0 + mute-stdout: 1.0.1 + pretty-hrtime: 1.0.3 + replace-homedir: 1.0.0 + semver-greatest-satisfied-range: 1.1.0 + v8flags: 3.2.0 + yargs: 7.1.2 + transitivePeerDependencies: + - supports-color + + gulp@4.0.2: + dependencies: + glob-watcher: 5.0.5 + gulp-cli: 2.3.0 + undertaker: 1.3.0 + vinyl-fs: 3.0.3 + transitivePeerDependencies: + - supports-color + + gulplog@1.0.0: + dependencies: + glogg: 1.0.2 + + gzip-size@5.1.1: + dependencies: + duplexer: 0.1.2 + pify: 4.0.1 + + handle-thing@2.0.1: {} + + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + + has-bigints@1.1.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-values@0.1.4: {} + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + + has@1.0.4: {} + + hash-base@3.0.5: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + hash-sum@1.0.2: {} + + hash-sum@2.0.0: {} + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasha@5.2.2: + dependencies: + is-stream: 2.0.1 + type-fest: 0.8.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + hex-color-regex@1.1.0: {} + + highlight.js@10.7.3: {} + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hoopy@0.1.4: {} + + hosted-git-info@2.8.9: {} + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + hsl-regex@1.0.0: {} + + hsla-regex@1.0.0: {} + + html-entities@1.4.0: {} + + html-minifier-terser@5.1.1: + dependencies: + camel-case: 4.1.2 + clean-css: 4.2.4 + commander: 4.1.1 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 4.8.1 + + html-minifier@3.5.21: + dependencies: + camel-case: 3.0.0 + clean-css: 4.2.4 + commander: 2.17.1 + he: 1.2.0 + param-case: 2.1.1 + relateurl: 0.2.7 + uglify-js: 3.4.10 + + html-tags@2.0.0: {} + + html-webpack-plugin@3.2.0(webpack@4.47.0): + dependencies: + html-minifier: 3.5.21 + loader-utils: 0.2.17 + lodash: 4.17.21 + pretty-error: 2.1.2 + tapable: 1.1.3 + toposort: 1.0.7 + util.promisify: 1.0.0 + webpack: 4.47.0 + + html-webpack-plugin@4.5.2(webpack@4.47.0): + dependencies: + '@types/html-minifier-terser': 5.1.2 + '@types/tapable': 1.0.12 + '@types/webpack': 4.41.40 + html-minifier-terser: 5.1.1 + loader-utils: 1.4.2 + lodash: 4.17.21 + pretty-error: 2.1.2 + tapable: 1.1.3 + util.promisify: 1.0.0 + webpack: 4.47.0 + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + http-deceiver@1.2.7: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-parser-js@0.5.10: {} + + http-proxy-middleware@0.19.1(debug@4.4.0)(supports-color@6.1.0): + dependencies: + http-proxy: 1.18.1(debug@4.4.0) + is-glob: 4.0.3 + lodash: 4.17.21 + micromatch: 3.1.10(supports-color@6.1.0) + transitivePeerDependencies: + - debug + - supports-color + + http-proxy-middleware@1.3.1(debug@4.4.0): + dependencies: + '@types/http-proxy': 1.17.16 + http-proxy: 1.18.1(debug@4.4.0) + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1(debug@4.4.0): + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9(debug@4.4.0) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + + https-browserify@1.0.0: {} + + human-signals@1.1.1: {} + + human-signals@2.1.0: {} + + humps@2.0.1: {} + + husky@4.3.8: + dependencies: + chalk: 4.1.2 + ci-info: 2.0.0 + compare-versions: 3.6.0 + cosmiconfig: 7.1.0 + find-versions: 4.0.0 + opencollective-postinstall: 2.0.3 + pkg-dir: 5.0.0 + please-upgrade-node: 3.2.0 + slash: 3.0.0 + which-pm-runs: 1.1.0 + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + icss-utils@4.1.1: + dependencies: + postcss: 7.0.39 + + ieee754@1.2.1: {} + + iferr@0.1.5: {} + + ignore@3.3.10: {} + + ignore@4.0.6: {} + + import-cwd@2.1.0: + dependencies: + import-from: 2.1.0 + + import-fresh@2.0.0: + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-from@2.1.0: + dependencies: + resolve-from: 3.0.0 + + import-local@2.0.0: + dependencies: + pkg-dir: 3.0.0 + resolve-cwd: 2.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + indexes-of@1.0.1: {} + + infer-owner@1.0.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + internal-ip@4.3.0: + dependencies: + default-gateway: 4.2.0 + ipaddr.js: 1.9.1 + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + interpret@1.4.0: {} + + inversify@6.0.1: {} + + invert-kv@1.0.0: {} + + ip-regex@2.1.0: {} + + ip@1.1.9: {} + + ipaddr.js@1.9.1: {} + + is-absolute-url@2.1.0: {} + + is-absolute-url@3.0.3: {} + + is-absolute@1.0.0: + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + + is-accessor-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.2: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@1.0.1: + dependencies: + binary-extensions: 1.13.1 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + optional: true + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-buffer@1.1.6: {} + + is-callable@1.2.7: {} + + is-color-stop@1.1.0: + dependencies: + css-color-names: 0.0.4 + hex-color-regex: 1.1.0 + hsl-regex: 1.0.0 + hsla-regex: 1.0.0 + rgb-regex: 1.0.1 + rgba-regex: 1.0.0 + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-descriptor@0.1.7: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-descriptor@1.0.3: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-directory@0.3.1: {} + + is-docker@2.2.1: {} + + is-extendable@0.1.1: {} + + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@1.0.0: + dependencies: + number-is-nan: 1.0.1 + + is-fullwidth-code-point@2.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@3.1.0: + dependencies: + is-extglob: 2.1.1 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-interactive@1.0.0: {} + + is-map@2.0.3: {} + + is-nan@1.3.2: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + is-negated-glob@1.0.0: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + + is-number@4.0.0: {} + + is-number@7.0.0: {} + + is-obj@1.0.1: {} + + is-obj@2.0.0: {} + + is-path-cwd@2.2.0: {} + + is-path-in-cwd@2.1.0: + dependencies: + is-path-inside: 2.1.0 + + is-path-inside@2.1.0: + dependencies: + path-is-inside: 1.0.2 + + is-plain-obj@1.1.0: {} + + is-plain-obj@3.0.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-plain-object@5.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-regexp@1.0.0: {} + + is-relative@1.0.0: + dependencies: + is-unc-path: 1.0.0 + + is-resolvable@1.1.0: {} + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@1.1.0: {} + + is-stream@2.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-typedarray@1.0.0: {} + + is-unc-path@1.0.0: + dependencies: + unc-path-regex: 0.1.2 + + is-unicode-supported@0.1.0: {} + + is-utf8@0.2.1: {} + + is-valid-glob@1.0.0: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-windows@1.0.2: {} + + is-wsl@1.1.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + + isobject@3.0.1: {} + + isstream@0.1.2: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + javascript-obfuscator@4.1.1: + dependencies: + '@javascript-obfuscator/escodegen': 2.3.0 + '@javascript-obfuscator/estraverse': 5.4.0 + acorn: 8.8.2 + assert: 2.0.0 + chalk: 4.1.2 + chance: 1.1.9 + class-validator: 0.14.1 + commander: 10.0.0 + eslint-scope: 7.1.1 + eslint-visitor-keys: 3.3.0 + fast-deep-equal: 3.1.3 + inversify: 6.0.1 + js-string-escape: 1.0.1 + md5: 2.3.0 + mkdirp: 2.1.3 + multimatch: 5.0.0 + opencollective-postinstall: 2.0.3 + process: 0.11.10 + reflect-metadata: 0.1.13 + source-map-support: 0.5.21 + string-template: 1.0.0 + stringz: 2.1.0 + tslib: 2.5.0 + + javascript-stringify@2.1.0: {} + + js-beautify@1.15.4: + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 10.4.5 + js-cookie: 3.0.5 + nopt: 7.2.1 + + js-cookie@3.0.5: {} + + js-message@1.0.7: {} + + js-string-escape@1.0.1: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + jsbarcode@3.11.6: {} + + jsbn@0.1.1: {} + + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-schema@0.4.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: {} + + json5@0.5.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonlint-mod@1.7.6: + dependencies: + JSV: 4.0.2 + chalk: 2.4.2 + underscore: 1.13.7 + + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + just-debounce@1.1.0: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + killable@1.0.1: {} + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + + kind-of@5.1.0: {} + + kind-of@6.0.3: {} + + last-run@1.1.1: + dependencies: + default-resolution: 2.0.0 + es6-weak-map: 2.0.3 + + launch-editor-middleware@2.10.0: + dependencies: + launch-editor: 2.10.0 + + launch-editor@2.10.0: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.8.2 + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + lcid@1.0.0: + dependencies: + invert-kv: 1.0.0 + + lead@1.0.0: + dependencies: + flush-write-stream: 1.1.1 + + levn@0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + libphonenumber-js@1.12.7: {} + + liftoff@3.1.0: + dependencies: + extend: 3.0.2 + findup-sync: 3.0.0 + fined: 1.2.0 + flagged-respawn: 1.0.1 + is-plain-object: 2.0.4 + object.map: 1.0.1 + rechoir: 0.6.2 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + lint-staged@10.5.4: + dependencies: + chalk: 4.1.2 + cli-truncate: 2.1.0 + commander: 6.2.1 + cosmiconfig: 7.1.0 + debug: 4.4.0(supports-color@6.1.0) + dedent: 0.7.0 + enquirer: 2.4.1 + execa: 4.1.0 + listr2: 3.14.0(enquirer@2.4.1) + log-symbols: 4.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + please-upgrade-node: 3.2.0 + string-argv: 0.3.1 + stringify-object: 3.3.0 + transitivePeerDependencies: + - supports-color + + listr2@3.14.0(enquirer@2.4.1): + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.4.1 + rxjs: 7.8.2 + through: 2.3.8 + wrap-ansi: 7.0.0 + optionalDependencies: + enquirer: 2.4.1 + + load-json-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 2.2.0 + pify: 2.3.0 + pinkie-promise: 2.0.1 + strip-bom: 2.0.0 + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + + loader-runner@2.4.0: {} + + loader-utils@0.2.17: + dependencies: + big.js: 3.2.0 + emojis-list: 2.1.0 + json5: 0.5.1 + object-assign: 4.1.1 + + loader-utils@1.4.2: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21): + dependencies: + '@types/lodash-es': 4.17.12 + lodash: 4.17.21 + lodash-es: 4.17.21 + + lodash.debounce@4.0.8: {} + + lodash.defaultsdeep@4.6.1: {} + + lodash.kebabcase@4.1.1: {} + + lodash.mapvalues@4.6.0: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.transform@4.6.0: {} + + lodash.truncate@4.4.2: {} + + lodash.uniq@4.5.0: {} + + lodash@4.17.21: {} + + log-symbols@2.2.0: + dependencies: + chalk: 2.4.2 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@4.0.0: + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + + loglevel@1.9.2: {} + + lower-case@1.1.4: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lru-cache@10.4.3: {} + + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-iterator@1.0.1: + dependencies: + kind-of: 6.0.3 + + map-cache@0.2.2: {} + + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + + marked@15.0.11: {} + + matchdep@2.0.0: + dependencies: + findup-sync: 2.0.0 + micromatch: 3.1.10(supports-color@6.1.0) + resolve: 1.22.10 + stack-trace: 0.0.10 + transitivePeerDependencies: + - supports-color + + math-intrinsics@1.1.0: {} + + md5.js@1.3.5: + dependencies: + hash-base: 3.0.5 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + md5@2.3.0: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + + mdn-data@2.0.14: {} + + mdn-data@2.0.4: {} + + media-typer@0.3.0: {} + + memoize-one@6.0.0: {} + + memory-fs@0.4.1: + dependencies: + errno: 0.1.8 + readable-stream: 2.3.8 + + memory-fs@0.5.0: + dependencies: + errno: 0.1.8 + readable-stream: 2.3.8 + + memorystream@0.3.1: {} + + merge-descriptors@1.0.3: {} + + merge-source-map@1.1.0: + dependencies: + source-map: 0.6.1 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + methods@1.1.2: {} + + micromatch@3.1.10(supports-color@6.1.0): + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2(supports-color@6.1.0) + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4(supports-color@6.1.0) + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13(supports-color@6.1.0) + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2(supports-color@6.1.0) + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + miller-rabin@4.0.1: + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + + mime-db@1.52.0: {} + + mime-db@1.54.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@2.6.0: {} + + mimic-fn@1.2.0: {} + + mimic-fn@2.1.0: {} + + mini-css-extract-plugin@0.9.0(webpack@4.47.0): + dependencies: + loader-utils: 1.4.2 + normalize-url: 1.9.1 + schema-utils: 1.0.0 + webpack: 4.47.0 + webpack-sources: 1.4.3 + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@9.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@7.1.2: {} + + mississippi@3.0.0: + dependencies: + concat-stream: 1.6.2 + duplexify: 3.7.1 + end-of-stream: 1.4.4 + flush-write-stream: 1.1.1 + from2: 2.3.0 + parallel-transform: 1.2.0 + pump: 3.0.2 + pumpify: 1.5.1 + stream-each: 1.2.3 + through2: 2.0.5 + + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@2.1.3: {} + + move-concurrently@1.0.1: + dependencies: + aproba: 1.2.0 + copy-concurrently: 1.0.5 + fs-write-stream-atomic: 1.0.10 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + + ms@2.0.0: {} + + ms@2.1.3: {} + + multicast-dns-service-types@1.1.0: {} + + multicast-dns@6.2.3: + dependencies: + dns-packet: 1.3.4 + thunky: 1.1.0 + + multimatch@5.0.0: + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + + mute-stdout@1.0.1: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nan@2.22.2: + optional: true + + nanoid@3.3.11: {} + + nanomatch@1.2.13(supports-color@6.1.0): + 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.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2(supports-color@6.1.0) + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + neo-async@2.6.2: {} + + next-tick@1.1.0: {} + + nice-try@1.0.5: {} + + no-case@2.3.2: + dependencies: + lower-case: 1.1.4 + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-forge@0.10.0: {} + + node-libs-browser@2.2.1: + dependencies: + assert: 1.5.1 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.1 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.8 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.4 + util: 0.11.1 + vm-browserify: 1.1.2 + + node-releases@2.0.19: {} + + nopt@7.2.1: + dependencies: + abbrev: 2.0.0 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@2.1.1: + dependencies: + remove-trailing-separator: 1.1.0 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-url@1.9.1: + dependencies: + object-assign: 4.1.1 + prepend-http: 1.0.4 + query-string: 4.3.4 + sort-keys: 1.1.2 + + normalize-url@3.3.0: {} + + normalize-url@6.1.0: {} + + normalize-wheel-es@1.2.0: {} + + now-and-later@2.0.1: + dependencies: + once: 1.4.0 + + npm-run-all@4.1.5: + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.6 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.2 + string.prototype.padend: 3.1.6 + + npm-run-path@2.0.2: + dependencies: + path-key: 2.0.1 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@1.0.2: + dependencies: + boolbase: 1.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + num2fraction@1.2.2: {} + + number-is-nan@1.0.1: {} + + oauth-sign@0.9.0: {} + + object-assign@4.1.1: {} + + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + + object-inspect@1.13.4: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.defaults@1.1.0: + dependencies: + array-each: 1.0.1 + array-slice: 1.1.0 + for-own: 1.0.0 + isobject: 3.0.1 + + object.getownpropertydescriptors@2.1.8: + dependencies: + array.prototype.reduce: 1.0.8 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + gopd: 1.2.0 + safe-array-concat: 1.1.3 + + object.map@1.0.1: + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + object.reduce@1.0.1: + dependencies: + for-own: 1.0.0 + make-iterator: 1.0.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + obuf@1.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@2.0.1: + dependencies: + mimic-fn: 1.2.0 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + open@6.4.0: + dependencies: + is-wsl: 1.1.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + opencollective-postinstall@2.0.3: {} + + opener@1.5.2: {} + + opn@5.5.0: + dependencies: + is-wsl: 1.1.0 + + optionator@0.8.3: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@3.4.0: + dependencies: + chalk: 2.4.2 + cli-cursor: 2.1.0 + cli-spinners: 2.9.2 + log-symbols: 2.2.0 + strip-ansi: 5.2.0 + wcwidth: 1.0.1 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + ordered-read-streams@1.0.1: + dependencies: + readable-stream: 2.3.8 + + os-browserify@0.3.0: {} + + os-locale@1.4.0: + dependencies: + lcid: 1.0.0 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-finally@1.0.0: {} + + p-finally@2.0.1: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@2.1.0: {} + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-retry@3.0.1: + dependencies: + retry: 0.12.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + pako@1.0.11: {} + + parallel-transform@1.2.0: + dependencies: + cyclist: 1.0.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + + param-case@2.1.1: + dependencies: + no-case: 2.3.2 + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-asn1@5.1.7: + dependencies: + asn1.js: 4.10.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + hash-base: 3.0.5 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + + parse-filepath@1.0.2: + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + + parse-json@2.2.0: + dependencies: + error-ex: 1.3.2 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-node-version@1.0.1: {} + + parse-passwd@1.0.0: {} + + parse5-htmlparser2-tree-adapter@6.0.1: + dependencies: + parse5: 6.0.1 + + parse5@5.1.1: {} + + parse5@6.0.1: {} + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + pascalcase@0.1.1: {} + + path-browserify@0.0.1: {} + + path-dirname@1.0.2: {} + + path-exists@2.1.0: + dependencies: + pinkie-promise: 2.0.1 + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-is-inside@1.0.2: {} + + path-key@2.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-root-regex@0.1.2: {} + + path-root@0.1.1: + dependencies: + path-root-regex: 0.1.2 + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@0.1.12: {} + + path-type@1.1.0: + dependencies: + graceful-fs: 4.2.11 + pify: 2.3.0 + pinkie-promise: 2.0.1 + + path-type@3.0.0: + dependencies: + pify: 3.0.0 + + path-type@4.0.0: {} + + pbkdf2@3.1.2: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + performance-now@2.1.0: {} + + picocolors@0.2.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pidtree@0.3.1: {} + + pify@2.3.0: {} + + pify@3.0.0: {} + + pify@4.0.1: {} + + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + + pkg-dir@3.0.0: + dependencies: + find-up: 3.0.0 + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-dir@5.0.0: + dependencies: + find-up: 5.0.0 + + please-upgrade-node@3.2.0: + dependencies: + semver-compare: 1.0.0 + + pnp-webpack-plugin@1.7.0(typescript@4.9.5): + dependencies: + ts-pnp: 1.2.0(typescript@4.9.5) + transitivePeerDependencies: + - typescript + + portfinder@1.0.36(supports-color@6.1.0): + dependencies: + async: 3.2.6 + debug: 4.4.0(supports-color@6.1.0) + transitivePeerDependencies: + - supports-color + + posix-character-classes@0.1.1: {} + + possible-typed-array-names@1.1.0: {} + + postcss-calc@7.0.5: + dependencies: + postcss: 7.0.39 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-calc@8.2.4(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-colormin@4.0.3: + dependencies: + browserslist: 4.24.4 + color: 3.2.1 + has: 1.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-colormin@5.3.1(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-convert-values@4.0.1: + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-convert-values@5.1.3(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@4.0.2: + dependencies: + postcss: 7.0.39 + + postcss-discard-comments@5.1.2(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-duplicates@4.0.2: + dependencies: + postcss: 7.0.39 + + postcss-discard-duplicates@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-empty@4.0.1: + dependencies: + postcss: 7.0.39 + + postcss-discard-empty@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-overridden@4.0.1: + dependencies: + postcss: 7.0.39 + + postcss-discard-overridden@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-unused@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-load-config@2.1.2: + dependencies: + cosmiconfig: 5.2.1 + import-cwd: 2.1.0 + + postcss-loader@3.0.0: + dependencies: + loader-utils: 1.4.2 + postcss: 7.0.39 + postcss-load-config: 2.1.2 + schema-utils: 1.0.0 + + postcss-merge-idents@5.1.1(postcss@8.5.3): + dependencies: + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-merge-longhand@4.0.11: + dependencies: + css-color-names: 0.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + stylehacks: 4.0.3 + + postcss-merge-longhand@5.1.7(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.5.3) + + postcss-merge-rules@4.0.3: + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + cssnano-util-same-parent: 4.0.1 + postcss: 7.0.39 + postcss-selector-parser: 3.1.2 + vendors: 1.0.4 + + postcss-merge-rules@5.1.4(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@4.0.2: + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-minify-font-values@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@4.0.2: + dependencies: + cssnano-util-get-arguments: 4.0.0 + is-color-stop: 1.1.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-minify-gradients@5.1.1(postcss@8.5.3): + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-params@4.0.2: + dependencies: + alphanum-sort: 1.0.2 + browserslist: 4.24.4 + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + uniqs: 2.0.0 + + postcss-minify-params@5.1.4(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@4.0.2: + dependencies: + alphanum-sort: 1.0.2 + has: 1.0.4 + postcss: 7.0.39 + postcss-selector-parser: 3.1.2 + + postcss-minify-selectors@5.2.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-modules-extract-imports@2.0.0: + dependencies: + postcss: 7.0.39 + + postcss-modules-local-by-default@3.0.3: + dependencies: + icss-utils: 4.1.1 + postcss: 7.0.39 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@2.2.0: + dependencies: + postcss: 7.0.39 + postcss-selector-parser: 6.1.2 + + postcss-modules-values@3.0.0: + dependencies: + icss-utils: 4.1.1 + postcss: 7.0.39 + + postcss-normalize-charset@4.0.1: + dependencies: + postcss: 7.0.39 + + postcss-normalize-charset@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-normalize-display-values@4.0.2: + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-display-values@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@4.0.2: + dependencies: + cssnano-util-get-arguments: 4.0.0 + has: 1.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-positions@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@4.0.2: + dependencies: + cssnano-util-get-arguments: 4.0.0 + cssnano-util-get-match: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-repeat-style@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@4.0.2: + dependencies: + has: 1.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-string@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@4.0.2: + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-timing-functions@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@4.0.1: + dependencies: + browserslist: 4.24.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-unicode@5.1.1(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@4.0.1: + dependencies: + is-absolute-url: 2.1.0 + normalize-url: 3.3.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-url@5.1.0(postcss@8.5.3): + dependencies: + normalize-url: 6.1.0 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@4.0.2: + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-whitespace@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@4.1.2: + dependencies: + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-ordered-values@5.1.3(postcss@8.5.3): + dependencies: + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-reduce-idents@5.2.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@4.0.3: + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + has: 1.0.4 + postcss: 7.0.39 + + postcss-reduce-initial@5.1.2(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + caniuse-api: 3.0.0 + postcss: 8.5.3 + + postcss-reduce-transforms@4.0.2: + dependencies: + cssnano-util-get-match: 4.0.0 + has: 1.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-reduce-transforms@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-selector-parser@3.1.2: + dependencies: + dot-prop: 5.3.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@4.0.3: + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + svgo: 1.3.2 + + postcss-svgo@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + + postcss-unique-selectors@4.0.1: + dependencies: + alphanum-sort: 1.0.2 + postcss: 7.0.39 + uniqs: 2.0.0 + + postcss-unique-selectors@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-value-parser@3.3.1: {} + + postcss-value-parser@4.2.0: {} + + postcss-zindex@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss@7.0.39: + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.1.2: {} + + prelude-ls@1.2.1: {} + + prepend-http@1.0.4: {} + + prettier@2.8.8: + optional: true + + pretty-error@2.1.2: + dependencies: + lodash: 4.17.21 + renderkid: 2.0.7 + + pretty-hrtime@1.0.3: {} + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + progress@2.0.3: {} + + promise-inflight@1.0.1(bluebird@3.7.2): + optionalDependencies: + bluebird: 3.7.2 + + proto-list@1.2.4: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-from-env@1.1.0: {} + + prr@1.0.1: {} + + pseudomap@1.0.2: {} + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + public-encrypt@4.0.3: + dependencies: + bn.js: 4.12.2 + browserify-rsa: 4.1.1 + create-hash: 1.2.0 + parse-asn1: 5.1.7 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + pump@2.0.1: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + pumpify@1.5.1: + dependencies: + duplexify: 3.7.1 + inherits: 2.0.4 + pump: 2.0.1 + + punycode@1.4.1: {} + + punycode@2.3.1: {} + + q@1.5.1: {} + + qr-code-styling@1.9.2: + dependencies: + qrcode-generator: 1.4.4 + + qrcode-generator@1.4.4: {} + + qs@6.13.0: + dependencies: + side-channel: 1.1.0 + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + qs@6.5.3: {} + + query-string@4.3.4: + dependencies: + object-assign: 4.1.1 + strict-uri-encode: 1.1.0 + + querystring-es3@0.2.1: {} + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + randomfill@1.0.4: + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + read-pkg-up@1.0.1: + dependencies: + find-up: 1.1.2 + read-pkg: 1.1.0 + + read-pkg@1.1.0: + dependencies: + load-json-file: 1.1.0 + normalize-package-data: 2.5.0 + path-type: 1.1.0 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@2.2.1(supports-color@6.1.0): + dependencies: + graceful-fs: 4.2.11 + micromatch: 3.1.10(supports-color@6.1.0) + readable-stream: 2.3.8 + transitivePeerDependencies: + - supports-color + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + optional: true + + rechoir@0.6.2: + dependencies: + resolve: 1.22.10 + + reflect-metadata@0.1.13: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.11.1: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.27.0 + + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + regexpp@3.2.0: {} + + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + relateurl@0.2.7: {} + + remove-bom-buffer@3.0.0: + dependencies: + is-buffer: 1.1.6 + is-utf8: 0.2.1 + + remove-bom-stream@1.2.0: + dependencies: + remove-bom-buffer: 3.0.0 + safe-buffer: 5.2.1 + through2: 2.0.5 + + remove-trailing-separator@1.1.0: {} + + renderkid@2.0.7: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 3.0.1 + + repeat-element@1.1.4: {} + + repeat-string@1.6.1: {} + + replace-ext@1.0.1: {} + + replace-homedir@1.0.0: + dependencies: + homedir-polyfill: 1.0.3 + is-absolute: 1.0.0 + remove-trailing-separator: 1.1.0 + + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-main-filename@1.0.1: {} + + require-main-filename@2.0.0: {} + + requires-port@1.0.0: {} + + resolve-cwd@2.0.0: + dependencies: + resolve-from: 3.0.0 + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@3.0.0: {} + + resolve-from@4.0.0: {} + + resolve-options@1.1.0: + dependencies: + value-or-function: 3.0.0 + + resolve-url@0.2.1: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@2.0.0: + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + ret@0.1.15: {} + + retry@0.12.0: {} + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rgb-regex@1.0.1: {} + + rgba-regex@1.0.0: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + ripemd160@2.0.2: + dependencies: + hash-base: 3.0.5 + inherits: 2.0.4 + + rollup-plugin-visualizer@5.14.0: + dependencies: + open: 8.4.2 + picomatch: 4.0.2 + source-map: 0.7.4 + yargs: 17.7.2 + + rollup@2.79.2: + optionalDependencies: + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + run-queue@1.0.3: + dependencies: + aproba: 1.2.0 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + + safer-buffer@2.1.2: {} + + sax@1.2.4: {} + + schema-utils@1.0.0: + dependencies: + ajv: 6.12.6 + ajv-errors: 1.0.1(ajv@6.12.6) + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@2.7.1: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + select-hose@2.0.0: {} + + selfsigned@1.10.14: + dependencies: + node-forge: 0.10.0 + + semver-compare@1.0.0: {} + + semver-greatest-satisfied-range@1.1.0: + dependencies: + sver-compat: 1.5.0 + + semver-regex@3.1.4: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.1: {} + + send@0.19.0(supports-color@6.1.0): + dependencies: + debug: 2.6.9(supports-color@6.1.0) + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-javascript@4.0.0: + dependencies: + randombytes: 2.1.0 + + serve-index@1.9.1(supports-color@6.1.0): + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9(supports-color@6.1.0) + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.16.2(supports-color@6.1.0): + dependencies: + encodeurl: 2.0.0 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.19.0(supports-color@6.1.0) + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + set-value@2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + + setimmediate@1.0.5: {} + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shell-quote@1.8.2: {} + + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + signature_pad@5.0.7: {} + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + slash@1.0.0: {} + + slash@2.0.0: {} + + slash@3.0.0: {} + + slice-ansi@3.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + snapdragon-node@2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + + snapdragon-util@3.0.1: + dependencies: + kind-of: 3.2.2 + + snapdragon@0.8.2(supports-color@6.1.0): + dependencies: + base: 0.11.2 + debug: 2.6.9(supports-color@6.1.0) + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + + snowflake-id@1.1.0: + dependencies: + babel-runtime: 6.26.0 + + sockjs-client@1.6.1(supports-color@6.1.0): + dependencies: + debug: 3.2.7(supports-color@6.1.0) + eventsource: 2.0.2 + faye-websocket: 0.11.4 + inherits: 2.0.4 + url-parse: 1.5.10 + transitivePeerDependencies: + - supports-color + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + sort-keys@1.1.2: + dependencies: + is-plain-obj: 1.1.0 + + sortablejs@1.14.0: {} + + source-list-map@2.0.1: {} + + source-map-js@1.2.1: {} + + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-url@0.4.1: {} + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + sparkles@1.0.1: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.21 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + spdy-transport@3.0.0(supports-color@6.1.0): + dependencies: + debug: 4.4.0(supports-color@6.1.0) + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2(supports-color@6.1.0): + dependencies: + debug: 4.4.0(supports-color@6.1.0) + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0(supports-color@6.1.0) + transitivePeerDependencies: + - supports-color + + split-string@3.1.0: + dependencies: + extend-shallow: 3.0.2 + + sprintf-js@1.0.3: {} + + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + + ssri@6.0.2: + dependencies: + figgy-pudding: 3.5.2 + + ssri@8.0.1: + dependencies: + minipass: 3.3.6 + + stable@0.1.8: {} + + stack-trace@0.0.10: {} + + stackframe@1.3.4: {} + + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + stream-browserify@2.0.2: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + + stream-each@1.2.3: + dependencies: + end-of-stream: 1.4.4 + stream-shift: 1.0.3 + + stream-exhaust@1.0.2: {} + + stream-http@2.8.3: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.8 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + + stream-shift@1.0.3: {} + + strict-uri-encode@1.1.0: {} + + string-argv@0.3.1: {} + + string-template@1.0.0: {} + + string-width@1.0.2: + dependencies: + code-point-at: 1.1.0 + is-fullwidth-code-point: 1.0.0 + strip-ansi: 3.0.1 + + string-width@3.1.0: + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.padend@3.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.9 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-author@0.1.3: {} + + stringify-object@3.3.0: + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + + stringz@2.1.0: + dependencies: + char-regex: 1.0.2 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@2.0.0: + dependencies: + is-utf8: 0.2.1 + + strip-bom@3.0.0: {} + + strip-eof@1.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + stylehacks@4.0.3: + dependencies: + browserslist: 4.24.4 + postcss: 7.0.39 + postcss-selector-parser: 3.1.2 + + stylehacks@5.1.1(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@6.1.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + sver-compat@1.5.0: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + + svg-tags@1.0.0: {} + + svgo@1.3.2: + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + object.values: 1.2.1 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + + svgo@2.8.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.1.1 + stable: 0.1.8 + + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tapable@1.1.3: {} + + terser-webpack-plugin@1.4.6(webpack@4.47.0): + dependencies: + cacache: 12.0.4 + find-cache-dir: 2.1.0 + is-wsl: 1.1.0 + schema-utils: 1.0.0 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.1 + webpack: 4.47.0 + webpack-sources: 1.4.3 + worker-farm: 1.7.0 + + terser@4.8.1: + dependencies: + acorn: 8.14.1 + commander: 2.20.3 + source-map: 0.6.1 + source-map-support: 0.5.21 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + thread-loader@2.1.3(webpack@4.47.0): + dependencies: + loader-runner: 2.4.0 + loader-utils: 1.4.2 + neo-async: 2.6.2 + webpack: 4.47.0 + + through2-filter@3.0.0: + dependencies: + through2: 2.0.5 + xtend: 4.0.2 + + through2@2.0.5: + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + through@2.3.8: {} + + thunky@1.1.0: {} + + time-stamp@1.1.0: {} + + timers-browserify@2.0.12: + dependencies: + setimmediate: 1.0.5 + + timsort@0.3.0: {} + + to-absolute-glob@2.0.2: + dependencies: + is-absolute: 1.0.0 + is-negated-glob: 1.0.0 + + to-arraybuffer@1.0.1: {} + + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 + + to-regex-range@2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + + to-through@2.0.0: + dependencies: + through2: 2.0.5 + + toidentifier@1.0.1: {} + + toposort@1.0.7: {} + + tough-cookie@2.5.0: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + + tryer@1.0.1: {} + + ts-pnp@1.2.0(typescript@4.9.5): + optionalDependencies: + typescript: 4.9.5 + + tslib@2.5.0: {} + + tslib@2.8.1: {} + + tty-browserify@0.0.0: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tweetnacl@0.14.5: {} + + type-check@0.3.2: + dependencies: + prelude-ls: 1.1.2 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + type@2.7.3: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typedarray@0.0.6: {} + + typescript@4.9.5: {} + + uglify-js@3.4.10: + dependencies: + commander: 2.19.0 + source-map: 0.6.1 + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + unc-path-regex@0.1.2: {} + + underscore@1.13.7: {} + + undertaker-registry@1.0.1: {} + + undertaker@1.3.0: + dependencies: + arr-flatten: 1.1.0 + arr-map: 2.0.2 + bach: 1.2.0 + collection-map: 1.0.0 + es6-weak-map: 2.0.3 + fast-levenshtein: 1.1.4 + last-run: 1.1.1 + object.defaults: 1.1.0 + object.reduce: 1.0.1 + undertaker-registry: 1.0.1 + + undici-types@6.21.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + union-value@1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + + uniq@1.0.1: {} + + uniqs@2.0.0: {} + + unique-filename@1.1.1: + dependencies: + unique-slug: 2.0.2 + + unique-slug@2.0.2: + dependencies: + imurmurhash: 0.1.4 + + unique-stream@2.3.1: + dependencies: + json-stable-stringify-without-jsonify: 1.0.1 + through2-filter: 3.0.0 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unplugin-preprocessor-directives@1.0.3(esbuild@0.12.29)(vite@3.2.11(@types/node@22.15.2))(webpack@4.47.0): + dependencies: + '@ampproject/remapping': 2.3.0 + magic-string: 0.30.17 + unplugin: 1.16.1 + optionalDependencies: + esbuild: 0.12.29 + vite: 3.2.11(@types/node@22.15.2) + webpack: 4.47.0 + + unplugin@1.16.1: + dependencies: + acorn: 8.14.1 + webpack-virtual-modules: 0.6.2 + + unquote@1.1.1: {} + + unset-value@1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + + upath@1.2.0: {} + + update-browserslist-db@1.1.3(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + + upper-case@1.1.3: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + urix@0.1.0: {} + + url-loader@2.3.0(file-loader@4.3.0(webpack@4.47.0))(webpack@4.47.0): + dependencies: + loader-utils: 1.4.2 + mime: 2.6.0 + schema-utils: 2.7.1 + webpack: 4.47.0 + optionalDependencies: + file-loader: 4.3.0(webpack@4.47.0) + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.14.0 + + use@3.1.1: {} + + util-deprecate@1.0.2: {} + + util.promisify@1.0.0: + dependencies: + define-properties: 1.2.1 + object.getownpropertydescriptors: 2.1.8 + + util.promisify@1.0.1: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.9 + has-symbols: 1.1.0 + object.getownpropertydescriptors: 2.1.8 + + util@0.10.4: + dependencies: + inherits: 2.0.3 + + util@0.11.1: + dependencies: + inherits: 2.0.3 + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.0 + is-typed-array: 1.1.15 + which-typed-array: 1.1.19 + + utila@0.4.0: {} + + utils-merge@1.0.1: {} + + uuid@3.4.0: {} + + uuid@8.3.2: {} + + v8-compile-cache@2.4.0: {} + + v8flags@3.2.0: + dependencies: + homedir-polyfill: 1.0.3 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validator@13.15.0: {} + + value-or-function@3.0.0: {} + + vant@4.9.19(vue@3.5.13(typescript@4.9.5)): + dependencies: + '@vant/popperjs': 1.3.0 + '@vant/use': 1.6.0(vue@3.5.13(typescript@4.9.5)) + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@4.9.5) + + vary@1.1.2: {} + + vendors@1.0.4: {} + + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + + vinyl-fs@3.0.3: + dependencies: + fs-mkdirp-stream: 1.0.0 + glob-stream: 6.1.0 + graceful-fs: 4.2.11 + is-valid-glob: 1.0.0 + lazystream: 1.0.1 + lead: 1.0.0 + object.assign: 4.1.7 + pumpify: 1.5.1 + readable-stream: 2.3.8 + remove-bom-buffer: 3.0.0 + remove-bom-stream: 1.2.0 + resolve-options: 1.1.0 + through2: 2.0.5 + to-through: 2.0.0 + value-or-function: 3.0.0 + vinyl: 2.2.1 + vinyl-sourcemap: 1.1.0 + + vinyl-sourcemap@1.1.0: + dependencies: + append-buffer: 1.0.2 + convert-source-map: 1.9.0 + graceful-fs: 4.2.11 + normalize-path: 2.1.1 + now-and-later: 2.0.1 + remove-bom-buffer: 3.0.0 + vinyl: 2.2.1 + + vinyl@2.2.1: + dependencies: + clone: 2.1.2 + clone-buffer: 1.0.0 + clone-stats: 1.0.0 + cloneable-readable: 1.1.3 + remove-trailing-separator: 1.1.0 + replace-ext: 1.0.1 + + vite-plugin-banner@0.5.0: {} + + vite-plugin-css-injected-by-js@2.4.0(vite@3.2.11(@types/node@22.15.2)): + dependencies: + vite: 3.2.11(@types/node@22.15.2) + + vite-plugin-javascript-obfuscator@3.1.0: + dependencies: + anymatch: 3.1.3 + javascript-obfuscator: 4.1.1 + + vite@3.2.11(@types/node@22.15.2): + dependencies: + esbuild: 0.15.18 + postcss: 8.5.3 + resolve: 1.22.10 + rollup: 2.79.2 + optionalDependencies: + '@types/node': 22.15.2 + fsevents: 2.3.3 + + vm-browserify@1.1.2: {} + + vue-demi@0.14.10(vue@3.5.13(typescript@4.9.5)): + dependencies: + vue: 3.5.13(typescript@4.9.5) + + vue-eslint-parser@7.11.0(eslint@7.32.0): + dependencies: + debug: 4.4.0(supports-color@6.1.0) + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-visitor-keys: 1.3.0 + espree: 6.2.1 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + vue-hot-reload-api@2.3.4: {} + + vue-loader@15.11.1(@vue/compiler-sfc@3.5.13)(cache-loader@4.1.0(webpack@4.47.0))(css-loader@3.6.0(webpack@4.47.0))(lodash@4.17.21)(underscore@1.13.7)(vue-template-compiler@2.7.16)(webpack@4.47.0): + dependencies: + '@vue/component-compiler-utils': 3.3.0(lodash@4.17.21)(underscore@1.13.7) + css-loader: 3.6.0(webpack@4.47.0) + hash-sum: 1.0.2 + loader-utils: 1.4.2 + vue-hot-reload-api: 2.3.4 + vue-style-loader: 4.1.3 + webpack: 4.47.0 + optionalDependencies: + '@vue/compiler-sfc': 3.5.13 + cache-loader: 4.1.0(webpack@4.47.0) + vue-template-compiler: 2.7.16 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + + vue-loader@15.11.1(@vue/compiler-sfc@3.5.13)(css-loader@4.3.0(webpack@4.47.0))(lodash@4.17.21)(underscore@1.13.7)(vue-template-compiler@2.7.16)(webpack@4.47.0): + dependencies: + '@vue/component-compiler-utils': 3.3.0(lodash@4.17.21)(underscore@1.13.7) + css-loader: 4.3.0(webpack@4.47.0) + hash-sum: 1.0.2 + loader-utils: 1.4.2 + vue-hot-reload-api: 2.3.4 + vue-style-loader: 4.1.3 + webpack: 4.47.0 + optionalDependencies: + '@vue/compiler-sfc': 3.5.13 + vue-template-compiler: 2.7.16 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - coffee-script + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - mustache + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - vash + - velocityjs + - walrus + - whiskers + + vue-loader@16.8.3(@vue/compiler-sfc@3.5.13)(vue@3.5.13(typescript@4.9.5))(webpack@4.47.0): + dependencies: + chalk: 4.1.2 + hash-sum: 2.0.0 + loader-utils: 2.0.4 + webpack: 4.47.0 + optionalDependencies: + '@vue/compiler-sfc': 3.5.13 + vue: 3.5.13(typescript@4.9.5) + optional: true + + vue-style-loader@4.1.3: + dependencies: + hash-sum: 1.0.2 + loader-utils: 1.4.2 + + vue-template-compiler@2.7.16: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue-template-es2015-compiler@1.9.1: {} + + vue@3.5.13(typescript@4.9.5): + dependencies: + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@4.9.5)) + '@vue/shared': 3.5.13 + optionalDependencies: + typescript: 4.9.5 + + vuedraggable@4.1.0(vue@3.5.13(typescript@4.9.5)): + dependencies: + sortablejs: 1.14.0 + vue: 3.5.13(typescript@4.9.5) + + wangeditor@4.7.15: + dependencies: + '@babel/runtime': 7.27.0 + '@babel/runtime-corejs3': 7.27.0 + tslib: 2.8.1 + + watchpack-chokidar2@2.0.1: + dependencies: + chokidar: 2.1.8(supports-color@6.1.0) + transitivePeerDependencies: + - supports-color + optional: true + + watchpack@1.7.5: + dependencies: + graceful-fs: 4.2.11 + neo-async: 2.6.2 + optionalDependencies: + chokidar: 3.6.0 + watchpack-chokidar2: 2.0.1 + transitivePeerDependencies: + - supports-color + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + webpack-bundle-analyzer@3.9.0: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + bfj: 6.1.2 + chalk: 2.4.2 + commander: 2.20.3 + ejs: 2.7.4 + express: 4.21.2(supports-color@6.1.0) + filesize: 3.6.1 + gzip-size: 5.1.1 + lodash: 4.17.21 + mkdirp: 0.5.6 + opener: 1.5.2 + ws: 6.2.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + webpack-chain@6.5.1: + dependencies: + deepmerge: 1.5.2 + javascript-stringify: 2.1.0 + + webpack-dev-middleware@3.7.3(webpack@4.47.0): + dependencies: + memory-fs: 0.4.1 + mime: 2.6.0 + mkdirp: 0.5.6 + range-parser: 1.2.1 + webpack: 4.47.0 + webpack-log: 2.0.0 + + webpack-dev-server@3.11.3(webpack@4.47.0): + dependencies: + ansi-html-community: 0.0.8 + bonjour: 3.5.0 + chokidar: 2.1.8(supports-color@6.1.0) + compression: 1.8.0(supports-color@6.1.0) + connect-history-api-fallback: 1.6.0 + debug: 4.4.0(supports-color@6.1.0) + del: 4.1.1 + express: 4.21.2(supports-color@6.1.0) + html-entities: 1.4.0 + http-proxy-middleware: 0.19.1(debug@4.4.0)(supports-color@6.1.0) + import-local: 2.0.0 + internal-ip: 4.3.0 + ip: 1.1.9 + is-absolute-url: 3.0.3 + killable: 1.0.1 + loglevel: 1.9.2 + opn: 5.5.0 + p-retry: 3.0.1 + portfinder: 1.0.36(supports-color@6.1.0) + schema-utils: 1.0.0 + selfsigned: 1.10.14 + semver: 6.3.1 + serve-index: 1.9.1(supports-color@6.1.0) + sockjs: 0.3.24 + sockjs-client: 1.6.1(supports-color@6.1.0) + spdy: 4.0.2(supports-color@6.1.0) + strip-ansi: 3.0.1 + supports-color: 6.1.0 + url: 0.11.4 + webpack: 4.47.0 + webpack-dev-middleware: 3.7.3(webpack@4.47.0) + webpack-log: 2.0.0 + ws: 6.2.3 + yargs: 13.3.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + webpack-log@2.0.0: + dependencies: + ansi-colors: 3.2.4 + uuid: 3.4.0 + + webpack-merge@4.2.2: + dependencies: + lodash: 4.17.21 + + webpack-sources@1.4.3: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-virtual-modules@0.6.2: {} + + webpack@4.47.0: + dependencies: + '@webassemblyjs/ast': 1.9.0 + '@webassemblyjs/helper-module-context': 1.9.0 + '@webassemblyjs/wasm-edit': 1.9.0 + '@webassemblyjs/wasm-parser': 1.9.0 + acorn: 6.4.2 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + chrome-trace-event: 1.0.4 + enhanced-resolve: 4.5.0 + eslint-scope: 4.0.3 + json-parse-better-errors: 1.0.2 + loader-runner: 2.4.0 + loader-utils: 1.4.2 + memory-fs: 0.4.1 + micromatch: 3.1.10(supports-color@6.1.0) + mkdirp: 0.5.6 + neo-async: 2.6.2 + node-libs-browser: 2.2.1 + schema-utils: 1.0.0 + tapable: 1.1.3 + terser-webpack-plugin: 1.4.6(webpack@4.47.0) + watchpack: 1.7.5 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - supports-color + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.10 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-module@1.0.0: {} + + which-module@2.0.1: {} + + which-pm-runs@1.1.0: {} + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + worker-farm@1.7.0: + dependencies: + errno: 0.1.8 + + wrap-ansi@2.1.0: + dependencies: + string-width: 1.0.2 + strip-ansi: 3.0.1 + + wrap-ansi@5.1.0: + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + ws@6.2.3: + dependencies: + async-limiter: 1.0.1 + + xtend@4.0.2: {} + + y18n@3.2.2: {} + + y18n@4.0.3: {} + + y18n@5.0.8: {} + + yallist@2.1.2: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yargs-parser@13.1.2: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs-parser@5.0.1: + dependencies: + camelcase: 3.0.0 + object.assign: 4.1.7 + + yargs@13.3.2: + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 13.1.2 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yargs@7.1.2: + dependencies: + camelcase: 3.0.0 + cliui: 3.2.0 + decamelize: 1.2.0 + get-caller-file: 1.0.3 + os-locale: 1.4.0 + read-pkg-up: 1.0.1 + require-directory: 2.1.1 + require-main-filename: 1.0.1 + set-blocking: 2.0.0 + string-width: 1.0.2 + which-module: 1.0.0 + y18n: 3.2.2 + yargs-parser: 5.0.1 + + yocto-queue@0.1.0: {} diff --git a/src/assets/svg/dv-folder.svg b/src/assets/svg/dv-folder.svg new file mode 100644 index 0000000..57fdb02 --- /dev/null +++ b/src/assets/svg/dv-folder.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/svg/icon_dataset.svg b/src/assets/svg/icon_dataset.svg new file mode 100644 index 0000000..da26700 --- /dev/null +++ b/src/assets/svg/icon_dataset.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/components/City.vue b/src/components/City.vue new file mode 100644 index 0000000..c903f20 --- /dev/null +++ b/src/components/City.vue @@ -0,0 +1,162 @@ + + + + + + diff --git a/src/components/DragBox.vue b/src/components/DragBox.vue new file mode 100644 index 0000000..2e086a5 --- /dev/null +++ b/src/components/DragBox.vue @@ -0,0 +1,53 @@ + diff --git a/src/components/DragTool.vue b/src/components/DragTool.vue new file mode 100644 index 0000000..90f4417 --- /dev/null +++ b/src/components/DragTool.vue @@ -0,0 +1,280 @@ + + + + + diff --git a/src/components/EventConfig.vue b/src/components/EventConfig.vue new file mode 100644 index 0000000..3e7187c --- /dev/null +++ b/src/components/EventConfig.vue @@ -0,0 +1,961 @@ + + + + + diff --git a/src/components/FcDesigner.vue b/src/components/FcDesigner.vue new file mode 100644 index 0000000..05d7765 --- /dev/null +++ b/src/components/FcDesigner.vue @@ -0,0 +1,3609 @@ + + + \ No newline at end of file diff --git a/src/components/FetchConfig.vue b/src/components/FetchConfig.vue new file mode 100644 index 0000000..7a67f33 --- /dev/null +++ b/src/components/FetchConfig.vue @@ -0,0 +1,302 @@ + + + + + \ No newline at end of file diff --git a/src/components/FetchTable.vue b/src/components/FetchTable.vue new file mode 100644 index 0000000..7855af1 --- /dev/null +++ b/src/components/FetchTable.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/src/components/FieldInput.vue b/src/components/FieldInput.vue new file mode 100644 index 0000000..c2be940 --- /dev/null +++ b/src/components/FieldInput.vue @@ -0,0 +1,310 @@ + + + + + diff --git a/src/components/FieldList.vue b/src/components/FieldList.vue new file mode 100644 index 0000000..376f730 --- /dev/null +++ b/src/components/FieldList.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/components/FnConfig.vue b/src/components/FnConfig.vue new file mode 100644 index 0000000..b3d73d2 --- /dev/null +++ b/src/components/FnConfig.vue @@ -0,0 +1,310 @@ + + + + + diff --git a/src/components/FnEditor.vue b/src/components/FnEditor.vue new file mode 100644 index 0000000..b51710a --- /dev/null +++ b/src/components/FnEditor.vue @@ -0,0 +1,252 @@ + + + + + diff --git a/src/components/FnInput.vue b/src/components/FnInput.vue new file mode 100644 index 0000000..5be4573 --- /dev/null +++ b/src/components/FnInput.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/src/components/FormList.vue b/src/components/FormList.vue new file mode 100644 index 0000000..ef18e8f --- /dev/null +++ b/src/components/FormList.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/src/components/GlobalClassConfig.vue b/src/components/GlobalClassConfig.vue new file mode 100644 index 0000000..f4539f1 --- /dev/null +++ b/src/components/GlobalClassConfig.vue @@ -0,0 +1,383 @@ + + + + + diff --git a/src/components/GlobalClassSelect.vue b/src/components/GlobalClassSelect.vue new file mode 100644 index 0000000..b6421ab --- /dev/null +++ b/src/components/GlobalClassSelect.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/src/components/GlobalEventConfig.vue b/src/components/GlobalEventConfig.vue new file mode 100644 index 0000000..16e0a87 --- /dev/null +++ b/src/components/GlobalEventConfig.vue @@ -0,0 +1,325 @@ + + + + + diff --git a/src/components/GlobalFetchConfig.vue b/src/components/GlobalFetchConfig.vue new file mode 100644 index 0000000..1d07e42 --- /dev/null +++ b/src/components/GlobalFetchConfig.vue @@ -0,0 +1,528 @@ + + + + + diff --git a/src/components/GlobalFetchSelect.vue b/src/components/GlobalFetchSelect.vue new file mode 100644 index 0000000..5a1c1c8 --- /dev/null +++ b/src/components/GlobalFetchSelect.vue @@ -0,0 +1,111 @@ + + + + + \ No newline at end of file diff --git a/src/components/GlobalVariableConfig.vue b/src/components/GlobalVariableConfig.vue new file mode 100644 index 0000000..feee798 --- /dev/null +++ b/src/components/GlobalVariableConfig.vue @@ -0,0 +1,302 @@ + + + + + diff --git a/src/components/HideConfig.vue b/src/components/HideConfig.vue new file mode 100644 index 0000000..00d6ffb --- /dev/null +++ b/src/components/HideConfig.vue @@ -0,0 +1,66 @@ + + + + diff --git a/src/components/HtmlEditor.vue b/src/components/HtmlEditor.vue new file mode 100644 index 0000000..fc5d2d7 --- /dev/null +++ b/src/components/HtmlEditor.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/components/Id.vue b/src/components/Id.vue new file mode 100644 index 0000000..f1adf48 --- /dev/null +++ b/src/components/Id.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/components/InlineForm.vue b/src/components/InlineForm.vue new file mode 100644 index 0000000..bf10617 --- /dev/null +++ b/src/components/InlineForm.vue @@ -0,0 +1,49 @@ + + + + + \ No newline at end of file diff --git a/src/components/JsonPreview.vue b/src/components/JsonPreview.vue new file mode 100644 index 0000000..69b1a8e --- /dev/null +++ b/src/components/JsonPreview.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/PageInput.vue b/src/components/PageInput.vue new file mode 100644 index 0000000..6052cc9 --- /dev/null +++ b/src/components/PageInput.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/src/components/PrintForm.vue b/src/components/PrintForm.vue new file mode 100644 index 0000000..bc702cf --- /dev/null +++ b/src/components/PrintForm.vue @@ -0,0 +1,398 @@ + + + + + diff --git a/src/components/PromptInput.vue b/src/components/PromptInput.vue new file mode 100644 index 0000000..1fe64cc --- /dev/null +++ b/src/components/PromptInput.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src/components/PropsInput.vue b/src/components/PropsInput.vue new file mode 100644 index 0000000..7a14d2d --- /dev/null +++ b/src/components/PropsInput.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/components/QuickLayout.vue b/src/components/QuickLayout.vue new file mode 100644 index 0000000..e777efc --- /dev/null +++ b/src/components/QuickLayout.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/components/Required.vue b/src/components/Required.vue new file mode 100644 index 0000000..45f9b64 --- /dev/null +++ b/src/components/Required.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/components/Row.vue b/src/components/Row.vue new file mode 100644 index 0000000..e31f9bf --- /dev/null +++ b/src/components/Row.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/src/components/RuleSelect.vue b/src/components/RuleSelect.vue new file mode 100644 index 0000000..74064cc --- /dev/null +++ b/src/components/RuleSelect.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/src/components/SignaturePad.vue b/src/components/SignaturePad.vue new file mode 100644 index 0000000..fc5e5a3 --- /dev/null +++ b/src/components/SignaturePad.vue @@ -0,0 +1,144 @@ + + + + + \ No newline at end of file diff --git a/src/components/SlotsConfig.vue b/src/components/SlotsConfig.vue new file mode 100644 index 0000000..9a9129e --- /dev/null +++ b/src/components/SlotsConfig.vue @@ -0,0 +1,310 @@ + + + + + diff --git a/src/components/SpanInput.vue b/src/components/SpanInput.vue new file mode 100644 index 0000000..663f479 --- /dev/null +++ b/src/components/SpanInput.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/components/Struct.vue b/src/components/Struct.vue new file mode 100644 index 0000000..3ee88e9 --- /dev/null +++ b/src/components/Struct.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/src/components/StructEditor.vue b/src/components/StructEditor.vue new file mode 100644 index 0000000..57ae322 --- /dev/null +++ b/src/components/StructEditor.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/src/components/SubList.vue b/src/components/SubList.vue new file mode 100644 index 0000000..0860fcc --- /dev/null +++ b/src/components/SubList.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/components/TableOptions.vue b/src/components/TableOptions.vue new file mode 100644 index 0000000..2325aa3 --- /dev/null +++ b/src/components/TableOptions.vue @@ -0,0 +1,208 @@ + + + + + diff --git a/src/components/ToolsBar.vue b/src/components/ToolsBar.vue new file mode 100644 index 0000000..b083402 --- /dev/null +++ b/src/components/ToolsBar.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/components/TreeOptions.vue b/src/components/TreeOptions.vue new file mode 100644 index 0000000..d2201e5 --- /dev/null +++ b/src/components/TreeOptions.vue @@ -0,0 +1,226 @@ + + + + + diff --git a/src/components/TypeSelect.vue b/src/components/TypeSelect.vue new file mode 100644 index 0000000..84ca030 --- /dev/null +++ b/src/components/TypeSelect.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/src/components/VNode.vue b/src/components/VNode.vue new file mode 100644 index 0000000..c4fcede --- /dev/null +++ b/src/components/VNode.vue @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/src/components/Validate.vue b/src/components/Validate.vue new file mode 100644 index 0000000..d5e6862 --- /dev/null +++ b/src/components/Validate.vue @@ -0,0 +1,246 @@ + + + + + diff --git a/src/components/Warning.vue b/src/components/Warning.vue new file mode 100644 index 0000000..0d9daca --- /dev/null +++ b/src/components/Warning.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/components/ai/AiChat.vue b/src/components/ai/AiChat.vue new file mode 100644 index 0000000..82df6a5 --- /dev/null +++ b/src/components/ai/AiChat.vue @@ -0,0 +1,431 @@ + + + + + + diff --git a/src/components/aide/AudioBox.vue b/src/components/aide/AudioBox.vue new file mode 100644 index 0000000..a6399a7 --- /dev/null +++ b/src/components/aide/AudioBox.vue @@ -0,0 +1,46 @@ + + + diff --git a/src/components/aide/BarCodeBox.vue b/src/components/aide/BarCodeBox.vue new file mode 100644 index 0000000..3096911 --- /dev/null +++ b/src/components/aide/BarCodeBox.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/aide/FcTitle.vue b/src/components/aide/FcTitle.vue new file mode 100644 index 0000000..ee1efb7 --- /dev/null +++ b/src/components/aide/FcTitle.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/components/aide/IframeBox.vue b/src/components/aide/IframeBox.vue new file mode 100644 index 0000000..64f671a --- /dev/null +++ b/src/components/aide/IframeBox.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/components/aide/Markdown.vue b/src/components/aide/Markdown.vue new file mode 100644 index 0000000..b4fc037 --- /dev/null +++ b/src/components/aide/Markdown.vue @@ -0,0 +1,785 @@ + + + + + diff --git a/src/components/aide/QrCodeBox.vue b/src/components/aide/QrCodeBox.vue new file mode 100644 index 0000000..f67ac63 --- /dev/null +++ b/src/components/aide/QrCodeBox.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/components/aide/VideoBox.vue b/src/components/aide/VideoBox.vue new file mode 100644 index 0000000..d2254a1 --- /dev/null +++ b/src/components/aide/VideoBox.vue @@ -0,0 +1,82 @@ + + + + + \ No newline at end of file diff --git a/src/components/cell/Cell.vue b/src/components/cell/Cell.vue new file mode 100644 index 0000000..5050b1b --- /dev/null +++ b/src/components/cell/Cell.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/src/components/cell/CellView.vue b/src/components/cell/CellView.vue new file mode 100644 index 0000000..f0cb311 --- /dev/null +++ b/src/components/cell/CellView.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/computed/ComputedConfig.vue b/src/components/computed/ComputedConfig.vue new file mode 100644 index 0000000..ca0de57 --- /dev/null +++ b/src/components/computed/ComputedConfig.vue @@ -0,0 +1,684 @@ + + + + + diff --git a/src/components/computed/ConditionGroup.vue b/src/components/computed/ConditionGroup.vue new file mode 100644 index 0000000..ebf118a --- /dev/null +++ b/src/components/computed/ConditionGroup.vue @@ -0,0 +1,450 @@ + + + + + diff --git a/src/components/computed/ConditionInput.vue b/src/components/computed/ConditionInput.vue new file mode 100644 index 0000000..bba3b4d --- /dev/null +++ b/src/components/computed/ConditionInput.vue @@ -0,0 +1,69 @@ + + + + + diff --git a/src/components/computed/PatternInput.vue b/src/components/computed/PatternInput.vue new file mode 100644 index 0000000..957a70b --- /dev/null +++ b/src/components/computed/PatternInput.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/src/components/computed/ValueInput.vue b/src/components/computed/ValueInput.vue new file mode 100644 index 0000000..70d4959 --- /dev/null +++ b/src/components/computed/ValueInput.vue @@ -0,0 +1,88 @@ + + + + + diff --git a/src/components/computed/VariableConfig.vue b/src/components/computed/VariableConfig.vue new file mode 100644 index 0000000..5368b4a --- /dev/null +++ b/src/components/computed/VariableConfig.vue @@ -0,0 +1,604 @@ + + + + + diff --git a/src/components/dataSelect/DataSelect.vue b/src/components/dataSelect/DataSelect.vue new file mode 100644 index 0000000..90e6796 --- /dev/null +++ b/src/components/dataSelect/DataSelect.vue @@ -0,0 +1,200 @@ + + + + + + diff --git a/src/components/dataSelect/DataSelectView.vue b/src/components/dataSelect/DataSelectView.vue new file mode 100644 index 0000000..f4b522e --- /dev/null +++ b/src/components/dataSelect/DataSelectView.vue @@ -0,0 +1,62 @@ + + + + + + diff --git a/src/components/dataTable/DataTable.vue b/src/components/dataTable/DataTable.vue new file mode 100644 index 0000000..44a570e --- /dev/null +++ b/src/components/dataTable/DataTable.vue @@ -0,0 +1,412 @@ + + + diff --git a/src/components/dataTable/TableButtonConfig.vue b/src/components/dataTable/TableButtonConfig.vue new file mode 100644 index 0000000..85485db --- /dev/null +++ b/src/components/dataTable/TableButtonConfig.vue @@ -0,0 +1,248 @@ + + + + + diff --git a/src/components/dataTable/TableColumnConfig.vue b/src/components/dataTable/TableColumnConfig.vue new file mode 100644 index 0000000..dfaa3de --- /dev/null +++ b/src/components/dataTable/TableColumnConfig.vue @@ -0,0 +1,359 @@ + + + + + diff --git a/src/components/dialog/Dialog.vue b/src/components/dialog/Dialog.vue new file mode 100644 index 0000000..13ac435 --- /dev/null +++ b/src/components/dialog/Dialog.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/components/dialog/DialogView.vue b/src/components/dialog/DialogView.vue new file mode 100644 index 0000000..f79c875 --- /dev/null +++ b/src/components/dialog/DialogView.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/drawer/Drawer.vue b/src/components/drawer/Drawer.vue new file mode 100644 index 0000000..192b5aa --- /dev/null +++ b/src/components/drawer/Drawer.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/src/components/drawer/DrawerView.vue b/src/components/drawer/DrawerView.vue new file mode 100644 index 0000000..727d5b2 --- /dev/null +++ b/src/components/drawer/DrawerView.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/components/echarts/Echarts.vue b/src/components/echarts/Echarts.vue new file mode 100644 index 0000000..010aead --- /dev/null +++ b/src/components/echarts/Echarts.vue @@ -0,0 +1,425 @@ + + + + + \ No newline at end of file diff --git a/src/components/infiniteTableForm/InfiniteTableForm.vue b/src/components/infiniteTableForm/InfiniteTableForm.vue new file mode 100644 index 0000000..a695fcd --- /dev/null +++ b/src/components/infiniteTableForm/InfiniteTableForm.vue @@ -0,0 +1,465 @@ + + + + + diff --git a/src/components/infiniteTableForm/InfiniteTableFormView.vue b/src/components/infiniteTableForm/InfiniteTableFormView.vue new file mode 100644 index 0000000..f312947 --- /dev/null +++ b/src/components/infiniteTableForm/InfiniteTableFormView.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/src/components/jsonComponent/JsonComponent.vue b/src/components/jsonComponent/JsonComponent.vue new file mode 100644 index 0000000..87260c0 --- /dev/null +++ b/src/components/jsonComponent/JsonComponent.vue @@ -0,0 +1,128 @@ + \ No newline at end of file diff --git a/src/components/jsonComponent/JsonComponentView.vue b/src/components/jsonComponent/JsonComponentView.vue new file mode 100644 index 0000000..3469346 --- /dev/null +++ b/src/components/jsonComponent/JsonComponentView.vue @@ -0,0 +1,156 @@ + + + \ No newline at end of file diff --git a/src/components/language/LanguageConfig.vue b/src/components/language/LanguageConfig.vue new file mode 100644 index 0000000..736f69a --- /dev/null +++ b/src/components/language/LanguageConfig.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/src/components/language/LanguageInput.vue b/src/components/language/LanguageInput.vue new file mode 100644 index 0000000..5ca7241 --- /dev/null +++ b/src/components/language/LanguageInput.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/src/components/mobile/City.vue b/src/components/mobile/City.vue new file mode 100644 index 0000000..62261d6 --- /dev/null +++ b/src/components/mobile/City.vue @@ -0,0 +1,141 @@ + + + + + + diff --git a/src/components/mobile/SignaturePad.vue b/src/components/mobile/SignaturePad.vue new file mode 100644 index 0000000..1867639 --- /dev/null +++ b/src/components/mobile/SignaturePad.vue @@ -0,0 +1,152 @@ + + + + + \ No newline at end of file diff --git a/src/components/mobile/popup/Popup.vue b/src/components/mobile/popup/Popup.vue new file mode 100644 index 0000000..ebcad45 --- /dev/null +++ b/src/components/mobile/popup/Popup.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/src/components/mobile/popup/PopupView.vue b/src/components/mobile/popup/PopupView.vue new file mode 100644 index 0000000..7f85698 --- /dev/null +++ b/src/components/mobile/popup/PopupView.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/components/mobile/stepForm/StepForm.vue b/src/components/mobile/stepForm/StepForm.vue new file mode 100644 index 0000000..fbcb106 --- /dev/null +++ b/src/components/mobile/stepForm/StepForm.vue @@ -0,0 +1,165 @@ + + + + + diff --git a/src/components/mobile/stepForm/StepFormItemView.vue b/src/components/mobile/stepForm/StepFormItemView.vue new file mode 100644 index 0000000..d2bb9eb --- /dev/null +++ b/src/components/mobile/stepForm/StepFormItemView.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/src/components/mobile/stepForm/StepFormView.vue b/src/components/mobile/stepForm/StepFormView.vue new file mode 100644 index 0000000..3b20f59 --- /dev/null +++ b/src/components/mobile/stepForm/StepFormView.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/nestedTableForm/NestedTableForm.vue b/src/components/nestedTableForm/NestedTableForm.vue new file mode 100644 index 0000000..65db64e --- /dev/null +++ b/src/components/nestedTableForm/NestedTableForm.vue @@ -0,0 +1,444 @@ + + + + + diff --git a/src/components/nestedTableForm/NestedTableFormView.vue b/src/components/nestedTableForm/NestedTableFormView.vue new file mode 100644 index 0000000..5b14047 --- /dev/null +++ b/src/components/nestedTableForm/NestedTableFormView.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/components/slotComponent/SlotComponent.vue b/src/components/slotComponent/SlotComponent.vue new file mode 100644 index 0000000..6e5eb17 --- /dev/null +++ b/src/components/slotComponent/SlotComponent.vue @@ -0,0 +1,47 @@ + \ No newline at end of file diff --git a/src/components/slotComponent/SlotComponentView.vue b/src/components/slotComponent/SlotComponentView.vue new file mode 100644 index 0000000..fc685eb --- /dev/null +++ b/src/components/slotComponent/SlotComponentView.vue @@ -0,0 +1,55 @@ + \ No newline at end of file diff --git a/src/components/stepForm/StepForm.vue b/src/components/stepForm/StepForm.vue new file mode 100644 index 0000000..cfb4d17 --- /dev/null +++ b/src/components/stepForm/StepForm.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/src/components/stepForm/StepFormItemView.vue b/src/components/stepForm/StepFormItemView.vue new file mode 100644 index 0000000..d2bb9eb --- /dev/null +++ b/src/components/stepForm/StepFormItemView.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/src/components/stepForm/StepFormView.vue b/src/components/stepForm/StepFormView.vue new file mode 100644 index 0000000..acd1f26 --- /dev/null +++ b/src/components/stepForm/StepFormView.vue @@ -0,0 +1,97 @@ + + + + + diff --git a/src/components/style/BorderInput.vue b/src/components/style/BorderInput.vue new file mode 100644 index 0000000..2ef95a1 --- /dev/null +++ b/src/components/style/BorderInput.vue @@ -0,0 +1,242 @@ + + + + + diff --git a/src/components/style/BoxSizeInput.vue b/src/components/style/BoxSizeInput.vue new file mode 100644 index 0000000..ec609d9 --- /dev/null +++ b/src/components/style/BoxSizeInput.vue @@ -0,0 +1,166 @@ + + + + + \ No newline at end of file diff --git a/src/components/style/BoxSpaceInput.vue b/src/components/style/BoxSpaceInput.vue new file mode 100644 index 0000000..9a5c079 --- /dev/null +++ b/src/components/style/BoxSpaceInput.vue @@ -0,0 +1,269 @@ + + + + + \ No newline at end of file diff --git a/src/components/style/ColorInput.vue b/src/components/style/ColorInput.vue new file mode 100644 index 0000000..30febdc --- /dev/null +++ b/src/components/style/ColorInput.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/components/style/ConfigItem.vue b/src/components/style/ConfigItem.vue new file mode 100644 index 0000000..83c5560 --- /dev/null +++ b/src/components/style/ConfigItem.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/components/style/ConfigTitle.vue b/src/components/style/ConfigTitle.vue new file mode 100644 index 0000000..4f547ae --- /dev/null +++ b/src/components/style/ConfigTitle.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/components/style/DisplayInput.vue b/src/components/style/DisplayInput.vue new file mode 100644 index 0000000..5cc80dd --- /dev/null +++ b/src/components/style/DisplayInput.vue @@ -0,0 +1,267 @@ + + + + + diff --git a/src/components/style/FontInput.vue b/src/components/style/FontInput.vue new file mode 100644 index 0000000..1a7d5b1 --- /dev/null +++ b/src/components/style/FontInput.vue @@ -0,0 +1,174 @@ + + + + + diff --git a/src/components/style/RadiusInput.vue b/src/components/style/RadiusInput.vue new file mode 100644 index 0000000..656ed1b --- /dev/null +++ b/src/components/style/RadiusInput.vue @@ -0,0 +1,164 @@ + + + + + diff --git a/src/components/style/ShadowContent.vue b/src/components/style/ShadowContent.vue new file mode 100644 index 0000000..45e9b1c --- /dev/null +++ b/src/components/style/ShadowContent.vue @@ -0,0 +1,335 @@ + + + + + + \ No newline at end of file diff --git a/src/components/style/ShadowInput.vue b/src/components/style/ShadowInput.vue new file mode 100644 index 0000000..ba7ec05 --- /dev/null +++ b/src/components/style/ShadowInput.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/src/components/style/SizeInput.vue b/src/components/style/SizeInput.vue new file mode 100644 index 0000000..d546b06 --- /dev/null +++ b/src/components/style/SizeInput.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/components/style/StyleConfig.vue b/src/components/style/StyleConfig.vue new file mode 100644 index 0000000..6375393 --- /dev/null +++ b/src/components/style/StyleConfig.vue @@ -0,0 +1,301 @@ + + + + + diff --git a/src/components/style/StyleEditor.vue b/src/components/style/StyleEditor.vue new file mode 100644 index 0000000..4ec9474 --- /dev/null +++ b/src/components/style/StyleEditor.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/src/components/table/Table.vue b/src/components/table/Table.vue new file mode 100644 index 0000000..4bc7ef8 --- /dev/null +++ b/src/components/table/Table.vue @@ -0,0 +1,221 @@ + + + + + diff --git a/src/components/table/TableView.vue b/src/components/table/TableView.vue new file mode 100644 index 0000000..33b413d --- /dev/null +++ b/src/components/table/TableView.vue @@ -0,0 +1,679 @@ + + + + + diff --git a/src/components/tableForm/TableForm.vue b/src/components/tableForm/TableForm.vue new file mode 100644 index 0000000..ab9ebb6 --- /dev/null +++ b/src/components/tableForm/TableForm.vue @@ -0,0 +1,399 @@ + + + + + diff --git a/src/components/tableForm/TableFormColumnView.vue b/src/components/tableForm/TableFormColumnView.vue new file mode 100644 index 0000000..9cd93f8 --- /dev/null +++ b/src/components/tableForm/TableFormColumnView.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/src/components/tableForm/TableFormPro.vue b/src/components/tableForm/TableFormPro.vue new file mode 100644 index 0000000..e30b7a1 --- /dev/null +++ b/src/components/tableForm/TableFormPro.vue @@ -0,0 +1,449 @@ + + + + + diff --git a/src/components/tableForm/TableFormView.vue b/src/components/tableForm/TableFormView.vue new file mode 100644 index 0000000..5693080 --- /dev/null +++ b/src/components/tableForm/TableFormView.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/src/components/value/Value.vue b/src/components/value/Value.vue new file mode 100644 index 0000000..151e323 --- /dev/null +++ b/src/components/value/Value.vue @@ -0,0 +1,20 @@ + + + + diff --git a/src/components/value/ValueView.vue b/src/components/value/ValueView.vue new file mode 100644 index 0000000..701f702 --- /dev/null +++ b/src/components/value/ValueView.vue @@ -0,0 +1,33 @@ + + + + + + diff --git a/src/config/base/advanced.js b/src/config/base/advanced.js new file mode 100644 index 0000000..d94ce79 --- /dev/null +++ b/src/config/base/advanced.js @@ -0,0 +1,61 @@ +// +----------------------------------------------------------------------- +// | FormCreate商业版 [ 让表单设计更简单 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2018~2025 https://form-create.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed FormCreate商业版并不是自由软件,未经授权不得使用、修改或移除版权信息 +// +---------------------------------------------------------------------- +// | Author: FormCreate Team +// +---------------------------------------------------------------------- +export default function advanced({t}) { + return [ + { + type: 'ComputedConfig', + field: 'value', + value: '', + props: { + type: 'linkage', + btn: t('computed.value.btn'), + title: t('computed.value.title'), + name: t('computed.value.name'), + }, + title: t('computed.value.title'), + }, { + type: 'ComputedConfig', + field: 'hidden', + value: '', + props: { + btn: t('computed.hidden.btn'), + title: t('computed.hidden.title'), + name: t('computed.hidden.name'), + invertLabel: t('props.show'), + validLabel: t('props.hide'), + }, + title: t('computed.hidden.title'), + }, { + type: 'ComputedConfig', + field: '$required', + value: '', + props: { + btn: t('computed.required.btn'), + title: t('computed.required.title'), + name: t('computed.required.name'), + invertLabel: t('validate.modes.notRequired'), + validLabel: t('validate.modes.required'), + }, + title: t('computed.required.title'), + }, { + type: 'ComputedConfig', + field: 'props.disabled', + value: '', + props: { + btn: t('computed.disabled.btn'), + title: t('computed.disabled.title'), + name: t('computed.disabled.name'), + invertLabel: t('props.enable'), + validLabel: t('props.disabled'), + }, + title: t('computed.disabled.title'), + }, + ]; +} diff --git a/src/config/base/field.js b/src/config/base/field.js new file mode 100644 index 0000000..d86323e --- /dev/null +++ b/src/config/base/field.js @@ -0,0 +1,102 @@ +import {localeOptions} from '../../utils'; + +export default function field({t}) { + return [ + { + type: 'FieldInput', + field: 'field', + value: '', + title: t('form.field'), + warning: t('warning.field'), + }, { + type: 'LanguageInput', + field: 'title', + value: '', + title: t('form.title'), + }, { + type: 'LanguageInput', + field: 'info', + value: '', + title: t('form.info'), + }, { + type: 'SpanInput', + field: 'formCreateCol>span', + title: t('form.formItemSpan'), + }, { + type: 'ConfigItem', + col: {show: true}, + style: 'margin-bottom: 10px', + name: 'ignoreConfig', + props: { + label: t('form.ignore'), + warning: t('warning.ignore'), + }, + children: [{ + type: 'switch', + field: 'ignore', + value: false, + wrap: {show: false}, + col: {show: false}, + }] + }, + { + type: 'ConfigItem', + col: {show: true}, + name: 'labelConfig', + style: 'margin-bottom: 10px', + props: { + label: t('form.formItem'), + }, + children: [{ + type: 'HideConfig', + field: 'formCreateWrap>title', + col: {show: false}, + wrap: {show: false}, + value: true, + }, { + type: 'select', + field: 'formCreateWrap>class', + title: t('form.labelPosition'), + col: {show: false}, + slot: 'append', + options: localeOptions(t, [ + {value: 'fc-wrap-top', label: 'top'}, + {value: 'fc-wrap-left', label: 'left'}, + {value: 'fc-wrap-right', label: 'right'}, + ]), + }, { + type: 'SizeInput', + field: 'formCreateWrap>labelWidth', + col: {show: false}, + value: '', + slot: 'append', + title: t('form.labelWidth'), + }, { + type: 'SizeInput', + field: 'formCreateWrap>style>marginBottom', + col: {show: false}, + value: '', + slot: 'append', + title: t('form.formItemMarginBottom'), + } + ] + }, { + type: 'Struct', + field: '_control', + name: 'control', + value: [], + title: t('form.control'), + warning: t('form.controlDocument', {doc: '' + t('form.document') + ''}), + props: { + defaultValue: [], + validate(val) { + if (!Array.isArray(val)) return false; + if (!val.length) return true; + return !val.some(({rule}) => { + return !Array.isArray(rule); + }); + } + } + }, + ]; +} diff --git a/src/config/base/form.js b/src/config/base/form.js new file mode 100644 index 0000000..28259e7 --- /dev/null +++ b/src/config/base/form.js @@ -0,0 +1,165 @@ +import {isNull, localeOptions} from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +function updateConfigInfo(key, t) { + return function (val, rule, api) { + const temp = {...val || {}}; + Object.keys(temp).forEach(k => { + if (isNull(temp[k])) { + delete temp[k]; + } + }) + api.getRule(key).props.info = Object.keys(temp).length > 0 ? t('struct.configured') : ''; + } +} + +export default function form({t}) { + + const key1 = uniqueId(); + + return [ + { + type: 'input', + field: '>formName', + value: '', + title: t('form.formName'), + }, { + type: 'radio', + field: 'labelPosition', + value: 'left', + title: t('form.labelPosition'), + options: localeOptions(t, [ + {value: 'left', label: 'left'}, + {value: 'right', label: 'right'}, + {value: 'top', label: 'top'}, + ]) + }, { + type: 'radio', + field: 'size', + value: 'small', + title: t('form.size'), + options: localeOptions(t, [ + {value: 'large', label: 'large'}, + {value: 'default', label: 'default'}, + {value: 'small', label: 'small'}, + ]) + }, { + type: 'input', + field: 'labelSuffix', + value: '', + title: t('form.labelSuffix'), + style: { + width: '150px' + } + }, { + type: 'SizeInput', + field: 'labelWidth', + value: '125px', + title: t('form.labelWidth'), + }, { + type: 'SizeInput', + field: 'wrap>style>marginBottom', + value: '', + title: t('form.formItemMarginBottom'), + }, { + type: 'switch', + field: 'hideRequiredAsterisk', + value: false, + title: t('form.hideRequiredAsterisk'), + }, { + type: 'switch', + field: 'showMessage', + value: true, + title: t('form.showMessage'), + }, { + type: 'switch', + field: 'inlineMessage', + value: false, + title: t('form.inlineMessage'), + }, { + type: 'switch', + field: '_submitBtn>show', + value: true, + title: t('form.submitBtn'), + }, { + type: 'switch', + field: '_resetBtn>show', + value: false, + title: t('form.resetBtn'), + }, { + type: 'switch', + field: '>ignoreHiddenFields', + value: false, + title: t('form.ignoreHiddenFields'), + warning: t('warning.ignoreHiddenFields'), + }, { + type: 'ConfigItem', + col: {show: true}, + name: key1, + style: 'margin-bottom: 10px', + props: { + label: t('form.labelStyle'), + info: '', + }, + children: [{ + type: 'StyleConfig', + field: 'title>style', + wrap: {show: false}, + value: {}, + slot: 'append', + update: updateConfigInfo(key1, t), + }] + }, + { + type: 'FnConfig', + field: '>_event', + value: {}, + col: {show: true}, + props: { + eventConfig: [ + { + name: 'onSubmit', + info: t('form.onSubmit'), + args: ['formData', 'api'], + }, + { + name: 'onReset', + info: t('form.onReset'), + args: ['api'], + }, + { + name: 'onCreated', + info: t('form.onCreated'), + args: ['api'], + }, + { + name: 'onMounted', + info: t('form.onMounted'), + args: ['api'], + }, + { + name: 'onReload', + info: t('form.onReload'), + args: ['api'], + }, + { + name: 'onChange', + info: t('form.onChange'), + args: ['field', 'value', 'options'], + }, + { + name: 'beforeSubmit', + info: t('form.beforeSubmit'), + args: ['formData', 'data'], + }, + { + name: 'beforeFetch', + info: t('form.beforeFetch'), + args: ['config', 'data'], + }, + ] + }, + title: t('form.event'), + }, + ]; +} diff --git a/src/config/base/style.js b/src/config/base/style.js new file mode 100644 index 0000000..2921f70 --- /dev/null +++ b/src/config/base/style.js @@ -0,0 +1,26 @@ +export default function field({t}) { + return [ + { + type: 'input', + title: 'ID', + field: 'id', + wrap: { + labelWidth: '45px' + } + }, + { + type: 'GlobalClassSelect', + title: 'Class', + field: 'class', + wrap: { + labelWidth: '45px' + } + }, + { + type: 'StyleConfig', + field: 'style', + title: '', + value: {}, + } + ]; +} diff --git a/src/config/base/validate.js b/src/config/base/validate.js new file mode 100644 index 0000000..4df9de4 --- /dev/null +++ b/src/config/base/validate.js @@ -0,0 +1,15 @@ +export default function validate({t}) { + return [ + { + type: 'Required', + field: '$required', + title: t('validate.required') + }, + { + type: 'validate', + field: 'validate', + title: t('validate.rule'), + value: [] + }, + ]; +} \ No newline at end of file diff --git a/src/config/index.js b/src/config/index.js new file mode 100644 index 0000000..eb229dd --- /dev/null +++ b/src/config/index.js @@ -0,0 +1,135 @@ +// +----------------------------------------------------------------------- +// | FormCreate商业版 [ 让表单设计更简单 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2018~2025 https://form-create.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed FormCreate商业版并不是自由软件,未经授权不得使用、修改或移除版权信息 +// +---------------------------------------------------------------------- +// | Author: FormCreate Team +// +---------------------------------------------------------------------- +import radio from './rule/radio'; +import checkbox from './rule/checkbox'; +import input from './rule/input'; +import textarea from './rule/textarea'; +import password from './rule/password'; +import number from './rule/number'; +import select from './rule/select'; +import _switch from './rule/switch'; +import slider from './rule/slider'; +import time from './rule/time'; +import timeRange from './rule/timeRange'; +import date from './rule/date'; +import dateRange from './rule/dateRange'; +import rate from './rule/rate'; +import color from './rule/color'; +import row from './rule/row'; +import col from './rule/col'; +import tabPane from './rule/tabPane'; +import divider from './rule/divider'; +import cascader from './rule/cascader'; +import upload from './rule/upload'; +import transfer from './rule/transfer'; +import tree from './rule/tree'; +import alert from './rule/alert'; +import text from './rule/text'; +import space from './rule/space'; +import tabs from './rule/tabs'; +import button from './rule/button'; +import editor from './rule/editor'; +import group from './rule/group'; +import subForm from './rule/subForm'; +import card from './rule/card'; +import collapse from './rule/collapse'; +import collapseItem from './rule/collapseItem'; +import treeSelect from './rule/treeSelect'; +import tag from './rule/tag'; +import descriptionsItem from './rule/descriptionsItem'; +import descriptions from './rule/descriptions'; +import stepForm from './rule/stepForm'; +import stepFormItem from './rule/stepFormItem'; +import html from './rule/html'; +import table from './rule/table'; +import tableForm from './rule/tableForm'; +import tableForm2 from './rule/tableForm2'; +import infiniteTableForm from './rule/infiniteTableForm'; +import nestedTableForm from './rule/nestedTableForm'; +import nestedSubTableForm from './rule/nestedSubTableForm'; +import tableFormColumn from './rule/tableFormColumn'; +import tableFormColumn2 from './rule/tableFormColumn2'; +import flex from './rule/flex'; +import cell from './rule/cell'; +import value from './rule/value'; +import link from './rule/link'; +import tooltip from './rule/tooltip'; +import watermark from './rule/watermark'; +import chineseAmount from './template/chineseAmount'; +import duration from './template/duration'; +import col3 from './template/col3'; +import col4 from './template/col4'; +import table43 from './template/table43'; +import dataTable from './rule/dataTable'; +import dialog from './rule/dialog'; +import drawer from './rule/drawer'; +import slot from './rule/slot'; +import json from './rule/json'; +import inlineForm from './rule/inlineForm'; +import image from './rule/image'; +import flex2 from './rule/flex2'; +import formItem from './rule/formItem'; +import audio from './rule/audio'; +import video from './rule/video'; +import avatar from './rule/avatar'; +import barCode from './rule/barCode'; +import iframe from './rule/iframe'; +import qrCodeBox from './rule/qrCodeBox'; +import signaturePad from './rule/signaturePad'; +import mention from './rule/mention'; +import segmented from './rule/segmented'; +import title from './rule/title'; +import id from './rule/id'; +import city from './rule/city'; +import markdown from './rule/markdown'; +import statistic from './rule/statistic'; +import lineChart from './rule/charts/lineChart'; +import areaChart from './rule/charts/areaChart'; +import barChart from './rule/charts/barChart'; +import stripeChart from './rule/charts/stripeChart'; +import pieChart from './rule/charts/pieChart'; +import funnelChart from './rule/charts/funnelChart'; +import gaugeChart from './rule/charts/gaugeChart'; +import radarChart from './rule/charts/radarChart'; +import scatterChart from './rule/charts/scatterChart'; +import customChart from './rule/charts/customChart'; +import dataSelect from './rule/dataSelect'; + + +const ruleList = [ + input, textarea, password, mention, segmented, number, radio, checkbox, select, _switch, rate, time, timeRange, slider, date, dateRange, color, cascader, upload, transfer, tree, treeSelect, city, editor, dataTable, id, signaturePad, value, dataSelect, + group, subForm, stepForm, tableForm, tableForm2, tableFormColumn,tableFormColumn2, nestedTableForm, nestedSubTableForm, infiniteTableForm, + slot, json, formItem, + alert, button, tag, title, text, html, statistic, divider, link, tooltip, watermark, image, audio, video, avatar, barCode, iframe, qrCodeBox, markdown, + lineChart, areaChart, barChart, stripeChart, pieChart, funnelChart, gaugeChart, radarChart, scatterChart, customChart, + row, table, inlineForm, flex2, flex, cell, tabs, space, card, collapse, descriptions, dialog, drawer, + + col3, col4, table43, chineseAmount, duration, + + col, tabPane, collapseItem, descriptionsItem, stepFormItem +]; + +export default ruleList; + +export function defaultDrag(rule) { + return { + icon: rule.field ? 'icon-input' : 'icon-cell', + label: rule.field || rule.type, + name: '_', + mask: true, + handleBtn: ['delete'], + rule() { + return rule; + }, + props() { + return []; + } + } +} diff --git a/src/config/menu.js b/src/config/menu.js new file mode 100644 index 0000000..4eae46b --- /dev/null +++ b/src/config/menu.js @@ -0,0 +1,39 @@ +export default function createMenu() { + return [ + { + name: 'template', + title: '模板', + list: [] + }, + { + name: 'main', + title: '基础组件', + list: [] + }, + { + name: 'subform', + title: '子表单组件', + list: [] + }, + { + name: 'container', + title: '容器组件', + list: [] + }, + { + name: 'chart', + title: '图表组件', + list: [] + }, + { + name: 'aide', + title: '辅助组件', + list: [] + }, + { + name: 'layout', + title: '布局组件', + list: [] + }, + ]; +} diff --git a/src/config/rule/alert.js b/src/config/rule/alert.js new file mode 100644 index 0000000..392a957 --- /dev/null +++ b/src/config/rule/alert.js @@ -0,0 +1,45 @@ +import {localeProps} from '../../utils'; + +const label = '提示'; +const name = 'elAlert'; + +export default { + menu: 'aide', + icon: 'icon-alert', + label, + name, + event: ['close'], + rule({t}) { + return { + type: name, + props: { + title: t('com.elAlert.name'), + description: t('com.elAlert.description'), + type: 'success', + effect: 'dark', + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'input', field: 'title'}, { + type: 'select', + field: 'type', + options: [{label: 'success', value: 'success'}, {label: 'warning', value: 'warning'}, { + label: 'info', + value: 'info' + }, {label: 'error', value: 'error'}] + }, {type: 'input', field: 'description'}, { + type: 'switch', + field: 'closable', + value: true + }, {type: 'switch', field: 'center', value: true}, { + type: 'input', + field: 'closeText' + }, {type: 'switch', field: 'showIcon'}, { + type: 'select', + field: 'effect', + options: [{label: 'light', value: 'light'}, {label: 'dark', value: 'dark'}] + }]); + } +}; diff --git a/src/config/rule/audio.js b/src/config/rule/audio.js new file mode 100644 index 0000000..8f9a30d --- /dev/null +++ b/src/config/rule/audio.js @@ -0,0 +1,111 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '音频播放器'; +const name = 'audioBox'; + +export default { + menu: 'aide', + icon: 'icon-audio', + label: label, + name: name, + mask: false, + event: ['pause', 'play', 'ended'], + rule() { + return { + type: name, + props: { + src: 'https://static.form-create.com/res/demo.mp3', + type: 'audio/mpeg', + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'src', + }, + { + type: 'select', + field: 'type', + options: [ + { + label: 'MP3', + value: 'audio/mpeg' + }, + { + label: 'OGG', + value: 'audio/ogg' + }, + { + label: 'AAC', + value: 'audio/aac' + }, + { + label: 'WAV', + value: 'audio/wav' + }, + { + label: 'WMA', + value: 'audio/x-ms-wma' + }, + { + label: 'WEBA', + value: 'audio/webm' + }, + { + label: 'FLAC', + value: 'audio/flac' + }, + { + label: 'ALAC', + value: 'audio/x-alac' + }, + { + label: 'AMR', + value: 'audio/amr' + }, + { + label: 'MIDI', + value: 'audio/midi' + }, + ] + }, + { + type: 'switch', + field: 'autoplay', + }, + { + type: 'switch', + field: 'loop', + }, + { + type: 'switch', + field: 'muted', + }, + { + type: 'switch', + field: 'controls', + }, + { + type: 'select', + field: 'preload', + options: localeOptions(t, [ + { + label: 'auto', + value: 'auto' + }, + { + label: 'metadata', + value: 'metadata' + }, + { + label: 'none', + value: 'none' + } + ], 'com.audioBox.preloadOpt') + } + ]); + }, +}; + diff --git a/src/config/rule/avatar.js b/src/config/rule/avatar.js new file mode 100644 index 0000000..fef8b43 --- /dev/null +++ b/src/config/rule/avatar.js @@ -0,0 +1,50 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '头像框'; +const name = 'elAvatar'; + +export default { + menu: 'aide', + icon: 'icon-avatar', + label: label, + name: name, + mask: true, + inline: true, + event: [], + rule() { + return { + type: name, + props: { + fit: 'cover', + src: 'https://static.form-create.com/example.png', + }, + }; + }, + + props(_, {t}) { + return localeProps(t, 'elAvatar.props', [ + { + type: 'input', + field: 'src', + }, + { + type: 'select', + field: 'shape', + options: localeOptions(t, [ + {label: 'circle', value: 'circle'}, + {label: 'square', value: 'square'}, + ]), + }, + { + type: 'select', + field: 'size', + options: localeOptions(t, [ + {label: 'large', value: 'large'}, + {label: 'default', value: 'default'}, + {label: 'small', value: 'small'}, + ]), + }, + ]); + }, +}; + diff --git a/src/config/rule/barCode.js b/src/config/rule/barCode.js new file mode 100644 index 0000000..2bd88d0 --- /dev/null +++ b/src/config/rule/barCode.js @@ -0,0 +1,96 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '条形码'; +const name = 'barCodeBox'; + +export default { + menu: 'aide', + icon: 'icon-barcode', + label: label, + name: name, + mask: true, + inline: true, + event: [], + rule() { + return { + type: name, + props: { + value: '12345670', + format: 'CODE128', + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'barCodeBox.props', [ + { + type: 'input', + field: 'value', + }, + { + type: 'select', + field: 'format', + options: [ + {label: 'CODE39', value: 'CODE39'}, + {label: 'CODE128', value: 'CODE128'}, + {label: 'CODE128A', value: 'CODE128A'}, + {label: 'CODE128B', value: 'CODE128B'}, + {label: 'CODE128C', value: 'CODE128C'}, + {label: 'EAN13', value: 'EAN13'}, + {label: 'UPC', value: 'UPC'}, + {label: 'CODABAR', value: 'CODABAR'}, + ], + }, + { + type: 'inputNumber', + field: 'width', + value: 2, + }, + { + type: 'inputNumber', + field: 'height', + value: 50, + }, + { + type: 'switch', + field: 'displayValue', + value: true, + }, + { + type: 'inputNumber', + field: 'fontSize', + value: 12, + }, + { + type: 'select', + field: 'textPosition', + options: localeOptions(t, [ + {label: 'top', value: 'top'}, + {label: 'bottom', value: 'bottom'}, + ]), + }, + { + type: 'select', + field: 'textAlign', + options: localeOptions(t, [ + {label: 'left', value: 'left'}, + {label: 'center', value: 'center'}, + {label: 'right', value: 'right'}, + ]), + }, + { + type: 'inputNumber', + field: 'textMargin', + value: 2, + }, + { + type: 'ColorInput', + field: 'background', + }, + { + type: 'ColorInput', + field: 'lineColor', + }, + ]); + }, +}; + diff --git a/src/config/rule/button.js b/src/config/rule/button.js new file mode 100644 index 0000000..ad9e932 --- /dev/null +++ b/src/config/rule/button.js @@ -0,0 +1,51 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '按钮'; +const name = 'elButton'; + +export default { + menu: 'aide', + icon: 'icon-button', + label, + name, + mask: true, + inline: true, + easySlots: [{value: 'icon', type: 'icon'}], + event: ['click'], + rule({t}) { + return { + type: name, + props: {}, + children: [t('com.elButton.name')], + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'input', + field: 'formCreateChild', + }, { + type: 'select', + field: 'size', + options: localeOptions(t, [{label: 'large', value: 'large'}, {label: 'default', value: 'default'}, { + label: 'small', + value: 'small' + }]) + }, { + type: 'select', + field: 'type', + options: localeOptions(t, [{label: 'primary', value: 'primary'}, { + label: 'success', + value: 'success' + }, {label: 'warning', value: 'warning'}, {label: 'danger', value: 'danger'}, { + label: 'info', + value: 'info' + }]) + }, {type: 'switch', field: 'plain'}, { + type: 'switch', + field: 'round' + }, {type: 'switch', field: 'circle'}, { + type: 'switch', + field: 'loading' + }, {type: 'switch', field: 'disabled'}]); + } +}; diff --git a/src/config/rule/card.js b/src/config/rule/card.js new file mode 100644 index 0000000..5cdd195 --- /dev/null +++ b/src/config/rule/card.js @@ -0,0 +1,40 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '卡片'; +const name = 'elCard'; + +export default { + menu: 'layout', + icon: 'icon-card', + label, + name, + drag: true, + inside: false, + mask: false, + rule({t}) { + return { + type: name, + props: { + header: t('com.elCard.props.header') + }, + style: { + width: '100%' + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'input', + field: 'header', + }, { + type: 'select', + field: 'shadow', + value: 'always', + options: localeOptions(t, [{label: 'always', value: 'always'}, {label: 'never', value: 'never'}, { + label: 'hover', + value: 'hover' + }]) + }]); + } +}; diff --git a/src/config/rule/cascader.js b/src/config/rule/cascader.js new file mode 100644 index 0000000..cdcd803 --- /dev/null +++ b/src/config/rule/cascader.js @@ -0,0 +1,130 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps, makeTreeOptions, makeTreeOptionsRule} from '../../utils/index'; + +const label = '级联选择器'; +const name = 'cascader'; + +export default { + menu: 'main', + icon: 'icon-cascader', + label, + name, + input: true, + event: ['change', 'expandChange', 'blur', 'focus', 'visibleChange', 'removeTag'], + validate: ['string', 'number', 'array'], + condition(rule) { + return { + type: 'cascader', + options: 'props.options', + props: { + props: (rule.props && rule.props.props) || {} + } + } + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.cascader.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: { + options: makeTreeOptions(t('props.option'), {label: 'label', value: 'value'}, 3) + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeTreeOptionsRule(t, 'props.options'), + ...[ + + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'clearable' + }, + { + type: 'input', + field: 'placeholder' + }, + { + type: 'Object', + field: 'props', + props: { + rule: localeProps(t, name + '.propsOpt', [{ + type: 'switch', + field: 'multiple' + }, { + type: 'select', + field: 'expandTrigger', + options: localeOptions(t, [{label: 'click', value: 'click'}, { + label: 'hover', + value: 'hover' + }]) + }, { + type: 'switch', + field: 'checkStrictly' + }, { + type: 'switch', + field: 'emitPath', + value: true + }, { + type: 'input', + field: 'value', + value: 'value' + }, { + type: 'input', + field: 'label', + value: 'label' + }, { + type: 'input', + field: 'children', + value: 'children' + }, { + type: 'input', + field: 'disabled', + value: 'disabled' + }, {type: 'input', field: 'leaf'}]) + } + }, + { + type: 'switch', + field: 'showAllLevels', + value: true + }, + { + type: 'switch', + field: 'collapseTags' + }, + { + type: 'switch', + field: 'collapseTagsTooltip' + }, + { + type: 'input', + field: 'separator' + }, + { + type: 'switch', + field: 'filterable' + }, + { + type: 'select', + field: 'tagType', + options: [ + {label: 'success', value: 'success'}, + {label: 'info', value: 'info'}, + {label: 'warning', value: 'warning'}, + {label: 'danger', value: 'danger'}, + ] + }, + ] + ]); + } +}; diff --git a/src/config/rule/cell.js b/src/config/rule/cell.js new file mode 100644 index 0000000..44d1d11 --- /dev/null +++ b/src/config/rule/cell.js @@ -0,0 +1,32 @@ +const name = 'fcCell'; + +export default { + name, + label: '格子', + drag: true, + dragBtn: false, + inside: true, + inline: true, + mask: false, + sfc(rule) { + rule.type = 'div'; + }, + rule() { + return { + type: name, + style: { + display: 'block', + width: '50%', + height: '100px', + }, + children: [], + }; + }, + props(_, {t}) { + return [{ + type: 'SizeInput', + field: 'formCreateStyle>width', + title: t('style.width') + }] + } +}; diff --git a/src/config/rule/charts/areaChart.js b/src/config/rule/charts/areaChart.js new file mode 100644 index 0000000..bf6f7f7 --- /dev/null +++ b/src/config/rule/charts/areaChart.js @@ -0,0 +1,82 @@ +import {localeProps, makeDataRule} from '../../../utils'; + +const label = '体积图'; +const name = 'areaChart'; + +export default { + menu: 'chart', + icon: 'icon-chart-area', + label: label, + name: name, + mask: false, + event: ['beforeLoad', 'loaded', 'click'], + rule() { + return { + type: 'fcEcharts', + props: { + type: 'area', + config: { + category: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + series: [ + { + name: 'Email', + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: 'Union Ads', + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: 'Video Ads', + data: [150, 232, 201, 154, 190, 330, 410] + }, + { + name: 'Direct', + data: [320, 332, 301, 334, 390, 330, 320] + }, + { + name: 'Search Engine', + data: [820, 932, 901, 934, 1290, 1330, 1320] + } + ] + } + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'lineChart.props', [ + makeDataRule(t, 'props.config', t('com.lineChart.data')), + { + type: 'input', + field: 'title', + }, + { + type: 'input', + field: 'subtitle', + }, + { + type: 'input', + field: 'valueFormat', + value: '{value}' + }, + { + type: 'switch', + field: 'stack', + }, + { + type: 'switch', + field: 'smooth', + }, + { + type: 'switch', + field: 'showLegend', + value: true, + }, + { + type: 'switch', + field: 'showSeriesLabel', + }, + ]); + }, +}; + diff --git a/src/config/rule/charts/barChart.js b/src/config/rule/charts/barChart.js new file mode 100644 index 0000000..4347ec8 --- /dev/null +++ b/src/config/rule/charts/barChart.js @@ -0,0 +1,66 @@ +import {localeProps, makeDataRule} from '../../../utils'; + +const label = '柱状图'; +const name = 'barChart'; + +export default { + menu: 'chart', + icon: 'icon-chart-bar', + label: label, + name: name, + mask: false, + event: ['beforeLoad', 'loaded', 'click'], + rule() { + return { + type: 'fcEcharts', + props: { + type: 'bar', + config: { + category: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + series: [ + { + name: 'Direct', + data: [320, 332, 301, 334, 390, 330, 320] + }, + ] + } + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'lineChart.props', [ + makeDataRule(t, 'props.config', t('com.lineChart.data')), + { + type: 'input', + field: 'title', + }, + { + type: 'input', + field: 'subtitle', + }, + { + type: 'input', + field: 'valueFormat', + value: '{value}' + }, + { + type: 'ColorInput', + field: 'barBackgroundColor', + }, + { + type: 'switch', + field: 'stack', + }, + { + type: 'switch', + field: 'showLegend', + value: true, + }, + { + type: 'switch', + field: 'showSeriesLabel', + }, + ]); + }, +}; + diff --git a/src/config/rule/charts/customChart.js b/src/config/rule/charts/customChart.js new file mode 100644 index 0000000..e9efe35 --- /dev/null +++ b/src/config/rule/charts/customChart.js @@ -0,0 +1,277 @@ +import {getInjectArg, localeProps, makeDataRule} from '../../../utils'; + +const label = '自定义图表'; +const name = 'customChart'; + +export default { + menu: 'chart', + icon: 'icon-chart-custom', + label: label, + name: name, + mask: false, + event: ['beforeLoad', 'loaded', 'click'], + rule() { + return { + type: 'fcEcharts', + style: { + height: '500px', + }, + props: { + type: 'custom', + config: { + builderJson: { + all: 10887, + charts: { + map: 3237, + lines: 2164, + bar: 7561, + line: 7778, + pie: 7355, + scatter: 2405, + candlestick: 1842, + radar: 2090, + heatmap: 1762, + treemap: 1593, + graph: 2060, + boxplot: 1537, + parallel: 1908, + gauge: 2107, + funnel: 1692, + sankey: 1568 + }, + components: { + geo: 2788, + title: 9575, + legend: 9400, + tooltip: 9466, + grid: 9266, + markPoint: 3419, + markLine: 2984, + timeline: 2739, + dataZoom: 2744, + visualMap: 2466, + toolbox: 3034, + polar: 1945 + }, + ie: 9743 + }, + downloadJson: { + 'echarts.min.js': 17365, + 'echarts.simple.min.js': 4079, + 'echarts.common.min.js': 6929, + 'echarts.js': 14890 + }, + themeJson: { + 'dark.js': 1594, + 'infographic.js': 925, + 'shine.js': 1608, + 'roma.js': 721, + 'macarons.js': 2179, + 'vintage.js': 1982 + } + }, + loadOptions: `$FNX:const builderJson = $inject.args[0]?.builderJson; +const downloadJson = $inject.args[0]?.downloadJson; +const themeJson = $inject.args[0]?.themeJson; +const waterMarkText = 'ECHARTS'; +const canvas = document.createElement('canvas'); +const ctx = canvas.getContext('2d'); +canvas.width = canvas.height = 100; +ctx.textAlign = 'center'; +ctx.textBaseline = 'middle'; +ctx.globalAlpha = 0.08; +ctx.font = '20px'; +ctx.translate(50, 50); +ctx.rotate(-Math.PI / 4); +ctx.fillText(waterMarkText, 0, 0); + +return { + backgroundColor: { + type: 'pattern', + image: canvas, + repeat: 'repeat' + }, + tooltip: {}, + title: [ + { + text: '在线构建', + subtext: '总计 ' + builderJson.all, + left: '25%', + textAlign: 'center' + }, + { + text: '各版本下载', + subtext: + '总计 ' + + Object.keys(downloadJson).reduce(function (all, key) { + return all + downloadJson[key]; + }, 0), + left: '75%', + textAlign: 'center' + }, + { + text: '主题下载', + subtext: + '总计 ' + + Object.keys(themeJson).reduce(function (all, key) { + return all + themeJson[key]; + }, 0), + left: '75%', + top: '50%', + textAlign: 'center' + } + ], + grid: [ + { + top: 50, + width: '50%', + bottom: '45%', + left: 10, + containLabel: true + }, + { + top: '55%', + width: '50%', + bottom: 0, + left: 10, + containLabel: true + } + ], + xAxis: [ + { + type: 'value', + max: builderJson.all, + splitLine: { + show: false + } + }, + { + type: 'value', + max: builderJson.all, + gridIndex: 1, + splitLine: { + show: false + } + } + ], + yAxis: [ + { + type: 'category', + data: Object.keys(builderJson.charts), + axisLabel: { + interval: 0, + rotate: 30 + }, + splitLine: { + show: false + } + }, + { + gridIndex: 1, + type: 'category', + data: Object.keys(builderJson.components), + axisLabel: { + interval: 0, + rotate: 30 + }, + splitLine: { + show: false + } + } + ], + series: [ + { + type: 'bar', + stack: 'chart', + z: 3, + label: { + position: 'right', + show: true + }, + data: Object.keys(builderJson.charts).map(function (key) { + return builderJson.charts[key]; + }) + }, + { + type: 'bar', + stack: 'chart', + silent: true, + itemStyle: { + color: '#eee' + }, + data: Object.keys(builderJson.charts).map(function (key) { + return builderJson.all - builderJson.charts[key]; + }) + }, + { + type: 'bar', + stack: 'component', + xAxisIndex: 1, + yAxisIndex: 1, + z: 3, + label: { + position: 'right', + show: true + }, + data: Object.keys(builderJson.components).map(function (key) { + return builderJson.components[key]; + }) + }, + { + type: 'bar', + stack: 'component', + silent: true, + xAxisIndex: 1, + yAxisIndex: 1, + itemStyle: { + color: '#eee' + }, + data: Object.keys(builderJson.components).map(function (key) { + return builderJson.all - builderJson.components[key]; + }) + }, + { + type: 'pie', + radius: [0, '30%'], + center: ['75%', '25%'], + data: Object.keys(downloadJson).map(function (key) { + return { + name: key.replace('.js', ''), + value: downloadJson[key] + }; + }) + }, + { + type: 'pie', + radius: [0, '30%'], + center: ['75%', '75%'], + data: Object.keys(themeJson).map(function (key) { + return { + name: key.replace('.js', ''), + value: themeJson[key] + }; + }) + } + ] +};` + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'lineChart.props', [ + makeDataRule(t, 'props.config', t('com.lineChart.data')), + { + type: 'FnInput', + field: 'loadOptions', + props: { + body: true, + button: true, + fnx: true, + args: [getInjectArg(t)], + name: 'loadOptions', + } + } + ]); + }, +}; + diff --git a/src/config/rule/charts/funnelChart.js b/src/config/rule/charts/funnelChart.js new file mode 100644 index 0000000..a55a4c7 --- /dev/null +++ b/src/config/rule/charts/funnelChart.js @@ -0,0 +1,58 @@ +import {localeOptions, localeProps, makeDataRule} from '../../../utils'; + +const label = '漏斗图'; +const name = 'funnelChart'; + +export default { + menu: 'chart', + icon: 'icon-chart-funnel', + label: label, + name: name, + mask: false, + event: ['beforeLoad', 'loaded', 'click'], + rule() { + return { + type: 'fcEcharts', + props: { + type: 'funnel', + data: [ + {value: 60, name: 'Visit'}, + {value: 40, name: 'Inquiry'}, + {value: 20, name: 'Order'}, + {value: 80, name: 'Click'}, + {value: 100, name: 'Show'} + ] + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'lineChart.props', [ + makeDataRule(t, 'props.data', t('com.lineChart.data')), + { + type: 'input', + field: 'title', + }, + { + type: 'input', + field: 'subtitle', + }, + { + type: 'select', + field: 'funnelSort', + options: localeOptions(t, [ + {label: 'descending', value: 'descending'}, + {label: 'ascending', value: 'ascending'}, + ], 'com.lineChart.funnelSortOpt'), + value: 'descending' + }, + { + type: 'switch', + field: 'showLegend', + value: true, + }, + ]); + }, +}; + + + diff --git a/src/config/rule/charts/gaugeChart.js b/src/config/rule/charts/gaugeChart.js new file mode 100644 index 0000000..91fcecc --- /dev/null +++ b/src/config/rule/charts/gaugeChart.js @@ -0,0 +1,49 @@ +import {localeProps} from '../../../utils'; + +const label = '仪表盘'; +const name = 'gaugeChart'; + +export default { + menu: 'chart', + icon: 'icon-chart-gauge', + label: label, + name: name, + mask: false, + event: ['beforeLoad', 'loaded', 'click'], + rule() { + return { + type: 'fcEcharts', + props: { + type: 'gauge', + value: 50 + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'lineChart.props', [ + { + type: 'inputNumber', + field: 'value', + }, + { + type: 'input', + field: 'title', + }, + { + type: 'input', + field: 'subtitle', + }, + { + type: 'inputNumber', + field: 'min', + }, + { + type: 'inputNumber', + field: 'max', + }, + ]); + }, +}; + + + diff --git a/src/config/rule/charts/lineChart.js b/src/config/rule/charts/lineChart.js new file mode 100644 index 0000000..983c11f --- /dev/null +++ b/src/config/rule/charts/lineChart.js @@ -0,0 +1,82 @@ +import {localeProps, makeDataRule} from '../../../utils'; + +const label = '折线图'; +const name = 'lineChart'; + +export default { + menu: 'chart', + icon: 'icon-chart-line', + label: label, + name: name, + mask: false, + event: ['beforeLoad', 'loaded', 'click'], + rule() { + return { + type: 'fcEcharts', + props: { + type: 'line', + config: { + category: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + series: [ + { + name: 'Email', + data: [120, 132, 101, 134, 90, 230, 210] + }, + { + name: 'Union Ads', + data: [220, 182, 191, 234, 290, 330, 310] + }, + { + name: 'Video Ads', + data: [150, 232, 201, 154, 190, 330, 410] + }, + { + name: 'Direct', + data: [320, 332, 301, 334, 390, 330, 320] + }, + { + name: 'Search Engine', + data: [820, 932, 901, 934, 1290, 1330, 1320] + } + ] + } + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'lineChart.props', [ + makeDataRule(t, 'props.config', t('com.lineChart.data')), + { + type: 'input', + field: 'title', + }, + { + type: 'input', + field: 'subtitle', + }, + { + type: 'input', + field: 'valueFormat', + value: '{value}' + }, + { + type: 'switch', + field: 'stack', + }, + { + type: 'switch', + field: 'smooth', + }, + { + type: 'switch', + field: 'showLegend', + value: true, + }, + { + type: 'switch', + field: 'showSeriesLabel', + }, + ]); + }, +}; + diff --git a/src/config/rule/charts/pieChart.js b/src/config/rule/charts/pieChart.js new file mode 100644 index 0000000..fb90d10 --- /dev/null +++ b/src/config/rule/charts/pieChart.js @@ -0,0 +1,58 @@ +import {localeOptions, localeProps, makeDataRule} from '../../../utils'; + +const label = '饼图'; +const name = 'pieChart'; + +export default { + menu: 'chart', + icon: 'icon-chart-pie', + label: label, + name: name, + mask: false, + event: ['beforeLoad', 'loaded', 'click'], + rule() { + return { + type: 'fcEcharts', + props: { + type: 'pie', + data: [ + {value: 1048, name: 'Search Engine'}, + {value: 735, name: 'Direct'}, + {value: 580, name: 'Email'}, + {value: 484, name: 'Union Num'}, + {value: 300, name: 'Video Num'} + ] + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'lineChart.props', [ + makeDataRule(t, 'props.data', t('com.lineChart.data')), + { + type: 'input', + field: 'title', + }, + { + type: 'input', + field: 'subtitle', + }, + { + type: 'select', + field: 'pieType', + options: localeOptions(t, [ + {label: 'pie', value: 'pie'}, + {label: 'doughnut', value: 'doughnut'}, + {label: 'half-doughnut', value: 'half-doughnut'}, + ], 'com.lineChart.pieTypeOpt'), + }, + { + type: 'switch', + field: 'showLegend', + value: true, + }, + ]); + }, +}; + + + diff --git a/src/config/rule/charts/radarChart.js b/src/config/rule/charts/radarChart.js new file mode 100644 index 0000000..93571dd --- /dev/null +++ b/src/config/rule/charts/radarChart.js @@ -0,0 +1,71 @@ +import {localeProps, makeDataRule} from '../../../utils'; + +const label = '雷达图'; +const name = 'radarChart'; + +export default { + menu: 'chart', + icon: 'icon-chart-radar', + label: label, + name: name, + mask: false, + event: ['beforeLoad', 'loaded', 'click'], + rule() { + return { + type: 'fcEcharts', + props: { + type: 'radar', + indicator: [ + {name: 'Sales', max: 6500}, + {name: 'Administration', max: 16000}, + {name: 'Information Technology', max: 30000}, + {name: 'Customer Support', max: 38000}, + {name: 'Development', max: 52000}, + {name: 'Marketing', max: 25000} + ], + data: [ + { + value: [4200, 3000, 20000, 35000, 50000, 18000], + name: 'Allocated Budget' + }, + { + value: [5000, 14000, 28000, 26000, 42000, 21000], + name: 'Actual Spending' + } + ] + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'lineChart.props', [ + makeDataRule(t, 'props.data', t('com.lineChart.data')), + { + type: 'TableOptions', + field: 'indicator', + props: { + column: [{label: t('props.name'), key: 'name'}, {label: t('com.lineChart.props.max'), key: 'max'}], + } + }, + { + type: 'input', + field: 'title', + }, + { + type: 'input', + field: 'subtitle', + }, + { + type: 'switch', + field: 'showLegend', + value: true, + }, + { + type: 'switch', + field: 'showSeriesLabel', + }, + ]); + }, +}; + + + diff --git a/src/config/rule/charts/scatterChart.js b/src/config/rule/charts/scatterChart.js new file mode 100644 index 0000000..5803444 --- /dev/null +++ b/src/config/rule/charts/scatterChart.js @@ -0,0 +1,45 @@ +import {localeProps, makeDataRule} from '../../../utils'; + +const label = '散点图'; +const name = 'scatterChart'; + +export default { + menu: 'chart', + icon: 'icon-chart-scatter', + label: label, + name: name, + mask: false, + event: ['beforeLoad', 'loaded', 'click'], + rule() { + return { + type: 'fcEcharts', + props: { + type: 'scatter', + data: [ + [ + [161.2, 51.6], [167.5, 59.0], [159.5, 49.2], [157.0, 63.0], [155.8, 53.6], + [170.0, 59.0], [159.1, 47.6], [166.0, 69.8], [176.2, 66.8], [160.2, 75.2], + ], + [ + [172.5, 55.2], [170.9, 54.2], [172.9, 62.5], [153.4, 42.0], [160.0, 50.0], + [147.2, 49.8], [168.2, 49.2], [175.0, 73.2], [157.0, 47.8], [167.6, 68.8], + ] + ], + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'lineChart.props', [ + makeDataRule(t, 'props.data', t('com.lineChart.data')), + { + type: 'input', + field: 'title', + }, + { + type: 'input', + field: 'subtitle', + }, + ]); + }, +}; + diff --git a/src/config/rule/charts/stripeChart.js b/src/config/rule/charts/stripeChart.js new file mode 100644 index 0000000..9a61fcd --- /dev/null +++ b/src/config/rule/charts/stripeChart.js @@ -0,0 +1,71 @@ +import {localeProps, makeDataRule} from '../../../utils'; + +const label = '条形图'; +const name = 'stripeChart'; + +export default { + menu: 'chart', + icon: 'icon-chart-stripe', + label: label, + name: name, + mask: false, + event: ['beforeLoad', 'loaded', 'click'], + rule() { + return { + type: 'fcEcharts', + props: { + type: 'bar', + stripe: true, + config: { + category: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], + series: [ + { + name: 'Direct', + data: [320, 332, 301, 334, 390, 330, 320] + }, + { + name: 'Direct2', + data: [320, 332, 301, 334, 390, 330, 320] + }, + ] + } + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'lineChart.props', [ + makeDataRule(t, 'props.config', t('com.lineChart.data')), + { + type: 'input', + field: 'title', + }, + { + type: 'input', + field: 'subtitle', + }, + { + type: 'input', + field: 'valueFormat', + value: '{value}' + }, + { + type: 'ColorInput', + field: 'barBackgroundColor', + }, + { + type: 'switch', + field: 'stack', + }, + { + type: 'switch', + field: 'showLegend', + value: true, + }, + { + type: 'switch', + field: 'showSeriesLabel', + }, + ]); + }, +}; + diff --git a/src/config/rule/checkbox.js b/src/config/rule/checkbox.js new file mode 100644 index 0000000..d57d880 --- /dev/null +++ b/src/config/rule/checkbox.js @@ -0,0 +1,88 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps, makeOptionsRule, makeTreeOptions} from '../../utils/index'; + +const label = '多选框'; +const name = 'checkbox'; + +export default { + menu: 'main', + icon: 'icon-checkbox', + label, + name, + input: true, + event: ['change'], + validate: ['array'], + condition: { + type: 'select', + options: 'options' + }, + sfc(rule) { + rule.type = 'elCheckboxGroup'; + rule.children = (rule.options || []).map(opt => { + return { + type: rule.props.type === 'button' ? 'elCheckboxButton' : 'elCheckbox', + props: { + label: opt.value, + value: opt.value, + }, + _sfc:{ + content: opt.label + } + } + }) + delete rule.props.type; + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.checkbox.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: {}, + options: makeTreeOptions(t('props.option'), {label: 'label', value: 'value'}, 1) + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeOptionsRule(t, 'options'), + ...[ + { + type: 'switch', + field: 'disabled' + }, + {type: 'switch', field: 'input'}, + { + type: 'switch', + field: 'type', + props: {activeValue: 'button', inactiveValue: 'default'} + }, + { + field: 'min', + type: 'inputNumber', + props: { + min: 0 + } + }, + { + field: 'max', + type: 'inputNumber', + props: { + min: 0 + } + }, + { + type: 'ColorInput', + field: 'textColor' + }, + { + type: 'ColorInput', + field: 'fill' + } + ] + ]); + } +}; diff --git a/src/config/rule/city.js b/src/config/rule/city.js new file mode 100644 index 0000000..ee41988 --- /dev/null +++ b/src/config/rule/city.js @@ -0,0 +1,62 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {getInjectArg, localeProps} from '../../utils'; + +const label = '省市区选择器'; +const name = 'fcCity'; + +export default { + menu: 'main', + icon: 'icon-city', + label, + name, + input: true, + event: ['change'], + validate: ['array'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.fcCity.name'), + info: '', + $required: false, + props: {} + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'select', + field: 'level', + value: 3, + options: [ + {label: '省会', value: 1}, + {label: '省会/城市', value: 2}, + {label: '省会/城市/区域', value: 3}, + ] + }, + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'clearable' + }, + { + type: 'FnInput', + field: 'filter', + props: { + body: true, + button: true, + fnx: true, + args: [getInjectArg(t)], + name: 'filter', + } + }, + { + type: 'input', + field: 'api' + }, + ]); + } +}; diff --git a/src/config/rule/col.js b/src/config/rule/col.js new file mode 100644 index 0000000..162b939 --- /dev/null +++ b/src/config/rule/col.js @@ -0,0 +1,87 @@ +import {localeProps} from '../../utils'; + +const name = 'col'; + +const devices = { + xs: '<768px', + sm: '≥768px', + md: '≥992px', + lg: '≥1200px', + xl: '≥1920px', +}; + +export default { + name, + label: '格子', + drag: true, + dragBtn: false, + inside: true, + mask: false, + rule() { + return { + type: name, + props: {span: 12}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + {type: 'slider', field: 'span', value: 12, props: {min: 0, max: 24}}, + {type: 'slider', field: 'offset', props: {min: 0, max: 24}}, + {type: 'slider', field: 'push', props: {min: 0, max: 24}}, + {type: 'slider', field: 'pull', props: {min: 0, max: 24}}, + { + type: 'ConfigItem', + props: { + label: t('props.reactive'), + warning: t('com.col.info'), + }, + children: [ + { + type: 'elTabs', + style: { + width: '100%' + }, + slot: 'append', + children: Object.keys(devices).map(k => { + return { + type: 'elTabPane', + props: { + label: devices[k] + }, + style: 'padding:0 10px;', + children: [ + { + type: 'slider', + field: k + '>span', + title: t('com.col.props.span'), + value: 12, + props: {min: 0, max: 24}, + }, + { + type: 'slider', + field: k + '>offset', + title: t('com.col.props.offset'), + props: {min: 0, max: 24}, + }, + { + type: 'slider', + field: k + '>push', + title: t('com.col.props.push'), + props: {min: 0, max: 24}, + }, + { + type: 'slider', + field: k + '>pull', + title: t('com.col.props.pull'), + props: {min: 0, max: 24}, + } + ] + }; + }) + } + ] + }, + ]); + } +}; diff --git a/src/config/rule/collapse.js b/src/config/rule/collapse.js new file mode 100644 index 0000000..64f634c --- /dev/null +++ b/src/config/rule/collapse.js @@ -0,0 +1,47 @@ +import {localeProps} from '../../utils'; + +const label = '折叠面板'; +const name = 'elCollapse'; + +export default { + menu: 'layout', + icon: 'icon-collapse', + label, + name, + mask: false, + children: 'elCollapseItem', + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('props.title'), + vnode: h(resolveComponent('el-input'), { + size: 'small', + modelValue: subRule.props.title, + 'onUpdate:modelValue': (v) => { + subRule.props.title = v; + } + }) + } + ] + }, + event: ['change'], + rule() { + return { + type: name, + props:{ + modelValue: [] + }, + sync: ['modelValue'], + style: { + width: '100%', + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'accordion' + }]); + } +}; diff --git a/src/config/rule/collapseItem.js b/src/config/rule/collapseItem.js new file mode 100644 index 0000000..bdc8479 --- /dev/null +++ b/src/config/rule/collapseItem.js @@ -0,0 +1,39 @@ +import {localeProps} from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +const label = '面板'; +const name = 'elCollapseItem'; + +export default { + icon: 'icon-cell', + label, + name, + drag: true, + dragBtn: false, + inside: true, + mask: false, + easySlots: [{value: 'icon', type: 'icon'}], + rule({t}) { + return { + type: name, + props: { + title: t('com.elCollapseItem.name'), + name: uniqueId(), + }, + style: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'input', + field: 'title', + }, { + type: 'input', + field: 'name', + }, { + type: 'switch', + field: 'disabled' + }]); + } +}; diff --git a/src/config/rule/color.js b/src/config/rule/color.js new file mode 100644 index 0000000..027f8ea --- /dev/null +++ b/src/config/rule/color.js @@ -0,0 +1,85 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '颜色选择器'; +const name = 'colorPicker'; + +export default { + menu: 'main', + icon: 'icon-color', + label, + name, + input: true, + event: ['change', 'activeChange', 'focus', 'blur'], + validate: ['string'], + condition: 'color', + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.colorPicker.name'), + info: '', + $required: false, + props: { + predefine: [ + '#c9e6fc', + '#c3f2f2', + '#c2f1d2', + '#fef6c6', + '#ffe5c2', + '#fdcac2', + '#fadcce', + '#dec2fa', + '#ccd2f1', + '#2196f3', + '#08c9c9', + '#00c344', + '#fad714', + '#ff9300', + '#f52222', + '#eb2f96', + '#800080', + '#7500ea', + '#2d46c4', + '#000000', + '#333333', + '#5a5a5a', + '#757575', + '#9e9e9e', + '#bdbdbd', + '#dddddd', + '#f5f5f5', + '#ffffff', + ] + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'showAlpha' + }, + { + type: 'select', + field: 'colorFormat', + options: [{label: 'hsl', value: 'hsl'}, {label: 'hsv', value: 'hsv'}, { + label: 'hex', + value: 'hex' + }, {label: 'rgb', value: 'rgb'}] + }, + { + type: 'tableOptions', + field: 'predefine', + props: { + column: [{label: t('props.value'), key: 'value'}], + valueType: 'string' + } + }, + ]); + } +}; diff --git a/src/config/rule/dataSelect.js b/src/config/rule/dataSelect.js new file mode 100644 index 0000000..3681f2d --- /dev/null +++ b/src/config/rule/dataSelect.js @@ -0,0 +1,73 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '子表单选择器'; +const name = 'fcDataSelect'; + +export default { + menu: 'main', + icon: 'icon-data-select', + label, + name, + drag: true, + input: true, + mask: false, + subForm: 'scope', + slot: [ + {name: 'search', type: 'fcInlineForm'}, + {name: 'table', type: 'dataTable'}, + ], + event: ['change', 'clear'], + validate: ['object', 'array'], + parseRule(rule) { + rule.children.forEach((item) => { + if (item.slot === 'search') { + delete item.slot; + rule.props.searchRule = item; + } else if (item.slot === 'table') { + delete item.slot; + rule.props.tableRule = item; + } + }) + delete rule.children; + }, + loadRule(rule) { + rule.children = [ + rule.props.searchRule, + rule.props.tableRule, + ] + rule.children[0].slot = 'search'; + rule.children[1].slot = 'table'; + delete rule.props.searchRule; + delete rule.props.tableRule; + }, + rule({t}) { + return { + type: 'fcDataSelect', + field: uniqueId(), + title: t('com.fcDataSelect.name'), + info: '', + $required: false, + props: { + title: t('com.select.title'), + labelKey: 'name', + valueKey: 'name', + } + }; + }, + props(_, {t}) { + return localeProps(t, 'select.props', [ + {type: 'input', field: 'title'}, + {type: 'input', field: 'labelKey', value: 'label'}, + {type: 'input', field: 'valueKey', value: 'value'}, + {type: 'switch', field: 'autoLoad'}, + {type: 'switch', field: 'multiple'}, { + type: 'switch', + field: 'disabled' + }, {type: 'switch', field: 'clearable'}, { + type: 'inputNumber', + field: 'multipleLimit', + props: {min: 0} + }, {type: 'input', field: 'placeholder'}]); + } +}; diff --git a/src/config/rule/dataTable.js b/src/config/rule/dataTable.js new file mode 100644 index 0000000..f2794a0 --- /dev/null +++ b/src/config/rule/dataTable.js @@ -0,0 +1,433 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '数据表格'; +const name = 'dataTable'; + +const makeData = () => { + const data = []; + for (let i = 0; i < 30; i++) { + data.push({ + date: '2016-05-12', + name: 'Tom ' + (10 + i), + state: 'California', + city: 'Los Angeles', + address: 'No. 189, Grove St, Los Angeles', + zip: 'CA 90036', + }) + } + return data; +} + +const sfcContent = (col) => { + if (col.format === 'tag') { + return { + type: 'elTag', + props: { + disableTransitions: true + }, + _sfc: { + content: `{{scope.row.${col.prop}}}` + }, + } + } else if (col.format === 'image') { + return { + type: 'div', + class: '_fc-data-table-img-list', + children: [ + { + type: 'template', + children: [ + { + type: 'el-image', + props: { + previewTeleported: true, + fit: 'cover' + }, + _sfc: { + attr: { + ':initialIndex': 'i', + ':src': 'src', + ':previewSrcList': `Array.isArray(scope.row.${col.prop}) ? scope.row.${col.prop} : [scope.row.${col.prop}]`, + } + } + } + ], + _sfc: { + attr: { + 'v-for': `(src, i) in Array.isArray(scope.row.${col.prop}) ? scope.row.${col.prop} : [scope.row.${col.prop}]` + } + } + } + ] + } + } +} + +export default { + menu: 'main', + icon: 'icon-data-table', + label, + name, + languageKey: ['operation'], + event: ['cellMouseEnter', 'cellMouseLeave', 'handleClick', 'rowClick', 'rowDblclick', 'headerClick', 'filterChange', 'expandChange', 'sortChange', 'selectionChange'], + sfc: { + style: `._fc-data-table { + width: 100%; +} + +._fc-data-table .el-table { + --el-table-header-bg-color: #e8eefc; +} + +._fc-data-table .el-pagination { + display: flex; + margin-top: 10px; +} + +._fc-data-table .el-pagination.left { + justify-content: flex-start; +} + +._fc-data-table .el-pagination.left { + justify-content: center; +} + +._fc-data-table .el-pagination.right { + justify-content: flex-end; +} + +._fc-data-table ._fc-data-table-img-list .el-image { + max-width: 150px; + height: 60px; +}`, + handle(rule) { + const {column, button, page, index, selection, data} = rule.props; + const tableColumns = []; + ['column', 'button', 'index', 'globalDataKey', 'fetch', 'page'].forEach(k => { + delete rule.props[k]; + }) + column.forEach(col => { + const content = sfcContent(col); + const item = { + type: 'elTableColumn', + props: { + label: col.label, + prop: col.prop, + width: col.width, + align: col.align, + className: col.className, + fixed: col.fixed, + sortable: col.sortable, + }, + _sfc: { + attr: { + '#default': 'scope' + }, + } + }; + if (content) { + item.children = [content]; + } + tableColumns.push(item) + }); + + if (button && button.open === true && button.column) { + tableColumns.push({ + type: 'elTableColumn', + props: { + label: button.label || '操作', + fixed: button.fixed === undefined ? 'right' : button.fixed, + width: button.width || '100px', + }, + _sfc: { + attr: { + '#default': 'scope' + }, + }, + children: button.column.map(btn => { + const prop = btn.prop || []; + const item = { + type: 'elButton', + props: { + type: btn.type, + size: btn.size, + }, + _sfc: { + content: btn.name + } + }; + prop.forEach(v => { + item.props[v] = true; + }) + return item; + }) + }) + } + if (selection) { + tableColumns.unshift({ + type: 'elTableColumn', + props: { + type: 'selection', + width: '50px' + }, + }) + } + if (index) { + tableColumns.unshift({ + type: 'elTableColumn', + props: { + type: 'index', + width: '50px' + }, + }) + } + const children = [ + { + type: 'elTable', + props: { + data: [], + ...rule.props + }, + _fc_id: rule._fc_id, + children: tableColumns + } + ]; + if (page && page.open === true) { + const pageSize = (page.props && page.props.pageSize) || 20; + if (page.props) { + delete page.props.pageSize; + } + children.push({ + type: 'elPagination', + class: (page.position || 'right'), + _fc_id: rule._fc_id, + props: { + layout: 'prev, pager, next', + ...(page.props || {}), + }, + _sfc: { + prop: { + total: (data || []).length, + currentPage: 1, + pageSize, + } + }, + }) + } + return { + type: 'div', + class: '_fc-data-table', + children: children + }; + }, + }, + rule() { + return { + type: name, + native: true, + props: { + height: '500px', + button: {}, + data: makeData(), + column: [{ + 'format': 'default', 'prop': 'date', 'label': 'Date', width: '150' + }, { + 'format': 'default', 'prop': 'name', 'label': 'Name', width: '120' + }, { + 'format': 'default', 'prop': 'state', 'label': 'State', width: '120' + }, { + 'format': 'default', 'prop': 'city', 'label': 'City', width: '320' + }, { + 'format': 'default', 'prop': 'address', 'label': 'Address', width: '600' + }, { + 'format': 'default', 'prop': 'zip', 'label': 'Zip', width: '120' + }] + }, + }; + }, + props(_, {t}) { + const propsT = function (list) { + return localeProps(t, name + '.props', list); + } + const rule1 = propsT([{ + type: 'input', field: 'page>totalField', value: 'count', + }, { + type: 'input', field: 'page>dataField', value: 'list', + }, { + type: 'input', field: 'page>orderField', value: 'order', + }, { + type: 'input', field: 'page>orderByField', value: 'orderBy', + }, { + type: 'input', field: 'page>pageField', value: 'page', + }, { + type: 'input', + field: 'page>pageSizeField', + value: 'limit', + }]); + + return localeProps(t, name + '.props', [{ + type: 'radio', + field: '_optionType', + value: 0, + options: [ + {'label': t('fetch.optionsType.struct'), 'value': 0}, + {'label': t('fetch.optionsType.fetch'), 'value': 2}, + {'label': t('fetch.optionsType.global'), 'value': 1}, + ], + props: { + type: 'button' + }, + control: [{ + value: 1, + rule: [{ + type: 'GlobalFetchSelect', field: 'globalDataKey', + }, ...rule1] + }, { + value: 2, + rule: [{ + type: 'FetchConfig', field: 'fetch', + }, ...rule1] + }, { + value: 0, + rule: [{ + type: 'Struct', + title: t('com.dataTable.props._optionType'), + field: 'data', + _fc_important_prop: true, + props: { + validate(val) { + return !val || Array.isArray(val); + } + } + }], + }] + }, { + type: 'TableColumnConfig', + field: 'column', + _fc_important_prop: true, + }, { + type: 'select', field: 'size', + options: localeOptions(t, [ + {label: 'large', value: 'large'}, + {label: 'default', value: 'default'}, + {label: 'small', value: 'small'} + ]) + }, { + type: 'ConfigItem', props: { + label: t('com.dataTable.props.button') + }, col: { + show: true + }, children: [{ + type: 'HideConfig', + title: t('com.dataTable.props.button'), + wrap: {show: false}, + col: {show: false}, + field: 'button>open' + }, { + type: 'template', + slot: 'append', + children: propsT([{ + type: 'TableButtonConfig', + col: {show: false}, + field: 'button>column', + }, { + type: 'input', + col: {show: false}, + field: 'button>label', + value: '操作' + }, { + type: 'select', + col: {show: false}, + field: 'button>fixed', + options: [ + {label: t('com.dataTable.fixed.default'), value: false}, + {label: t('com.dataTable.fixed.left'), value: 'left'}, + {label: t('com.dataTable.fixed.right'), value: 'right'} + ], + value: 'right', + }, { + type: 'SizeInput', + col: {show: false}, + field: 'button>width', + value: '100px' + },]) + }] + }, { + type: 'ConfigItem', + props: { + label: t('com.dataTable.props.page') + }, col: { + show: true + }, children: [{ + type: 'HideConfig', + wrap: { + show: false + }, + col: { + show: false + }, + title: t('com.dataTable.props.page'), + field: 'page>open' + }, { + type: 'template', + slot: 'append', + children: propsT([{ + type: 'select', + field: 'page>position', + value: 'right', + col: { + show: false + }, + options: localeOptions(t, [ + { + label: 'left', value: 'left', + }, + { + label: 'center', value: 'center', + }, + { + label: 'right', value: 'right', + } + ]) + }, { + type: 'inputNumber', + col: { + show: false + }, + field: 'page>props>pageSize', + value: 20, + }, { + type: 'switch', + col: { + show: false + }, + field: 'page>props>small', + }, { + type: 'switch', + col: { + show: false + }, + field: 'page>props>background', + }]) + }] + }, { + type: 'input', field: 'rowKey', + }, { + type: 'input', field: 'emptyText', + }, { + type: 'SizeInput', field: 'height', + }, { + type: 'switch', field: 'showSummary', + }, { + type: 'switch', field: 'selection', + }, { + type: 'switch', field: 'index', + }, { + type: 'switch', field: 'stripe', + }, { + type: 'switch', field: 'border', + }, { + type: 'switch', field: 'defaultExpandAll', + }]); + } +}; diff --git a/src/config/rule/date.js b/src/config/rule/date.js new file mode 100644 index 0000000..65f706b --- /dev/null +++ b/src/config/rule/date.js @@ -0,0 +1,86 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '日期'; +const name = 'datePicker'; + +export const DEFAULT_FORMATS = { + date: 'YYYY-MM-DD', + month: 'YYYY-MM', + datetime: 'YYYY-MM-DD HH:mm:ss', + timerange: 'HH:mm:ss', + daterange: 'YYYY-MM-DD', + monthrange: 'YYYY-MM', + datetimerange: 'YYYY-MM-DD HH:mm:ss', + year: 'YYYY' +}; + +export default { + menu: 'main', + icon: 'icon-date', + label, + name, + input: true, + event: ['change', 'blur', 'focus', 'calendarChange', 'panelChange', 'visibleChange'], + sfc(rule) { + if (!rule.props.valueFormat) { + rule.props.valueFormat = DEFAULT_FORMATS[rule.props.type] || DEFAULT_FORMATS['date']; + } + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.datePicker.name'), + info: '', + $required: false, + props: {}, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'switch', field: 'readonly'}, { + type: 'switch', + field: 'disabled' + }, { + type: 'select', + field: 'type', + options: localeOptions(t, [{label: 'year', value: 'year'}, {label: 'month', value: 'month'}, { + label: 'date', + value: 'date' + }, {label: 'dates', value: 'dates'}, {label: 'week', value: 'week'}, { + label: 'datetime', + value: 'datetime' + }, {label: 'datetimerange', value: 'datetimerange'}, { + label: 'daterange', + value: 'daterange' + }, {label: 'monthrange', value: 'monthrange'}]) + }, { + type: 'switch', + field: 'clearable', + value: true + }, { + type: 'Struct', + field: 'pickerOptions', + props: {defaultValue: {}} + }, {type: 'switch', field: 'editable', value: true}, { + type: 'input', + field: 'placeholder' + }, { + type: 'input', + field: 'startPlaceholder' + }, {type: 'input', field: 'endPlaceholder'}, { + type: 'input', + field: 'format' + }, { + type: 'select', + field: 'align', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }, {type: 'input', field: 'rangeSeparator'}, { + type: 'switch', + field: 'unlinkPanels' + }]); + } +}; diff --git a/src/config/rule/dateRange.js b/src/config/rule/dateRange.js new file mode 100644 index 0000000..a23adda --- /dev/null +++ b/src/config/rule/dateRange.js @@ -0,0 +1,66 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; +import date from './date'; + +const label = '日期区间'; +const name = 'dateRange'; + +export default { + menu: 'main', + icon: 'icon-date-range', + label, + name, + input: true, + event: ['change', 'blur', 'focus', 'calendarChange', 'panelChange', 'visibleChange'], + sfc: date.sfc, + rule({t}) { + return { + type: 'datePicker', + field: uniqueId(), + title: t('com.dateRange.name'), + info: '', + $required: false, + props: { + type: 'datetimerange', + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'datePicker.props', [{type: 'switch', field: 'readonly'}, { + type: 'switch', + field: 'disabled' + }, { + type: 'select', + field: 'type', + options: localeOptions(t, [ + {label: 'datetimerange', value: 'datetimerange'}, + {label: 'daterange', value: 'daterange'}, + {label: 'monthrange', value: 'monthrange'} + ]) + }, { + type: 'switch', + field: 'clearable', + value: true + }, { + type: 'Struct', + field: 'pickerOptions', + props: {defaultValue: {}} + }, {type: 'switch', field: 'editable', value: true}, { + type: 'input', + field: 'startPlaceholder' + }, {type: 'input', field: 'endPlaceholder'}, { + type: 'input', + field: 'format' + }, { + type: 'select', + field: 'align', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }, {type: 'input', field: 'rangeSeparator'}, { + type: 'switch', + field: 'unlinkPanels' + }]); + } +}; diff --git a/src/config/rule/descriptions.js b/src/config/rule/descriptions.js new file mode 100644 index 0000000..386e10d --- /dev/null +++ b/src/config/rule/descriptions.js @@ -0,0 +1,73 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '描述列表'; +const name = 'elDescriptions'; + +export default { + menu: 'layout', + icon: 'icon-descriptions', + label, + name, + mask: false, + rule() { + return { + type: name, + props: { + border: true + }, + style: { + width: '100%' + }, + children: [] + }; + }, + children: 'elDescriptionsItem', + childrenLen: 2, + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('props.title'), + vnode: h(resolveComponent('el-input'), { + size: 'small', + modelValue: subRule.props.label, + 'onUpdate:modelValue': (v) => { + subRule.props.label = v; + } + }) + } + ] + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'input', + field: 'title', + value: '', + }, { + type: 'input', + field: 'extra', + value: '', + }, { + type: 'inputNumber', + field: 'column', + value: 3, + props: {min: 0} + }, { + type: 'switch', + field: 'border' + }, { + type: 'select', + field: 'direction', + options: localeOptions(t, [{label: 'vertical', value: 'vertical'}, { + label: 'horizontal', + value: 'horizontal' + }]) + }, { + type: 'select', + field: 'size', + options: localeOptions(t, [{label: 'large', value: 'large'}, {label: 'default', value: 'default'}, { + label: 'small', + value: 'small' + }]) + }]); + } +}; diff --git a/src/config/rule/descriptionsItem.js b/src/config/rule/descriptionsItem.js new file mode 100644 index 0000000..d0aab8f --- /dev/null +++ b/src/config/rule/descriptionsItem.js @@ -0,0 +1,61 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '描述格子'; +const name = 'elDescriptionsItem'; + +export default { + icon: 'icon-cell', + label, + name, + dragBtn: false, + inside: true, + mask: false, + rule({t}) { + return { + type: name, + props: { + label: t('props.title'), + }, + children: [t('props.content')], + }; + }, + watch: { + __child({value, rule}) { + rule.children[0].children[0] = value; + }, + }, + attrs: { + child({rule}) { + return rule.children[0].children[0] || ''; + }, + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + {type: 'input', field: 'label'}, { + type: 'input', + field: '__child', + _fc_important_prop: 'formCreateChild', + }, { + type: 'inputNumber', + field: 'span' + }, { + type: 'input', + field: 'width' + }, { + type: 'input', + field: 'minWidth' + }, { + type: 'select', field: 'align', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }, { + type: 'select', field: 'labelAlign', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }, {type: 'input', field: 'className'}]); + } +}; diff --git a/src/config/rule/dialog.js b/src/config/rule/dialog.js new file mode 100644 index 0000000..624fec5 --- /dev/null +++ b/src/config/rule/dialog.js @@ -0,0 +1,98 @@ +import {getInjectArg, localeProps} from '../../utils'; + +const name = 'fcDialog'; + +export default { + name, + icon: 'icon-dialog', + label: '弹出框', + drag: true, + dragBtn: false, + handleBtn: false, + inside: false, + mask: false, + style: false, + advanced: false, + input: true, + subForm: 'object', + hiddenBaseField: ['title', 'info', 'formCreateCol>span', 'labelConfig', '_control'], + languageKey: ['close', 'ok'], + event: ['confirm', 'submit', 'validateFail', 'open', 'opened', 'close', 'closed', 'openAutoFocus', 'closeAutoFocus'], + container: { + formDataField: 'value', + labelField: 'props.title', + }, + loadRule(rule) { + rule.children = rule.props.rule || []; + if (rule.native == null) { + rule.native = true; + } + if (rule.ignore == null) { + rule.ignore = true; + } + delete rule.props.rule; + }, + parseRule(rule) { + rule.props.rule = rule.children || []; + rule.children = []; + }, + rule({t}) { + return { + type: name, + props: { + title: t('com.' + name + '.name'), + }, + native: true, + ignore: true, + children: [], + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'title', + }, + { + type: 'SizeInput', + field: 'width', + value: '50%' + }, + { + type: 'switch', + field: 'fullscreen', + }, + { + type: 'switch', + field: 'preview', + title: t('form.previewMode') + }, + { + type: 'switch', + field: 'modal', + value: true, + }, + { + type: 'switch', + field: 'footer', + value: true, + }, + { + type: 'switch', + field: 'autoClose', + value: true, + }, + { + type: 'FnInput', + field: 'beforeClose', + props: { + body: true, + button: true, + fnx: true, + name: 'beforeClose', + args: [getInjectArg(t)], + }, + } + ]); + } +}; diff --git a/src/config/rule/divider.js b/src/config/rule/divider.js new file mode 100644 index 0000000..813260b --- /dev/null +++ b/src/config/rule/divider.js @@ -0,0 +1,35 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '分割线'; +const name = 'elDivider'; + +export default { + menu: 'aide', + icon: 'icon-divider', + label, + name, + rule({t}) { + return { + type: name, + props: {}, + children: [t('com.elDivider.name')], + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'select', + field: 'direction', + options: localeOptions(t, [{label: 'horizontal', value: 'horizontal'}, {label: 'vertical', value: 'vertical'}]) + }, { + type: 'input', + field: 'formCreateChild', + }, { + type: 'select', + field: 'contentPosition', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'right', value: 'right'}, { + label: 'center', + value: 'center' + }]) + }]); + } +}; diff --git a/src/config/rule/drawer.js b/src/config/rule/drawer.js new file mode 100644 index 0000000..38bcb27 --- /dev/null +++ b/src/config/rule/drawer.js @@ -0,0 +1,103 @@ +import {getInjectArg, localeOptions, localeProps} from '../../utils'; + +const name = 'fcDrawer'; + +export default { + name, + icon: 'icon-dialog', + label: '抽屉', + drag: true, + dragBtn: false, + handleBtn: false, + inside: false, + mask: false, + style: false, + advanced: false, + input: true, + subForm: 'object', + hiddenBaseField: ['title', 'info', 'formCreateCol>span', 'labelConfig', '_control'], + languageKey: ['close', 'ok'], + event: ['confirm', 'submit', 'validateFail', 'open', 'opened', 'close', 'closed', 'openAutoFocus', 'closeAutoFocus'], + container: { + formDataField: 'value', + labelField: 'props.title', + }, + loadRule(rule) { + rule.children = rule.props.rule || []; + if (rule.native == null) { + rule.native = true; + } + if (rule.ignore == null) { + rule.ignore = true; + } + delete rule.props.rule; + }, + parseRule(rule) { + rule.props.rule = rule.children || []; + rule.children = []; + }, + rule({t}) { + return { + type: name, + props: { + title: t('com.' + name + '.name'), + }, + native: true, + ignore: true, + children: [], + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'title', + }, + { + type: 'SizeInput', + field: 'size', + value: '30%' + }, + { + type: 'select', + field: 'direction', + options: localeOptions(t, [ + {label: 'ltr', value: 'ltr'}, + {label: 'rtl', value: 'rtl'} + ], 'com.fcDrawer.directionType'), + value: 'rtl', + }, + { + type: 'switch', + field: 'preview', + title: t('form.previewMode') + }, + { + type: 'switch', + field: 'modal', + value: true, + }, + { + type: 'switch', + field: 'footer', + value: true, + }, + { + type: 'switch', + field: 'autoClose', + value: true, + }, + { + type: 'FnInput', + field: 'beforeClose', + props: { + body: true, + button: true, + fnx: true, + name: 'beforeClose', + args: [getInjectArg(t)], + }, + } + ]); + } +}; diff --git a/src/config/rule/editor.js b/src/config/rule/editor.js new file mode 100644 index 0000000..09c807c --- /dev/null +++ b/src/config/rule/editor.js @@ -0,0 +1,31 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '富文本框'; +const name = 'fcEditor'; + +export default { + menu: 'main', + icon: 'icon-editor', + label, + name, + input: true, + event: ['change'], + validate: ['string'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.fcEditor.name'), + info: '', + $required: false, + props: {}, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'disabled' + }]); + } +}; diff --git a/src/config/rule/flex.js b/src/config/rule/flex.js new file mode 100644 index 0000000..ed8f92a --- /dev/null +++ b/src/config/rule/flex.js @@ -0,0 +1,54 @@ +const label = '盒子布局'; +const name = 'fcFlex'; + +export default { + icon: 'icon-flex', + label, + name, + mask: false, + children: 'fcCell', + childrenLen: 2, + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('style.width'), + vnode: h(resolveComponent('SizeInput'), { + size: 'small', + modelValue: (subRule.style && subRule.style.width) || '', + 'onUpdate:modelValue': (v) => { + if (!subRule.style) { + subRule.style = {}; + } + subRule.style.width = v; + } + }) + }, + { + label: t('style.height'), + vnode: h(resolveComponent('SizeInput'), { + size: 'small', + modelValue: (subRule.style && subRule.style.height) || 'auto', + 'onUpdate:modelValue': (v) => { + if (!subRule.style) { + subRule.style = {}; + } + subRule.style.height = v; + } + }) + }, + ] + }, + sfc(rule) { + rule.type = 'elRow'; + }, + rule() { + return { + type: 'fcRow', + props: {}, + children: [] + }; + }, + props() { + return []; + } +}; diff --git a/src/config/rule/flex2.js b/src/config/rule/flex2.js new file mode 100644 index 0000000..989a9f8 --- /dev/null +++ b/src/config/rule/flex2.js @@ -0,0 +1,124 @@ +const label = '盒子布局'; +const name = 'fcFlex2'; + + +export default { + menu: 'layout', + icon: 'icon-flex', + name, + label, + drag: true, + inside: true, + inline: true, + mask: false, + sfc(rule) { + rule.type = 'div'; + }, + actions: [ + { + label: 'com.fcFlex2.horizontal', + handler(rule) { + if (!rule.style) { + rule.style = {}; + } + if (rule.style.display !== 'flex') { + rule.style.display = 'flex'; + rule.style.flexDirection = 'row'; + rule.style.justifyContent = 'center'; + } else if (['column-reverse', 'column'].indexOf(rule.style.flexDirection) > -1) { + rule.style.alignItems = 'center'; + } else { + rule.style.justifyContent = 'center'; + } + } + }, + { + label: 'com.fcFlex2.vertical', + handler(rule) { + if (!rule.style) { + rule.style = {}; + } + if (rule.style.display !== 'flex') { + rule.style.display = 'flex'; + rule.style.flexDirection = 'row'; + rule.style.alignItems = 'center'; + } else if (['column-reverse', 'column'].indexOf(rule.style.flexDirection) > -1) { + rule.style.justifyContent = 'center'; + } else { + rule.style.alignItems = 'center'; + } + } + }, + { + label: 'com.fcFlex2.left', + handler(rule) { + if (!rule.style) { + rule.style = {}; + } + if (rule.style.display !== 'flex') { + rule.style.display = 'flex'; + rule.style.flexDirection = 'row'; + rule.style.justifyContent = 'flex-start'; + } else if (['column-reverse', 'column'].indexOf(rule.style.flexDirection) > -1) { + rule.style.alignItems = 'flex-start'; + } else { + rule.style.justifyContent = 'flex-start'; + } + } + }, + { + label: 'com.fcFlex2.right', + handler(rule) { + if (!rule.style) { + rule.style = {}; + } + if (rule.style.display !== 'flex') { + rule.style.display = 'flex'; + rule.style.flexDirection = 'row'; + rule.style.justifyContent = 'flex-end'; + } else if (['column-reverse', 'column'].indexOf(rule.style.flexDirection) > -1) { + rule.style.alignItems = 'flex-end'; + } else { + rule.style.justifyContent = 'flex-end'; + } + } + }, + { + label: 'com.fcFlex2.reset', + handler(rule) { + if (!rule.style) { + rule.style = {}; + } else { + delete rule.style.flexDirection; + delete rule.style.justifyContent; + delete rule.style.alignContent; + delete rule.style.flexWrap; + delete rule.style.alignItems; + rule.style.display = 'flex'; + } + } + }, + ], + rule() { + return { + type: 'fcCell', + style: { + display: 'block', + width: '100%', + height: '100px', + }, + children: [], + }; + }, + props(_, {t}) { + return [{ + type: 'SizeInput', + field: 'formCreateStyle>width', + title: t('style.width') + }, { + type: 'SizeInput', + field: 'formCreateStyle>height', + title: t('style.height') + }] + } +}; diff --git a/src/config/rule/formItem.js b/src/config/rule/formItem.js new file mode 100644 index 0000000..bb2942a --- /dev/null +++ b/src/config/rule/formItem.js @@ -0,0 +1,48 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '表单项'; +const name = 'elFormItem'; + +export default { + menu: 'container', + icon: 'icon-form-item', + label, + name, + drag: true, + mask: false, + event: false, + rule({t}) { + return { + type: name, + props: { + label: t('com.elFormItem.name'), + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + {type: 'input', field: 'label'}, + {type: 'SizeInput', field: 'labelWidth'}, + { + type: 'select', + field: 'formCreateClass', + title: t('form.labelPosition'), + options: localeOptions(t, [ + {value: 'fc-wrap-top', label: 'top'}, + {value: 'fc-wrap-left', label: 'left'}, + {value: 'fc-wrap-right', label: 'right'}, + ]), + }, + { + type: 'select', + field: 'size', + options: localeOptions(t, [ + {label: 'large', value: 'large'}, + {label: 'default', value: 'default'}, + {label: 'small', value: 'small'} + ]) + }, + ]); + } +}; diff --git a/src/config/rule/group.js b/src/config/rule/group.js new file mode 100644 index 0000000..1407ea1 --- /dev/null +++ b/src/config/rule/group.js @@ -0,0 +1,54 @@ +import {localeProps} from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +const label = '子表单'; +const name = 'group'; + +export default { + menu: 'subform', + icon: 'icon-subform', + label, + name, + input: true, + inside: false, + drag: true, + dragBtn: true, + mask: false, + event: ['change'], + subForm: 'array', + loadRule(rule) { + rule.children = rule.props.rule || []; + rule.type = 'FcRow'; + delete rule.props.rule; + }, + parseRule(rule) { + rule.props.rule = rule.children; + rule.type = 'group'; + delete rule.children; + delete rule.props.mode; + }, + sfc: false, + rule({t}) { + return { + type: 'fcRow', + field: uniqueId(), + title: t('com.group.name'), + info: '', + $required: false, + props: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'disabled' + }, + {type: 'switch', field: 'button', value: true}, + {type: 'switch', field: 'sortBtn', value: true}, + {type: 'inputNumber', field: 'expand'}, + {type: 'inputNumber', field: 'min'}, + {type: 'inputNumber', field: 'max'}, + ]); + } +}; diff --git a/src/config/rule/html.js b/src/config/rule/html.js new file mode 100644 index 0000000..2a05f6c --- /dev/null +++ b/src/config/rule/html.js @@ -0,0 +1,33 @@ +import {localeProps} from '../../utils'; + +const label = 'HTML'; +const name = 'html'; + +export default { + menu: 'aide', + icon: 'icon-html', + label, + name, + sfc(rule){ + rule.type = 'div'; + }, + rule() { + return { + type: name, + title: '', + style: { + display: 'block', + width: '100%', + }, + children: ['
HTMLHTMLHTMLHTMLHTMLHTMLHTMLHTMLHTMLHTMLHTML
'], + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'HtmlEditor', + field: 'formCreateChild', + } + ]); + } +}; diff --git a/src/config/rule/id.js b/src/config/rule/id.js new file mode 100644 index 0000000..0506e48 --- /dev/null +++ b/src/config/rule/id.js @@ -0,0 +1,32 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '唯一值'; +const name = 'fcId'; + +export default { + menu: 'main', + icon: 'icon-input-id', + label, + name, + input: true, + validate: false, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.fcId.name'), + info: '', + $required: false, + props: {} + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'prefix' + } + ]) + } +}; diff --git a/src/config/rule/iframe.js b/src/config/rule/iframe.js new file mode 100644 index 0000000..804b55a --- /dev/null +++ b/src/config/rule/iframe.js @@ -0,0 +1,39 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '内嵌网页'; +const name = 'iframeBox'; + +export default { + menu: 'aide', + icon: 'icon-iframe', + label: label, + name: name, + mask: true, + event: ['load'], + rule() { + return { + type: name, + props: { + src: 'https://github.com/xaboy/form-create', + }, + }; + }, + props(_, {t}) { + return localeProps(t, 'iframeBox.props', [ + { + type: 'input', + field: 'src', + }, + { + type: 'select', + field: 'loading', + value: 'eager', + options: localeOptions(t, [ + {label: 'eager', value: 'eager'}, + {label: 'lazy', value: 'lazy'}, + ], 'com.iframeBox.loadingOpt'), + }, + ]); + }, +}; + diff --git a/src/config/rule/image.js b/src/config/rule/image.js new file mode 100644 index 0000000..2438013 --- /dev/null +++ b/src/config/rule/image.js @@ -0,0 +1,41 @@ +import {localeProps} from '../../utils'; + +const label = '图片'; +const name = 'elImage'; + +export default { + menu: 'aide', + icon: 'icon-image', + label, + name, + inline: true, + rule() { + return { + type: name, + title: '', + style: { + width: '100px', + height: '100px', + }, + props: { + src: 'https://static.form-create.com/example.png', + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'src', + }, + { + type: 'TableOptions', + field: 'previewSrcList', + props: { + column: [{label: t('com.elImage.props.src'), key: 'value'}], + valueType: 'string' + } + }, + ]); + } +}; diff --git a/src/config/rule/infiniteTableForm.js b/src/config/rule/infiniteTableForm.js new file mode 100644 index 0000000..63c8d72 --- /dev/null +++ b/src/config/rule/infiniteTableForm.js @@ -0,0 +1,99 @@ +import unique from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '无限级表单'; +const name = 'infiniteTableForm'; + +export default { + menu: 'subform', + icon: 'icon-table-form3', + label, + name, + input: true, + mask: false, + subForm: 'array', + languageKey: ['add', 'operation'], + event: ['change', 'add', 'delete'], + children: 'tableFormColumn', + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('props.title'), + vnode: h(resolveComponent('el-input'), { + size: 'small', + modelValue: subRule.props.label, + 'onUpdate:modelValue': (v) => { + subRule.props.label = v; + } + }) + } + ] + }, + loadRule(rule) { + if (!rule.props) rule.props = {}; + const columns = rule.props.columns || []; + rule.children = columns.map(column => { + return { + type: 'tableFormColumn', + _fc_drag_tag: 'tableFormColumn', + props: { + label: column.label, + required: column.required || false, + width: column.style.width || '', + color: column.style.color || '', + }, + children: column.rule || [] + } + }); + delete rule.props.columns; + }, + parseRule(rule) { + const children = rule.children || []; + rule.props.columns = children.map(column => { + return { + label: column.props.label, + required: column.props.required, + style: { + width: column.props.width, + color: column.props.color, + }, + rule: column.children || [] + }; + }) + rule.children = []; + }, + sfc: false, + rule({t}) { + return { + type: name, + field: unique(), + title: t('com.' + name + '.name'), + info: '', + props: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'input', + field: 'childrenField', + value: 'children' + }, + { + type: 'inputNumber', + field: 'max', + props: {min: 0} + }, + { + type: 'inputNumber', + field: 'layerMax', + props: {min: 0} + } + ]); + } +}; diff --git a/src/config/rule/inlineForm.js b/src/config/rule/inlineForm.js new file mode 100644 index 0000000..49957a6 --- /dev/null +++ b/src/config/rule/inlineForm.js @@ -0,0 +1,41 @@ +const label = '内联布局'; +const name = 'fcInlineForm'; + +export default { + menu: 'layout', + icon: 'icon-inline', + label, + name, + denyDrag: { + menu: ['subform', 'layout'] + }, + drag: true, + inside: false, + mask: false, + sfc: { + style: `._fc-line-form .el-form-item { + display: inline-flex; + vertical-align: middle; +} + +._fc-line-form .el-select, ._fc-line-form .el-slider { + width: 220px; +}`, + handle(rule) { + return { + type: 'div', + class: '_fc-line-form', + children: rule.children + }; + } + }, + rule() { + return { + type: name, + props: {}, + }; + }, + props() { + return []; + } +}; diff --git a/src/config/rule/input.js b/src/config/rule/input.js new file mode 100644 index 0000000..7d1f097 --- /dev/null +++ b/src/config/rule/input.js @@ -0,0 +1,63 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '输入框'; +const name = 'input'; + +export default { + menu: 'main', + icon: 'icon-input', + label, + name, + input: true, + easySlots: ['prefix', 'suffix', 'prepend', 'append'], + event: ['blur', 'focus', 'change', 'input', 'clear'], + validate: ['string', 'url', 'email'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.input.name'), + info: '', + $required: false, + props: {} + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'readonly' + }, + { + type: 'select', + field: 'type', + options: localeOptions(t, [ + {label: 'text', value: 'text'}, + {label: 'number', value: 'number'}, + {label: 'time', value: 'time'}, + {label: 'date', value: 'date'}, + {label: 'month', value: 'month'}, + {label: 'datetime-local', value: 'datetime-local'}, + ]) + }, + { + type: 'inputNumber', + field: 'maxlength', + props: {min: 0} + }, + { + type: 'input', + field: 'placeholder' + }, + { + type: 'switch', + field: 'clearable' + }, + ]); + } +}; diff --git a/src/config/rule/json.js b/src/config/rule/json.js new file mode 100644 index 0000000..42ab432 --- /dev/null +++ b/src/config/rule/json.js @@ -0,0 +1,129 @@ +import {localeOptions, localeProps} from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +const label = '动态区域'; +const name = 'fcJson'; + +export default { + menu: 'container', + icon: 'icon-json', + label, + name, + input: true, + mask: true, + style: false, + sfc: false, + rule() { + return { + type: name, + field: uniqueId(), + props: { + expand: 1, + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'radio', + field: '_loadType', + value: 2, + props: { + type: 'button' + }, + options: [ + {'label': t('fetch.optionsType.struct'), 'value': 2}, + {'label': t('fetch.optionsType.fetch'), 'value': 3}, + {'label': t('fetch.optionsType.global'), 'value': 1}, + ], + control: [{ + value: 1, + rule: [ + { + type: 'GlobalFetchSelect', + field: 'formCreateEffect>fetch', + props: { + to: 'props.rule' + } + } + ] + }, { + value: 2, + rule: [ + { + type: 'Struct', + field: 'rule', + title: t('com.fcJson.props._loadType'), + _fc_important_prop: true, + wrap: {show: false}, + }, + ], + }, { + value: 3, + rule: [ + { + type: 'FetchConfig', + field: 'formCreateEffect>fetch', + props: { + to: 'props.rule' + } + } + ] + }] + }, { + type: 'select', + field: 'type', + options: localeOptions(t, [ + {label: t('props.default'), value: 'default'}, + {label: t('com.group.name'), value: 'array'}, + {label: t('com.subForm.name'), value: 'object'}, + ]), + control: [ + { + value: 'array', + method: 'hidden', + rule: localeProps(t, 'group.props', [{ + type: 'switch', + field: 'disabled', + ignore: 'hidden', + }, + { + type: 'switch', + field: 'button', + ignore: 'hidden', + value: true + }, + { + type: 'switch', + field: 'sortBtn', + ignore: 'hidden', + value: true + }, + { + type: 'inputNumber', + field: 'expand', + ignore: 'hidden', + }, + { + type: 'inputNumber', + field: 'min', + ignore: 'hidden', + }, + { + type: 'inputNumber', + field: 'max', + ignore: 'hidden', + }]) + }, + { + value: 'object', + method: 'hidden', + rule: localeProps(t, 'group.props', [{ + type: 'switch', + field: 'disabled', + ignore: 'hidden', + }]) + }, + ] + }]); + } +}; diff --git a/src/config/rule/link.js b/src/config/rule/link.js new file mode 100644 index 0000000..719a1e5 --- /dev/null +++ b/src/config/rule/link.js @@ -0,0 +1,58 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '链接'; +const name = 'elLink'; + +export default { + menu: 'aide', + icon: 'icon-link', + label, + name, + inline: true, + easySlots: [{value: 'icon', type: 'icon'}], + rule({t}) { + return { + type: name, + title: '', + children: [t('com.elLink.name')], + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'href' + }, { + type: 'input', + field: 'formCreateChild', + }, { + type: 'select', + field: 'target', + options: localeOptions(t, [ + {label: '_self', value: '_self'}, + {label: '_blank', value: '_blank'}, + {label: '_parent', value: '_parent'}, + {label: '_top', value: '_top'}, + ]) + }, { + type: 'switch', + field: 'underline', + value: true + }, { + type: 'switch', + field: 'disabled' + }, { + type: 'select', + field: 'type', + options: localeOptions(t, [ + {label: 'primary', value: 'primary'}, + {label: 'success', value: 'success'}, + {label: 'warning', value: 'warning'}, + {label: 'danger', value: 'danger'}, + {label: 'info', value: 'info'}, + {label: 'default', value: 'default'}, + ]) + } + ]); + } +}; diff --git a/src/config/rule/markdown.js b/src/config/rule/markdown.js new file mode 100644 index 0000000..2ad135e --- /dev/null +++ b/src/config/rule/markdown.js @@ -0,0 +1,153 @@ +const label = 'Markdown'; +const name = 'markdown'; + +export default { + menu: 'aide', + icon: 'icon-markdown', + label, + name, + rule() { + return { + type: 'FcMarkdown', + native: true, + props: { + content: '### 标题\n' + + '\n' + + '使用 # 号创建标题\n' + + '\n' + + '```\n' + + '# 一级标题\n' + + '## 二级标题\n' + + '### 三级标题\n' + + '```\n' + + '\n' + + '### 粗体\n' + + '\n' + + '使用 ** 包围文本\n' + + '\n' + + '```\n' + + '**粗体文本**\n' + + '```\n' + + '\n' + + '### 斜体\n' + + '\n' + + '使用 * 包围文本\n' + + '\n' + + '```\n' + + '*斜体文本*\n' + + '```\n' + + '\n' + + '### 删除线\n' + + '\n' + + '使用 ~~ 包围文本\n' + + '\n' + + '```\n' + + '~~删除线文本~~\n' + + '```\n' + + '\n' + + '### 链接\n' + + '\n' + + '使用 [文本](链接) 格式\n' + + '\n' + + '```\n' + + '[链接文本](https://example.com)\n' + + '```\n' + + '\n' + + '### 图片\n' + + '\n' + + '使用 ![描述|宽度x高度](图片链接) 格式\n' + + '\n' + + '```\n' + + '![图片固定|400x300](https://example.com/image.jpg)\n' + + '![图片](https://example.com/image.jpg)\n' + + '```\n' + + '\n' + + '### 代码块\n' + + '\n' + + '使用 ``` 包围代码\n' + + '\n' + + '````\n' + + '```js\n' + + 'function hello() {\n' + + ' console.log(\'Hello\');\n' + + '}\n' + + '```\n' + + '````\n' + + '\n' + + '### 行内代码\n' + + '\n' + + '使用 ` 包围代码\n' + + '\n' + + '```\n' + + '`行内代码`\n' + + '```\n' + + '\n' + + '### 引用\n' + + '\n' + + '使用 > 开始引用\n' + + '\n' + + '```\n' + + '> 这是一段引用文本\n' + + '```\n' + + '\n' + + '### 无序列表\n' + + '\n' + + '使用 - 开始列表项\n' + + '\n' + + '```\n' + + '- 项目1\n' + + '- 项目2\n' + + '- 项目3\n' + + '```\n' + + '\n' + + '### 有序列表\n' + + '\n' + + '使用 1. 开始列表项\n' + + '\n' + + '```\n' + + '1. 第一项\n' + + '2. 第二项\n' + + '3. 第三项\n' + + '```\n' + + '\n' + + '### 表格\n' + + '\n' + + '使用 | 分隔列\n' + + '\n' + + '```\n' + + '| 左对齐 | 居中对齐 | 右对齐 |\n' + + '|:-------|:-------:|-------:|\n' + + '| 数据1 | 数据2 | 数据3 |\n' + + '```\n' + + '\n' + + '### 水平分割线\n' + + '\n' + + '使用 --- 创建分割线\n' + + '\n' + + '```\n' + + '---\n' + + '```\n' + + '\n' + + '### 强制换行\n' + + '\n' + + '使用
标签实现多次换行\n' + + '\n' + + '```\n' + + '第一行

第三行\n' + + '```\n' + } + }; + }, + props(_, {t}) { + return [ + { + type: 'HtmlEditor', + field: 'content', + title: t('props.content'), + props: { + text: true, + } + } + ]; + } +}; diff --git a/src/config/rule/mention.js b/src/config/rule/mention.js new file mode 100644 index 0000000..39f3648 --- /dev/null +++ b/src/config/rule/mention.js @@ -0,0 +1,89 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {getInjectArg, localeProps, makeOptionsRule} from '../../utils'; + +const label = '提及'; +const name = 'elMention'; + +export default { + menu: 'main', + icon: 'icon-mention', + label, + name, + input: true, + event: ['search', 'select', 'blur', 'focus', 'change', 'input', 'clear'], + validate: ['string'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.elMention.name'), + info: '', + $required: false, + props: { + options: [ + { + label: 'Fuphoenixes', + value: 'Fuphoenixes', + }, + { + label: 'kooriookami', + value: 'kooriookami', + }, + { + label: 'Jeremy', + value: 'Jeremy', + }, + { + label: 'btea', + value: 'btea', + }, + ] + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeOptionsRule(t, 'props.options'), { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'clearable' + }, { + type: 'switch', + field: 'whole' + }, { + type: 'input', + field: 'placeholder' + }, { + type: 'select', + field: 'type', + options: [ + {label: 'input', value: 'input'}, + {label: 'textarea', value: 'textarea'}, + ], + }, { + type: 'FnInput', + field: 'checkIsWhole', + props: { + body: true, + button: true, + fnx: true, + args: [getInjectArg(t)], + name: 'checkIsWhole', + } + }, { + type: 'FnInput', + field: 'filterOption', + props: { + body: true, + button: true, + fnx: true, + args: [getInjectArg(t)], + name: 'filterOption', + } + } + ]); + } +}; diff --git a/src/config/rule/nestedSubTableForm.js b/src/config/rule/nestedSubTableForm.js new file mode 100644 index 0000000..cffd1c1 --- /dev/null +++ b/src/config/rule/nestedSubTableForm.js @@ -0,0 +1,79 @@ +import unique from '@form-create/utils/lib/unique'; + +const label = '子表格表单'; +const name = 'nestedSubTableForm'; + +export default { + icon: 'icon-table-form', + label, + name, + aide: true, + mask: false, + validate: false, + style: false, + advanced: false, + variable: false, + subForm: 'array', + hiddenBaseField: ['title', 'info', 'labelConfig', 'formCreate_computed>hidden', 'formCreate_computed>value', '_control'], + children: 'tableFormColumn', + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('props.title'), + vnode: h(resolveComponent('el-input'), { + size: 'small', + modelValue: subRule.props.label, + 'onUpdate:modelValue': (v) => { + subRule.props.label = v; + } + }) + } + ] + }, + loadRule(rule) { + if (!rule.props) rule.props = {}; + const columns = rule.props.columns || []; + rule.children = columns.map(column => { + return { + type: 'tableFormColumn', + _fc_drag_tag: 'tableFormColumn', + props: { + label: column.label, + required: column.required || false, + width: column.style.width || '', + color: column.style.color || '', + }, + children: column.rule || [] + } + }); + delete rule.props.columns; + }, + parseRule(rule) { + const children = rule.children || []; + rule.props.columns = children.map(column => { + return { + label: column.props.label, + required: column.props.required, + style: { + width: column.props.width, + color: column.props.color, + }, + rule: column.children || [] + }; + }) + rule.children = []; + }, + rule() { + return { + type: 'TableForm', + field: unique(), + title: '', + info: '', + props: {}, + children: [] + }; + }, + props() { + return []; + } +}; diff --git a/src/config/rule/nestedTableForm.js b/src/config/rule/nestedTableForm.js new file mode 100644 index 0000000..83e62b8 --- /dev/null +++ b/src/config/rule/nestedTableForm.js @@ -0,0 +1,117 @@ +import unique from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '嵌套表单'; +const name = 'nestedTableForm'; + +const tidyColumns = columns => columns.map(column => { + return { + type: 'tableFormColumn', + _fc_drag_tag: 'tableFormColumn', + props: { + label: column.label, + required: column.required || false, + width: column.style.width || '', + color: column.style.color || '', + }, + children: column.rule || [] + } +}) + +export default { + menu: 'subform', + icon: 'icon-table-form2', + label, + name, + input: true, + mask: false, + subForm: 'array', + languageKey: ['add', 'operation'], + event: ['change', 'add', 'delete'], + slot: ['default', { + name: 'nested', + type: 'nestedSubTableForm', + }], + children: 'tableFormColumn', + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('props.title'), + vnode: h(resolveComponent('el-input'), { + size: 'small', + modelValue: subRule.props.label, + 'onUpdate:modelValue': (v) => { + subRule.props.label = v; + } + }) + } + ] + }, + loadRule(rule) { + if (!rule.props) rule.props = {}; + const columns = rule.props.columns || []; + const nested = rule.props.nested || []; + rule.children = tidyColumns(columns); + rule.children.push({ + type: 'TableForm', + _fc_drag_tag: 'nestedSubTableForm', + field: rule.props.nestedField, + props: { + columns: nested, + }, + slot: 'nested', + }) + delete rule.props.nestedField; + delete rule.props.columns; + delete rule.props.nested; + }, + parseRule(rule) { + const children = rule.children || []; + rule.props.columns = []; + children.forEach(column => { + if (column.slot === 'nested') { + rule.props.nested = column.props.columns; + rule.props.nestedField = column.field; + return; + } + rule.props.columns.push({ + label: column.props.label, + required: column.props.required, + style: { + width: column.props.width, + color: column.props.color, + }, + rule: column.children || [] + }); + }) + rule.children = []; + }, + sfc: false, + rule({t}) { + return { + type: name, + field: unique(), + title: t('com.' + name + '.name'), + info: '', + props: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'inputNumber', + field: 'max', + props: {min: 0} + }, { + type: 'inputNumber', + field: 'nestedMax', + props: {min: 0} + } + ]); + } +}; diff --git a/src/config/rule/number.js b/src/config/rule/number.js new file mode 100644 index 0000000..95130c4 --- /dev/null +++ b/src/config/rule/number.js @@ -0,0 +1,51 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '计数器'; +const name = 'inputNumber'; + +export default { + menu: 'main', + icon: 'icon-number', + label, + name, + input: true, + easySlots: ['prefix', 'suffix'], + event: ['blur', 'focus', 'change'], + validate: ['number', 'integer', 'float'], + condition: 'number', + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.inputNumber.name'), + info: '', + $required: false, + props: {} + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'switch', field: 'disabled'}, { + type: 'inputNumber', + field: 'min' + }, { + type: 'inputNumber', + field: 'max', + }, { + type: 'inputNumber', + title: 'precision', + field: 'precision', + }, {type: 'inputNumber', field: 'step', props: {min: 0}}, { + type: 'switch', + field: 'stepStrictly' + }, { + type: 'switch', + field: 'controls', + value: true + }, { + type: 'select', + field: 'controlsPosition', + options: localeOptions(t, [{label: 'default', value: ''}, {label: 'right', value: 'right'}]) + }, {type: 'input', field: 'placeholder'}]); + } +}; diff --git a/src/config/rule/password.js b/src/config/rule/password.js new file mode 100644 index 0000000..42699e5 --- /dev/null +++ b/src/config/rule/password.js @@ -0,0 +1,53 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '密码输入框'; +const name = 'password'; + +export default { + menu: 'main', + icon: 'icon-password', + label, + name, + input: true, + easySlots: ['prefix', 'suffix', 'prepend', 'append'], + event: ['blur', 'focus', 'change', 'input', 'clear'], + validate: ['string'], + rule({t}) { + return { + type: 'input', + field: uniqueId(), + title: t('com.password.name'), + info: '', + $required: false, + props: { + type: 'password' + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'readonly' + }, + { + type: 'inputNumber', + field: 'maxlength', + props: {min: 0} + }, + { + type: 'input', + field: 'placeholder' + }, + { + type: 'switch', + field: 'clearable' + }, + ]); + } +}; diff --git a/src/config/rule/qrCodeBox.js b/src/config/rule/qrCodeBox.js new file mode 100644 index 0000000..880f3fb --- /dev/null +++ b/src/config/rule/qrCodeBox.js @@ -0,0 +1,59 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '二维码'; +const name = 'qrCodeBox'; + +export default { + menu: 'aide', + icon: 'icon-qrcode', + label: label, + name: name, + mask: true, + inline: true, + rule() { + return { + type: name, + props: { + data: '1234567890', + width: 150, + height: 150, + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'data', + }, + { + type: 'input', + field: 'image', + }, + { + type: 'inputNumber', + field: 'width', + }, + { + type: 'inputNumber', + field: 'height', + }, + + { + type: 'select', + field: 'circleType', + options: localeOptions(t, [ + {label: 'square', value: 'square'}, + {label: 'dots', value: 'dots'}, + {label: 'rounded', value: 'rounded'}, + {label: 'classy', value: 'classy'}, + ], 'com.qrCodeBox.circleTypeOpt'), + }, + { + type: 'ColorInput', + field: 'circleColor', + }, + ]); + }, +}; + diff --git a/src/config/rule/radio.js b/src/config/rule/radio.js new file mode 100644 index 0000000..dfbf4ea --- /dev/null +++ b/src/config/rule/radio.js @@ -0,0 +1,62 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps, makeOptionsRule, makeTreeOptions} from '../../utils/index'; + +const label = '单选框'; +const name = 'radio'; + +export default { + menu: 'main', + icon: 'icon-radio', + label, + name, + input: true, + event: ['change'], + validate: ['string', 'number'], + condition: { + type: 'select', + options: 'options' + }, + sfc(rule) { + rule.type = 'elRadioGroup'; + rule.children = (rule.options || []).map(opt => { + return { + type: rule.props.type === 'button' ? 'elRadioButton' : 'elRadio', + props: { + label: opt.value, + value: opt.value, + }, + _sfc:{ + content: opt.label + } + } + }) + delete rule.props.type; + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.radio.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: {}, + options: makeTreeOptions(t('props.option'), {label: 'label', value: 'value'}, 1) + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeOptionsRule(t, 'options'), + {type: 'switch', field: 'disabled'}, + {type: 'switch', field: 'input'}, { + type: 'switch', + field: 'type', + props: {activeValue: 'button', inactiveValue: 'default'} + }, {type: 'ColorInput', field: 'textColor'}, { + type: 'ColorInput', + field: 'fill' + }]); + } +}; diff --git a/src/config/rule/rate.js b/src/config/rule/rate.js new file mode 100644 index 0000000..0f8326b --- /dev/null +++ b/src/config/rule/rate.js @@ -0,0 +1,45 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '评分'; +const name = 'rate'; + +export default { + menu: 'main', + icon: 'icon-rate', + label, + name, + input: true, + event: ['change'], + validate: ['number'], + condition: 'number', + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.rate.name'), + info: '', + $required: false, + props: {}, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + {type: 'inputNumber', field: 'max', props: {min: 0}}, { + type: 'switch', + field: 'disabled' + }, {type: 'switch', field: 'allowHalf'}, { + type: 'ColorInput', + field: 'voidColor' + }, {type: 'ColorInput', field: 'disabledVoidColor'}, { + type: 'input', + field: 'voidIconClass' + }, {type: 'input', field: 'disabledVoidIconClass'}, { + type: 'switch', + field: 'showScore' + }, {type: 'ColorInput', field: 'textColor'}, { + type: 'input', + field: 'scoreTemplate' + }]); + } +}; diff --git a/src/config/rule/row.js b/src/config/rule/row.js new file mode 100644 index 0000000..605fa2a --- /dev/null +++ b/src/config/rule/row.js @@ -0,0 +1,65 @@ +import {localeProps} from '../../utils'; + +const label = '栅格布局'; +const name = 'fcRow'; + +export default { + menu: 'layout', + icon: 'icon-row', + label, + name, + mask: false, + children: 'col', + childrenLen: 2, + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('style.width'), + vnode: h(resolveComponent('el-slider'), { + size: 'small', + min: 0, + max: 24, + modelValue: subRule.props.span, + 'onUpdate:modelValue': (v) => { + subRule.props.span = v; + } + }) + } + ] + }, + sfc(rule){ + rule.type='elRow' + }, + rule() { + return { + type: name, + props: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'inputNumber', + field: 'gutter', + props: {min: 0} + }, { + type: 'switch', + field: 'type', + props: {activeValue: 'flex', inactiveValue: 'default'} + }, { + type: 'select', + field: 'justify', + options: [{label: 'start', value: 'start'}, {label: 'end', value: 'end'}, { + label: 'center', + value: 'center' + }, {label: 'space-around', value: 'space-around'}, {label: 'space-between', value: 'space-between'}] + }, { + type: 'select', + field: 'align', + options: [{label: 'top', value: 'top'}, {label: 'middle', value: 'middle'}, { + label: 'bottom', + value: 'bottom' + }] + }]); + } +}; diff --git a/src/config/rule/segmented.js b/src/config/rule/segmented.js new file mode 100644 index 0000000..dfb319f --- /dev/null +++ b/src/config/rule/segmented.js @@ -0,0 +1,56 @@ +import {localeOptions, localeProps} from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +const label = '分段控制器'; +const name = 'elSegmented'; + +export default { + menu: 'main', + icon: 'icon-segmented', + label, + name, + input: true, + event: ['change'], + validate: ['string', 'number'], + rule() { + return { + type: name, + field: uniqueId(), + title: '', + props: { + options: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'].map(k => { + return {label: k, value: k}; + }) + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'TableOptions', + field: 'options', + title: t('props.options'), + wrap: {show: false}, + props: { + column: [{label: 'label', key: 'label'}, {value: true, label: 'value', key: 'value'}], + keyValue: 'label', + } + }, + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'block' + }, { + type: 'select', + field: 'size', + options: localeOptions(t, [{label: 'large', value: 'large'}, {label: 'default', value: 'default'}, { + label: 'small', + value: 'small' + }]) + } + ]); + } +}; diff --git a/src/config/rule/select.js b/src/config/rule/select.js new file mode 100644 index 0000000..037a58b --- /dev/null +++ b/src/config/rule/select.js @@ -0,0 +1,87 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {getInjectArg, localeProps, makeOptionsRule, makeTreeOptions} from '../../utils/index'; + +const label = '选择器'; +const name = 'select'; + +export default { + menu: 'main', + icon: 'icon-select', + label, + name, + input: true, + event: ['change', 'visibleChange', 'removeTag', 'clear', 'blur', 'focus'], + validate: ['string', 'number', 'array'], + condition: { + type: 'select', + options: 'options' + }, + sfc(rule) { + rule.type = 'elSelect'; + rule.children = (rule.options || []).map(opt => { + return { + type: 'elOption', + props: { + label: opt.label, + value: opt.value, + } + } + }) + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.select.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: {}, + options: makeTreeOptions(t('props.option'), {label: 'label', value: 'value'}, 1) + }; + }, + watch: { + multiple({rule}) { + rule.key = uniqueId(); + } + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeOptionsRule(t, 'options'), + {type: 'switch', field: 'multiple'}, { + type: 'switch', + field: 'disabled' + }, {type: 'switch', field: 'clearable'}, { + type: 'switch', + field: 'collapseTags' + }, { + type: 'inputNumber', + field: 'multipleLimit', + props: {min: 0} + }, {type: 'input', field: 'placeholder'}, { + type: 'switch', + field: 'filterable' + }, { + type: 'switch', + field: 'remote', + }, { + type: 'FnInput', + field: 'remoteMethod', + props: { + body: true, + button: true, + fnx: true, + name: 'remoteMethod', + args: [getInjectArg(t)], + }, + }, {type: 'switch', field: 'allowCreate'}, { + type: 'input', + field: 'noMatchText' + }, {type: 'input', field: 'noDataText'}, { + type: 'switch', + field: 'reserveKeyword' + }, {type: 'switch', field: 'defaultFirstOption'}]) + } +}; diff --git a/src/config/rule/signaturePad.js b/src/config/rule/signaturePad.js new file mode 100644 index 0000000..c89c6c8 --- /dev/null +++ b/src/config/rule/signaturePad.js @@ -0,0 +1,35 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '手写签名'; +const name = 'signaturePad'; + +export default { + menu: 'main', + icon: 'icon-sign', + label: label, + name: name, + input: true, + mask: true, + languageKey: ['signaturePadTip', 'signaturePadTitle', 'reset', 'ok'], + event: ['change', 'remove'], + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.signaturePad.name'), + info: '', + $required: false, + props: {}, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'ColorInput', + field: 'penColor', + }, + ]); + }, +}; + diff --git a/src/config/rule/slider.js b/src/config/rule/slider.js new file mode 100644 index 0000000..43b0847 --- /dev/null +++ b/src/config/rule/slider.js @@ -0,0 +1,54 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '滑块'; +const name = 'slider'; + +export default { + menu: 'main', + icon: 'icon-slider', + label, + name, + input: true, + event: ['change', 'input'], + validate: ['number', 'array'], + condition: 'number', + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.slider.name'), + info: '', + $required: false, + props: {}, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'switch', field: 'disabled'}, { + type: 'switch', + field: 'range' + }, { + type: 'inputNumber', + field: 'min', + props: {min: 0} + }, { + type: 'inputNumber', + field: 'max', + props: {min: 0}, + }, { + type: 'inputNumber', + field: 'step', + props: {min: 0}, + }, {type: 'switch', field: 'showInput'}, { + type: 'switch', + field: 'showInputControls', + value: true + }, {type: 'switch', field: 'showStops'}, { + type: 'switch', + field: 'vertical' + }, { + type: 'input', + field: 'height' + }]); + } +}; diff --git a/src/config/rule/slot.js b/src/config/rule/slot.js new file mode 100644 index 0000000..6466d4e --- /dev/null +++ b/src/config/rule/slot.js @@ -0,0 +1,32 @@ +import {localeProps} from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +const label = '插槽区域'; +const name = 'fcSlot'; + +export default { + menu: 'container', + icon: 'icon-slot', + label, + name, + input: true, + mask: true, + style: false, + sfc: false, + rule() { + return { + type: name, + field: uniqueId(), + title: '', + native: false, + $required: false, + readMode: 'custom', + props: { + name: 'block_' + uniqueId() + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'input', field: 'name'}]); + } +}; diff --git a/src/config/rule/space.js b/src/config/rule/space.js new file mode 100644 index 0000000..207ee99 --- /dev/null +++ b/src/config/rule/space.js @@ -0,0 +1,26 @@ +const label = '间距'; +const name = 'space'; + +export default { + menu: 'layout', + icon: 'icon-space', + label, + name, + rule() { + return { + type: 'div', + wrap: { + show: false + }, + native: true, + style: { + width: '100%', + height: '20px', + }, + children: [] + }; + }, + props() { + return []; + } +}; diff --git a/src/config/rule/statistic.js b/src/config/rule/statistic.js new file mode 100644 index 0000000..a719de0 --- /dev/null +++ b/src/config/rule/statistic.js @@ -0,0 +1,30 @@ +import {localeProps} from '../../utils'; + +const label = '统计栏'; +const name = 'elStatistic'; + +export default { + menu: 'aide', + icon: 'icon-statistic', + label, + name, + inline: true, + easySlots: ['prefix', 'suffix'], + rule({t}) { + return { + type: name, + props: { + value: 99000, + title: t('com.' + name + '.name') + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + {type: 'inputNumber', field: 'value'}, + {type: 'input', field: 'title'}, + {type: 'input', field: 'prefix'}, + {type: 'input', field: 'suffix'} + ]); + } +}; diff --git a/src/config/rule/stepForm.js b/src/config/rule/stepForm.js new file mode 100644 index 0000000..eeb32ae --- /dev/null +++ b/src/config/rule/stepForm.js @@ -0,0 +1,80 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '分步表单'; +const name = 'stepForm'; + +export default { + menu: 'subform', + icon: 'icon-step-form', + label, + name, + input: true, + mask: false, + languageKey: ['prevStep', 'nextStep', 'submit'], + event: ['change', 'submit', 'next'], + subForm: 'object', + children: 'stepFormItem', + childrenLen: 2, + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('props.title'), + vnode: h(resolveComponent('el-input'), { + size: 'small', + modelValue: subRule.props.title, + 'onUpdate:modelValue': (v) => { + subRule.props.title = v; + } + }) + } + ] + }, + loadRule(rule) { + if (!rule.props) rule.props = {}; + const steps = rule.props.steps || {}; + rule.children = steps.map(step => { + return { + type: 'stepFormItem', + _fc_drag_tag: 'stepFormItem', + props: { + title: step.props.title, + description: step.props.description, + }, + children: step.rule + } + }); + delete rule.props.steps; + }, + parseRule(rule) { + const children = rule.children || []; + rule.props.steps = children.map(step => { + return { + props: step.props, + rule: step.children + }; + }) + rule.children = []; + }, + sfc: false, + rule() { + return { + type: name, + field: uniqueId(), + title: '', + info: '', + $required: false, + props: {}, + children: [], + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + {type: 'switch', field: 'submitBtn', value: true}, + {type: 'switch', field: 'autoValidate'}, + {type: 'switch', field: 'stepsProps>alignCenter'}, { + type: 'switch', + field: 'stepsProps>simple' + }]); + } +}; diff --git a/src/config/rule/stepFormItem.js b/src/config/rule/stepFormItem.js new file mode 100644 index 0000000..c797a9f --- /dev/null +++ b/src/config/rule/stepFormItem.js @@ -0,0 +1,40 @@ +import {localeProps} from '../../utils'; + +const label = '步骤条'; +const name = 'stepFormItem'; + +export default { + icon: 'icon-cell', + label, + name, + aide: true, + drag: true, + dragBtn: false, + inside: true, + mask: false, + style: false, + advanced: false, + variable: false, + rule({t}) { + return { + type: name, + props: { + title: t('com.stepFormItem.props.title'), + description: '', + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'title', + value: '' + }, { + type: 'input', + field: 'description', + value: '' + }]); + } +}; diff --git a/src/config/rule/subForm.js b/src/config/rule/subForm.js new file mode 100644 index 0000000..4ed68a9 --- /dev/null +++ b/src/config/rule/subForm.js @@ -0,0 +1,70 @@ +import {localeProps} from '../../utils'; +import uniqueId from '@form-create/utils/lib/unique'; + +const label = '分组'; +const name = 'subForm'; + +export default { + menu: 'subform', + icon: 'icon-group', + label, + name, + input: true, + inside: false, + drag: true, + dragBtn: true, + mask: false, + subForm: 'object', + event: ['change'], + loadRule(rule) { + rule.children = rule.props.rule || []; + rule.type = 'FcRow'; + delete rule.props.rule; + }, + parseRule(rule) { + rule.props.rule = rule.children; + rule.type = 'subForm'; + delete rule.children; + }, + sfc(rule, {getParentFieldStr}) { + return { + type: 'elFormItem', + props: { + prop: getParentFieldStr() + rule.field, + label: rule.title, + required: rule.$required === true ? true : undefined + }, + col: {show: true}, + _sfc: { + parentField: rule.field + }, + _fc_id: rule._fc_id, + children: [ + { + type: 'elRow', + class: rule.class, + style: rule.style, + children: rule.children + } + ] + } + }, + rule({t}) { + return { + type: 'fcRow', + field: uniqueId(), + title: t('com.subForm.name'), + info: '', + $required: false, + props: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'disabled' + }, + ]); + } +}; diff --git a/src/config/rule/switch.js b/src/config/rule/switch.js new file mode 100644 index 0000000..9af8b6a --- /dev/null +++ b/src/config/rule/switch.js @@ -0,0 +1,58 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '开关'; +const name = 'switch'; + +export default { + menu: 'main', + icon: 'icon-switch', + label, + name, + input: true, + easySlots: ['active-action', 'inactive-action'], + event: ['change'], + condition: function (rule) { + return { + type: 'switch', + props: { + activeValue: rule.props.activeValue, + inactiveValue: rule.props.inactiveValue, + activeText: rule.props.activeText, + inactiveText: rule.props.inactiveText, + } + } + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.switch.name'), + info: '', + $required: false, + props: { + activeValue: true, + inactiveValue: false, + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'disabled' + }, { + type: 'inputNumber', + field: 'width', + props: {min: 0}, + }, {type: 'input', field: 'activeText'}, { + type: 'input', + field: 'inactiveText' + }, {type: 'ValueInput', field: 'activeValue'}, { + type: 'ValueInput', + field: 'inactiveValue' + }, {type: 'ColorInput', field: 'activeColor'}, { + type: 'ColorInput', + field: 'inactiveColor' + }]); + } +}; diff --git a/src/config/rule/tabPane.js b/src/config/rule/tabPane.js new file mode 100644 index 0000000..f7839c2 --- /dev/null +++ b/src/config/rule/tabPane.js @@ -0,0 +1,31 @@ +import {localeProps} from '../../utils'; + +const label = '选项卡'; +const name = 'elTabPane'; + +export default { + label, + name, + inside: true, + drag: true, + dragBtn: false, + mask: false, + rule({t}) { + return { + type: name, + props: { + label: t('com.elTabPane.name'), + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'input', field: 'label'}, { + type: 'switch', + field: 'disabled' + }, {type: 'input', field: 'name'}, { + type: 'switch', + field: 'lazy' + }]); + } +}; diff --git a/src/config/rule/table.js b/src/config/rule/table.js new file mode 100644 index 0000000..83437dc --- /dev/null +++ b/src/config/rule/table.js @@ -0,0 +1,152 @@ +import {localeProps} from '../../utils'; + +const label = '表格布局'; +const name = 'fcTable'; + +export default { + menu: 'layout', + icon: 'icon-table', + label, + name, + inside: false, + mask: false, + sfc: { + style: `._fc-table { + overflow: auto; +} + +._fc-table > table { + width: 100%; + height: 100%; + overflow: hidden; + table-layout: fixed; + border: 1px solid #EBEEF5; + border-bottom: 0 none; + border-right: 0 none; +} + +._fc-table tr { + min-height: 50px; +} + +._fc-table td { + padding: 5px; + min-height: 50px; + min-width: 80px; + position: relative; + box-sizing: border-box; + overflow-wrap: break-word; + overflow: hidden; + border: 0 none; + border-right: 1px solid #EBEEF5; + border-bottom: 1px solid #EBEEF5; +}`, + handle(rule) { + const slots = (rule.children || []).reduce((p, v) => { + if (!p[v.slot]) { + p[v.slot] = [] + } + p[v.slot].push(v); + delete v.slot; + return p; + }, {}); + + const {row, col, style, class: _class, layout} = rule.props.rule; + const layoutRule = {}; + const layoutHide = []; + + layout.forEach(v => { + const _row = v.row || 1; + const _col = v.col || 1; + const k = `${v.top}:${v.left}`; + layoutRule[k] = { + row: _row, + col: _col, + } + for (let i = 0; i < _row; i++) { + for (let j = 0; j < _col; j++) { + if (i === 0 && i === j) { + continue; + } + const merge = `${v.top + i}:${v.left + j}`; + if (slots[merge]) { + slots[k] = (slots[k] || []).concat(slots[merge]); + delete slots[merge]; + } + layoutHide.push(merge); + } + } + }); + + const trs = []; + for (let i = 0; i < row; i++) { + const tds = []; + for (let j = 0; j < col; j++) { + const k = `${i}:${j}`; + if (layoutHide.indexOf(k) > -1) { + continue; + } + const tdChildren = slots[k]; + tds.push({ + type: 'td', + props: { + rowspan: '' + (layoutRule[k] ? layoutRule[k].row : 1), + colspan: '' + (layoutRule[k] ? layoutRule[k].col : 1) + }, + style: style[k], + class: _class[k], + children: tdChildren + }) + } + trs.push({ + type: 'tr', + children: tds + }) + } + return { + type: 'elCol', + props: { + span: 24 + }, + style: rule.style, + class: rule.class, + children: [{ + type: 'div', + class: '_fc-table', + children: [{ + type: 'table', + props: { + border: '1', + cellspacing: '0', + cellpadding: '0' + }, + children: trs + }] + }] + } + }, + }, + rule() { + return { + type: name, + props: { + rule: { + row: 3, + col: 4, + style: {}, + class: {}, + layout: [] + } + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + {type: 'switch', field: 'border', value: true}, + {type: 'switch', field: 'mini'}, + {type: 'ColorInput', field: 'borderColor'}, + {type: 'input', field: 'borderWidth'}, + ]); + } +}; diff --git a/src/config/rule/tableForm.js b/src/config/rule/tableForm.js new file mode 100644 index 0000000..ea72566 --- /dev/null +++ b/src/config/rule/tableForm.js @@ -0,0 +1,109 @@ +import unique from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '表格表单'; +const name = 'tableForm'; + +export default { + menu: 'subform', + icon: 'icon-table-form', + label, + name, + input: true, + mask: false, + subForm: 'array', + languageKey: ['add', 'operation', 'dataEmpty'], + event: ['change', 'add', 'delete'], + children: 'tableFormColumn', + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('props.title'), + vnode: h(resolveComponent('el-input'), { + size: 'small', + modelValue: subRule.props.label, + 'onUpdate:modelValue': (v) => { + subRule.props.label = v; + } + }) + } + ] + }, + loadRule(rule) { + if (!rule.props) rule.props = {}; + const columns = rule.props.columns || []; + rule.children = columns.map(column => { + return { + type: 'tableFormColumn', + _fc_drag_tag: 'tableFormColumn', + props: { + label: column.label, + required: column.required || false, + width: column.style.width || '', + color: column.style.color || '', + }, + children: column.rule || [] + } + }); + delete rule.props.columns; + }, + parseRule(rule) { + const children = rule.children || []; + rule.props.columns = children.map(column => { + return { + label: column.props.label, + required: column.props.required, + style: { + width: column.props.width, + color: column.props.color, + }, + rule: column.children || [] + }; + }) + rule.children = []; + }, + sfc: false, + rule({t}) { + return { + type: name, + field: unique(), + title: t('com.tableForm.name'), + info: '', + props: {}, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'addable', + value: true, + }, + { + type: 'switch', + field: 'deletable', + value: true, + }, + { + type: 'switch', + field: 'filterEmptyColumn', + value: true, + }, + { + type: 'inputNumber', + field: 'min', + props: {min: 0} + }, + { + type: 'inputNumber', + field: 'max', + props: {min: 0} + }, + ]); + } +}; diff --git a/src/config/rule/tableForm2.js b/src/config/rule/tableForm2.js new file mode 100644 index 0000000..7778d2c --- /dev/null +++ b/src/config/rule/tableForm2.js @@ -0,0 +1,251 @@ +import unique from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '表格表单Pro'; +const name = 'tableFormPro'; + + +const parseColumns = (children) => { + return children.map(column => { + let rules = column.children || []; + const subColumns = rules.filter((item) => item._fc_drag_tag === 'tableFormColumn2'); + if (subColumns.length > 0) { + rules = parseColumns(subColumns); + } + return { + header: column.props.header, + label: column.props.label, + fixed: column.props.fixed, + required: column.props.required, + hidden: column.props.hidden, + style: { + width: column.props.width, + color: column.props.color, + }, + [subColumns.length ? 'children' : 'rule']: rules, + }; + }) +} + +const loadColumns = (columns) => { + return columns.map(column => { + return { + type: 'tableFormColumn', + _fc_drag_tag: 'tableFormColumn2', + props: { + header: column.header, + label: column.label, + fixed: column.fixed, + required: column.required || false, + hidden: column.hidden || false, + width: column.style.width || '', + color: column.style.color || '', + }, + children: column.children ? loadColumns(column.children) : (column.rule || []) + } + }) +} + +export default { + menu: 'subform', + icon: 'icon-table-form', + label, + name, + input: true, + mask: false, + subForm: 'array', + languageKey: ['add', 'delete', 'operation', 'dataEmpty'], + event: ['change', 'add', 'delete', 'handleClick'], + children: 'tableFormColumn2', + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('props.title'), + vnode: h(resolveComponent('el-input'), { + size: 'small', + modelValue: subRule.props.label, + 'onUpdate:modelValue': (v) => { + subRule.props.label = v; + } + }) + } + ] + }, + loadRule(rule) { + if (!rule.props) rule.props = {}; + rule.children = loadColumns(rule.props.columns || []); + delete rule.props.columns; + }, + parseRule(rule) { + rule.props.columns = parseColumns(rule.children || []); + rule.children = []; + }, + sfc: false, + rule({t}) { + return { + type: 'tableFormPro', + field: unique(), + title: t('com.tableFormPro.name'), + info: '', + props: { + button: { + open: true, + column: [ + { + key: 'delete', + name: '删除', + type: 'danger', + size: 'small', + prop: ['link'] + } + ], + } + }, + children: [] + }; + }, + props(_, {t}) { + const propsT = function (list) { + return localeProps(t, 'tableForm.props', list); + } + return localeProps(t, 'tableForm.props', [ + { + type: 'ConfigItem', props: { + label: t('com.dataTable.props.button') + }, col: { + show: true + }, children: [{ + type: 'HideConfig', + title: t('com.dataTable.props.button'), + wrap: {show: false}, + col: {show: false}, + field: 'button>open' + }, { + type: 'template', + slot: 'append', + children: propsT([{ + type: 'TableButtonConfig', + col: {show: false}, + field: 'button>column', + }, { + type: 'input', + col: {show: false}, + field: 'button>label', + value: '操作' + }, { + type: 'select', + col: {show: false}, + field: 'button>fixed', + options: [ + {label: t('com.dataTable.fixed.default'), value: false}, + {label: t('com.dataTable.fixed.left'), value: 'left'}, + {label: t('com.dataTable.fixed.right'), value: 'right'} + ], + value: 'right', + }, { + type: 'SizeInput', + col: {show: false}, + field: 'button>width', + value: '100px' + },]) + }] + }, + { + type: 'ConfigItem', + props: { + label: t('com.dataTable.props.page') + }, col: { + show: true + }, children: [{ + type: 'HideConfig', + wrap: { + show: false + }, + col: { + show: false + }, + title: t('com.dataTable.props.page'), + field: 'page>open' + }, { + type: 'template', + slot: 'append', + children: propsT([{ + type: 'inputNumber', + col: { + show: false + }, + field: 'page>props>pageSize', + value: 20, + }, { + type: 'switch', + col: { + show: false + }, + field: 'page>props>small', + }, { + type: 'switch', + col: { + show: false + }, + field: 'page>props>background', + }]) + }] + }, + { + type: 'switch', + field: 'disabled' + }, + { + type: 'select', field: 'size', + options: localeOptions(t, [ + {label: 'large', value: 'large'}, + {label: 'default', value: 'default'}, + {label: 'small', value: 'small'} + ]) + }, + { + type: 'input', field: 'emptyText', + }, + { + type: 'switch', field: 'stripe', + }, { + type: 'switch', field: 'border', + }, + { + type: 'switch', + field: 'showIndex', + }, + { + type: 'switch', + field: 'addable', + value: true, + }, + { + type: 'switch', + field: 'deletable', + value: true, + }, + { + type: 'switch', + field: 'newColumn', + }, + { + type: 'switch', + field: 'filterEmptyColumn', + value: true, + }, { + type: 'SizeInput', field: 'height', + }, + { + type: 'inputNumber', + field: 'min', + props: {min: 0} + }, + { + type: 'inputNumber', + field: 'max', + props: {min: 0} + }, + ]); + } +}; diff --git a/src/config/rule/tableFormColumn.js b/src/config/rule/tableFormColumn.js new file mode 100644 index 0000000..1e55aad --- /dev/null +++ b/src/config/rule/tableFormColumn.js @@ -0,0 +1,45 @@ +import {localeProps} from '../../utils'; + +const name = 'tableFormColumn'; + +export default { + icon: 'icon-cell', + name, + aide: true, + drag: true, + dragBtn: false, + mask: false, + style: false, + advanced: false, + variable: false, + rule({t}) { + return { + type: name, + props: { + label: t('com.tableFormColumn.label'), + width: 'auto' + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'label', + }, + { + type: 'switch', + field: 'required', + }, + { + type: 'input', + field: 'width', + }, + { + type: 'ColorInput', + field: 'color', + } + ]); + } +}; diff --git a/src/config/rule/tableFormColumn2.js b/src/config/rule/tableFormColumn2.js new file mode 100644 index 0000000..a9d4e08 --- /dev/null +++ b/src/config/rule/tableFormColumn2.js @@ -0,0 +1,61 @@ +import {localeProps} from '../../utils'; + +const name = 'tableFormColumn2'; + +export default { + icon: 'icon-cell', + name, + aide: true, + drag: true, + dragBtn: false, + mask: false, + style: false, + advanced: false, + variable: false, + children: 'tableFormColumn2', + childrenLen: 0, + checkDrag({toRule}) { + return !(toRule.children[0].children.length > 0 && toRule.children[0].children.some((item) => item._config.name === 'tableFormColumn2')); + }, + rule({t}) { + return { + type: name, + props: { + label: t('com.tableFormColumn.label'), + width: 'auto' + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, 'tableFormColumn.props', [ + { + type: 'input', + field: 'label', + }, + { + type: 'select', + field: 'fixed', + options: [false, 'left', 'right'].map(v => { + return {label: t('com.dataTable.fixed.' + (v || 'default')), value: v}; + }) + }, + { + type: 'switch', + field: 'required', + }, + { + type: 'switch', + field: 'hidden', + }, + { + type: 'input', + field: 'width', + }, + { + type: 'ColorInput', + field: 'color', + } + ]); + } +}; diff --git a/src/config/rule/tabs.js b/src/config/rule/tabs.js new file mode 100644 index 0000000..db4179a --- /dev/null +++ b/src/config/rule/tabs.js @@ -0,0 +1,56 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '标签页'; +const name = 'elTabs'; + +export default { + menu: 'layout', + icon: 'icon-tab', + label, + name, + mask: false, + event: ['tabClick', 'tabChange', 'tabRemove', 'tabAdd', 'edit'], + children: 'elTabPane', + subRender({t, h, resolveComponent, subRule}) { + return [ + { + label: t('props.title'), + vnode: h(resolveComponent('el-input'), { + size: 'small', + modelValue: subRule.props.label, + 'onUpdate:modelValue': (v) => { + subRule.props.label = v; + } + }) + } + ] + }, + rule() { + return { + type: name, + style: {width: '100%'}, + props:{ + modelValue: '0' + }, + sync: ['modelValue'], + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'select', + field: 'type', + options: [{ + label: 'card', + value: 'card' + }, {label: 'border-card', value: 'border-card'}] + }, {type: 'switch', field: 'closable'}, { + type: 'select', + field: 'tabPosition', + options: localeOptions(t, [{label: 'top', value: 'top'}, {label: 'right', value: 'right'}, { + label: 'left', + value: 'left' + }]) + }, {type: 'switch', field: 'stretch'}]); + } +}; diff --git a/src/config/rule/tag.js b/src/config/rule/tag.js new file mode 100644 index 0000000..2cf6328 --- /dev/null +++ b/src/config/rule/tag.js @@ -0,0 +1,62 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '标签'; +const name = 'elTag'; + +export default { + menu: 'aide', + icon: 'icon-tag', + label, + name, + mask: true, + inline: true, + event: ['click', 'close'], + rule({t}) { + return { + type: name, + title: '', + children: [t('com.elTag.name')] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'formCreateChild' + }, { + type: 'select', + field: 'type', + options: localeOptions(t, [{label: 'primary', value: 'primary'}, { + label: 'success', + value: 'success' + }, {label: 'warning', value: 'warning'}, {label: 'danger', value: 'danger'}, { + label: 'info', + value: 'info' + }]) + }, { + type: 'select', + field: 'size', + options: localeOptions(t, [{label: 'large', value: 'large'}, { + label: 'default', + value: 'default' + }, {label: 'small', value: 'small'}]) + }, { + type: 'select', + field: 'effect', + options: [{label: 'dark', value: 'dark'}, { + label: 'light', + value: 'light' + }, {label: 'plain', value: 'plain'}] + }, { + type: 'switch', field: 'closable' + }, { + type: 'switch', field: 'disableTransitions' + }, { + type: 'switch', field: 'hit' + }, { + type: 'switch', field: 'round' + }, { + type: 'ColorInput', field: 'color' + }]); + } +}; diff --git a/src/config/rule/text.js b/src/config/rule/text.js new file mode 100644 index 0000000..e4b61f5 --- /dev/null +++ b/src/config/rule/text.js @@ -0,0 +1,33 @@ +import {localeProps} from '../../utils'; + +const label = '文字'; +const name = 'text'; + +export default { + menu: 'aide', + icon: 'icon-span', + label, + name, + inline: true, + rule({t}) { + return { + type: 'div', + title: '', + style: { + whiteSpace: 'pre-line', + }, + children: [t('com.text.name')], + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'formCreateChild', + props: { + type: 'textarea' + } + } + ]); + } +}; diff --git a/src/config/rule/textarea.js b/src/config/rule/textarea.js new file mode 100644 index 0000000..15c7b2d --- /dev/null +++ b/src/config/rule/textarea.js @@ -0,0 +1,63 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps} from '../../utils'; + +const label = '多行输入框'; +const name = 'textarea'; + +export default { + menu: 'main', + icon: 'icon-textarea', + label, + name, + input: true, + event: ['blur', 'focus', 'change', 'input'], + validate: ['string'], + rule({t}) { + return { + type: 'input', + field: uniqueId(), + title: t('com.textarea.name'), + info: '', + $required: false, + props: { + type: 'textarea' + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'readonly' + }, + { + type: 'inputNumber', + field: 'maxlength', + props: {min: 0} + }, + { + type: 'switch', + field: 'showWordLimit' + }, + { + type: 'input', + field: 'placeholder' + }, + { + type: 'inputNumber', + field: 'rows', + props: { + min: 0 + } + }, + { + type: 'switch', + field: 'autosize' + }, + ]); + } +}; diff --git a/src/config/rule/time.js b/src/config/rule/time.js new file mode 100644 index 0000000..e0d641a --- /dev/null +++ b/src/config/rule/time.js @@ -0,0 +1,89 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; + +const label = '时间'; +const name = 'timePicker'; + +export default { + menu: 'main', + icon: 'icon-time', + label, + name, + input: true, + event: ['change', 'blur', 'focus', 'visibleChange'], + sfc(rule) { + if (!rule.props.valueFormat) { + rule.props.valueFormat = 'HH:mm:ss' + } + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.timePicker.name'), + info: '', + $required: false, + props: {}, + }; + }, + watch: { + isRange({rule}) { + rule.key = uniqueId(); + }, + __format({value, rule}) { + rule.props.format = value; + rule.props.valueFormat = value; + }, + }, + attrs: { + format({rule}) { + return rule.props.format || ''; + }, + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'switch', field: 'readonly'}, { + type: 'switch', + field: 'disabled' + }, { + type: 'switch', + field: 'isRange' + }, { + type: 'switch', + field: 'clearable', + value: true + }, { + type: 'select', + field: '__format', + options: [ + { + label: t('com.' + name + '.HH:mm:ss'), + value: 'HH:mm:ss' + }, + { + label: t('com.' + name + '.HH:mm'), + value: 'HH:mm' + } + ] + }, { + type: 'Struct', + field: 'pickerOptions', + props: {defaultValue: {}} + }, {type: 'switch', field: 'editable', value: true}, { + type: 'input', + field: 'placeholder' + }, { + type: 'input', + field: 'startPlaceholder' + }, {type: 'input', field: 'endPlaceholder'}, { + type: 'switch', + field: 'arrowControl' + }, { + type: 'select', + field: 'align', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }]); + } +}; diff --git a/src/config/rule/timeRange.js b/src/config/rule/timeRange.js new file mode 100644 index 0000000..ebeb298 --- /dev/null +++ b/src/config/rule/timeRange.js @@ -0,0 +1,79 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeOptions, localeProps} from '../../utils'; +import time from './time'; + +const label = '时间区间'; +const name = 'timeRange'; + +export default { + menu: 'main', + icon: 'icon-time-range', + label, + name, + input: true, + event: ['change', 'blur', 'focus', 'visibleChange'], + sfc: time.sfc, + rule({t}) { + return { + type: 'timePicker', + field: uniqueId(), + title: t('com.timeRange.name'), + info: '', + $required: false, + props: { + isRange: true, + }, + }; + }, + watch: { + __format({value, rule}) { + rule.props.format = value; + rule.props.valueFormat = value; + }, + }, + attrs: { + format({rule}) { + return rule.props.format || ''; + }, + }, + props(_, {t}) { + return localeProps(t, 'timePicker.props', [{type: 'switch', field: 'readonly'}, { + type: 'switch', + field: 'disabled' + }, { + type: 'switch', + field: 'clearable', + value: true + }, { + type: 'select', + field: '__format', + options: [ + { + label: t('com.timePicker.HH:mm:ss'), + value: 'HH:mm:ss' + }, + { + label: t('com.timePicker.HH:mm'), + value: 'HH:mm' + } + ] + }, { + type: 'Struct', + field: 'pickerOptions', + props: {defaultValue: {}} + }, {type: 'switch', field: 'editable', value: true}, { + type: 'input', + field: 'startPlaceholder' + }, {type: 'input', field: 'endPlaceholder'}, { + type: 'switch', + field: 'arrowControl' + }, { + type: 'select', + field: 'align', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }]); + } +}; diff --git a/src/config/rule/title.js b/src/config/rule/title.js new file mode 100644 index 0000000..3fd0863 --- /dev/null +++ b/src/config/rule/title.js @@ -0,0 +1,37 @@ +import {localeOptions, localeProps} from '../../utils'; + +const label = '标题'; +const name = 'fcTitle'; + +export default { + menu: 'aide', + icon: 'icon-title', + label, + name, + event: [], + rule({t}) { + return { + type: 'fcTitle', + props: { + title: t('props.title'), + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{type: 'input', field: 'title'}, { + type: 'select', + field: 'size', + value: 'H2', + options: [1, 2, 3, 4, 5, 6].map(k => { + return {label: 'H' + k, value: 'h' + k}; + }) + }, { + type: 'select', + field: 'align', + options: localeOptions(t, [{label: 'left', value: 'left'}, {label: 'center', value: 'center'}, { + label: 'right', + value: 'right' + }]) + }]); + } +}; diff --git a/src/config/rule/tooltip.js b/src/config/rule/tooltip.js new file mode 100644 index 0000000..1b59728 --- /dev/null +++ b/src/config/rule/tooltip.js @@ -0,0 +1,107 @@ +import {localeProps} from '../../utils'; + +const label = '文字提示'; +const name = 'elTooltip'; + +export default { + menu: 'aide', + icon: 'icon-tooltip', + label, + name, + drag: true, + dragBtn: true, + inside: false, + mask: false, + rule({t}) { + return { + type: name, + props: { + content: t('com.' + name + '.name') + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'content', + props: {type: 'textarea'} + }, + { + type: 'switch', + field: 'disabled' + }, + { + type: 'switch', + field: 'rawContent' + }, + { + type: 'switch', + field: 'enterable', + value: true, + }, + { + type: 'select', + field: 'effect', + value: 'dark', + options: [{label: 'dark', value: 'dark'}, {label: 'light', value: 'light'}] + }, + { + type: 'select', + field: 'placement', + value: 'bottom', + options: [ + {label: 'top', value: 'top'}, + {label: 'top-start', value: 'top-start'}, + {label: 'top-end', value: 'top-end'}, + {label: 'bottom', value: 'bottom'}, + {label: 'bottom-start', value: 'bottom-start'}, + {label: 'bottom-end', value: 'bottom-end'}, + {label: 'left', value: 'left'}, + {label: 'left-start', value: 'left-start'}, + {label: 'left-end', value: 'left-end'}, + {label: 'right', value: 'right'}, + {label: 'right-start', value: 'right-start'}, + {label: 'right-end', value: 'right-end'}, + ] + }, + { + type: 'select', + field: 'trigger', + value: 'hover', + options: [ + {label: 'hover', value: 'hover'}, + {label: 'click', value: 'click'}, + {label: 'focus', value: 'focus'}, + {label: 'contextmenu', value: 'contextmenu'}, + ] + }, + { + type: 'inputNumber', + field: 'offset', + }, + { + type: 'inputNumber', + field: 'showAfter', + props: { + min: 0 + } + }, + { + type: 'inputNumber', + field: 'hideAfter', + props: { + min: 0 + } + }, + { + type: 'inputNumber', + field: 'autoClose', + props: { + min: 0 + } + }, + ]); + } +}; diff --git a/src/config/rule/transfer.js b/src/config/rule/transfer.js new file mode 100644 index 0000000..f3d44cd --- /dev/null +++ b/src/config/rule/transfer.js @@ -0,0 +1,70 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps, makeOptionsRule, makeTreeOptions} from '../../utils'; + +const label = '穿梭框'; +const name = 'elTransfer'; + +export default { + menu: 'main', + icon: 'icon-transfer', + label, + name, + input: true, + event: ['change', 'leftCheckChange', 'rightCheckChange'], + validate: ['array'], + condition: function (rule) { + return { + type: 'select', + options: rule.props.data ? rule.props.data.map(item => { + return { + label: item.label, + value: item.key, + } + }) : [] + } + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.elTransfer.name'), + info: '', + $required: false, + props: { + data: makeTreeOptions(t('props.option'), {label: 'label', value: 'key'}, 1) + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeOptionsRule(t, 'props.data', 'label', 'key'), + {type: 'switch', field: 'filterable'}, { + type: 'input', + field: 'filterPlaceholder' + }, { + type: 'select', + field: 'targetOrder', + warning: t('com.elTransfer.props.targetOrderInfo'), + options: [{label: 'original', value: 'original'}, { + label: 'push', + value: 'push' + }, {label: 'unshift', value: 'unshift'}] + }, { + type: 'TableOptions', + field: 'titles', + props: { + column: [{label: t('props.value'), key: 'value'}], + valueType: 'string', + max: 2, + } + }, { + type: 'TableOptions', + field: 'buttonTexts', + props: { + column: [{label: t('props.value'), key: 'value'}], + valueType: 'string', + max: 2, + } + }]); + } +}; diff --git a/src/config/rule/tree.js b/src/config/rule/tree.js new file mode 100644 index 0000000..812fbb7 --- /dev/null +++ b/src/config/rule/tree.js @@ -0,0 +1,87 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps, makeTreeOptions, makeTreeOptionsRule} from '../../utils/index'; + +const label = '树形控件'; +const name = 'tree'; + +export default { + menu: 'main', + icon: 'icon-tree', + label, + name, + input: true, + event: ['nodeClick', 'nodeContextmenu', 'checkChange', 'check', 'currentChange', 'nodeExpand', 'nodeCollapse', 'nodeDragStart', 'nodeDragEnter', 'nodeDragLeave', 'nodeDragOver', 'nodeDragEnd', 'nodeDrop'], + validate: ['string', 'number', 'array'], + condition: function (rule) { + return { + type: 'cascader', + options: rule.props.data || [], + props: { + props: { + checkStrictly: true, + emitPath: false, + value: 'id', + } + } + } + }, + sfc(rule) { + rule.type = 'elTree'; + rule._sfc.modelField = 'defaultCheckedKeys'; + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.tree.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: { + props: { + label: 'label', + }, + showCheckbox: true, + nodeKey: 'id', + data: makeTreeOptions(t('props.option'), {label: 'label', value: 'id'}, 3), + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeTreeOptionsRule(t, 'props.data', 'label', 'id'), + {type: 'input', field: 'emptyText'}, { + type: 'TableOptions', + field: 'props', + props: { + column: [{label: t('props.key'), key: 'label'}, {label: t('props.value'), key: 'value'}], + valueType: 'object' + } + }, { + type: 'switch', + field: 'renderAfterExpand', + value: true + }, { + type: 'switch', + field: 'defaultExpandAll', + }, { + type: 'switch', + field: 'expandOnClickNode', + value: true + }, { + type: 'switch', + field: 'checkOnClickNode' + }, {type: 'switch', field: 'autoExpandParent', value: true}, { + type: 'switch', + field: 'checkStrictly' + }, {type: 'switch', field: 'accordion'}, { + type: 'inputNumber', + field: 'indent' + }, { + type: 'input', + field: 'nodeKey' + }]); + } +}; diff --git a/src/config/rule/treeSelect.js b/src/config/rule/treeSelect.js new file mode 100644 index 0000000..1a310be --- /dev/null +++ b/src/config/rule/treeSelect.js @@ -0,0 +1,89 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {localeProps, makeTreeOptions, makeTreeOptionsRule} from '../../utils/index'; + +const label = '树形选择'; +const name = 'elTreeSelect'; + +export default { + menu: 'main', + icon: 'icon-tree-select', + label, + name, + input: true, + event: ['change', 'visibleChange', 'removeTag', 'clear', 'blur', 'focus'], + validate: ['string', 'number', 'array'], + condition: function (rule) { + return { + type: 'cascader', + options: rule.props.data || [], + props: { + props: { + checkStrictly: true, + emitPath: false, + } + } + } + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.elTreeSelect.name'), + info: '', + effect: { + fetch: '' + }, + $required: false, + props: { + nodeKey: 'value', + showCheckbox: true, + data: makeTreeOptions(t('props.option'), {label: 'label', value: 'value'}, 3), + }, + }; + }, + watch: { + multiple({rule}) { + rule.key = uniqueId(); + } + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + makeTreeOptionsRule(t, 'props.data', 'label', 'value'), + {type: 'switch', field: 'multiple'}, { + type: 'switch', + field: 'disabled' + }, {type: 'switch', field: 'clearable'}, { + type: 'switch', + field: 'collapseTags' + }, { + type: 'inputNumber', + field: 'multipleLimit', + props: {min: 0} + }, {type: 'input', field: 'placeholder'}, + { + type: 'TableOptions', + field: 'props', + props: { + column: [{label: t('props.key'), key: 'label'}, {label: t('props.value'), key: 'value'}], + valueType: 'object' + } + }, { + type: 'switch', + field: 'renderAfterExpand', + value: true + }, { + type: 'switch', + field: 'defaultExpandAll', + }, { + type: 'switch', + field: 'expandOnClickNode', + value: true + }, { + type: 'switch', + field: 'checkOnClickNode' + }, {type: 'switch', field: 'checkStrictly'}, { + type: 'input', + field: 'nodeKey' + }]); + } +}; diff --git a/src/config/rule/upload.js b/src/config/rule/upload.js new file mode 100644 index 0000000..47e5e41 --- /dev/null +++ b/src/config/rule/upload.js @@ -0,0 +1,137 @@ +import uniqueId from '@form-create/utils/lib/unique'; +import {getInjectArg, localeOptions, localeProps} from '../../utils'; + +const label = '上传'; +const name = 'upload'; + +export default { + menu: 'main', + icon: 'icon-upload', + label, + name, + input: true, + easySlots: [{value: 'tip', type: 'text'}], + event: ['change', 'remove', 'preview', 'error', 'progress', 'exceed'], + languageKey: ['clickToUpload'], + validate: ['array'], + sfc(rule) { + rule.type = 'elUpload' + if (!rule.props.listType) { + rule.props.listType = 'picture-card'; + } + rule._sfc.modelField = 'fileList' + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.upload.name'), + info: '', + $required: false, + props: { + action: '/', + onSuccess: '$FNX:const res = $inject.args[0];\nconst file = $inject.args[1];\n\nfile.url = res.data.url;' + } + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [{ + type: 'switch', + field: 'disabled' + }, { + type: 'select', + field: 'listType', + options: localeOptions(t, [{label: 'text', value: 'text'}, { + label: 'picture', + value: 'picture' + }, { + label: 'picture-card', + value: 'picture-card' + }]), + }, {type: 'switch', field: 'multiple'}, {type: 'input', field: 'name'}, + { + type: 'PromptInput', + field: 'accept', + props: { + options: [ + { + label: t('props.image'), + value: 'image/*' + }, + { + label: t('props.document'), + value: '.pdf,.doc,.docx,.xml,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document' + }, + { + label: t('props.video'), + value: 'video/*' + }, + { + label: t('props.audio'), + value: 'audio/*' + }, + ] + } + }, + { + type: 'input', + field: 'action' + }, { + type: 'FnInput', + field: 'beforeUpload', + props: { + body: true, + button: true, + fnx: true, + args: [getInjectArg(t)], + name: 'beforeUpload', + } + }, { + type: 'FnInput', + field: 'beforeRemove', + props: { + body: true, + button: true, + fnx: true, + args: [getInjectArg(t)], + name: 'beforeRemove', + } + }, { + type: 'FnInput', + field: 'onSuccess', + warning: t('com.upload.info'), + props: { + body: true, + button: true, + fnx: true, + args: [getInjectArg(t)], + name: 'onSuccess', + } + }, { + type: 'TableOptions', + field: 'headers', + props: { + column: [{label: t('props.key'), key: 'label'}, {label: t('props.value'), key: 'value'}], + valueType: 'object' + } + }, { + type: 'TableOptions', + field: 'data', + props: { + column: [{label: t('props.key'), key: 'label'}, {label: t('props.value'), key: 'value'}], + valueType: 'object' + } + }, { + type: 'switch', + field: 'withCredentials' + }, { + type: 'switch', + field: 'autoUpload', + value: true + }, { + type: 'inputNumber', + field: 'limit', + props: {min: 0}, + }]); + } +}; diff --git a/src/config/rule/value.js b/src/config/rule/value.js new file mode 100644 index 0000000..968bdfe --- /dev/null +++ b/src/config/rule/value.js @@ -0,0 +1,31 @@ +import uniqueId from '@form-create/utils/lib/unique'; + +const label = '计算公式'; +const name = 'fcValue'; + +export default { + menu: 'main', + icon: 'icon-value', + label, + name, + input: true, + event: ['change'], + validate: false, + sfc(rule, {getParentFieldStr}) { + rule.type = 'div'; + rule._sfc.content = `{{formData.${getParentFieldStr()}${rule.field}}}`; + rule._sfc.vModel = false; + }, + rule({t}) { + return { + type: name, + field: uniqueId(), + title: t('com.fcValue.name'), + info: '', + props: {}, + }; + }, + props() { + return []; + } +}; diff --git a/src/config/rule/video.js b/src/config/rule/video.js new file mode 100644 index 0000000..00bea22 --- /dev/null +++ b/src/config/rule/video.js @@ -0,0 +1,79 @@ +import {localeProps} from '../../utils'; + +const label = '视频播放器'; +const name = 'videoBox'; + +export default { + menu: 'aide', + icon: 'icon-video', + label: label, + name: name, + mask: false, + event: ['pause', 'play', 'ended', 'error'], + rule() { + return { + type: name, + props: { + src: '', + type: 'mp4', + }, + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'src', + }, + { + type: 'select', + field: 'type', + options: [ + { + label: 'mp4', + value: 'mp4', + }, + { + label: 'mpegts', + value: 'mpegts', + }, + { + label: 'm2ts', + value: 'm2ts', + }, + { + label: 'flv', + value: 'flv', + }, + { + label: 'mse', + value: 'mse', + } + ], + }, + { + type: 'switch', + field: 'autoplay', + }, + { + type: 'switch', + field: 'controls', + value: true, + }, + { + type: 'switch', + field: 'isLive', + }, + { + type: 'switch', + field: 'loop', + }, + { + type: 'switch', + field: 'withCredentials', + value: true, + }, + ]); + }, +}; + diff --git a/src/config/rule/watermark.js b/src/config/rule/watermark.js new file mode 100644 index 0000000..4b7a7a2 --- /dev/null +++ b/src/config/rule/watermark.js @@ -0,0 +1,77 @@ +import {localeProps} from '../../utils'; + +const label = '水印'; +const name = 'elWatermark'; + +export default { + menu: 'aide', + icon: 'icon-watermark', + label, + name, + drag: true, + dragBtn: true, + inside: false, + mask: false, + rule({t}) { + return { + type: name, + style: { + width: '100%' + }, + props: { + content: t('com.' + name + '.name') + }, + children: [] + }; + }, + props(_, {t}) { + return localeProps(t, name + '.props', [ + { + type: 'input', + field: 'content' + }, + { + type: 'input', + field: 'image' + }, + { + type: 'inputNumber', + field: 'width', + props: { + min: 0 + }, + value: 120, + }, + { + type: 'inputNumber', + field: 'height', + props: { + min: 0 + }, + value: 64, + }, + { + type: 'inputNumber', + field: 'rotate', + value: -22, + }, + { + type: 'inputNumber', + field: 'zIndex', + props: { + min: 0 + } + }, + { + type: 'TableOptions', + field: 'gap', + props: { + column: [{label: t('props.value'), key: 'value'}], + valueType: 'string', + max: 2, + }, + value: [100, 100] + } + ]); + } +}; diff --git a/src/config/template/chineseAmount.js b/src/config/template/chineseAmount.js new file mode 100644 index 0000000..b60f14e --- /dev/null +++ b/src/config/template/chineseAmount.js @@ -0,0 +1,35 @@ +const label = '金额'; + +export default { + menu: 'template', + name: 'chineseAmount', + label, + autoField: true, + template: [ + { + type: 'inputNumber', + field: 'Fgtxlugfgbdvb5c', + title: '金额', + info: '', + $required: false, + display: true, + hidden: false, + _fc_drag_tag: 'inputNumber' + }, + { + type: 'fcValue', + field: 'Fvr1lugfgd3yb7c', + title: ' ', + info: '', + display: true, + hidden: false, + _fc_drag_tag: 'fcValue', + style: { + color: '#999999' + }, + computed: { + value: '"大写: " + TOCHINSESAMOUNT(Fgtxlugfgbdvb5c || 0)' + } + } + ] +}; diff --git a/src/config/template/col3.js b/src/config/template/col3.js new file mode 100644 index 0000000..7eedaf1 --- /dev/null +++ b/src/config/template/col3.js @@ -0,0 +1,45 @@ +const label = '三列栅格'; + +export default { + menu: 'template', + name: 'col3', + label, + autoField: false, + template: [ + { + type: 'fcRow', + children: [ + { + type: 'col', + props: { + span: 8 + }, + display: true, + hidden: false, + _fc_drag_tag: 'col' + }, + { + type: 'col', + props: { + span: 8 + }, + display: true, + hidden: false, + _fc_drag_tag: 'col' + }, + { + type: 'col', + props: { + span: 8 + }, + display: true, + hidden: false, + _fc_drag_tag: 'col' + } + ], + display: true, + hidden: false, + _fc_drag_tag: 'fcRow' + } + ] +}; diff --git a/src/config/template/col4.js b/src/config/template/col4.js new file mode 100644 index 0000000..d4fda3a --- /dev/null +++ b/src/config/template/col4.js @@ -0,0 +1,54 @@ +const label = '四列栅格'; + +export default { + menu: 'template', + name: 'col4', + label, + autoField: false, + template: [ + { + type: 'fcRow', + children: [ + { + type: 'col', + props: { + span: 6 + }, + display: true, + hidden: false, + _fc_drag_tag: 'col' + }, + { + type: 'col', + props: { + span: 6 + }, + display: true, + hidden: false, + _fc_drag_tag: 'col' + }, + { + type: 'col', + props: { + span: 6 + }, + display: true, + hidden: false, + _fc_drag_tag: 'col' + }, + { + type: 'col', + props: { + span: 6 + }, + display: true, + hidden: false, + _fc_drag_tag: 'col' + } + ], + display: true, + hidden: false, + _fc_drag_tag: 'fcRow' + } + ] +}; diff --git a/src/config/template/duration.js b/src/config/template/duration.js new file mode 100644 index 0000000..5129f8c --- /dev/null +++ b/src/config/template/duration.js @@ -0,0 +1,184 @@ +const label = '时长'; + +export default { + menu: 'template', + name: 'duration', + label, + autoField: true, + template: [ + { + 'type': 'fcInlineForm', + '_fc_id': 'id_Founm50iu5kocac', + 'name': 'ref_Fqrpm50iu5kocbc', + 'display': true, + 'hidden': false, + '_fc_drag_tag': 'fcInlineForm', + 'children': [ + { + 'type': 'datePicker', + 'field': 'Fz0um50itwf6bbc', + 'title': '开始时间', + '$required': false, + '_fc_drag_tag': 'datePicker', + 'validate': [ + { + 'type': 'validator', + 'trigger': 'change', + 'validator': '[[FORM-CREATE-PREFIX-function validator(rule, value, callback){this.api.validateField(\'Fv92m50itwf6bdc\');\ncallback();}-FORM-CREATE-SUFFIX]]', + 'mode': 'validator', + 'message': '' + } + ], + '_fc_template': 'duration', + '_fc_id': 'id_Fhqtm50itwf6bgc', + 'name': 'ref_Fzsym50itwf6bhc', + 'display': true, + 'hidden': false + }, + { + 'type': 'select', + 'field': 'F730m50itwf6bcc', + 'title': '开始时间段', + 'effect': { + 'fetch': '' + }, + '$required': false, + 'options': [ + { + 'label': '上午', + 'value': '1' + }, + { + 'label': '下午', + 'value': '1.5' + } + ], + '_fc_drag_tag': 'select', + '_fc_template': 'duration', + '_fc_id': 'id_Fnj8m50itwf6bkc', + 'name': 'ref_Fyjym50itwf6blc', + 'display': true, + 'hidden': false, + 'wrap': { + 'title': false + }, + 'style': { + 'marginLeft': '10px', + 'width': '150px' + } + } + ] + }, + { + 'type': 'fcInlineForm', + '_fc_id': 'id_Fxbnm50iw4ttccc', + 'name': 'ref_Fhwmm50iw4ttcdc', + 'display': true, + 'hidden': false, + '_fc_drag_tag': 'fcInlineForm', + 'children': [ + { + 'type': 'datePicker', + 'field': 'Fv92m50itwf6bdc', + 'title': '结束时间', + '$required': false, + '_fc_drag_tag': 'datePicker', + 'validate': [ + { + 'type': 'validator', + 'trigger': 'change', + 'validator': '[[FORM-CREATE-PREFIX-function validator(rule, value, callback){let startTime = this.api.getValue(\'Fz0um50itwf6bbc\');\nif(startTime && value && Date.parse(startTime) > Date.parse(value)) {\n\tcallback(false);\n return;\n}\ncallback()}-FORM-CREATE-SUFFIX]]', + 'mode': 'min', + 'message': '开始时间不能大于结束时间' + } + ], + '_fc_template': 'duration', + '_fc_id': 'id_Fu8im50itwf6bqc', + 'name': 'ref_Fy17m50itwf6brc', + 'display': true, + 'hidden': false + }, + { + 'type': 'select', + 'field': 'Fx9gm50itwf6bec', + 'title': '结束时间段', + 'effect': { + 'fetch': '' + }, + '$required': false, + 'options': [ + { + 'label': '上午', + 'value': '1' + }, + { + 'label': '下午', + 'value': '1.5' + } + ], + '_fc_drag_tag': 'select', + '_fc_template': 'duration', + '_fc_id': 'id_Fxrxm50itwf6buc', + 'name': 'ref_Fehcm50itwf6bvc', + 'display': true, + 'hidden': false, + 'wrap': { + 'title': false + }, + 'style': { + 'marginLeft': '10px', + 'width': '150px' + } + } + ] + }, + { + 'type': 'fcInlineForm', + '_fc_id': 'id_Ffb0m50j0g8vcec', + 'name': 'ref_Ftpym50j0g8vcfc', + 'display': true, + 'hidden': false, + '_fc_drag_tag': 'fcInlineForm', + 'children': [ + { + 'type': 'inputNumber', + 'field': 'F5q8m50itwf6bfc', + 'title': '时长', + '$required': false, + 'props': { + 'controls': false + }, + '_fc_drag_tag': 'inputNumber', + '_fc_template': 'duration', + '_fc_id': 'id_Fo5cm50itwf7c0c', + 'name': 'ref_Fnnvm50itwf7c1c', + 'display': true, + 'hidden': false, + 'computed': { + 'value': 'MAX(IF(Fz0um50itwf6bbc && Fv92m50itwf6bdc && TIMESTAMP(Fv92m50itwf6bdc) > TIMESTAMP(Fz0um50itwf6bbc), DIFFDAYS(Fz0um50itwf6bbc, Fv92m50itwf6bdc), 0) + IF(Fx9gm50itwf6bec && F730m50itwf6bcc, Fx9gm50itwf6bec - F730m50itwf6bcc + 0.5, 0), 0);' + } + }, + { + 'type': 'div', + 'native': true, + 'children': [ + '天' + ], + '_fc_drag_tag': 'text', + '_fc_template': 'duration', + '_fc_id': 'id_Fatsm50itwf7c4c', + 'name': 'ref_Fh2rm50itwf7c5c', + 'display': true, + 'hidden': false, + 'style': { + 'marginTop': '5px', + 'marginLeft': '10px' + } + } + ], + 'style': { + 'alignItems': 'flex-start' + } + } + ] +}; diff --git a/src/config/template/table43.js b/src/config/template/table43.js new file mode 100644 index 0000000..3679443 --- /dev/null +++ b/src/config/template/table43.js @@ -0,0 +1,25 @@ +const label = '四行三列表格'; + +export default { + menu: 'template', + name: 'table43', + label, + autoField: false, + template: [ + { + type: 'fcTable', + props: { + rule: { + row: 4, + col: 3, + style: {}, + 'class': {}, + layout: [] + } + }, + display: true, + hidden: false, + _fc_drag_tag: 'fcTable' + } + ] +}; diff --git a/src/form/elm.css b/src/form/elm.css new file mode 100644 index 0000000..7802123 --- /dev/null +++ b/src/form/elm.css @@ -0,0 +1,11 @@ +._fc-upload-preview { + display: inline-block; + width: 120px; + height: 120px; + border-radius: 5px; + overflow: hidden; +} + +.form-create.is-preview ._fc-upload .el-upload, .form-create.is-preview ._fc-upload .el-icon--close, .form-create.is-preview ._fc-upload .el-icon--close-tip{ + display: none !important; +} \ No newline at end of file diff --git a/src/form/elm.js b/src/form/elm.js new file mode 100644 index 0000000..a0fcd65 --- /dev/null +++ b/src/form/elm.js @@ -0,0 +1,93 @@ +// +----------------------------------------------------------------------- +// | FormCreate商业版 [ 让表单设计更简单 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2018~2025 https://form-create.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed FormCreate商业版并不是自由软件,未经授权不得使用、修改或移除版权信息 +// +---------------------------------------------------------------------- +// | Author: FormCreate Team +// +---------------------------------------------------------------------- +import formCreate from '@form-create/element-ui'; +import DataTable from '../components/dataTable/DataTable.vue'; +import Table from '../components/table/Table.vue'; +import Value from '../components/value/Value.vue'; +import Slot from '../components/slotComponent/SlotComponent.vue'; +import Json from '../components/jsonComponent/JsonComponent.vue'; +import StepForm from '../components/stepForm/StepForm.vue'; +import InlineForm from '../components/InlineForm.vue'; +import NestedTableForm from '../components/nestedTableForm/NestedTableForm.vue'; +import InfiniteTableForm from '../components/infiniteTableForm/InfiniteTableForm.vue'; +import TableForm from '../components/tableForm/TableForm.vue'; +import TableFormPro from '../components/tableForm/TableFormPro.vue'; +import FcCity from '../components/City.vue'; +import Dialog from '../components/dialog/Dialog.vue'; +import Drawer from '../components/drawer/Drawer.vue'; +import Echarts from '../components/echarts/Echarts.vue'; +import SignaturePad from '../components/SignaturePad.vue'; +import Id from '../components/Id.vue'; +import FcTitle from '../components/aide/FcTitle.vue'; +import FcMarkdown from '../components/aide/Markdown.vue'; +import AudioBox from '../components/aide/AudioBox.vue'; +import IframeBox from '../components/aide/IframeBox.vue'; +import BarCodeBox from '../components/aide/BarCodeBox.vue'; +import VideoBox from '../components/aide/VideoBox.vue'; +import QrCodeBox from '../components/aide/QrCodeBox.vue'; +import Cell from '../components/cell/Cell.vue'; +import DataSelect from '../components/dataSelect/DataSelect.vue'; +import './elm.css'; +import '../style/icon.css'; +import formulas from '../utils/formulas'; +import renderPreview from '../utils/preview'; +import behaviorAttr from '../utils/behavior'; +import easySlotsAttr from '../utils/easySlots'; +import useExtendApi from '../utils/extendApi'; +import useExtendMessageApi from '../utils/extendMessageApi'; +import loadjs from '../utils/loadjs/loadjs'; + +formCreate.parser().preview = renderPreview; + + +export function useAdvanced(formCreate) { + Object.keys(formulas).forEach(k => { + formCreate.setFormula(k, formulas[k]); + }); + + useExtendApi(formCreate); + useExtendMessageApi(formCreate); + formCreate.register('behavior', behaviorAttr); + formCreate.register('easySlots', easySlotsAttr); + +} + +useAdvanced(formCreate); + +formCreate.component('FcSlot', Slot); +formCreate.component('FcJson', Json); +formCreate.component('DataTable', DataTable); +formCreate.component('FcCell', Cell); +formCreate.component('TableForm', TableForm); +formCreate.component('TableFormPro', TableFormPro); +formCreate.component('StepForm', StepForm); +formCreate.component('FcValue', Value); +formCreate.component('FcCity', FcCity); +formCreate.component('FcTable', Table); +formCreate.component('NestedTableForm', NestedTableForm); +formCreate.component('InfiniteTableForm', InfiniteTableForm); +formCreate.component('FcDialog', Dialog); +formCreate.component('FcDrawer', Drawer); +formCreate.component('FcInlineForm', InlineForm); +formCreate.component('AudioBox', AudioBox); +formCreate.component('VideoBox', VideoBox); +formCreate.component('BarCodeBox', BarCodeBox); +formCreate.component('IframeBox', IframeBox); +formCreate.component('QrCodeBox', QrCodeBox); +formCreate.component('SignaturePad', SignaturePad); +formCreate.component('FcEcharts', Echarts); +formCreate.component('FcTitle', FcTitle); +formCreate.component('FcMarkdown', FcMarkdown); +formCreate.component('FcDataSelect', DataSelect); +formCreate.component('FcId', Id); +formCreate.loadjs = loadjs; + + +export default formCreate; \ No newline at end of file diff --git a/src/form/mobile.css b/src/form/mobile.css new file mode 100644 index 0000000..bb4c987 --- /dev/null +++ b/src/form/mobile.css @@ -0,0 +1,45 @@ + +.form-create-m .van-radio--horizontal, .form-create-m .van-checkbox--horizontal { + margin-bottom: 5px; +} + +.form-create-m .el-input__wrapper, .form-create-m .el-select__wrapper { + box-shadow: none; + padding-right: 0; + border-radius: 0; +} + +.form-create-m .el-input__wrapper:before, .form-create-m .el-select__wrapper:before { + position: absolute; + box-sizing: border-box; + content: " "; + pointer-events: none; + right: var(--van-padding-md); + bottom: 0; + left: var(--van-padding-md); + border-bottom: 1px solid var(--van-cell-border-color); + transform: scaleY(.5); +} + +.form-create-m .el-select__suffix { + display: none; +} + +.form-create-m .el-input__wrapper:after, .form-create-m .el-select__wrapper:after { + font: normal normal normal 14px / 1 var(--van-icon-font-family, "vant-icon"); + content: "\e660"; + color: var(--van-cell-right-icon-color); +} + +.form-create-m .el-date-editor.el-input, .form-create-m .el-date-editor.el-input__wrapper, .form-create-m .el-tree { + width: 100%; +} + +.form-create-m .el-upload-list, .form-create-m .el-upload--picture-card { + --el-upload-list-picture-card-size: 64px; + --el-upload-picture-card-size: 64px; +} + +.form-create-m.is-preview ._fc-upload .el-upload, .form-create-m.is-preview ._fc-upload .el-icon--close, .form-create-m.is-preview ._fc-upload .el-icon--close-tip{ + display: none !important; +} \ No newline at end of file diff --git a/src/form/mobile.js b/src/form/mobile.js new file mode 100644 index 0000000..f104d85 --- /dev/null +++ b/src/form/mobile.js @@ -0,0 +1,344 @@ +// +----------------------------------------------------------------------- +// | FormCreate商业版 [ 让表单设计更简单 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2018~2025 https://form-create.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed FormCreate商业版并不是自由软件,未经授权不得使用、修改或移除版权信息 +// +---------------------------------------------------------------------- +// | Author: FormCreate Team +// +---------------------------------------------------------------------- +import formCreateMobile from '@form-create/vant'; +import fcSelect from '@form-create/component-elm-select'; +import fcTree from '@form-create/component-elm-tree'; +import fcUpload from '@form-create/component-elm-upload'; +import formulas from '../utils/formulas'; +import StepForm from '../components/mobile/stepForm/StepForm.vue'; +import Popup from '../components/mobile/popup/Popup.vue'; +import DataTable from '../components/dataTable/DataTable.vue'; +import Table from '../components/table/Table.vue'; +import TableForm from '../components/tableForm/TableForm.vue'; +import TableFormPro from '../components/tableForm/TableFormPro.vue'; +import InfiniteTableForm from '../components/infiniteTableForm/InfiniteTableForm.vue'; +import NestedTableForm from '../components/nestedTableForm/NestedTableForm.vue'; +import Cell from '../components/cell/Cell.vue'; +import Value from '../components/value/Value.vue'; +import FcCity from '../components/mobile/City.vue'; +import Slot from '../components/slotComponent/SlotComponent.vue'; +import Json from '../components/jsonComponent/JsonComponent.vue'; +import InlineForm from '../components/InlineForm.vue'; +import Echarts from '../components/echarts/Echarts.vue'; +import SignaturePad from '../components/mobile/SignaturePad.vue'; +import Id from '../components/Id.vue'; +import FcTitle from '../components/aide/FcTitle.vue'; +import FcMarkdown from '../components/aide/Markdown.vue'; +import FcDataSelect from '../components/dataSelect/DataSelect.vue'; +import AudioBox from '../components/aide/AudioBox.vue'; +import IframeBox from '../components/aide/IframeBox.vue'; +import BarCodeBox from '../components/aide/BarCodeBox.vue'; +import VideoBox from '../components/aide/VideoBox.vue'; +import QrCodeBox from '../components/aide/QrCodeBox.vue'; +import is from '@form-create/utils/lib/type'; +import './mobile.css'; +import '../style/icon.css'; +import useExtendApi from '../utils/extendApi'; +import behaviorAttr from '../utils/behavior'; +import easySlotsAttr from '../utils/easySlots'; +import loadjs from '../utils/loadjs/loadjs'; +import {showNotify} from 'vant'; + +const DEFAULT_FORMATS = { + date: 'YYYY-MM-DD', + month: 'YYYY-MM', + datetime: 'YYYY-MM-DD HH:mm:ss', + timerange: 'HH:mm:ss', + daterange: 'YYYY-MM-DD', + monthrange: 'YYYY-MM', + datetimerange: 'YYYY-MM-DD HH:mm:ss', + year: 'YYYY' +}; + + +function pxToEm(px) { + return px / 20 + 'em'; +} + +function tidyWrapAlign(prop) { + if (!prop.wrap?.class) { + return; + } + if (prop.wrap.class === 'fc-wrap-top') { + prop.wrap.labelAlign = 'top'; + delete prop.wrap.class; + } else if (prop.wrap.class === 'fc-wrap-left') { + prop.wrap.labelAlign = 'left'; + delete prop.wrap.class; + } else if (prop.wrap.class === 'fc-wrap-right') { + prop.wrap.labelAlign = 'right'; + delete prop.wrap.class; + } +} + +const findTreeLabel = function (find, data, key, props) { + const fieldKey = props || {}; + data.forEach(v => { + if (find.indexOf(v[key || 'id']) > -1) { + find.splice(find.indexOf(v[key || 'id']), 1, v[fieldKey.label || 'label'] || v.text); + } + if (is.trueArray(v[fieldKey.children || 'children'])) { + findTreeLabel(find, v[fieldKey.children || 'children'], key, props); + } + }); + return find; +}; + +const findCheckboxLabel = function (find, data) { + data.forEach(v => { + if (find.indexOf(v.value) > -1) { + find[find.indexOf(v.value)] = v.label || v.text; + } + }); + return find; +}; + +function toArray(val) { + if (!val) { + return []; + } else if (!Array.isArray(val)) { + return [val]; + } + return val; +} + +export function useAdvanced(formCreate) { + Object.keys(formulas).forEach(k => { + formCreate.setFormula(k, formulas[k]); + }); + + useExtendApi(formCreate); + formCreate.register('behavior', behaviorAttr); + formCreate.register('easySlots', easySlotsAttr); + + formCreate.extendApi((api) => { + return { + message(config) { + showNotify({ + type: 'warning', + ...config || {} + }); + }, + } + }); + + formCreate.setDriver('elm', { + defaultPreview(ctx, _) { + let val = ctx.rule.value; + const h = ctx.$render.vNode.h; + const type = ctx.type; + const subForm = ctx.$handle.subForm[ctx.id]; + const readMode = ctx.prop.readMode; + if (readMode === false || readMode === 'custom' || !ctx.input || ctx.rule.subForm || (Array.isArray(subForm) ? subForm.length : subForm) || ['fcGroup', 'fcSubForm', 'tableForm', 'stepForm', 'nestedTableForm', 'infiniteTableForm', 'upload', 'fcDialog', 'fcDrawer', 'fcPopup'].indexOf(ctx.trueType) > -1) { + return ctx.parser.render(_, ctx); + } + if (['radio', 'select', 'checkbox'].indexOf(type) > -1) { + val = findCheckboxLabel([...toArray(val)], ctx.prop.props.options || ctx.prop.props.formCreateInject.options || []).join(', '); + } else if (['timePicker', 'datePicker', 'slider'].indexOf(type) > -1) { + val = Array.isArray(val) ? val.join(' - ') : val; + } else if (type === 'cascader') { + val = [...toArray(val)]; + if (!Array.isArray(val[0])) { + val = [val]; + } + val = val.map(item => { + return findTreeLabel(item, ctx.prop.props.options || ctx.prop.props.formCreateInject.options || [], 'value').join('/'); + }).join(', '); + } else if (type === 'fcEditor' || readMode === 'html') { + return h('div', {innerHTML: val}); + } else if (type === 'uploader' || readMode === 'image') { + val = toArray(val); + return h('div', {class: '_fc-upload'}, val.map(function (src) { + return h('div', {class: '_fc-upload-preview'}, [ + h('van-image', {src: src, fit: 'cover'}) + ]); + })); + } else if (type === 'signaturePad' && val) { + return h('van-image', {src: val, fit: 'cover', style: {height: '90px'}}); + } else if (typeof val === 'boolean' || type === 'switch') { + val = val ? '是' : '否'; + } + + return h('span', {class: '_fc-read-view'}, ['' + (val == null ? '' : val)]); + }, + updateWrap(ctx) { + let style = ctx.prop?.wrap?.style; + if (ctx.prop.col && ctx.prop.col.span) { + ctx.prop.col.span = 24; + } + if (style) { + style = Array.isArray(style) ? style : [style]; + style.forEach(item => { + delete item.marginBottom; + }) + } + tidyWrapAlign(ctx.prop); + }, + updateOptions(options) { + if (options.form?.labelWidth && options.form.labelWidth.indexOf('px') > -1) { + options.form.labelWidth = pxToEm(parseInt(options.form.labelWidth)); + } + if (options.form?.labelPosition) { + options.form.labelAlign = options.form.labelPosition; + delete options.form.labelPosition; + } + if (options.form?.hideRequiredAsterisk) { + options.form.colon = options.form.hideRequiredAsterisk; + delete options.form.hideRequiredAsterisk; + } + }, + parsers: { + inputNumber: { + mergeProp(ctx) { + ctx.prop.component = 'vanStepper'; + const props = ctx.prop.props; + props.decimalLength = props.precision; + props.integer = props.precision === 0; + delete props.precision; + } + }, + radio: { + mergeProp(ctx) { + if (ctx.prop.options) { + ctx.prop.props.options = ctx.prop.options; + } + } + }, + checkbox: { + mergeProp(ctx) { + if (ctx.prop.options) { + ctx.prop.props.options = ctx.prop.options; + } + } + }, + select: { + mergeProp(ctx) { + if (ctx.prop.props.multiple === true) { + ctx.prop.component = fcSelect; + } else { + if (ctx.prop.options) { + ctx.prop.props.options = ctx.prop.options; + } + ctx.prop.props.options = (ctx.prop.props.options || []).map(item => { + return { + text: item.label, + value: item.value + } + }) + } + } + }, + rate: { + mergeProp(ctx) { + ctx.prop.props.count = ctx.prop.props.max; + delete ctx.prop.props.max; + } + }, + timePicker: { + mergeProp(ctx) { + ctx.prop.component = 'elTimePicker'; + const props = ctx.prop.props; + if (!props.valueFormat) { + props.valueFormat = 'HH:mm:ss'; + } + } + }, + datePicker: { + mergeProp(ctx) { + ctx.prop.component = 'elDatePicker'; + const props = ctx.prop.props; + if (!props.valueFormat) { + props.valueFormat = DEFAULT_FORMATS[props.type] || DEFAULT_FORMATS['date']; + } + } + }, + colorPicker: { + mergeProp(ctx) { + ctx.prop.component = 'elColorPicker'; + } + }, + cascader: { + mergeProp(ctx) { + ctx.prop.component = 'elCascader'; + } + }, + elDivider: { + mergeProp(ctx) { + ctx.prop.component = 'vanDivider'; + } + }, + upload: { + mergeProp(ctx) { + ctx.prop.component = fcUpload; + } + }, + tree: { + mergeProp(ctx) { + ctx.prop.component = fcTree; + } + }, + row: { + mergeProp(ctx) { + ctx.prop.component = 'vanRow'; + } + }, + col: { + mergeProp(ctx) { + ctx.prop.component = 'vanCol'; + if (ctx.prop.props.xs) { + ctx.prop.props = {...ctx.prop.props, ...ctx.prop.props.xs}; + } + } + }, + fcDialog: { + mergeProp(ctx) { + ctx.prop.component = 'FcPopup'; + } + }, + fcDrawer: { + mergeProp(ctx) { + ctx.prop.component = 'FcPopup'; + } + } + } + }) +} + +useAdvanced(formCreateMobile); + +formCreateMobile.component('FcSlot', Slot); +formCreateMobile.component('FcJson', Json); +formCreateMobile.component('StepForm', StepForm); +formCreateMobile.component('FcPopup', Popup); +formCreateMobile.component('FcTable', Table); +formCreateMobile.component('FcCell', Cell); +formCreateMobile.component('FcInlineForm', InlineForm); +formCreateMobile.component('TableForm', TableForm); +formCreateMobile.component('TableFormPro', TableFormPro); +formCreateMobile.component('NestedTableForm', NestedTableForm); +formCreateMobile.component('InfiniteTableForm', InfiniteTableForm); +formCreateMobile.component('DataTable', DataTable); +formCreateMobile.component('FcValue', Value); +formCreateMobile.component('FcCity', FcCity); +formCreateMobile.component('AudioBox', AudioBox); +formCreateMobile.component('VideoBox', VideoBox); +formCreateMobile.component('BarCodeBox', BarCodeBox); +formCreateMobile.component('IframeBox', IframeBox); +formCreateMobile.component('QrCodeBox', QrCodeBox); +formCreateMobile.component('SignaturePad', SignaturePad); +formCreateMobile.component('FcEcharts', Echarts); +formCreateMobile.component('FcTitle', FcTitle); +formCreateMobile.component('FcDataSelect', FcDataSelect); +formCreateMobile.component('FcMarkdown', FcMarkdown); +formCreateMobile.component('FcId', Id); +formCreateMobile.loadjs = loadjs; + +export default formCreateMobile; + diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..88fa8bb --- /dev/null +++ b/src/index.js @@ -0,0 +1,312 @@ +// +----------------------------------------------------------------------- +// | FormCreate商业版 [ 让表单设计更简单 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2018~2025 https://form-create.com All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed FormCreate商业版并不是自由软件,未经授权不得使用、修改或移除版权信息 +// +---------------------------------------------------------------------- +// | Author: FormCreate Team +// +---------------------------------------------------------------------- +import FcDesigner from './components/FcDesigner.vue'; +import DragTool from './components/DragTool.vue'; +import Struct from './components/Struct.vue'; +import HtmlEditor from './components/HtmlEditor.vue'; +import FnEditor from './components/FnEditor.vue'; +import SizeInput from './components/style/SizeInput.vue'; +import ColorInput from './components/style/ColorInput.vue'; +import FieldInput from './components/FieldInput.vue'; +import PromptInput from './components/PromptInput.vue'; +import ValueInput from './components/computed/ValueInput.vue'; +import PatternInput from './components/computed/PatternInput.vue'; +import StyleConfig from './components/style/StyleConfig.vue'; +import ComputedConfig from './components/computed/ComputedConfig.vue'; +import EventConfig from './components/EventConfig.vue'; +import FetchConfig from './components/FetchConfig.vue'; +import TableColumnConfig from './components/dataTable/TableColumnConfig.vue'; +import TableButtonConfig from './components/dataTable/TableButtonConfig.vue'; +import DataTable from './components/dataTable/DataTable.vue'; +import FnConfig from './components/FnConfig.vue'; +import FnInput from './components/FnInput.vue'; +import GlobalFetchConfig from './components/GlobalFetchConfig.vue'; +import GlobalFetchSelect from './components/GlobalFetchSelect.vue'; +import GlobalEventConfig from './components/GlobalEventConfig.vue'; +import GlobalClassConfig from './components/GlobalClassConfig.vue'; +import GlobalClassSelect from './components/GlobalClassSelect.vue'; +import GlobalVariableConfig from './components/GlobalVariableConfig.vue'; +import VariableConfig from './components/computed/VariableConfig.vue'; +import FetchTable from './components/FetchTable.vue'; +import TableView from './components/table/TableView.vue'; +import Table from './components/table/Table.vue'; +import ValueView from './components/value/ValueView.vue'; +import Value from './components/value/Value.vue'; +import Slot from './components/slotComponent/SlotComponent.vue'; +import SlotView from './components/slotComponent/SlotComponentView.vue'; +import Json from './components/jsonComponent/JsonComponent.vue'; +import JsonView from './components/jsonComponent/JsonComponentView.vue'; +import InlineForm from './components/InlineForm.vue'; +import Validate from './components/Validate.vue'; +import DragBox from './components/DragBox.vue'; +import Required from './components/Required.vue'; +import TableOptions from './components/TableOptions.vue'; +import TreeOptions from './components/TreeOptions.vue'; +import StepForm from './components/stepForm/StepForm.vue'; +import StepFormView from './components/stepForm/StepFormView.vue'; +import TableFormView from './components/tableForm/TableFormView.vue'; +import NestedTableFormView from './components/nestedTableForm/NestedTableFormView.vue'; +import NestedTableForm from './components/nestedTableForm/NestedTableForm.vue'; +import InfiniteTableFormView from './components/infiniteTableForm/InfiniteTableFormView.vue'; +import InfiniteTableForm from './components/infiniteTableForm/InfiniteTableForm.vue'; +import TableForm from './components/tableForm/TableForm.vue'; +import TableFormPro from './components/tableForm/TableFormPro.vue'; +import TableFormColumnView from './components/tableForm/TableFormColumnView.vue'; +import StepFormItemView from './components/stepForm/StepFormItemView.vue'; +import DialogView from './components/dialog/DialogView.vue'; +import Dialog from './components/dialog/Dialog.vue'; +import DrawerView from './components/drawer/DrawerView.vue'; +import Drawer from './components/drawer/Drawer.vue'; +import Cell from './components/cell/Cell.vue'; +import CellView from './components/cell/CellView.vue'; +import Row from './components/Row.vue'; +import ConfigItem from './components/style/ConfigItem.vue'; +import ConfigTitle from './components/style/ConfigTitle.vue'; +import RuleSelect from './components/RuleSelect.vue'; +import HideConfig from './components/HideConfig.vue'; +import SpanInput from './components/SpanInput.vue'; +import Id from './components/Id.vue'; +import LanguageInput from './components/language/LanguageInput.vue'; +import AudioBox from './components/aide/AudioBox.vue'; +import VideoBox from './components/aide/VideoBox.vue'; +import BarCodeBox from './components/aide/BarCodeBox.vue'; +import IframeBox from './components/aide/IframeBox.vue'; +import QrCodeBox from './components/aide/QrCodeBox.vue'; +import FcCity from './components/City.vue'; +import FcTitle from './components/aide/FcTitle.vue'; +import FcMarkdown from './components/aide/Markdown.vue'; +import SignaturePad from './components/SignaturePad.vue'; +import dataSelectView from './components/dataSelect/DataSelectView.vue'; +import dataSelect from './components/dataSelect/DataSelect.vue'; +import Echarts from './components/echarts/Echarts.vue'; +import formCreate, {designerForm} from './utils/form'; +import FcEditor from '@form-create/component-wangeditor'; +import draggable from 'vuedraggable/src/vuedraggable'; +import { + compareVersion, + copyTextToClipboard, + getInjectArg, + localeOptions, + localeProps, + makeDataRule, + makeOptionsRule, + makeRequiredRule, + makeTitleRule, + makeTreeOptions, + makeTreeOptionsRule, + toJSON +} from './utils/index'; +import globalUseLocale, {locale, t} from './utils/locale'; +import CodeMirror from 'codemirror'; +import 'codemirror/addon/mode/simple'; +import './style/index.css'; +import './style/theme.css'; +import './form/elm.css'; +import './style/icon.css'; +import './utils/highlight/style.css'; +import formulas, {formulaInfo, formulaTree} from './utils/formulas'; +import {behavior, behaviorRules, behaviorTree} from './utils/behavior'; +import loadjs from './utils/loadjs/loadjs'; + +CodeMirror.defineSimpleMode('fcComputedMode', { + start: [ + {regex: /[a-zA-Z_]\w*/, token: 'keyword'}, + {regex: /[a-z]+/, token: 'def'}, + {regex: /\/\/.*/, token: 'comment'}, + {regex: /\/\*/, token: 'comment', next: 'comment'}, + {regex: /[-+]?(\d*\.)?\d+/, token: 'number'}, + {regex: /"(?:[^\\]|\\.)*?(?:"|$)/, token: 'string'}, + {regex: /[\(\),]/, token: 'bracket'}, + {regex: /==/, token: 'operator'}, + {regex: /=/, token: 'operator'}, + {regex: /[!<>]=?/, token: 'operator'}, + {regex: /&&|\|\|/, token: 'operator'}, + {regex: /[\+\-\*\%\/]/, token: 'builtin'}, + ], + comment: [ + {regex: /.*?\*\//, token: 'comment', next: 'start'}, + {regex: /.*/, token: 'comment'}, + ], +}); + +const addComponent = (id, component, previewComponent) => { + designerForm.component(id, previewComponent || component); + formCreate.component(id, component); +} + + +designerForm.component('draggable', draggable); +designerForm.component('DragTool', DragTool); +designerForm.component('DragBox', DragBox); +designerForm.component('Validate', Validate); +designerForm.component('Struct', Struct); +designerForm.component('HtmlEditor', HtmlEditor); +designerForm.component('FnEditor', FnEditor); +designerForm.component('ComputedConfig', ComputedConfig); +designerForm.component('Required', Required); +designerForm.component('TableOptions', TableOptions); +designerForm.component('TreeOptions', TreeOptions); +designerForm.component('TableFormColumn', TableFormColumnView); +designerForm.component('TableFormColumn2', TableFormColumnView); +designerForm.component('EventConfig', EventConfig); +designerForm.component('FetchConfig', FetchConfig); +designerForm.component('TableColumnConfig', TableColumnConfig); +designerForm.component('TableButtonConfig', TableButtonConfig); +designerForm.component('SizeInput', SizeInput); +designerForm.component('PatternInput', PatternInput); +designerForm.component('StyleConfig', StyleConfig); +designerForm.component('GlobalFetchConfig', GlobalFetchConfig); +designerForm.component('GlobalFetchSelect', GlobalFetchSelect); +designerForm.component('GlobalEventConfig', GlobalEventConfig); +designerForm.component('GlobalClassConfig', GlobalClassConfig); +designerForm.component('GlobalClassSelect', GlobalClassSelect); +designerForm.component('GlobalVariableConfig', GlobalVariableConfig); +designerForm.component('FetchTable', FetchTable); +designerForm.component('VariableConfig', VariableConfig); +designerForm.component('ColorInput', ColorInput); +designerForm.component('ConfigItem', ConfigItem); +designerForm.component('ConfigTitle', ConfigTitle); +designerForm.component('FieldInput', FieldInput); +designerForm.component('PromptInput', PromptInput); +designerForm.component('ValueInput', ValueInput); +designerForm.component('StepFormItem', StepFormItemView); +designerForm.component('FcRow', Row); +designerForm.component('FnConfig', FnConfig); +designerForm.component('FnInput', FnInput); +designerForm.component('RuleSelect', RuleSelect); +designerForm.component('HideConfig', HideConfig); +designerForm.component('SpanInput', SpanInput); +designerForm.component('LanguageInput', LanguageInput); +addComponent('FcSlot', Slot, SlotView); +addComponent('FcJson', Json, JsonView); +addComponent('DataTable', DataTable); +addComponent('FcEditor', FcEditor); +addComponent('fcInlineForm', InlineForm); +addComponent('FcCell', Cell, CellView); +addComponent('TableForm', TableForm, TableFormView); +addComponent('TableFormPro', TableFormPro, TableFormView); +addComponent('StepForm', StepForm, StepFormView); +addComponent('FcValue', Value, ValueView); +addComponent('FcTable', Table, TableView); +addComponent('NestedTableForm', NestedTableForm, NestedTableFormView); +addComponent('InfiniteTableForm', InfiniteTableForm, InfiniteTableFormView); +addComponent('FcDialog', Dialog, DialogView); +addComponent('FcDrawer', Drawer, DrawerView); +addComponent('AudioBox', AudioBox); +addComponent('VideoBox', VideoBox); +addComponent('BarCodeBox', BarCodeBox); +addComponent('IframeBox', IframeBox); +addComponent('QrCodeBox', QrCodeBox); +addComponent('SignaturePad', SignaturePad); +addComponent('FcEcharts', Echarts); +addComponent('FcTitle', FcTitle); +addComponent('FcCity', FcCity); +addComponent('FcId', Id); +addComponent('FcMarkdown', FcMarkdown); +addComponent('fcDataSelect', dataSelect, dataSelectView); + +const setFormula = function (formula) { + const _formulas = Array.isArray(formula) ? formula : [formula]; + _formulas.forEach(item => { + formulas[item.name] = item.handle; + formulaInfo[item.name] = item.example; + locale.value.formula[item.name] = item.info; + formulaTree.forEach(menu => { + if (menu.key === item.menu) { + menu.children.push(item.name); + } + formCreate.setFormula(item.name, item.handle); + designerForm.setFormula(item.name, item.handle); + }); + }); +} + +const setBehavior = function (behaviors) { + const _behaviors = Array.isArray(behaviors) ? behaviors : [behaviors]; + _behaviors.forEach(item => { + behavior[item.name] = item.handle; + behaviorRules[item.name] = item.rule; + locale.value.behavior[item.name] = { + info: item.info, + name: item.label + }; + behaviorTree.forEach(menu => { + if (menu.key === item.menu) { + menu.children.push(item.name); + } + }); + }); +} + +const install = function (Vue) { + Vue.component('FcDesigner', FcDesigner); +}; + +FcDesigner.install = install; +FcDesigner.makeOptionsRule = makeOptionsRule; +FcDesigner.formCreate = formCreate; +FcDesigner.designerForm = designerForm; +FcDesigner.component = addComponent; +FcDesigner.setFormula = setFormula; +FcDesigner.setBehavior = setBehavior; +FcDesigner.useLocale = globalUseLocale; +FcDesigner.copyTextToClipboard = copyTextToClipboard; +FcDesigner.getInjectArg = getInjectArg; +FcDesigner.localeOptions = localeOptions; +FcDesigner.localeProps = localeProps; +FcDesigner.makeRequiredRule = makeRequiredRule; +FcDesigner.makeTreeOptions = makeTreeOptions; +FcDesigner.makeTreeOptionsRule = makeTreeOptionsRule; +FcDesigner.makeTitleRule = makeTitleRule; +FcDesigner.makeDataRule = makeDataRule; +FcDesigner.toJSON = toJSON; +FcDesigner.loadjs = loadjs; +FcDesigner.t = t; +FcDesigner.utils = { + copyTextToClipboard, + getInjectArg, + localeOptions, + localeProps, + makeTitleRule, + makeOptionsRule, + makeRequiredRule, + makeTreeOptions, + makeTreeOptionsRule, + makeDataRule, + toJSON +}; + + +const minVersion = '3.2.22'; + +if (compareVersion(minVersion, formCreate.version) === 1) { + console.error('Please use FormCreate version ' + minVersion + ' or greater, see https://github.com/xaboy/form-create.'); +} + +export default FcDesigner; + +export { + formCreate, + designerForm, + install, + t, + loadjs, + copyTextToClipboard, + getInjectArg, + localeOptions, + localeProps, + makeOptionsRule, + makeRequiredRule, + makeTreeOptions, + makeTreeOptionsRule, + makeTitleRule, + makeDataRule, + toJSON +}; diff --git a/src/locale/en.js b/src/locale/en.js new file mode 100644 index 0000000..9c21394 --- /dev/null +++ b/src/locale/en.js @@ -0,0 +1,1789 @@ +const En = { + name: 'en', + form: { + field: 'Field', + title: 'Title', + info: 'Info', + ignore: 'ignore field', + native: 'Whether to display title', + control: 'Control', + labelShow: 'Whether to display', + labelPosition: 'Label position', + labelStyle: 'Label style', + labelSuffix: 'Label suffix', + formItem: 'Configure form item', + formItemSpan: 'Form item width', + row: 'Row', + globalEvent: 'Global event', + globalFetch: 'Global dataset', + globalClass: 'Global style', + globalConfig: 'Global', + size: 'Form size', + event: 'Form event', + labelWidth: 'Label width', + hideRequiredAsterisk: 'Hide the red asterisk next to the label of a required field', + formItemMarginBottom: 'Bottom margin of form items', + showMessage: 'Display verification error message', + inlineMessage: 'Display validation information inline', + submitBtn: 'Whether to display the form submit button', + resetBtn: 'Whether to display the form reset button', + appendChild: 'Insert child', + formMode: 'Form mode', + formName: 'Form name', + ignoreHiddenFields: 'Ignore hidden fields when submitting form', + previewMode: 'Reading mode', + componentMode: 'Component', + sfcMode: 'SFC', + document: 'Document', + controlDocument: 'Need more detailed configuration methods? Please view {doc}', + onSubmit: 'Triggered when form is submitted', + onReset: 'Triggered after form is reset', + onCreated: 'Triggered after the form component is initialized', + onMounted: 'Triggered after the form component is mounted', + onReload: 'Triggered after the form rendering rule is reloaded', + onChange: 'Triggered when the component value changes', + beforeSubmit: 'Triggered when form validation passed', + beforeFetch: 'Triggered before remote data request is sent', + }, + ai: { + name: 'Smart Assistant', + info: 'Hello! I\'m your smart form assistant. I can help you quickly create and edit forms for efficient design.', + try: 'Try asking me', + change: 'Change', + loading: 'Generating your form, please wait...', + fail: 'There was an issue creating the form. Please adjust your request.', + success: 'Processing complete!', + placeholder: 'Describe your requirements', + }, + warning: { + name: 'Unique identifier for the component, used to access and modify its configuration rules.', + field: 'Field name for binding data to the component. Must start with a letter for proper recognition.', + formList: 'Manages and switches form templates for quick switching and configuration in different business scenarios.', + fetch: 'Loads remote data through requests, updating the component based on the returned result.', + fetchQuery: 'Defines GET parameters for requests, passed via the URL.', + fetchData: 'Defines POST parameters for requests, passed in the request body.', + fetchDataType: 'Selects the data type for the request body to ensure correct format.', + beforeFetch: 'Before the request is sent, you can modify the parameters via a handler. Return false or a rejected Promise to cancel the request.', + fetchParse: 'Processes the response data after the request and converts it into the required structure.', + language: 'Manages multilingual data, allowing easy language switching for content display.', + variable: 'Reads configuration values from variables (e.g., Cookie, localStorage) and syncs updates when variables change.', + variableInfo: 'Select a variable from the list. If the variable is an object, access its properties using the format {{variableName.attributeName}}.', + pageManage: 'Manages sub-dialogs in forms, triggered by events to dynamically display information or enable interaction.', + globalConfig: 'Manages global events, styles, data, and variables for data sharing and event handling across components.', + globalClass: 'Defines global styles and classes for unified style management in component configurations.', + globalEvent: 'Defines global events for components to use, simplifying event management across components.', + globalFetch: 'Defines global data sources for static and remote data, used across component configurations.', + globalVariable: 'Defines computed properties in global variables, automatically updating when associated data changes.', + ignore: 'Excludes the component’s field from submission data when enabled.', + ignoreHiddenFields: 'Excludes hidden fields from form submission when enabled.', + behaviorIgnoreError: 'Defines whether to continue executing subsequent actions if an error occurs.', + behaviorExpression: 'Executes actions only when conditions are met.', + behaviorStopPropagation: 'Stops subsequent actions from executing when conditions are met.', + computedCondition: 'Automatically adjusts component states and data based on defined conditions.', + computedFormula: 'Dynamically calculates component states and data based on formulas and form data.', + }, + computed: { + value: { + title: 'Data linkage', + btn: 'Set data linkage', + name: 'Set component value' + }, + hidden: { + title: 'Hide condition', + btn: 'Set condition', + name: 'Set Hide condition for component' + }, + required: { + title: 'Required condition', + btn: 'Set condition', + name: 'Set required condition for component' + }, + disabled: { + title: 'Disable condition', + btn: 'Set condition', + name: 'Set disabled condition for component' + }, + formulas: { + '==': 'Equal', + '!=': 'Not equal', + 'on': 'Include', + 'notOn': 'Not included', + 'empty': 'Is empty', + 'notEmpty': 'Not empty', + 'pattern': 'Regular', + '>': 'Greater than', + '>=': 'Greater than or equal', + '<': 'Less than', + '<=': 'Less than or equal', + }, + variable: { + attr: 'Attribute list', + bind: 'Bind variable', + list: 'Variable list', + btn: 'Set variable', + title: 'Global variable', + create: 'Create variable', + placeholder: 'Please enter a description of the variable', + }, + linkage: { + trigger: 'Trigger the following linkage', + info: [ + 'The current component linkage display the value of', + ], + }, + name: 'Calculation formula', + setting: 'Setting conditions', + invert: 'Component status after the condition is met', + condition: 'Logic condition', + addCondition: 'Add condition', + addGroup: 'Add condition group', + form: 'Current', + subform: 'Subform', + formula: 'Formula', + formulaInfo: 'Function description', + formulaExample: 'Function example', + fieldUsed: '[{label}] Is used in the calculation formula, please modify the corresponding formula first', + fieldExist: '[{label}] Field already exists', + fieldEmpty: 'Field is required', + fieldChar: 'Field must begin with a letter', + }, + validate: { + type: 'Type', + typePlaceholder: 'Please select', + trigger: 'Trigger', + mode: 'Verification method', + modes: { + required: 'required', + notRequired: 'Not required', + pattern: 'pattern', + validator: 'validator', + min: 'min', + max: 'max', + len: 'length', + }, + types: { + string: 'String', + boolean: 'Boolean', + array: 'Multiple', + number: 'Number', + integer: 'Integer', + float: 'Float', + object: 'Collection', + date: 'Date', + url: 'Url', + email: 'Email', + }, + message: 'Error', + auto: 'Automatic', + autoRequired: 'Please enter {title}', + autoMode: 'Please enter the correct {title}', + requiredPlaceholder: 'Please enter', + required: 'Is it required', + rule: 'Validation', + }, + tableOptions: { + handle: 'Operation', + add: 'Add', + empty1: 'Click the lower right corner', + empty2: 'Button to add a column', + rmCol: 'Delete current column', + rmRow: 'Delete current row', + splitRow: 'Split into rows', + splitCol: 'Split into columns', + mergeBottom: 'Merge downward', + mergeRight: 'Merge right', + addTop: 'Add top column', + addBottom: 'Add the following', + addLeft: 'Add left column', + addRight: 'Add right column', + keyValue: 'key-value', + }, + struct: { + title: 'Edit', + only: '[{label}] Only one allowed to be added', + errorMsg: 'The input content is syntactically incorrect', + configured: 'Configured', + configuredData: '{num} configured', + configuredEvent: '{num} configured', + }, + class: { + title: 'Set style', + create: 'Create style', + placeholder: 'Please enter the name of the class', + saveMsg: 'Please save the style you are editing first', + configured: '{num} configured', + }, + event: { + title: 'Edit', + create: 'Create', + list: 'List', + placeholder: 'Please enter the name of the event', + saveMsg: 'Please save the event currently being edited', + type: 'Type', + info: 'Info', + action: 'Edit behavior', + inject: { + api: 'API of current form', + rule: 'Generate rules for the current form', + self: 'Component generation rule', + option: 'Form configuration', + args: 'Original parameters of event', + } + }, + eventInfo: { + blur: 'Triggered when focus is lost', + focus: 'Triggered when focus is obtained', + change: 'Triggered when the binding value changes', + input: 'Trigger when value changes', + clear: 'Triggered when the clear button is clicked', + close: 'Triggered when the component is closed', + click: 'Fires when the component is clicked', + add: 'Trigger when added', + delete: 'Triggered when deleted', + remove: 'Triggered when deleted', + visibleChange: 'Triggered when the drop-down box appears/hides', + calendarChange: 'Triggered when the selected date in the calendar changes', + panelChange: 'Fires when the date panel changes', + open: 'Triggered when opening', + opened: 'Triggered when opening animation ends', + closed: 'Triggered when closing animation ends', + openAutoFocus: 'Triggered when entering focus on content', + closeAutoFocus: 'Triggered when entering focus from content', + submit: 'Triggered when submitting table', + confirm: 'Triggered when clicking confirm', + validateFail: 'Triggered when table verification fails', + beforeLoad: 'Triggered before initialization', + loaded: 'Triggered after initialization is completed', + hook_load: 'Triggered after component rules are loaded', + hook_mounted: 'Triggered after component is mounted', + hook_deleted: 'Triggered after component rules are removed', + hook_watch: 'Triggered after component rules change', + hook_value: 'Triggered after component value changes', + hook_hidden: 'Triggered after component display status changes', + }, + fetch: { + info: 'When defining a request, variables can be used with double curly braces (e.g., {{token}}). These variables are automatically read during the request. If the variable is an object, its properties can be accessed using {{variableName.attributeName}}.', + title: 'Set data', + create: 'Create data', + config: 'Request', + action: 'Action', + actionRequired: 'Please enter the correct link', + placeholder: 'Please enter the name of the data source', + method: 'Method', + data: 'Data', + dataType: 'DataType', + headers: 'Headers', + query: 'Query', + parse: 'Processing', + response: 'Data returned by the interface', + onError: 'onError', + beforeFetch: 'Before', + remote: 'Remote', + static: 'Static', + optionsType: { + fetch: 'Fetch', + global: 'Dataset', + struct: 'Static', + } + }, + style: { + width: 'Width', + height: 'Height', + minWidth: 'Min Width', + minHeight: 'Min Height', + maxWidth: 'Max Width', + maxHeight: 'Max Height', + color: 'Color', + backgroundColor: 'Background color', + margin: 'Margin', + padding: 'Padding', + borderRadius: 'Border radius', + border: 'Border', + solid: 'Solid', + dashed: 'Dashed', + dotted: 'Dotted', + double: 'Double', + opacity: 'Opacity', + scale: 'Scale', + overflow: { + name: 'Overflow', + visible: 'Visible', + hidden: 'Hidden', + scroll: 'Scroll', + auto: 'Auto scroll after overflow', + }, + shadow: { + name: 'Shadow', + x: 'x-axis offset', + y: 'y-axis offset', + vague: 'blurred radius', + extend: 'diffusion radius', + inset: 'inward', + external: 'outward', + mode: 'Mode', + classic: 'Classic', + flat: 'Flat', + solid: 'Stereoscopic', + }, + display: { + name: 'Display', + block: 'Block', + 'inline-block': 'Inline block', + inline: 'Inline', + flex: 'Flex', + }, + flexDirection: { + name: 'Direction of the spindle', + row: 'The main axis is horizontal and the starting point is on the left', + 'row-reverse': 'The main axis is horizontal and the starting point is on the right', + column: 'The main axis is vertical and the starting point is on the upper edge', + 'column-reverse': 'The main axis is vertical and the starting point is at the lower edge', + }, + flexWrap: { + name: 'Whether to wrap', + nowrap: 'No newline', + wrap: 'Newline', + }, + justifyContent: { + name: 'Alignment on main axis', + 'flex-start': 'Left-aligned', + 'flex-end': 'Right-aligned', + center: 'Center', + 'space-between': 'Align both ends', + 'space-around': 'Equal spacing on both sides of child elements', + 'space-evenly': 'Child elements are evenly distributed on the main axis', + }, + alignItems: { + name: 'Alignment of child elements on the cross axis', + 'flex-start': 'Align the starting point of the cross axis', + 'flex-end': 'Align the end of the cross axis', + center: 'Align the midpoint of the cross axis', + baseline: 'Align along the baseline of the first line of text', + stretch: 'Full the height of the entire container', + }, + alignContent: { + name: 'Alignment of multi-line child elements on the cross axis', + 'flex-start': 'Align with the starting point of the cross axis', + 'flex-end': 'Align with the end point of the cross axis', + center: 'Align with the midpoint of the cross axis', + 'space-between': 'Align with both ends of the cross axis', + 'space-around': 'Multiple rows of sub-elements evenly distributed on the cross axis', + stretch: 'The axis occupies the entire cross axis', + }, + font: { + name: 'Font', + size: 'Size', + align: 'Align', + height: 'line-height', + spacing: 'letter-spacing', + preview: 'Preview', + }, + decoration: { + name: 'Decoration', + underline: 'underline', + 'line-through': 'line-through', + overline: 'overline', + }, + weight: { + name: 'font-weight', + 300: 'Fine', + 400: 'Default', + 500: 'Medium', + 700: 'Bold', + } + }, + designer: { + component: 'Component', + id: 'Unique id', + name: 'Serial number', + type: 'Type', + form: 'Form', + json: 'Rule', + style: 'Style', + rule: 'Basis', + advanced: 'Advanced', + props: 'Props', + slots: 'Slots', + customProps: 'Custom props', + validate: 'Validate', + event: 'Event', + clearWarn: 'It cannot be restored after clearing it. Are you sure you want to clear it? ', + childEmpty: 'Click the \\e789 button in the lower right corner to add a column', + dragEmpty: 'Drag the components from the list on the left here', + unload: 'Are you sure you want to leave the current page?', + sublist: 'Sublist', + formList: 'Form', + comList: 'Component', + addPage: 'Add module', + pageManage: 'Module', + gridLine: 'Auxiliary lines', + main: 'Main', + layout: 'Quick Layout', + col1: 'One column', + col2: 'Two columns', + col3: 'Three columns', + col4: 'Four columns', + print: { + title: 'Print form', + config: 'Configuration', + left: 'Left margin', + right: 'Right margin', + top: 'Top margin', + bottom: 'Bottom margin', + defaultStyle: 'Default', + wordStyle: 'Word', + export: 'Export PDF', + } + }, + menu: { + template: 'Template', + main: 'Basic', + aide: 'Auxiliary', + layout: 'Layout', + component: 'Component', + subform: 'Subform', + container: 'Container', + chart: 'Chart', + tree: 'Structure' + }, + formula: { + math: 'Math', + string: 'Text', + date: 'Date', + collection: 'Collection', + condition: 'Condition', + ADD: 'Get the value of adding two numbers', + SUB: 'Get the value of the subtraction of two numbers', + MUL: 'Get the value of multiplying two numbers', + DIV: 'Get the value of dividing two numbers', + SUM: 'Get the sum of the values in the collection', + MAX: 'Get the maximum value in the parameter list', + MIN: 'Get the minimum value in the parameter list', + ABS: 'Get the absolute value of a number', + AVG: 'Get the average value of the parameter list', + POWER: 'Get the power of the specified number', + RAND: 'Get a random number greater than or equal to 0 and less than 1', + PI: 'Get PI', + ROUND: 'Round a decimal to the specified number of digits', + SQRT: 'Get the positive square root of a number', + NOW: 'Get the current time', + TODAY: 'Get today date', + YEAR: 'Get the year of the specified date', + MONTH: 'Get the month of the specified date', + DAY: 'Get the number of days on the specified date', + HOUR: 'Get the number of hours on the specified date', + MINUTE: 'Get the minutes of the specified date', + SECOND: 'Get the seconds of the specified date', + DIFFDAYS: 'Get the number of days between two dates', + DIFFHOURS: 'Get the number of hours between two times, keeping two decimal places', + DIFFMINUTES: 'Get the number of minutes between two times', + ADDYEAR: 'Add years to the specified date', + ADDMONTH: 'Add months to the specified date', + ADDDAY: 'Add days to the specified date', + ADDWEEK: 'Add weeks to the specified date', + ADDHOUR: 'Add hours to the specified time', + ADDMINUTE: 'Add minutes to the specified time', + ADDSECOND: 'Add seconds to the specified time', + SUBYEAR: 'Subtract years to the specified date', + SUBMONTH: 'Subtract months to the specified date', + SUBDAY: 'Subtract days to the specified date', + SUBWEEK: 'Subtract weeks to the specified date', + SUBHOUR: 'Subtract hours to the specified time', + SUBMINUTE: 'Subtract minutes to the specified time', + SUBSECOND: 'Subtract seconds to the specified time', + TIMESTAMP: 'Get the timestamp of a specified date', + STARTSWITH: 'Check whether the string starts with the specified string', + EMPTY: 'Check whether the parameter is empty', + NOTEMPTY: 'Check whether the parameter is not empty', + LEN: 'Get the length of the specified collection', + MOD: 'Get the remainder of two numbers', + FLOOR: 'Get the value of the specified number rounded down', + CEIL: 'Get the value of the specified number rounded up', + FIXED: 'Round a decimal to the specified number of decimal places', + ISNUMBER: 'Check whether the parameter is a number', + TONUMBER: 'Convert parameter to number', + SLICELEFT: 'Get a string with a specified length starting from the beginning', + SLICERIGHT: 'Get a string with a specified length starting from the end', + TOLOWER: 'Convert all uppercase letters in the string to lowercase letters', + TOUPPER: 'Convert all lowercase letters in the string to uppercase letters', + INCLUDES: 'Check whether the string contains the specified string', + REPLACE: 'Replace part of the text in the string with different text, only replacing the first match', + REPLACEALL: 'Replace part of the text in the string with different text, replacing all matches', + TRIM: 'Remove spaces before and after the string', + TOCHINSESAMOUNT: 'Get the Chinese capital amount of the specified number', + UNION: 'Deduplicate the values in the collection/parameters and return the deduplicated collection', + INTERSECTIONSET: 'Get the intersection of two collections', + LIST: 'Get a collection of all parameters', + AND: 'Link expressions with "AND", return true when all expressions are true, otherwise return false', + OR: 'Link expressions with "OR", return true when one expression is true, otherwise return false', + IF: 'Check whether a condition is met, return the second parameter if it is met, otherwise return the third parameter', + IN: 'Check whether the second parameter is in the collection', + DEFAULT: 'Check the first parameter, return the second parameter if it is empty, otherwise return the first parameter', + CASE: 'Check whether one or more conditions are met and return the first value that meets the conditions', + COLUMN: 'Get the specified fields in the subform and return the collection', + VALUE: 'Get the specified field in the group form', + CONCAT: 'Concatenate all parameters and return the concatenated string', + FALSE: 'Return logical value false', + TRUE: 'Return logical value true', + NOT: 'Get the opposite value of a logical value', + EQ: 'Check if two values are equal', + NE: 'Check if two values are not equal', + GE: 'Check if the first value is greater than or equal to another value', + GT: 'Check if the first value is greater than another value', + LE: 'Check if the first value is less than or equal to another value', + LT: 'Check if the first value is less than another value', + }, + language: { + name: 'Language', + add: 'Add', + batchRemove: 'Batch Deletion', + select: 'Select language', + }, + props: { + circle: 'Circle', + square: 'Square', + image: 'Image', + video: 'Video', + audio: 'Audio', + document: 'Document', + size: 'Size', + info: 'Info', + success: 'Success', + error: 'Error', + warning: 'Warning', + primary: 'Primary', + danger: 'Danger', + form: 'Form', + subform: 'Subform', + other: 'Other', + model: 'Model', + field: 'Field', + variable: 'Variable', + disabled: 'Disabled', + enable: 'Enable', + time: 'time', + email: 'email', + number: 'number', + globalData: 'Global data', + mobile: 'Mobile', + reactive: 'Reactive', + pc: 'Pc', + title: 'Title', + content: 'Content', + collection: 'Collection', + group: 'Group', + custom: 'Custom', + change: 'Change', + blur: 'Blur', + preview: 'Preview', + clear: 'Clear', + cancel: 'Cancel', + close: 'Close', + ok: 'Ok', + save: 'Save', + refresh: 'Refresh', + submit: 'Submit', + reset: 'Reset', + copy: 'Copy', + delete: 'Delete', + hide: 'Hidden', + show: 'Show', + position: 'Position', + render: 'Render', + large: 'large', + default: 'default', + small: 'small', + always: 'always', + never: 'never', + hover: 'hover', + click: 'click', + button: 'button', + year: 'year', + month: 'month', + date: 'date', + dates: 'dates', + week: 'week', + datetime: 'datetime', + 'datetime-local': 'datetime', + datetimerange: 'datetimerange', + daterange: 'daterange', + monthrange: 'monthrange', + left: 'left', + right: 'right', + top: 'top', + bottom: 'bottom', + text: 'text', + icon: 'icon', + picture: 'picture', + 'picture-card': 'picture-card', + center: 'center', + vertical: 'vertical', + horizontal: 'horizontal', + manage: 'Manage', + key: 'key', + name: 'Name', + value: 'Value', + inputData: 'Default value', + append: 'Append', + options: 'Options', + option: 'Option', + callback: 'Callback', + mode: 'Mode', + style: 'Style', + print: 'Print', + _self: 'Current Window', + _blank: 'New Window', + _parent: 'Parent Window', + _top: 'Top Window', + }, + slots: { + prefix: 'Prefix', + suffix: 'Suffix', + prepend: 'Prepend', + append: 'Append', + }, + behavior: { + add: 'Add action', + props: { + id: 'Component', + status: 'Status', + compute: 'Condition', + static: 'Static', + formula: 'Expression', + setFormula: 'Configure expression', + continue: 'Continue execution', + stop: 'Interrupt execution', + break: 'Skip current', + model: 'Model', + fetch: 'Request', + response: 'Request result', + callback: 'Custom JS', + ignoreError: 'Exception', + expression: 'Execution condition', + stopPropagation: 'Blocking condition', + execute: 'Execute action', + info: 'Action description', + }, + openModel: { + name: 'Open pop-up window', + info: 'Open the selected pop-up window', + }, + closeModel: { + name: 'Close pop-up window', + info: 'Close the current pop-up window', + }, + hidden: { + name: 'Component visibility', + info: 'Control the display/hide of the selected component', + }, + disabled: { + name: 'Component availability', + info: 'Control the enable/disable of the selected component', + }, + resetFields: { + name: 'Reset form', + info: 'Reset form data', + }, + clearFields: { + name: 'Clear form', + info: 'Clear form data', + }, + validate: { + name: 'Validate form', + info: 'Validate the contents of the entire form' + }, + validateFields: { + name: 'Validate form items', + info: 'Validate selected form items' + }, + setValue: { + name: 'Form assignment', + info: 'Modify form data' + }, + fetch: { + name: 'Send request', + info: 'Configure and send API request', + props: { + append: 'Append formData', + }, + warning: { + append: 'When enabled, the data from the remote request will be automatically appended to the form data.', + response: 'The data from the remote request will be temporarily stored in the specified variable.', + } + }, + copy: { + name: 'Copy content', + info: 'Copy text content to the clipboard', + }, + callback: { + name: 'Custom operation', + info: 'Customize action logic through JavaScript', + }, + message: { + name: 'Message reminder', + info: 'Pop-up message reminder', + props: { + type: 'Type', + message: 'Message', + duration: 'Duration (ms)', + showClose: 'Show close button', + } + }, + submit: { + name: 'Submit form', + info: 'Manually submit the form and trigger the form submission event', + }, + }, + com: { + cascader: { + name: 'Cascader', + event: { + expandChange: 'Triggered when the expanded node changes', + removeTag: 'In multi-select mode, triggered when Tag is removed' + }, + props: { + props: 'Options', + placeholder: 'Placeholder', + disabled: 'Disabled', + clearable: 'Whether clearing options are supported', + showAllLevels: 'Whether the full path of the selected value is displayed in the input box', + collapseTags: 'Whether to collapse Tags in multi-select mode', + collapseTagsTooltip: 'Whether to display all selected tags when the mouse hovers over the text of a collapsed tag', + separator: 'Separator', + filterable: 'Whether this option can be searched', + tagType: 'Type', + }, + propsOpt: { + multiple: 'Whether there are multiple selections', + expandTrigger: 'How to expand the secondary menu', + checkStrictly: 'Whether it is strictly observed that parent and child nodes are not related to each other', + emitPath: 'When the selected node changes, whether to return an array consisting of the values of the menus at each level where the node is located', + value: 'The value of the specified option is an attribute value of the option object', + label: 'Specify the option label as a certain attribute value of the option object', + children: 'The child option of the specified option is a certain attribute value of the option object', + disabled: 'The specified option is disabled as a certain attribute value of the option object', + leaf: 'The flag bit of the leaf node of the specified option is an attribute value of the option object', + } + }, + checkbox: { + name: 'Checkbox', + props: { + input: 'Whether to fill in', + type: 'Type', + disabled: 'Disabled', + min: 'Minimum number that can be checked', + max: 'The maximum number that can be checked', + textColor: 'Font color when the button is active', + fill: 'Border and background color when the button is active' + } + }, + col: { + name: 'Col', + info: 'Responsive layout configures multiple devices, with mobile automatically using the first one.', + props: { + span: 'Number of columns occupied by grid', + offset: 'Number of spaces on the left side of the grid', + push: 'Move the grid to the right by the number of cells', + pull: 'Move the grid to the left by the number of cells' + } + }, + colorPicker: { + name: 'ColorPicker', + event: { + activeChange: 'Triggered when the color currently displayed in the panel changes' + }, + props: { + disabled: 'Disabled', + showAlpha: 'Whether transparency selection is supported', + colorFormat: 'Color format', + predefine: 'Predefined color', + } + }, + datePicker: { + name: 'Date', + props: { + pickerOptions: 'Options specific to the current time and date picker', + readonly: 'Readonly', + disabled: 'Disabled', + type: 'Type', + editable: 'Text box can be input', + clearable: 'Whether to display the clear button', + placeholder: 'Placeholder content for non-range selection', + startPlaceholder: 'Placeholder content for the start date when selecting the range', + endPlaceholder: 'Placeholder content for the end date when selecting the range', + format: 'Format displayed in the input box', + align: 'Alignment', + rangeSeparator: 'Separator when selecting range', + unlinkPanels: 'Unlink the two date panels in the range selector', + } + }, + dateRange: { + name: 'DateRange', + }, + timeRange: { + name: 'TimeRange', + }, + elAlert: { + name: 'Alert', + description: 'Description', + props: { + title: 'Title', + type: 'Type', + description: 'Supporting text', + closable: 'Whether it can be closed', + center: 'Whether the text is centered', + closeText: 'Close button custom text', + showIcon: 'Whether to display the icon', + effect: 'Select a provided theme' + } + }, + elButton: { + name: 'Button', + props: { + formCreateChild: 'Content', + size: 'Size', + type: 'Type', + plain: 'Whether the button is plain', + round: 'Whether the button has rounded corners', + circle: 'Whether the button is round', + loading: 'Whether it is loading status', + disabled: 'Disabled', + } + }, + elCard: { + name: 'Card', + props: { + header: 'Title', + shadow: 'Shadow display timing', + } + }, + elCollapse: { + name: 'Collapse', + event: { + change: 'Switch the currently active panel, its type is string in accordion mode and array in other modes', + }, + props: { + accordion: 'Whether it is in accordion mode' + } + }, + elCollapseItem: { + name: 'CollapseItem', + props: { + title: 'Panel title', + name: 'Identifier', + disabled: 'Disabled', + } + }, + elDescriptions: { + name: 'Descriptions', + props: { + title: 'Title text, displayed in the upper left', + extra: 'Text in the operating area, displayed in the upper right', + column: 'Number of tables in one row', + border: 'Whether it has a border', + direction: 'Direction of arrangement', + size: 'Size', + } + }, + elDescriptionsItem: { + name: 'DescriptionsItem', + props: { + label: 'Label', + __child: 'Content', + span: 'Number of columns', + width: 'The width of the column, the width of the same column in different rows is set according to the maximum value', + minWidth: 'Minimum width of column', + align: 'Column content alignment', + labelAlign: 'The label alignment of the column. If this item is not set, the content alignment will be used', + className: 'Column content custom class name', + } + }, + elDivider: { + name: 'Divider', + props: { + direction: 'Set the direction of the dividing line', + formCreateChild: 'Set Content', + contentPosition: 'Set content position' + } + }, + elTabPane: { + name: 'TabPane', + props: { + label: 'Title', + disabled: 'Disabled', + name: 'Identifier of the tab', + lazy: 'Whether the label is delayed in rendering' + } + }, + elTabs: { + name: 'Tabs', + event: { + tabClick: 'Triggered when tab is selected', + tabChange: 'Triggered when activeName changes', + tabRemove: 'Triggered when the tab remove button is clicked', + tabAdd: 'Triggered when a new tab button is clicked', + edit: 'Triggered after clicking the add or remove button of the tab', + }, + props: { + type: 'Type', + closable: 'Whether the label can be closed', + tabPosition: 'Tab position', + stretch: 'Whether the width of the label is self-stretching' + } + }, + elTag: { + name: 'Tag', + props: { + formCreateChild: 'Content', + type: 'Type', + size: 'Label size', + effect: 'Label theme', + closable: 'Whether it can be closed', + disableTransitions: 'Whether to disable gradient animation', + hit: 'Whether there is a border stroke', + round: 'Whether it is round', + color: 'Background color' + } + }, + elTransfer: { + name: 'Transfer', + event: { + leftCheckChange: 'Triggered when the left list element is selected/unselected by the user', + rightCheckChange: 'Triggered when the right list element is selected/unselected by the user' + }, + props: { + filterable: 'Is it searchable', + filterPlaceholder: 'Search box placeholder', + targetOrder: 'Sort strategy of list elements on the right', + targetOrderInfo: 'If it is original, keep the same order as the data; if it is push, the newly added elements will be ranked last; if it is unshift, the newly added elements will be ranked first', + titles: 'Title', + buttonTexts: 'Set button content', + props: 'Field alias of data source' + } + }, + elTreeSelect: { + name: 'TreeSelect', + event: { + removeTag: 'Triggered when tag is removed in multi-select mode' + }, + props: { + multiple: 'Whether there are multiple selections', + disabled: 'Disabled', + clearable: 'Whether the option can be cleared', + collapseTags: 'Whether to display the selected value as text during multi-selection', + multipleLimit: 'The maximum number of items that the user can select during multiple selection, if it is 0, there is no limit', + placeholder: 'Placeholder', + props: 'Options', + checkStrictly: 'When the check box is displayed, whether the parent and child are strictly not related to each other should be strictly followed', + renderAfterExpand: 'Whether to render its child nodes after expanding a tree node for the first time', + defaultExpandAll: 'Whether to expand all nodes by default', + expandOnClickNode: 'Whether to expand or shrink nodes when clicking on them', + checkOnClickNode: 'Whether to select the node when clicking the node', + nodeKey: 'Each tree node is used as an attribute for unique identification, and the entire tree should be unique' + } + }, + elLink: { + name: 'Link', + props: { + formCreateChild: 'Content', + href: 'Jump link', + type: 'Type', + underline: 'Whether to display underline', + disabled: 'Whether it is disabled', + target: 'Open with', + } + }, + elWatermark: { + name: 'Watermark', + props: { + content: 'Watermark text content', + image: 'Image source, it is recommended to export 2x or 3x image, high priority', + width: 'The width of the watermark, the default value of content is its own width', + height: 'The height of the watermark, the default value of content is its own height', + rotate: 'When the watermark is drawn, the rotation Angle, unit °', + zIndex: 'The z-index of the appended watermark element', + gap: 'The spacing between watermarks', + } + }, + elTooltip: { + name: 'Tooltip', + props: { + content: 'Content', + disabled: 'Disabled', + rawContent: 'Whether the content is treated as an HTML string', + enterable: 'Whether the mouse can enter the Tooltip', + effect: 'Theme', + placement: 'The position where the Tooltip component appears', + trigger: 'How to trigger Tooltip', + offset: 'Offset of occurrence position', + showAfter: 'How long to display content after triggering, in milliseconds', + hideAfter: 'Delay closing in milliseconds', + autoClose: 'Automatically hide delay after appearing, unit is milliseconds' + } + }, + elImage: { + name: 'Image', + props: { + src: 'Image path', + previewSrcList: 'Preview image list' + } + }, + elAvatar: { + name: 'Avatar', + props: { + src: 'Image path', + shape: 'Shape', + size: 'Size', + }, + }, + elMention: { + name: 'Mention', + event: { + search: 'Triggered when the trigger field is pressed', + select: 'Triggered when user selects an option', + }, + props: { + type: 'Type', + placeholder: 'Placeholder', + clearable: 'whether to show clear button', + disabled: 'Disabled', + whole: 'whether to delete the mention as a whole when backspace is pressed', + checkIsWhole: 'whether to delete the mention as a whole when backspace is pressed', + filterOption: 'filter options logic' + } + }, + elSegmented: { + name: 'Segmented', + props: { + size: 'Size', + block: 'Fill the width of the parent element', + disabled: 'Disabled', + } + }, + elFormItem: { + name: 'FormItem', + props: { + label: 'Label', + labelWidth: 'Label Width', + size: 'Size', + } + }, + elStatistic: { + name: 'Statistic', + props: { + value: 'Value', + title: 'Title', + prefix: 'Prefix of the value', + suffix: 'Suffix of the value', + } + }, + fcTitle: { + name: 'Title', + props: { + title: 'Title', + size: 'Size', + align: 'Align' + } + }, + fcId: { + name: 'ID', + props: { + prefix: 'Prefix', + } + }, + fcCity: { + name: 'Province picker', + props: { + api: 'URI', + level: 'Level', + clearable: 'Whether to display the clear button', + disabled: 'Disabled', + filter: 'Data filtering, return selectable data', + } + }, + fcCell: { + name: 'Cell' + }, + fcEditor: { + name: 'Editor', + props: { + disabled: 'Disabled' + } + }, + fcFlex: { + name: 'Flex', + }, + fcFlex2: { + name: 'Flex', + horizontal: 'Horizontal Center', + vertical: 'Vertical Center', + left: 'Left align', + right: 'Right align', + reset: 'Reset layout', + }, + fcRow: { + name: 'Row', + props: { + gutter: 'Grid interval', + type: 'Flex layout mode', + justify: 'Horizontal arrangement under flex layout', + align: 'Vertical arrangement under flex layout' + } + }, + fcDialog: { + name: 'Dialog', + props: { + title: 'Title', + width: 'Width of dialog box', + fullscreen: 'Is it full screen', + modal: 'Does it need a mask layer', + autoClose: 'Automatically close the popup after submitting the form', + footer: 'Whether to show operation buttons', + beforeClose: 'Callback before closing' + } + }, + fcDrawer: { + name: 'Drawer', + props: { + title: 'Title', + size: 'Width of drawer box', + direction: 'Opening direction', + modal: 'Does it need a mask layer', + autoClose: 'Automatically close the popup after submitting the form', + footer: 'Whether to show operation buttons', + beforeClose: 'Callback before closing' + }, + directionType: { + ltr: 'Left', + rtl: 'Right', + } + }, + fcTable: { + name: 'Table', + props: { + mini: 'Compact Mode', + border: 'Whether to display border', + borderColor: 'Border color', + borderWidth: 'Border width' + } + }, + fcTableGrid: { + name: 'Grid', + }, + fcValue: { + name: 'Computed', + empty: 'Set the calculation formula in the right configuration', + }, + fcSlot: { + name: 'Slot', + empty: 'Define {tag} slot', + props: { + name: 'Slot Name' + } + }, + fcJson: { + name: 'Dynamic', + empty: 'Populate a zone by loading {tag} rules', + props: { + _loadType: 'JSON Rules', + type: 'Type', + } + }, + lineChart: { + name: 'Line Chart', + data: 'Chart Data', + pieTypeOpt: { + pie: 'Pie', + doughnut: 'Doughnut', + 'half-doughnut': 'Half-doughnut', + }, + funnelSortOpt: { + descending: 'descending', + ascending: 'ascending', + }, + props: { + title: 'Chart name', + subtitle: 'Chart introduction', + valueFormat: 'Format numerical display', + stack: 'Whether to stack when there are multiple columns of data', + smooth: 'Whether the line transitions smoothly', + showLegend: 'Whether to display the mark', + showSeriesLabel: 'Whether to display the value', + barBackgroundColor: 'Column background color', + funnelSort: 'Sort method', + pieType: 'Shape', + min: 'Minimum value', + max: 'Maximum value', + value: 'Number', + indicator: 'Indicator', + loadOptions: 'Initialization', + } + }, + areaChart: { + name: 'Area Chart' + }, + barChart: { + name: 'Bar Chart' + }, + customChart: { + name: 'Custom Chart', + }, + funnelChart: { + name: 'Funnel Chart' + }, + gaugeChart: { + name: 'Gauge Chart' + }, + pieChart: { + name: 'Pie Chart' + }, + radarChart: { + name: 'Radar Chart' + }, + scatterChart: { + name: 'Scatter Chart' + }, + stripeChart: { + name: 'Horizontal bar Chart' + }, + fcInlineForm: { + name: 'Inline', + }, + group: { + name: 'Subform', + props: { + disabled: 'Disabled', + syncDisabled: 'Whether to force synchronization of the disabled state with the subform', + expand: 'Set the default expansion items', + button: 'Whether to display the operation button', + sortBtn: 'Whether to display the sort button', + min: 'Set the minimum number of items to add', + max: 'Set the maximum number of items to add', + } + }, + html: { + name: 'HTML', + props: { + formCreateChild: 'Content', + } + }, + input: { + name: 'Input', + event: { + change: 'Triggered when the value changes, when the component loses focus or the user presses Enter', + }, + props: { + type: 'Type', + maxlength: 'Maximum input length', + minlength: 'Minimum input length', + placeholder: 'Placeholder', + clearable: 'Whether to display the clear button', + disabled: 'Disabled', + readonly: 'Readonly', + } + }, + inputNumber: { + name: 'InputNumber', + props: { + precision: 'Precision of input value', + min: 'Set the minimum value allowed for the counter', + max: 'Set the maximum allowed value of the counter', + step: 'Step', + stepStrictly: 'Whether only multiples of step can be entered', + disabled: 'Disabled', + controls: 'Whether to use control buttons', + controlsPosition: 'Control button position', + placeholder: 'Placeholder' + } + }, + password: { + name: 'Password', + event: { + change: 'Triggered when the value changes, when the component loses focus or the user presses Enter', + }, + props: { + disabled: 'Disabled', + readonly: 'Readonly', + maxlength: 'Maximum input length', + minlength: 'Minimum input length', + placeholder: 'Placeholder', + clearable: 'Whether to display the clear button' + } + }, + radio: { + name: 'Radio', + props: { + input: 'Whether to fill in', + disabled: 'Disabled', + type: 'Type', + textColor: 'Text color when button form is activated', + fill: 'Fill color and border color when the button form is activated' + } + }, + rate: { + name: 'Rate', + props: { + max: 'Maximum score', + disabled: 'Disabled', + allowHalf: 'Whether to allow half selection', + voidColor: 'Color of the icon when not selected', + disabledVoidColor: 'The color of the icon when it is not selected when read-only', + voidIconClass: 'Class name of the icon when not selected', + disabledVoidIconClass: 'The class name of the icon when it is not selected when read-only', + showScore: 'Whether to display the current score', + textColor: 'Color of auxiliary text', + scoreTemplate: 'Score display template' + } + }, + fcDataSelect: { + name: 'Subform Select' + }, + select: { + name: 'Select', + title: 'Please select', + emptyText: 'Drag components to configure search conditions', + event: { + removeTag: 'Triggered when tag is removed in multi-select mode' + }, + props: { + title: 'Title', + valueKey: 'The value of the specified option is an attribute value of the option object', + labelKey: 'Specify the option label as a certain attribute value of the option object', + autoLoad: 'Auto-trigger search', + multiple: 'Whether there are multiple selections', + disabled: 'Disabled', + clearable: 'Whether the option can be cleared', + collapseTags: 'Whether to display the selected value as text during multi-selection', + multipleLimit: 'The maximum number of items that the user can select when multiple-selecting, if it is 0, there is no limit', + placeholder: 'Placeholder', + filterable: 'Is it searchable', + allowCreate: 'Whether users are allowed to create new entries', + noMatchText: 'Text displayed when no search conditions match', + noDataText: 'Text displayed when option is empty', + reserveKeyword: 'When multiple selections are searchable, whether to retain the current search keyword after selecting an option', + defaultFirstOption: 'Press Enter in the input box and select the first matching item', + remote: 'Whether the options are loaded remotely from the server', + remoteMethod: 'Custom remote search methods', + } + }, + slider: { + name: 'Slider', + props: { + min: 'Minimum value', + max: 'Maximum value', + disabled: 'Disabled', + step: 'Step', + showInput: 'Whether to display the input box, it is only valid during non-range selection', + showInputControls: 'Whether to display the control buttons of the input box when the input box is displayed', + showStops: 'Whether to display discontinuities', + range: 'Whether it is a range selection', + vertical: 'Whether portrait mode', + height: 'Slider height, required in portrait mode' + } + }, + space: { + name: 'Space' + }, + stepForm: { + name: 'StepForm', + event: { + next: 'Triggered when the next button is clicked', + }, + props: { + submitBtn: 'Show submit button', + autoValidate: 'Automatically validate the form before entering the next step', + 'stepsProps>alignCenter': 'Align center', + 'stepsProps>simple': 'Whether to apply simple style' + } + }, + stepFormItem: { + name: 'StepFormItem', + props: { + title: 'Title', + description: 'Description' + } + }, + subForm: { + name: 'Group', + props: { + disabled: 'Disabled', + syncDisabled: 'Whether to force synchronization of the disabled state with the subform' + } + }, + switch: { + name: 'Switch', + slots: { + 'active-action': 'Contents when opened', + 'inactive-action': 'Content when closed', + }, + props: { + disabled: 'Disabled', + width: 'Width (px)', + activeText: 'Text description when opening', + inactiveText: 'Text description when closing', + activeValue: 'Value when opening', + inactiveValue: 'Value when closed', + activeColor: 'Background color when opening', + inactiveColor: 'Background color when closed' + } + }, + tableForm: { + name: 'TableForm', + props: { + disabled: 'Disabled', + filterEmptyColumn: 'Whether to filter empty rows', + max: 'Maximum number of rows to add, if 0, there is no limit', + min: 'Minimum number of rows to add', + size: 'Size', + emptyText: 'Text content displayed when empty data', + height: 'Height', + showIndex: 'Display line number', + stripe: 'Show zebra stripe', + border: 'Border', + button: 'Operation button', + page: 'Page', + addable: 'Allow to add', + deletable: 'Allow delete', + newColumn: 'Display new line by default', + 'button>column': 'Button management', + 'button>label': 'Operation', + 'button>fixed': 'Position', + 'button>width': 'Column width', + 'page>props>pageSize': 'Number of items displayed on each page', + 'page>props>small': 'Use small pagination style', + 'page>props>background': 'Add a background color to the pagination button', + } + }, + tableFormPro: { + name: 'TableForm Pro', + event: { + handleClick: 'This event is triggered when the operation button is clicked', + } + }, + nestedTableForm: { + name: 'NestedForm', + props: { + disabled: 'Disabled', + max: 'Maximum number of rows to add, if 0, there is no limit', + nestedMax: 'Maximum number of rows that can be added to a subform, if 0, there is no limit', + } + }, + infiniteTableForm: { + name: 'InfiniteForm', + props: { + disabled: 'Disabled', + childrenField: 'Set the field name of the child', + max: 'Maximum number of rows to add, if 0, there is no limit', + layerMax: 'Maximum number of layers to add, if 0, there is no limit', + } + }, + nestedSubTableForm: { + name: 'SubTableForm', + }, + tableFormColumn: { + name: 'TableFormColumn', + label: 'TableFormColumn', + props: { + label: 'Title', + header: 'Header', + fixed: 'Fixed', + width: 'Width', + color: 'Color', + hidden: 'Hidden', + required: 'Whether to display required asterisks', + } + }, + tableFormColumn2: { + name: 'TableFormColumn', + header: 'Configure the column headers. Duplicate headers will be automatically merged.' + }, + dataTable: { + name: 'DataTable', + handle: 'Handle', + click: 'onClick', + filter: 'Filter', + header: 'Header', + event: { + cellMouseEnter: 'This event is triggered when the cell is hovered into', + cellMouseLeave: 'This event is triggered when the cell is hovered out', + handleClick: 'This event is triggered when the operation button is clicked', + rowClick: 'This event is triggered when a row is clicked', + rowDblclick: 'This event is triggered when a row is double-clicked', + headerClick: 'This event is triggered when the header of a column is clicked', + filterChange: 'This event is triggered when the filter condition changes', + expandChange: 'This event is triggered when the user expands or closes a row', + sortChange: 'This event is triggered when the sort condition of the table changes', + selectionChange: 'Triggered when selection changes', + }, + button: { + title: 'Operation Button', + btn: 'Configure operation button', + link: 'Link', + round: 'Round', + plain: 'Plain', + disabled: 'Disabled', + }, + column: { + title:'Table list', + btn: 'Configuration table list', + prop: 'Field', + sort: 'Sort', + }, + format: { + default: 'Default', + tag: 'Tag', + image: 'Image', + custom: 'Custom', + }, + fixed: { + default: 'default', + left: 'left', + right: 'right', + }, + sortable: { + disabled: 'normal', + default: 'default', + custom: 'interface', + }, + props: { + _optionType: 'Table data', + 'page>totalField': 'Field name of total number of entries in interface response data', + 'page>dataField': 'Field name of list data in interface response data', + 'page>orderField': 'Parameter name for sorting when requesting the interface', + 'page>orderByField': 'Parameter name of the sorting method when requesting the interface', + 'page>pageField': 'Parameter name of the page number when requesting the interface (Page)', + 'page>pageSizeField': 'Parameter name of the number of entries when requesting the interface (Page)', + column: 'Column management', + showSummary: 'Whether to display total row at the end of table', + selection: 'Whether to display multiple selection box', + size: 'Size', + rowKey: 'Key of row data', + emptyText: 'Text content displayed when empty data', + height: 'Height', + index: 'Display line number', + stripe: 'Show zebra stripe', + border: 'Border', + defaultExpandAll: 'Expand all lines by default', + button: 'Operation button', + page: 'Page', + 'button>column': 'Button management', + 'button>label': 'Operation', + 'button>fixed': 'Position', + 'button>width': 'Column width', + 'page>position': 'Position', + 'page>props>pageSize': 'Number of items displayed on each page', + 'page>props>small': 'Use small pagination style', + 'page>props>background': 'Add a background color to the pagination button', + }, + requiredName: 'Please enter the button name', + requiredKey: 'Please enter the button ID', + requiredLabel: 'Please enter the title', + requiredRender: 'Please enter the render function', + }, + text: { + name: 'Text', + props: { + formCreateChild: 'Content' + } + }, + textarea: { + name: 'Textarea', + event: { + change: 'Triggered when the value changes, when the component loses focus or the user presses Enter', + }, + props: { + disabled: 'Disabled', + readonly: 'Readonly', + maxlength: 'Maximum input length', + minlength: 'Minimum input length', + showWordLimit: 'Whether to display word count statistics', + placeholder: 'Placeholder', + rows: 'Number of input box rows', + autosize: 'Whether the height is adaptive' + } + }, + timePicker: { + name: 'Time', + 'HH:mm:ss': 'HH:mm:ss', + 'HH:mm': 'HH:mm', + props: { + __format: 'Format', + pickerOptions: 'Options specific to the current time and date picker', + readonly: 'Readonly', + disabled: 'Disabled', + editable: 'Text box can be input', + clearable: 'Whether to display the clear button', + placeholder: 'Placeholder content for non-range selection', + startPlaceholder: 'Placeholder content for the start date when selecting the range', + endPlaceholder: 'Placeholder content for the end date when selecting the range', + isRange: 'Whether to select a time range', + arrowControl: 'Whether to use arrows for time selection', + align: 'Align' + } + }, + tree: { + name: 'Tree', + event: { + nodeClick: 'Triggered when the node is clicked', + nodeContextmenu: 'This event will be triggered when a node is right-clicked', + checkChange: 'Triggered when the check box is clicked', + check: 'Triggered after clicking the node checkbox', + currentChange: 'Event triggered when the currently selected node changes', + nodeExpand: 'Event triggered when a node is expanded', + nodeCollapse: 'Event triggered when a node is closed', + nodeDragStart: 'Event triggered when a node starts dragging', + nodeDragEnter: 'Event triggered when dragging into other nodes', + nodeDragLeave: 'Event triggered when dragging leaves a node', + nodeDragOver: 'Event triggered when dragging a node', + nodeDragEnd: 'Event triggered when drag ends', + nodeDrop: 'Event triggered when drag and drop is successfully completed' + }, + props: { + emptyText: 'Text displayed when the content is empty', + props: 'Options', + renderAfterExpand: 'Whether to render its child nodes after expanding a tree node for the first time', + defaultExpandAll: 'Whether to expand all nodes by default', + expandOnClickNode: 'Whether to expand or contract the node when clicking the node, if it is false, the node will only be expanded or contracted when the arrow icon is clicked. ', + checkOnClickNode: 'Whether to select the node when clicking the node', + autoExpandParent: 'Whether to automatically expand the parent node when expanding the child node', + checkStrictly: 'When the check box is displayed, whether the parent and child are strictly not related to each other should be strictly followed', + accordion: 'Whether to open only one sibling tree node for expansion at a time', + indent: 'Horizontal indent (px) between adjacent level nodes', + nodeKey: 'Each tree node is used as an attribute for unique identification, and the entire tree should be unique' + } + }, + upload: { + name: 'Upload', + info: 'After a successful upload, assign the returned URL to file.url or the result to file.value for use in subsequent form submissions.', + event: { + remove: 'Triggered when a file is removed from the file list', + preview: 'Triggered when clicking an uploaded file in the file list', + error: 'Triggered when file upload fails', + progress: 'Triggered when file is uploaded', + exceed: 'Triggered when the limit is exceeded' + }, + slots: { + tip: 'Description' + }, + props: { + listType: 'Upload type', + multiple: 'Whether multiple selection of files is supported', + action: 'Upload address (required)', + beforeUpload: 'Triggered before uploading a file', + onSuccess: 'Triggered when the upload is successful', + beforeRemove: 'Triggered before deleting a file', + headers: 'Set upload request headers', + data: 'Extra parameters attached when uploading', + name: 'Uploaded file field name', + withCredentials: 'Support sending cookie credential information', + accept: 'Accept uploaded file types', + autoUpload: 'Whether to upload the file immediately after selecting it', + disabled: 'Disabled', + limit: 'Maximum number of uploads allowed' + } + }, + audioBox: { + name: 'AudioPlayer', + preloadOpt: { + auto: 'Auto', + metadata: 'Metadata', + none: 'None', + }, + event: { + pause: 'Triggered when audio playback is paused', + play: 'Triggered when audio starts playing', + ended: 'Triggered when the audio playback ends' + }, + props: { + src: 'Audio path', + type: 'Audio Type', + autoplay: 'Whether to play automatically', + loop: 'Whether to loop playback', + muted: 'Whether to mute', + controls: 'Whether to display the control bar', + preload: 'Preload', + } + }, + barCodeBox: { + name: 'Barcode', + props: { + value: 'Content', + format: 'Barcode type', + width: 'Width of a single bar', + height: 'Height of the barcode', + displayValue: 'Whether to display content', + fontSize: 'Set text size', + textPosition: 'Set text position', + textAlign: 'Set text alignment', + textMargin: 'Set text margin', + background: 'Background color', + lineColor: 'Line color', + } + }, + iframeBox: { + name: 'Iframe', + event: { + load: 'Trigger after page loading', + }, + loadingOpt: { + eager: 'Load immediately', + lazy: 'Lazy loading' + }, + props: { + src: 'Website URL', + loading: 'Loading method' + } + }, + qrCodeBox: { + name: 'QR Code', + circleTypeOpt: { + square: 'Square', + dots: 'Dots', + rounded: 'Rounded', + classy: 'Classy', + }, + props: { + data: 'Content', + image: 'Center image path', + width: 'Width of QR code', + height: 'Height of QR code', + circleType: 'Dots type', + circleColor: 'Dots color', + } + }, + signaturePad: { + name: 'Signature', + props: { + penColor: 'Line color' + } + }, + videoBox: { + name: 'Video', + event: { + error: 'Triggered when video loading fails', + pause: 'Triggered when video playback is paused', + play: 'Triggered when video starts playing', + ended: 'Triggered after video playback ends' + }, + props: { + src: 'Video path', + type: 'Video type', + autoplay: 'Whether to play automatically', + loop: 'Whether to play in a loop', + isLive: 'Whether to broadcast live', + controls: 'Whether to display the control bar', + withCredentials: 'Whether to carry credentials', + } + }, + }, + tmp: { + duration: 'duration', + chineseAmount: 'chineseAmount', + col3: '3-Col', + col4: '4-Col', + table43: '4x3Table', + } +}; + +export default En; + diff --git a/src/locale/jp.js b/src/locale/jp.js new file mode 100644 index 0000000..0557dc2 --- /dev/null +++ b/src/locale/jp.js @@ -0,0 +1,1790 @@ +const Jp = { + name: 'jp', + form: { + field: 'フィールド', + title: 'タイトル', + info: '情報', + ignore: 'フィールドを無視する', + native: 'タイトルを表示するかどうか', + control: 'コントロール', + labelShow: '表示するかどうか', + labelPosition: 'ラベルの位置', + labelStyle: 'ラベルのスタイル', + labelSuffix: 'ラベルのサフィックス', + formItem: 'フォーム項目を構成する', + formItemSpan: 'フォーム項目の幅', + row: '一行', + globalEvent: 'グローバルイベント', + globalFetch: 'グローバルデータセット', + globalClass: 'グローバルスタイル', + globalConfig: 'グローバル構成', + size: 'フォームのサイズ', + event: 'フォームイベント', + labelWidth: 'ラベルの幅', + hideRequiredAsterisk: '必須フィールドのラベルの隣の赤いアスタリスクを隠す', + formItemMarginBottom: 'フォーム項目の下余白', + showMessage: '検証エラーメッセージを表示', + inlineMessage: 'インラインで検証情報を表示', + submitBtn: 'フォーム送信ボタンを表示するかどうか', + resetBtn: 'フォームリセットボタンを表示するかどうか', + appendChild: '子を挿入', + formMode: 'フォームモード', + formName: 'フォーム名', + ignoreHiddenFields: 'フォーム送信時に隠しフィールドを無視する', + previewMode: '閲覧モード', + componentMode: 'コンポーネント', + sfcMode: 'SFC', + document: '資料', + controlDocument: 'より詳細な設定方法が必要ですか? {doc} をご覧ください', + onSubmit: 'フォームが送信されたときにトリガーされます', + onReset: 'フォームのリセット後にトリガーされる', + onCreated: 'フォームコンポーネントが初期化された後にトリガーされます', + onMounted: 'フォームコンポーネントがマウントされた後にトリガーされます', + onReload: 'フォームレンダリングルールが再読み込みされた後にトリガーされます', + onChange: 'コンポーネントの値が変化するとトリガーされます', + beforeSubmit: 'フォーム検証に合格するとトリガーされます', + beforeFetch: 'リモート データ リクエストが送信される前にトリガーされます', + }, + ai: { + name: 'アシスタント', + info: 'こんにちは!スマートフォームアシスタントです。素早くフォームを作成・編集し、効率的なデザインをサポートします。', + try: '試しに聞いてみてください', + change: '変更', + loading: 'フォームを作成中です。しばらくお待ちください...', + fail: 'フォーム作成中に問題が発生しました。内容を調整してください。', + success: '処理完了!', + placeholder: 'ご要望を入力してください', + }, + warning: { + name: 'コンポーネントの一意の識別子で、設定ルールの取得および変更に使用されます。この識別子により、コンポーネントを正確に特定し、属性や挙動を制御できます。', + field: 'コンポーネントに対応するフィールド名で、コンポーネントのデータとバインディングします。フィールド名は必ずアルファベットで始める必要があります。', + formList: 'フォームテンプレートを管理・切り替え、異なるビジネスシーンで素早くフォームを切り替えて設定できます。', + fetch: 'リモートデータはリモートリクエストを通じてコンポーネントの設定項目をロードします。リクエストパラメータを設定後、コンポーネントは自動的にリクエストを送信し、データを取得して結果に基づいて更新されます。', + fetchQuery: 'リクエストのGETパラメータを定義し、URLを通じてデータを送信します。', + fetchData: 'リクエストのPOSTパラメータを定義し、リクエストボディを通じてデータを送信します。', + fetchDataType: 'リクエストボディのデータタイプを選択し、データ形式が正しいことを保証します。', + beforeFetch: 'リクエスト送信前にハンドラーでパラメータを変更できます。中止するには、false または拒否された Promise を返します。', + fetchParse: 'リクエストの返却後、処理関数を使用して結果を処理し、コンポーネントに必要なデータ構造に変換します。', + language: 'ページの多言語データを管理し、コンポーネント内で異なる言語のテキストを設定します。ワンクリックで言語体系を切り替えることができ、多言語環境での使用と表示が容易になります。', + variable: '変数から設定項目の値を読み取ります。変数(例:Cookie、localStorage、グローバル変数、外部データソースなど)を通じて設定項目を設定できます。関連する変数が変化すると、設定項目も自動的に更新されます。', + variableInfo: '変数リストから変数を選択してください。変数がオブジェクトの場合は、{{variableName.attributeName}} の形式でプロパティにアクセスできます。', + pageManage: 'フォーム内のサブウィンドウをデザインし、イベントでウィンドウを表示させます。フォーム内で情報の動的表示や操作を行うのに便利です。', + globalConfig: 'グローバルイベント、スタイル、データ、変数を管理し、異なるコンポーネント間でデータ共有とイベント処理を行います。', + globalClass: 'グローバルスタイルとClassの定義を提供し、ユーザーはコンポーネント設定内でこれらのプリセットClassを選択して適用できます。', + globalEvent: 'グローバルイベントはコンポーネントイベントを定義し、他のコンポーネントで簡単に使用できるように設定され、イベント管理と分配を簡素化します。', + globalFetch: 'グローバルデータソースを使って一般的なデータソースを定義し、静的データとリモートデータに対応します。このデータソースはさまざまなコンポーネント設定内で使用できます。', + globalVariable: 'グローバル変数には計算プロパティを定義できます。フォームデータや外部データを通じてコンポーネントに必要なデータを返します。関連データの変化に応じて自動的に更新され、バインディング変数やイベントで使用できます。', + ignore: '有効にすると、フォーム送信時にこのコンポーネントのフィールドが自動的に除外され、送信データに含まれません。', + ignoreHiddenFields: '有効にすると、フォーム送信時に非表示のコンポーネントフィールドが自動的にフィルタリングされ、可視のフィールドデータのみが送信されます。', + behaviorIgnoreError: 'アクション実行中にエラーが発生した場合、後続のアクションを実行するかどうかを設定します。', + behaviorExpression: '条件が成立した場合にのみ、アクションが実行されます。', + behaviorStopPropagation: '条件が成立した場合、後続のアクション実行を停止します。', + computedCondition: '条件を定義することで、コンポーネントの状態とデータ値が自動的に調整されます。', + computedFormula: '式とフォームデータを使用して、コンポーネントの状態とデータ値を動的に計算します。', + }, + computed: { + value: { + title: 'データ連携', + btn: 'データ連携の設定をする', + name: 'コンポーネントの値を設定' + }, + hidden: { + title: '非表示条件', + btn: '条件を設定する', + name: 'コンポーネントの条件を設定' + }, + required: { + title: '必要な条件', + btn: '条件を設定する', + name: 'コンポーネントに必要な条件を設定します' + }, + disabled: { + title: '無効な条件', + btn: '条件を設定する', + name: 'コンポーネントを無効にする条件を設定する' + }, + formulas: { + '==': '等しい', + '!=': '等しくない', + 'on': '含める', + 'notOn': '含まれていません', + 'empty': '空です', + 'notEmpty': '空ではありません', + 'pattern': '正規式', + '>': 'より大きい', + '>=': '以上', + '<': '未満', + '<=': '以下', + }, + variable: { + attr: '属性リスト', + bind: '変数のバインド', + list: '変数リスト', + btn: '変数の設定', + title: 'グローバル変数', + create: '変数の作成', + placeholder: '変数の説明を入力してください', + }, + linkage: { + trigger: '以下の連携をトリガーします', + info: [ + '現在のコンポーネントは', + 'の値を表示するためにリンクされます', + ], + }, + name: '計算式', + setting: '条件の設定', + invert: '条件成立後のコンポーネントの状態', + condition: '論理条件', + addCondition: '条件を追加', + addGroup: '条件グループを追加', + form: '現在', + subform: 'サブフォーム', + formula: '公式', + formulaInfo: '関数の説明', + formulaExample: '関数の例', + fieldUsed: '[{label}] が計算式で使用されています。先に対応する式を修正してください。', + fieldExist: '[{label}] フィールドは既に存在しています', + fieldEmpty: 'フィールドは必須です', + fieldChar: 'フィールドは文字で始まる必要があります', + }, + validate: { + type: 'タイプ', + typePlaceholder: '選択してください', + trigger: 'トリガー', + mode: '検証方法', + modes: { + required: '必要', + notRequired: '不要', + pattern: '形式', + validator: 'バリデーター', + min: '最小', + max: '最大', + len: '長さ', + }, + types: { + string: '文字列', + boolean: 'ブール値', + array: '複数', + number: '数字', + integer: '整数', + float: '浮動小数点', + object: 'コレクション', + date: '日付', + url: 'URL', + email: 'メール', + }, + message: 'エラー', + auto: '自動', + autoRequired: '{title}を入力してください', + autoMode: '正しい{title}を入力してください', + requiredPlaceholder: '入力してください', + required: '必要ですか', + rule: '検証', + }, + tableOptions: { + handle: '操作', + add: '追加', + empty1: '右下角をクリック', + empty2: 'カラムを追加するボタン', + rmCol: '現在の列を削除', + rmRow: '現在の行を削除', + splitRow: '行に分割', + splitCol: '列に分割', + mergeBottom: '下に結合', + mergeRight: '右に結合', + addTop: 'トップカラムを追加', + addBottom: '以下に追加', + addLeft: '左のカラムを追加', + addRight: '右のカラムを追加', + keyValue: 'キーと値のペア', + }, + struct: { + title: '編集', + only: '[{label}] 追加可能なのは一つだけです', + errorMsg: '入力内容が文法的に不正確です', + configured: '設定済み', + configuredData: '{num}が設定されました', + configuredEvent: '{num}が設定されました', + }, + class: { + title: '編集', + create: 'スタイルの作成', + placeholder: 'クラス名を入力してください', + saveMsg: 'まず編集中のスタイルを保存してください', + configured: '{num}が設定されました', + }, + event: { + title: '編集', + create: '作成', + list: 'リスト', + placeholder: 'イベントの名前を入力してください', + saveMsg: '現在編集中のイベントを保存してください', + type: 'タイプ', + info: '情報', + action: '編集動作', + inject: { + api: '現在のフォームのAPI', + rule: '現在のフォームの生成規則', + self: 'コンポーネント生成規則', + option: 'フォーム設定', + args: 'イベントの原始パラメータ', + } + }, + eventInfo: { + blur: 'フォーカスが失われたときにトリガーされます', + focus: 'フォーカスが取得されたときにトリガーされます', + change: 'バインディング値が変更されたときにトリガーされます', + input: '値が変化したときにトリガー', + clear: 'クリアボタンがクリックされたときにトリガーされます', + close: 'コンポーネントが閉じられたときにトリガーされます', + click: 'コンポーネントがクリックされると起動', + add: '追加時にトリガー', + delete: '削除時にトリガーされる', + remove: '削除時にトリガーされる', + visibleChange: 'ドロップダウン ボックスが表示/非表示になったときにトリガーされます', + calendarChange: 'カレンダーで選択した日付が変更されるとトリガーされます', + panelChange: '日付パネルが変更されたときに発生します', + open: '開くときにトリガー', + opened: '開くアニメーションが終了したときにトリガー', + closed: '閉じるアニメーションが終了したときにトリガー', + openAutoFocus: 'コンテンツにフォーカスが移ったときにトリガー', + closeAutoFocus: 'コンテンツからフォーカスが移ったときにトリガー', + submit: 'テーブルを送信するときにトリガー', + confirm: '確認をクリックしたときにトリガー', + validateFail: 'テーブル検証が失敗したときにトリガー', + beforeLoad: '初期化前にトリガー', + loaded: '初期化が完了した後にトリガー', + hook_load: 'コンポーネント ルールがロードされた後にトリガーされます', + hook_mounted: 'コンポーネントがマウントされた後にトリガーされます', + hook_deleted: 'コンポーネント ルールが削除された後にトリガーされます', + hook_watch: 'コンポーネントのルールが変更されたときにトリガーされます', + hook_value: 'コンポーネントの値が変更されたときにトリガーされます', + hook_hidden: 'コンポーネントの表示ステータスが変化した後にトリガーされます', + }, + fetch: { + info: 'リクエストの定義時に、ダブル括弧(例:{{token}})を使って変数を指定できます。インターフェースリクエスト時にこれらの変数は自動的に読み取られます。変数がオブジェクトの場合は、{{variableName.attributeName}} で属性値にアクセスできます。', + title: 'データの設定', + create: 'データの作成', + config: 'リクエスト', + action: 'アクション', + actionRequired: '正しいリンクを入力してください', + placeholder: 'データソースの名前を入力してください', + method: 'メソッド', + data: '添付', + dataType: 'データ型', + headers: 'ヘッダー', + query: 'クエリ', + parse: '処理', + response: 'インターフェースから返されたデータ', + onError: 'エラー時', + beforeFetch: 'プリプロセス', + remote: 'リモート', + static: '静的', + optionsType: { + fetch: 'フェッチ', + global: 'データセット', + struct: '静的', + } + }, + style: { + width: '幅', + height: '高さ', + minWidth: '最小幅', + minHeight: '最小高さ', + maxWidth: '最大幅', + maxHeight: '最大高さ', + color: '色', + backgroundColor: '背景色', + margin: '余白', + padding: 'パッディング', + borderRadius: 'ボーダー半径', + border: 'ボーダー', + solid: 'ソリッド', + dashed: 'ダッシュ', + dotted: 'ドット', + double: 'ダブル', + opacity: '不透明度', + scale: 'スケール', + overflow: { + name: 'オーバーフロー', + visible: '可視', + hidden: '隠れた', + scroll: 'スクロール', + auto: 'オーバーフロー後に自動的にスクロールする', + }, + shadow: { + name: '影', + x: 'x軸オフセット', + y: 'y軸オフセット', + vague: 'ぼかし半径', + extend: '拡散半径', + inset: '内向き', + external: '外向き', + mode: 'モード', + classic: 'クラシック', + flat: 'フラット', + solid: '立体', + }, + display: { + name: 'ディスプレイ', + block: 'ブロック', + 'inline-block': 'インラインブロック', + inline: 'インライン', + flex: 'フレックス', + }, + flexDirection: { + name: '軸方向', + row: '主軸は水平で、開始点は左側', + 'row-reverse': '主軸は水平で、開始点は右側', + column: '主軸は垂直で、開始点は上側', + 'column-reverse': '主軸は垂直で、開始点は下側', + }, + flexWrap: { + name: '改行するか', + nowrap: '新しい行なし', + wrap: '新しい行あり', + }, + justifyContent: { + name: '主軸上の位置合わせ', + 'flex-start': '左揃え', + 'flex-end': '右揃え', + center: '中央', + 'space-between': '両端を揃える', + 'space-around': '子要素の両側に等間隔', + 'space-evenly': '子要素は主軸上に均等に分配', + }, + alignItems: { + name: '交差軸上の子要素の位置合わせ', + 'flex-start': '交差軸の開始点を揃える', + 'flex-end': '交差軸の終点を揃える', + center: '交差軸の中央を揃える', + baseline: '最初の行のテキストのベースラインに揃える', + stretch: '全体の容器の高さを満たす', + }, + alignContent: { + name: '交差軸上の多行子要素の位置合わせ', + 'flex-start': '交差軸の開始点で揃える', + 'flex-end': '交差軸の終点で揃える', + center: '交差軸の中央を揃える', + 'space-between': '交差軸の両端で揃える', + 'space-around': '交差軸上で複数の行の子要素を均等に分配', + stretch: '全体の交差軸を占める', + }, + font: { + name: 'フォント', + size: 'サイズ', + align: '整列', + height: '行の高さ', + spacing: '文字間隔', + preview: 'プレビュー', + }, + decoration: { + name: '装飾', + underline: 'underline', + 'line-through': 'line-through', + overline: 'overline', + }, + weight: { + name: 'font-weight', + 300: 'Fine', + 400: 'Default', + 500: 'Medium', + 700: 'Bold', + } + }, + designer: { + component: 'コンポーネント', + id: '一意のID', + name: 'シリアルナンバー', + type: 'タイプ', + form: 'フォーム', + json: '規則', + style: 'スタイル', + rule: '基準', + advanced: '高度な', + props: 'プロップ', + slots: 'スロット', + customProps: 'カスタムプロップ', + validate: '検証', + event: 'イベント', + clearWarn: 'クリア後は復元できません。本当にクリアしますか?', + childEmpty: '右下の\\e789ボタンをクリックして列を追加してください', + dragEmpty: '左のリストからここへコンポーネントをドラッグしてください', + unload: '現在のページを離れてもよろしいですか?', + sublist: 'サブ一覧', + formList: 'フォーム', + comList: 'コンポーネント', + addPage: 'モジュールの追加', + pageManage: 'モジュール', + gridLine: '補助線', + main: 'メイン', + layout: 'クイックレイアウト', + col1: '1列', + col2: '2列', + col3: '3列', + col4: '4列', + print: { + title: '印刷フォーム', + config: '設定', + left: '左余白', + right: '右余白', + top: '上余白', + bottom: '下余白', + defaultStyle: 'デフォルト', + wordStyle: 'ドキュメント', + export: 'PDF をエクスポート', + } + }, + menu: { + template: 'テンプレート', + main: '基本', + aide: '補助', + layout: 'レイアウト', + component: '分野', + subform: 'サブフォーム', + container: '容器', + chart: 'チャート', + tree: '構造' + }, + formula: { + math: '数学', + string: 'テキスト', + date: '日付', + collection: 'コレクション', + condition: '条件', + ADD: '2つの数値の加算値を取得', + SUB: '2つの数値の減算値を取得', + MUL: '2つの数値の乗算値を取得', + DIV: '2つの数値の除算値を取得', + SUM: 'コレクションの値の合計を取得', + MAX: 'パラメータリストの最大値を取得', + MIN: 'パラメータリストの最小値を取得', + ABS: '数値の絶対値を取得', + AVG: 'パラメータリストの平均値を取得', + POWER: '指定した数値の冪を取得', + RAND: '0以上、1未満の乱数を取得', + PI: '円周率を取得', + ROUND: '小数を指定された位数に丸める', + SQRT: '数値の平方根を取得', + NOW: '現在時間を取得', + TODAY: '今日の日付を取得', + YEAR: '指定した日の年を取得', + MONTH: '指定した日付の月を取得', + DAY: '指定した日の日数を取得', + HOUR: '指定した日の時間数を取得', + MINUTE: '指定した日付の分数を取得', + SECOND: '指定した日付の秒数を取得', + DIFFDAYS: '2つの日付間の経過日数を取得', + DIFFHOURS: '2つの時間間の経過時間数を取得し、小数点以下2位保持', + DIFFMINUTES: '2つの時間間の経過分数を取得', + ADDYEAR: '指定した日付に年数を加算する', + ADDMONTH: '指定した日付に月数を加算する', + ADDDAY: '指定した日付に日数を加算する', + ADDWEEK: '指定した日付に週数を加算する', + ADDHOUR: '指定した時間に時間数を加算する', + ADDMINUTE: '指定した時間に分数を加算する', + ADDSECOND: '指定した時間に秒数を加算する', + SUBYEAR: '指定した日付に年数を減算する', + SUBMONTH: '指定した日付に月数を減算する', + SUBDAY: '指定した日付に日数を減算する', + SUBWEEK: '指定した日付に週数を減算する', + SUBHOUR: '指定した時間に時間数を減算する', + SUBMINUTE: '指定した時間に分数を減算する', + SUBSECOND: '指定した時間に秒数を減算する', + TIMESTAMP: '指定した日付のタイムスタンプを取得', + STARTSWITH: '文字列が指定した文字列で始まるかどうかをチェック', + EMPTY: 'パラメータが空かどうか確認する', + NOTEMPTY: 'パラメータが空でないかをチェック', + LEN: '指定したコレクションの長さを取得', + MOD: '2つの数値の余りを取得', + FLOOR: '指定した数値を小数点以下切り捨てて取得', + CEIL: '指定した数値を切り上げた値を取得します', + FIXED: '指定した小数点以下の桁数で小数を切り捨てる', + ISNUMBER: 'パラメータが数値であるかどうかをチェック', + TONUMBER: 'パラメータを数値に変換', + SLICELEFT: '開始から指定した長さの文字列を取得', + SLICERIGHT: '終了から指定した長さの文字列を取得', + TOLOWER: '文字列内のすべての大文字を小文字に変換', + TOUPPER: '文字列内のすべての小文字を大文字に変換', + INCLUDES: '文字列が指定された文字列を含むかどうかを確認', + REPLACE: '文字列の一部のテキストを異なるテキストに置換、最初の一致のみ置換', + REPLACEALL: '文字列の一部のテキストを異なるテキストに置換、全ての一致を置換', + TRIM: '文字列の前後のスペースを削除', + TOCHINSESAMOUNT: '指定された数値の中国語の大文字の金額を取得', + UNION: 'コレクション/パラメータの値を重複がないように返す', + INTERSECTIONSET: '2 つのセットの共通部分を取得します', + LIST: 'すべてのパラメータのコレクションを取得する', + AND: '全ての式が真であるときに真を返す「AND」で式を連結', + OR: '一つの式が真であるときに真を返す「OR」で式を連結', + IF: '条件が満たされているかを検査し、満たされている場合は第2パラメータを返し、そうでない場合は第3パラメータを返す', + IN: '第2パラメータがコレクションにあるかどうかを検査', + DEFAULT: '第1パラメータを検査し、それが空である場合は第2パラメータを返し、そうでない場合は第1パラメータを返す', + CASE: '一つまたはそれ以上の条件が満たされるかどうかを検査し、条件を満たす最初の値を返す', + COLUMN: 'サブフォームで指定されたフィールドを取得し、コレクションを返す', + VALUE: 'グループフォームの指定されたフィールドを取得', + CONCAT: '全てのパラメータを連結して、連結された文字列を返す', + FALSE: '論理値 false を返します', + TRUE: '論理値 true を返します', + NOT: '論理値の反対の値を取得する', + EQ: '2つの値が等しいかどうかを確認する', + NE: '2 つの値が等しくないかどうかを確認する', + GE: '最初の値が別の値以上かどうかを確認します', + GT: '最初の値が別の値より大きいかどうかを確認する', + LE: '最初の値が別の値以下かどうかを確認します', + LT: '最初の値が別の値より小さいかどうかを確認する', + }, + language: { + name: '言語', + add: 'に追加', + batchRemove: 'バッチ削除', + select: '言語を選択', + }, + props: { + circle: '丸', + square: '正方形', + image: '画像', + video: 'ビデオ', + audio: '音声', + document: '文書', + size: 'サイズ', + info: 'プロンプト', + success: '成功', + error: '失敗', + warning: '警告', + primary: '主要な', + danger: '危険', + form: 'フォーム', + subform: 'サブフォーム', + other: 'その他', + model: 'モデル', + field: 'フィールド', + variable: '変数', + disabled: '無効', + enable: '有効', + time: '時間', + email: '電子メール', + number: '数値', + globalData: 'グローバルデータ', + mobile: '携帯', + reactive: '反応的', + pc: 'パソコン', + title: 'タイトル', + content: 'コンテンツ', + collection: 'コレクション', + group: 'グループ', + custom: 'カスタム', + change: '変更', + blur: 'ブラー', + preview: 'プレビュー', + clear: 'クリア', + cancel: 'キャンセル', + close: '閉じる', + ok: 'わかりました', + save: '保存', + refresh: 'リフレッシュ', + submit: '提出', + reset: 'リセット', + copy: 'コピー', + delete: '削除', + hide: '隠れた', + show: '見せる', + position: '位置', + render: 'レンダー', + large: '大', + default: 'デフォルト', + small: '小', + always: '常に', + never: '決して', + hover: 'ホバー', + click: 'クリック', + button: 'ボタン', + year: '年', + month: '月', + date: '日', + dates: '日付', + week: '週', + datetime: '日時', + 'datetime-local': '日時', + datetimerange: '日時範囲', + daterange: '日付範囲', + monthrange: '月範囲', + left: '左', + right: '右', + top: 'トップ', + bottom: '底部', + text: 'テキスト', + icon: 'アイコン', + picture: '写真', + 'picture-card': '写真カード', + center: 'センター', + vertical: '垂直', + horizontal: '水平', + manage: '管理', + key: 'キー', + name: '名', + value: '値', + inputData: 'デフォルト値', + append: '追加', + options: 'オプション', + option: 'オプション', + callback: '実行', + mode: 'モード', + style: 'スタイル', + print: '印刷', + _self: '現在のウィンドウ', + _blank: '新規ウィンドウ', + _parent: '親ウィンドウ', + _top: '最上部ウィンドウ', + }, + slots: { + prefix: 'プレフィックス', + suffix: 'サフィックス', + prepend: '先頭に追加', + append: '追加', + }, + behavior: { + add: 'アクションの追加', + props: { + id: 'コンポーネントを選択', + status: 'ステータス', + compute: '条件', + static: '静的', + formula: '式', + setFormula: '式を設定', + continue: '実行を継続', + stop: '実行を中断', + break: '現在をスキップ', + model: 'ポップアップ ウィンドウを選択', + fetch: 'リクエストを設定', + response: 'リクエストの結果', + callback: 'カスタム JS', + ignoreError: '実行例外', + expression: '実行条件', + stopPropagation: 'ブロッキング条件', + execute: 'アクションを実行', + info: 'アクションの説明', + }, + openModel: { + name: 'ポップアップ ウィンドウを開く', + info: '選択したポップアップ ウィンドウを開く', + }, + closeModel: { + name: 'ポップアップを閉じるwindow', + info: '現在のポップアップ ウィンドウを閉じる', + }, + hidden: { + name: 'コンポーネントの表示', + info: '選択したコンポーネントの表示/非表示を制御する', + }, + disabled: { + name: 'コンポーネントの可用性', + info: '選択したコンポーネントの有効/無効を制御する', + }, + resetFields: { + name: 'フォームをリセット', + info: 'フォーム データをリセット', + }, + clearFields: { + name: 'フォームをクリア', + info: 'フォーム データをクリア', + }, + validate: { + name: 'フォームを検証', + info: 'フォーム全体の内容を検証する' + }, + validateFields: { + name: 'フォーム項目を検証', + info: '選択したフォーム項目を検証する' + }, + setValue: { + name: 'フォームの割り当て', + info: 'フォーム データを変更する' + }, + fetch: { + name: 'リクエストを送信', + info: 'API リクエストを設定して送信', + props: { + append: 'フォーム データを追加', + }, + warning: { + append: '有効にすると、リモートリクエストの戻り値が自動的にフォームデータに追加されます。', + response: 'リモートリクエストの戻り値は指定された変数に一時保存されます。', + } + }, + copy: { + name: 'コンテンツをコピー', + info: 'テキスト コンテンツをクリップボードにコピー', + }, + callback: { + name: 'カスタム操作', + info: 'JavaScript によるアクション ロジックのカスタマイズ', + }, + message: { + name: 'メッセージ リマインダー', + info: 'ポップアップ メッセージ リマインダー', + props: { + type: 'タイプ', + message: 'プロンプト情報', + duration: '期間 (ms)', + showClose: '閉じるボタンを表示', + } + }, + submit: { + name: 'フォームを送信', + info: 'フォームを手動で送信し、フォーム送信イベントをトリガー', + }, + }, + com: { + cascader: { + name: 'カスケーダー', + event: { + expandChange: '展開されたノードが変更されるとトリガーされます', + removeTag: '複数選択モードでは、タグが削除されたときにトリガーされます' + }, + props: { + props: 'オプション', + placeholder: 'プレースホルダー', + disabled: '無効', + clearable: 'オプションのクリアが可能かどうか', + showAllLevels: '選択した値のフルパスが入力ボックスに表示されるかどうか', + collapseTags: '複数選択モードでタグを折りたたむかどうか', + collapseTagsTooltip: '折りたたまれたタグのテキストにマウスがホバーされたときに、すべての選択したタグを表示するかどうか', + separator: 'セパレータ', + filterable: 'このオプションが検索可能かどうか', + tagType: 'タイプ', + }, + propsOpt: { + multiple: '複数選択が可能かどうか', + expandTrigger: 'サブメニューを展開する方法', + checkStrictly: '親と子のノードが関連性を持たないことを厳密に観察するかどうか', + emitPath: '選択ノードが変更されたときに、ノードの位置にある各レベルのメニューの値を含む配列を返すかどうか', + value: '指定したオプションの値は、オプションオブジェクトの属性値です', + label: 'オプションラベルを、オプションオブジェクトの特定の属性値として指定します', + children: '指定したオプションの子オプションは、オプションオブジェクトの特定の属性値です', + disabled: '指定したオプションが無効になるのは、オプションオブジェクトの特定の属性値です', + leaf: '指定したオプションの葉ノードのフラグビットは、オプションオブジェクトの属性値です', + } + }, + checkbox: { + name: 'チェックボックス', + props: { + input: '記入するかどうか', + type: 'タイプ', + disabled: '無効', + min: 'チェックできる最小数', + max: 'チェックできる最大数', + textColor: 'ボタンがアクティブの時のフォントカラー', + fill: 'ボタンがアクティブ時の境界と背景の色' + } + }, + col: { + name: '列', + info: 'レスポンシブ設定で複数端末のレイアウトを調整し、モバイル端末は自動的に最初のレイアウトを適用します。', + props: { + span: 'グリッドが占める列の数', + offset: 'グリッドの左側のスペースの数', + push: 'セルの数だけグリッドを右に移動する', + pull: 'セルの数だけグリッドを左に移動する' + } + }, + colorPicker: { + name: 'カラーピッカー', + event: { + activeChange: '現在パネルに表示されている色が変化するとトリガーされます' + }, + props: { + disabled: '無効', + showAlpha: '透明度選択がサポートされているかどうか', + colorFormat: '色のフォーマット', + predefine: '予定された色', + } + }, + datePicker: { + name: '日付', + props: { + pickerOptions: '現在の時間と日付ピッカーに固有のオプション', + readonly: '読み取り専用', + disabled: '無効', + type: 'タイプ', + editable: 'テキストボックスに入力可能', + clearable: 'クリアボタンを表示するかどうか', + placeholder: '範囲選択ではない場合のプレースホルダー内容', + startPlaceholder: '範囲選択時の開始日のプレースホルダー内容', + endPlaceholder: '範囲選択時の終了日のプレースホルダー内容', + format: '入力ボックスに表示されるフォーマット', + align: 'アラインメント', + rangeSeparator: '範囲選択時のセパレータ', + unlinkPanels: '範囲セレクタの2つの日付パネルのリンクを解除する', + } + }, + dateRange: { + name: '日付範囲', + }, + timeRange: { + name: '時間範囲', + }, + elAlert: { + name: 'アラート', + description: '説明', + props: { + title: 'タイトル', + type: 'タイプ', + description: '補助テキスト', + closable: '閉じることができるかどうか', + center: 'テキストが中央に配置されるかどうか', + closeText: '閉じるボタンのカスタムテキスト', + showIcon: 'アイコンを表示するかどうか', + effect: '提供されているテーマを選択する' + } + }, + elButton: { + name: 'ボタン', + props: { + formCreateChild: '内容', + size: 'サイズ', + type: 'タイプ', + plain: 'ボタンが平面かどうか', + round: 'ボタンに丸みがあるかどうか', + circle: 'ボタンが丸いかどうか', + loading: '読み込み中かどうか', + disabled: '無効', + } + }, + elCard: { + name: 'カード', + props: { + header: 'タイトル', + shadow: '影の表示タイミング', + } + }, + elCollapse: { + name: 'コラプス', + event: { + change: '現在アクティブなパネルを切り替えます。そのタイプはアコーディオン モードでは文字列、他のモードでは配列です', + }, + props: { + accordion: 'アコーディオンモードかどうか' + } + }, + elCollapseItem: { + name: 'コラプスアイテム', + props: { + title: 'パネルタイトル', + name: '識別子', + disabled: '無効', + } + }, + elDescriptions: { + name: '説明', + props: { + title: 'タイトルテキスト、左上に表示', + extra: '操作領域のテキスト、右上に表示', + column: '1行のテーブル数', + border: '境界線があるかどうか', + direction: '配置の方向', + size: 'サイズ', + } + }, + elDescriptionsItem: { + name: '説明項目', + props: { + label: 'ラベル', + __child: '内容', + span: '列数', + width: '列の幅、異なる行の同じ列の幅は最大値によって設定されます', + minWidth: '列の最小幅', + align: '列の内容の整列方法', + labelAlign: '列のラベルの配置。この項目が設定されていない場合、内容の整列が使用されます', + className: '列内容のカスタムクラス名', + } + }, + elDivider: { + name: '区切り線', + props: { + direction: '区切り線の方向を設定', + formCreateChild: '内容を設定', + contentPosition: '内容の位置を設定' + } + }, + elTabPane: { + name: 'タブペイン', + props: { + label: 'タイトル', + disabled: '無効', + name: 'タブの識別子', + lazy: 'ラベルがレンダリングを遅延するかどうか' + } + }, + elTabs: { + name: 'タブ', + event: { + tabClick: 'タブが選択されたときにトリガーされます', + tabChange: 'activeName が変更されるとトリガーされます', + tabRemove: 'タブ削除ボタンがクリックされたときにトリガーされます', + tabAdd: '新しいタブボタンがクリックされたときにトリガーされます', + edit: 'タブの追加または削除ボタンをクリックした後にトリガーされます', + }, + props: { + type: 'タイプ', + closable: 'ラベルを閉じることができるかどうか', + tabPosition: 'タブの位置', + stretch: 'ラベルの幅が自身を伸ばすかどうか' + } + }, + elTag: { + name: 'タグ', + props: { + formCreateChild: '内容', + type: 'タイプ', + size: 'ラベルサイズ', + effect: 'ラベルテーマ', + closable: '閉じることができるかどうか', + disableTransitions: 'グラデーションアニメーションを無効にするかどうか', + hit: 'ボーダーストロークがあるかどうか', + round: '丸いかどうか', + color: '背景色' + } + }, + elTransfer: { + name: 'トランスファー', + event: { + leftCheckChange: '左側のリスト要素がユーザーによって選択または選択解除されたときにトリガーされます', + rightCheckChange: 'ユーザーによって右のリスト要素が選択または選択解除されたときにトリガーされます' + }, + props: { + filterable: '検索可能かどうか', + filterPlaceholder: '検索ボックスのプレースホルダー', + targetOrder: '右のリスト要素のソート戦略', + targetOrderInfo: '元の順序を保つ場合は、データの順序と同じに保つ、push の場合、新しく追加された要素は最後にランク付けされ、unshift の場合、新しく追加された要素は最初にランク付けされます', + titles: 'タイトル', + buttonTexts: 'ボタン内容を設定', + props: 'データソースのフィールドエイリアス' + } + }, + elTreeSelect: { + name: 'ツリーセレクト', + event: { + removeTag: '複数選択モードでタグが削除されるとトリガーされます' + }, + props: { + multiple: '複数選択があるかどうか', + disabled: '無効', + clearable: 'オプションがクリア可能かどうか', + collapseTags: '複数選択時に選択値をテキストとして表示するかどうか', + multipleLimit: 'ユーザーが複数選択で選択できる項目の最大数、0の場合は制限なし', + placeholder: 'プレースホルダー', + props: 'オプション', + checkStrictly: 'チェックボックスが表示される場合、親と子の間に厳密な関連性がないべきかどうかを厳密に守る', + renderAfterExpand: 'ツリーノードを初めて展開した後にその子ノードをレンダリングするかどうか', + defaultExpandAll: 'デフォルトで全てのノードを展開するかどうか', + expandOnClickNode: 'ノードをクリックしたときにノードを展開または縮小するかどうか', + checkOnClickNode: 'ノードをクリックしたときにノードを選択するかどうか', + nodeKey: '各ツリーノードは一意の識別のための属性として使用され、全ツリーは一意であるべきです' + } + }, + elLink: { + name: 'リンク', + props: { + formCreateChild: 'コンテンツ', + href: 'ジャンプリンク', + type: 'タイプ', + underline: '下線を表示するかどうか', + disabled: '無効化かどうか', + target: '開く方法', + } + }, + elWatermark: { + name: 'ウォーターマーク', + props: { + content: 'ウォーターマークのテキスト内容', + image: '画像ソース、2xまたは3x画像のエクスポートが推奨されます、優先度が高い', + width: 'ウォーターマークの幅、デフォルトの値はそれ自体の幅です', + height: 'ウォーターマークの高さ、デフォルトの値はそれ自体の高さです', + rotate: 'ウォーターマークが描かれる時の回転角度、単位は°', + zIndex: '追加したウォーターマーク要素のz-index', + gap: 'ウォーターマーク間の間隔', + } + }, + elTooltip: { + name: 'ツールチップ', + props: { + content: '内容', + disabled: '無効', + rawContent: '内容がHTML文字列として扱われるかどうか', + enterable: 'マウスがツールチップに入ることができるかどうか', + effect: 'テーマ', + placement: 'ツールチップコンポーネントが表示される位置', + trigger: 'ツールチップをトリガする方法', + offset: '発生位置のオフセット', + showAfter: 'トリガ後何ミリ秒でコンテンツを表示するか', + hideAfter: '閉じるのを何ミリ秒遅らせるか', + autoClose: '表示後何ミリ秒で自動的に消去するか' + } + }, + elImage: { + name: '画像', + props: { + src: '画像リンク', + previewSrcList: 'プレビュー画像リスト' + } + }, + elAvatar: { + name: 'アバター', + props: { + src: '画像リンク', + shape: '形状', + size: 'サイズ', + }, + }, + elMention: { + name: 'メンション', + event: { + search: 'トリガー フィールドが押されたときにトリガーされます', + select: 'ユーザーがオプションを選択したときにトリガーされます', + }, + props: { + type: 'タイプ', + placeholder: 'プレースホルダー', + clearable: 'クリア ボタンを表示するかどうか', + disabled: '無効', + whole: 'バックスペースが押されたときにメンション全体を削除するかどうか', + checkIsWhole: 'バックスペースが押されたときにメンション全体を削除するかどうか', + filterOption: 'フィルター オプション ロジック' + } + }, + elSegmented: { + name: 'セグメント化された', + props: { + size: 'サイズ', + block: '親要素の幅を埋める', + disabled: '無効', + } + }, + elFormItem: { + name: 'フォーム項目', + props: { + label: 'ラベル', + labelWidth: 'ラベル幅', + size: 'サイズ', + } + }, + elStatistic: { + name: '統計', + props: { + value: '数値', + title: 'タイトル', + prefix: '値のプレフィックス', + suffix: '値のサフィックス', + } + }, + fcTitle: { + name: 'タイトル', + props: { + title: 'タイトル', + size: 'サイズ', + align: '位置' + } + }, + fcId: { + name: '唯一', + props: { + prefix: 'プレフィックス', + } + }, + fcCity: { + name: '州選択', + props: { + api: 'タイプ', + level: 'レベル', + clearable: 'クリアボタンを表示するかどうか', + disabled: '無効', + filter: 'データのフィルタリング、選択可能なデータを返す', + } + }, + fcCell: { + name: 'セル' + }, + fcEditor: { + name: 'エディタ', + props: { + disabled: '無効' + } + }, + fcFlex: { + name: 'フレックス', + }, + fcFlex2: { + name: 'フレックス', + horizontal: '水平中央', + vertical: '垂直中央', + left: '左揃え', + right: '右揃え', + reset: 'リセット', + }, + fcRow: { + name: 'ロウ', + props: { + gutter: 'グリッド間隔', + type: 'フレックスレイアウトモード', + justify: 'フレックスレイアウトの下の水平配置', + align: 'フレックスレイアウトの下の垂直配置' + } + }, + fcDialog: { + name: 'ダイアログ', + props: { + title: 'タイトル', + width: 'ダイアログボックスの幅', + fullscreen: 'フルスクリーンかどうか', + modal: 'マスクレイヤーが必要かどうか', + autoClose: 'フォームを送信した後、ポップアップを自動的に閉じる', + footer: '操作ボタンを表示するかどうか', + beforeClose: '閉じる前のコールバック' + } + }, + fcDrawer: { + name: '引き出し', + props: { + title: 'タイトル', + size: '引き出しボックスの幅', + direction: '開く方向', + modal: 'マスク レイヤーが必要か', + autoClose: 'フォームを送信した後、ポップアップを自動的に閉じる', + footer: '操作ボタンを表示するかどうか', + beforeClose: '閉じる前のコールバック' + }, + directionType: { + ltr: '左', + rtl: '右', + } + }, + fcTable: { + name: 'テーブル', + props: { + mini: 'コンパクトモード', + border: '枠線を表示するかどうか', + borderColor: '枠線の色', + borderWidth: '枠線の幅' + } + }, + fcTableGrid: { + name: 'グリッド', + }, + fcValue: { + name: '計算', + empty: '右の設定で計算式を設定する', + }, + fcSlot: { + name: 'スロット', + empty: '{tag} スロットを定義する', + props: { + name: 'スロット名' + } + }, + fcJson: { + name: 'ダイナミック', + empty: '{tag} ルールをロードしてリージョンを設定する', + props: { + _loadType: 'JSON 規則', + type: 'タイプ', + } + }, + lineChart: { + name: '折れ線グラフ', + data: 'グラフデータ', + pieTypeOpt: { + pie: '円グラフ', + doughnut: 'ドーナツ', + 'half-doughnut': '半ドーナツ', + }, + funnelSortOpt: { + descending: '降順', + ascending: '昇順', + }, + props: { + title: 'グラフ名', + subtitle: 'グラフの概要', + valueFormat: '数値表示の書式', + stack: 'データの列が複数ある場合にスタックするかどうか', + Smooth: '線が滑らかに遷移するかどうか', + showLegend: 'マークを表示するかどうか', + showSeriesLabel: '値を表示するかどうか', + barBackgroundColor: '列の背景色', + funnelSort: '並べ替え', + pieType: '形状', + min: '最小値', + max: '最大値', + value: '数値', + indicator: 'インジケーター', + loadOptions: '初期化', + } + }, + areaChart: { + name: '面グラフ' + }, + barChart: { + name: '棒グラフ' + }, + customChart: { + name: 'カスタム グラフ', + }, + funnelChart: { + name: 'ファネル グラフ' + }, + gaugeChart: { + name: 'ゲージ グラフ' + }, + pieChart: { + name: '円グラフ' + }, + radarChart: { + name: 'レーダー グラフ' + }, + scatterChart: { + name: '散布グラフ' + }, + stripeChart: { + name: '横棒グラフ' + }, + fcInlineForm: { + name: 'インライン', + }, + group: { + name: 'サブフォーム', + props: { + disabled: '無効', + syncDisabled: '無効状態をサブフォームと強制的に同期するかどうか', + expand: 'デフォルトの展開アイテムを設定する', + button: '操作ボタンを表示するかどうか', + sortBtn: 'ソートボタンを表示するかどうか', + min: '追加するアイテムの最小数を設定する', + max: '追加するアイテムの最大数を設定する', + } + }, + html: { + name: 'HTML', + props: { + formCreateChild: '内容', + } + }, + input: { + name: 'インプット', + event: { + change: '値が変更されたとき、コンポーネントがフォーカスを失ったとき、またはユーザーが Enter キーを押したときにトリガーされます', + }, + props: { + type: 'タイプ', + maxlength: '最大入力長', + minlength: '最小入力長', + placeholder: 'プレースホルダー', + clearable: 'クリアボタンを表示するかどうか', + disabled: '無効', + readonly: '読み取り専用', + } + }, + inputNumber: { + name: 'インプットナンバー', + props: { + precision: '入力値の精度', + min: 'カウンターで許される最小値の設定', + max: 'カウンターの許容最大値の設定', + step: 'ステップ', + stepStrictly: 'ステップの倍数だけを入力するかどうか', + disabled: '無効', + controls: '制御ボタンを使用するかどうか', + controlsPosition: '制御ボタンの位置', + placeholder: 'プレースホルダー' + } + }, + password: { + name: 'パスワード', + event: { + change: '値が変更されたとき、コンポーネントがフォーカスを失ったとき、またはユーザーが Enter キーを押したときにトリガーされます', + }, + props: { + disabled: '無効', + readonly: '読み取り専用', + maxlength: '最大入力長', + minlength: '最小入力長', + placeholder: 'プレースホルダー', + clearable: 'クリアボタンを表示するかどうか' + } + }, + radio: { + name: 'ラジオ', + props: { + input: '記入するかどうか', + disabled: '無効', + type: 'タイプ', + textColor: 'ボタンフォームが有効化されたときのテキストカラー', + fill: 'ボタンフォームが有効化されたときの塗りつぶし色と境界色' + } + }, + rate: { + name: 'レート', + props: { + max: '最高スコア', + disabled: '無効', + allowHalf: '半分選択を許可するかどうか', + voidColor: '選択されていないときのアイコンの色', + disabledVoidColor: '読み取り専用時に選択されていないときのアイコンの色', + voidIconClass: '選択されていないときのアイコンのクラス名', + disabledVoidIconClass: '読み取り専用時に選択されていないときのアイコンのクラス名', + showScore: '現在のスコアを表示するかどうか', + textColor: '補助テキストの色', + scoreTemplate: 'スコア表示テンプレート' + } + }, + fcDataSelect: { + name: 'サブフォーム選択' + }, + select: { + name: 'セレクト', + title: '選択してください', + emptyText: 'コンポーネントをドラッグして検索条件を設定します', + event: { + removeTag: '複数選択モードでタグが削除されるとトリガーされます' + }, + props: { + title: 'タイトル', + valueKey: '指定したオプションの値は、オプションオブジェクトの属性値です', + labelKey: 'オプションラベルを、オプションオブジェクトの特定の属性値として指定します', + autoLoad: '自動的に検索を開始する', + multiple: '複数選択可能かどうか', + disabled: '無効', + clearable: 'オプションをクリアできるかどうか', + collapseTags: '複数選択時に選択された値をテキストとして表示するかどうか', + multipleLimit: '複数選択時にユーザーが選択できるアイテムの最大数、0の場合は制限なし', + placeholder: 'プレースホルダー', + filterable: '検索可能かどうか', + allowCreate: 'ユーザーが新しいエントリーを作成できるかどうか', + noMatchText: '検索条件に一致しないときに表示されるテキスト', + noDataText: 'オプションが空のときに表示されるテキスト', + reserveKeyword: '複数選択可能で検索可能な場合、オプションを選択した後も現在の検索キーワードを保持するかどうか', + defaultFirstOption: '入力ボックスでEnterを押して最初に一致するアイテムを選択する', + remote: 'オプションがサーバーからリモートでロードされるかどうか', + remoteMethod: 'カスタムリモート検索方法', + } + }, + slider: { + name: 'スライダー', + props: { + min: '最小値', + max: '最大値', + disabled: '無効', + step: 'ステップ', + showInput: '入力ボックスを表示するかどうか、範囲選択でない時のみ有効', + showInputControls: '入力ボックス表示時に入力ボックスの制御ボタンを表示するかどうか', + showStops: '不連続部を表示するかどうか', + range: '範囲選択であるかどうか', + vertical: '縦向きモードであるかどうか', + height: 'スライダーの高さ、縦向きモードで必要' + } + }, + space: { + name: 'スペース' + }, + stepForm: { + name: 'ステップフォーム', + event: { + next: '次へボタンがクリックされたときにトリガーされます', + }, + props: { + submitBtn: '送信ボタンを表示する', + autoValidate: '次のステップに入る前にフォームの自動検証', + 'stepsProps>alignCenter': '中央揃え', + 'stepsProps>simple': 'シンプルスタイルを適用するかどうか' + } + }, + stepFormItem: { + name: 'ステップフォームアイテム', + props: { + title: 'タイトル', + description: '説明' + } + }, + subForm: { + name: 'グループ', + props: { + disabled: '無効', + syncDisabled: '無効状態をサブフォームと強制的に同期するかどうか' + } + }, + switch: { + name: 'スイッチ', + slots: { + 'active-action': '開封時の中身', + 'inactive-action': '閉じた時の中身', + }, + props: { + disabled: '無効', + width: '幅(px)', + activeText: '開いているときのテキスト説明', + inactiveText: '閉じているときのテキスト説明', + activeValue: '開いているときの値', + inactiveValue: '閉じているときの値', + activeColor: '開いているときの背景色', + inactiveColor: '閉じているときの背景色' + } + }, + tableForm: { + name: 'テーブルフォーム', + props: { + disabled: '無効', + filterEmptyColumn: '空の行をフィルタリングするかどうか', + max: '追加可能な行の最大数、0なら無制限', + min: '追加可能な行の最小数', + size: 'サイズ', + emptyText: 'データが空の場合に表示されるテキストの内容', + height: '高さ', + showIndex: '行番号を表示', + stripe: 'ゼブラストライプを表示', + border: '境界線', + button: '操作ボタン', + page: 'ページ', + addable: '追加を許可する', + deletable: '削除を許可する', + newColumn: 'デフォルトで改行を表示', + 'button>column': 'ボタン管理', + 'button>label': '操作', + 'button>fixed': '位置', + 'button>width': '列幅', + 'page>props>pageSize': '各ページに表示されるアイテムの数', + 'page>props>small': '小さいページネーション スタイルを使用します', + 'page>props>background': 'ページネーション ボタンに背景色を追加します', + } + }, + tableFormPro: { + name: 'テーブルフォーム Pro', + event: { + handleClick: 'このイベントは、操作ボタンがクリックされたときにトリガーされます', + } + }, + nestedTableForm: { + name: 'ネストされたフォーム', + props: { + disabled: '無効', + max: '追加可能な行の最大数、0なら無制限', + nestedMax: 'サブフォームに追加可能な行の最大数、0なら無制限', + } + }, + infiniteTableForm: { + name: '無制限のフォーム', + props: { + disabled: '無効', + childrenField: '子のフィールド名を設定します', + max: '追加可能な行の最大数、0なら無制限', + layerMax: '追加するレイヤーの最大数、0なら無制限', + } + }, + nestedSubTableForm: { + name: 'サブテーブルフォーム', + }, + tableFormColumn: { + name: 'テーブルフォームカラム', + label: 'テーブルフォームカラム', + props: { + label: 'タイトル', + header: 'ヘッダ', + fixed: '位置', + width: '幅', + color: '色', + hidden: '隠れる', + required: '必須のアスタリスクを表示するかどうか', + } + }, + tableFormColumn2: { + name: 'テーブルフォームカラム', + header: '現在の列のヘッダーを設定します。重複したヘッダーは自動的にマージされます。' + }, + dataTable: { + name: 'データ表', + handle: '無効状態', + click: 'クリックイベント', + filter: 'フィルタ', + header: 'ヘッダ', + event: { + cellMouseEnter: 'このイベントは、セルにマウスが移動したときにトリガーされます', + cellMouseLeave: 'このイベントは、セルからマウスが移動したときにトリガーされます', + handleClick: 'このイベントは、操作ボタンがクリックされたときにトリガーされます', + rowClick: 'このイベントは、行がクリックされたときにトリガーされます', + rowDblclick: 'このイベントは、行がダブルクリックされたときにトリガーされます', + headerClick: 'このイベントは、列のヘッダーがクリックされたときにトリガーされます', + filterChange: 'このイベントは、フィルター条件が変更されたときにトリガーされます', + expandChange: 'このイベントは、ユーザーが行を展開または閉じたときにトリガーされます', + sortChange: 'このイベントは、テーブルの並べ替え条件が変更されたときにトリガーされます', + selectionChange: '選択が変更されると発火します', + }, + button: { + title: '操作ボタン', + btn: '操作ボタンの設定', + link: 'リンク', + round: 'ラウンド', + plain: 'プレーン', + disabled: '無効', + }, + column: { + title: 'テーブルリスト', + btn: '構成テーブルリスト', + prop: 'フィールド', + sort: 'Sort', + }, + format: { + default: 'デフォルト', + tag: 'タグ', + image: '画像', + custom: 'カスタム', + }, + fixed: { + default: 'デフォルト', + left: '左', + right: '右', + }, + sortable: { + disabled: '通常', + default: 'デフォルト', + custom: 'interface', + }, + props: { + _optionType: 'テーブルデータ', + 'page>totalField': 'インターフェイス応答データのエントリの総数のフィールド名', + 'page>dataField': 'インターフェース応答データのリストデータのフィールド名', + 'page>orderField': 'インターフェースリクエスト時のソート用パラメータ名', + 'page>orderByField': 'インターフェースリクエスト時のソートメソッドのパラメータ名', + 'page>pageField': 'インターフェース(Page)リクエスト時のページ番号のパラメータ名', + 'page>pageSizeField': 'インターフェース(Page)リクエスト時のエントリ数のパラメータ名', + column: '列管理', + showSummary: '合計行を表の最後に表示するかどうか', + selection: '複数の選択ボックスを表示するかどうか', + size: 'サイズ', + rowKey: '行データのキー', + emptyText: 'データが空の場合に表示されるテキストの内容', + height: '高さ', + index: '行番号を表示', + stripe: 'ゼブラストライプを表示', + border: '境界線', + defaultExpandAll: 'デフォルトですべての行を展開', + button: '操作ボタン', + page: 'ページ', + 'button>column': 'ボタン管理', + 'button>label': '操作', + 'button>fixed': '位置', + 'button>width': '列幅', + 'page>position': '位置', + 'page>props>pageSize': '各ページに表示されるアイテムの数', + 'page>props>small': '小さいページネーション スタイルを使用します', + 'page>props>background': 'ページネーション ボタンに背景色を追加します', + }, + requiredName: 'ボタン名を入力してください', + requiredKey: 'ボタンIDを入力してください', + requiredLabel: 'タイトルを入力してください', + requiredRender: 'レンダリング関数を入力してください', + }, + text: { + name: 'テキスト', + props: { + formCreateChild: '内容' + } + }, + textarea: { + name: 'テキストエリア', + event: { + change: '値が変更されたとき、コンポーネントがフォーカスを失ったとき、またはユーザーが Enter キーを押したときにトリガーされます', + }, + props: { + disabled: '無効', + readonly: '読み取り専用', + maxlength: '最大入力長', + minlength: '最小入力長', + showWordLimit: '単語数統計を表示するかどうか', + placeholder: 'プレースホルダー', + rows: '入力ボックスの行数', + autosize: '高さが自動調整できるかどうか' + } + }, + timePicker: { + name: '時間', + 'HH:mm:ss': 'HH:mm:ss', + 'HH:mm': 'HH:mm', + props: { + __format: '形式', + pickerOptions: '現在の時間と日付ピッカーに固有のオプション', + readonly: '読み取り専用', + disabled: '無効', + editable: 'テキストボックスに入力可能', + clearable: 'クリアボタンを表示するかどうか', + placeholder: '範囲選択ではない場合のプレースホルダー内容', + startPlaceholder: '範囲選択時の開始日のプレースホルダー内容', + endPlaceholder: '範囲選択時の終了日のプレースホルダー内容', + isRange: '時間を範囲選択するかどうか', + arrowControl: '時間選択に矢印を使うかどうか', + align: '整列' + } + }, + tree: { + name: 'ツリー', + event: { + nodeClick: 'ノードがクリックされたときにトリガーされます', + nodeContextmenu: 'このイベントは、ノードが右クリックされたときにトリガーされます', + checkChange: 'チェックボックスがクリックされたときにトリガーされます', + check: 'ノードのチェックボックスをクリックした後にトリガーされます', + currentChange: '現在選択されているノードが変更されたときにトリガーされるイベント', + nodeExpand: 'ノードが展開されたときにトリガーされるイベント', + nodeCollapse: 'ノードが閉じられたときにトリガーされるイベント', + nodeDragStart: 'ノードのドラッグ開始時にトリガーされるイベント', + nodeDragEnter: '他のノードにドラッグするときにトリガーされるイベント', + nodeDragLeave: 'ドラッグがノードから離れるときにトリガーされるイベント', + nodeDragOver: 'ノードのドラッグ時にトリガーされるイベント', + nodeDragEnd: 'ドラッグ終了時にトリガーされるイベント', + nodeDrop: 'ドラッグ アンド ドロップが正常に完了したときにトリガーされるイベント' + }, + props: { + emptyText: 'コンテンツがない場合に表示されるテキスト', + props: 'オプション', + renderAfterExpand: 'ツリーノードを初めて展開した後、子ノードをレンダリングするかどうか', + defaultExpandAll: 'デフォルトですべてのノードを展開するかどうか', + expandOnClickNode: 'ノードをクリックしてノードを展開または折りたたむかどうか、false の場合、矢印アイコンをクリックしたときにのみノードが展開または折りたたまれます。 ', + checkOnClickNode: 'ノードをクリックしてノードを選択するかどうか', + autoExpandParent: '子ノードを展開するときに親ノードを自動的に展開するかどうか', + checkStrictly: 'チェックボックスが表示される場合、親と子の間に厳密な関連性がないべきかどうかを厳密に守る', + accordion: '一度に兄弟ツリーノードを一つだけ展開できるかどうか', + indent: '隣接するレベルのノード間の水平インデント(px)', + nodeKey: '各ツリーノードが一意の識別のための属性として使用され、全体のツリーは一意であるべき' + } + }, + upload: { + name: 'アップロード', + info: 'アップロードが成功すると、インターフェースから返されたURLをfile.urlに設定するか、返された結果をfile.valueに設定し、後のフォーム送信でこれらのデータを取得できるようにします。', + event: { + remove: 'ファイルがファイルリストから削除されるとトリガーされます', + preview: 'ファイルリスト内のアップロードされたファイルがクリックされたときにトリガーされます', + error: 'ファイルのアップロードが失敗したときにトリガーされます', + progress: 'ファイルのアップロード時にトリガーされます', + exceed:'制限を超えたときにトリガーされます' + }, + slots: { + tip: '説明' + }, + props: { + listType: 'アップロードタイプ', + multiple: '複数ファイルの選択をサポートするかどうか', + action: 'アップロードアドレス(必須)', + beforeUpload: 'ファイルをアップロードする前にトリガー', + onSuccess: 'アップロードが成功したときにトリガーされます', + beforeRemove: 'ファイルを削除する前にトリガー', + headers: 'アップロードリクエストヘッダを設定', + data: 'アップロード時に付加する追加パラメータ', + name: 'アップロードされたファイルフィールド名', + withCredentials: 'クッキー認証情報の送信をサポート', + accept: 'アップロード可能なファイルタイプを指定', + autoUpload: 'ファイルを選択した直後にアップロードするかどうか', + disabled: '無効', + limit: '許可されるアップロードの最大数' + } + }, + audioBox: { + name: 'オーディオプレーヤー', + preloadOpt: { + auto: 'オート', + metadata: 'メタデータ', + none: '禁止', + }, + event: { + pause: 'オーディオ再生が一時停止されたときにトリガーされます', + play: 'オーディオの再生開始時にトリガーされます', + ended: 'オーディオ再生の終了時にトリガーされます' + }, + props: { + src: 'オーディオリンク', + type: 'オーディオタイプ', + autoplay: '自動再生するかどうか', + loop: 'ループ再生するかどうか', + muted: '消音するかどうか', + controls: 'コントロールバーを表示するかどうか', + preload: 'プリロード', + } + }, + barCodeBox: { + name: 'バーコード', + props: { + value: 'コンテンツ', + format: 'バーコードの種類', + width: '単一バーの幅', + height: 'バーコードの高さ', + displayValue: 'コンテンツを表示するかどうか', + fontSize: 'テキスト サイズを設定する', + textPosition: 'テキスト位置を設定', + textAlign: 'テキストの配置を設定する', + textMargin: 'テキストの余白を設定します', + background: 'バーコードの背景色', + lineColor: '線の色', + } + }, + iframeBox: { + name: 'Iframe', + event: { + load: 'ページ読み込み後にトリガー', + }, + loadingOpt: { + eager: 'すぐに読み込む', + lazy: '遅延読み込み' + }, + props: { + src: 'ウェブサイトの URL', + loading: '読み込み方法' + } + }, + qrCodeBox: { + name: 'QRコード', + circleTypeOpt: { + square: '正方形', + dots: 'ドット', + rounded: 'ラウンド', + classy: '典型的', + }, + props: { + data: 'コンテンツ', + image: '画像パスを中央に配置する', + width: 'QRコードの幅', + height: 'QRコードの高さ', + circleType: 'ドットの種類', + circleColor: 'ドットの色', + } + }, + signaturePad: { + name: '手書きの署名', + props: { + penColor: '線の色' + } + }, + videoBox: { + name: 'ビデオプレーヤー', + event: { + error: 'ビデオの読み込みに失敗した場合にトリガーされます', + pause: 'ビデオの再生が一時停止されたときにトリガーされます', + play: 'ビデオの再生が開始されたときにトリガーされます', + ending: 'ビデオの再生が終了した後にトリガーされます' + }, + props: { + src: 'ビデオパス', + type: 'ビデオの種類', + autoplay: '自動的に再生するかどうか', + loop: 'ループ再生するかどうか', + isLive: 'ライブでブロードキャストするかどうか', + controls: 'コントロール バーを表示するかどうか', + withCredentials: '認証情報を保持するかどうか', + } + }, + }, + tmp: { + duration: '期間', + chineseAmount: '中国の数量', + col3: '3-列', + col4: '4-列', + table43: '4x3のテーブル', + } +}; + +export default Jp; + diff --git a/src/locale/zh-cn.js b/src/locale/zh-cn.js new file mode 100644 index 0000000..0cba3b4 --- /dev/null +++ b/src/locale/zh-cn.js @@ -0,0 +1,1790 @@ +const ZhCn = { + name: 'zh-cn', + form: { + field: '字段 ID', + title: '字段名称', + info: '提示信息', + ignore: '忽略字段', + native: '是否显示标题', + control: '组件联动', + labelShow: '是否显示', + labelPosition: '标签的位置', + labelStyle: '标签的样式', + labelSuffix: '标签的后缀', + formItem: '配置表单项', + formItemSpan: '组件宽度', + row: '整行', + globalEvent: '全局事件', + globalFetch: '全局数据源', + globalClass: '全局样式', + globalConfig: '全局配置', + size: '表单的尺寸', + event: '表单事件', + labelWidth: '标签的宽度', + hideRequiredAsterisk: '隐藏必填字段的标签旁边的红色星号', + formItemMarginBottom: '表单项的下边距', + showMessage: '显示校验错误信息', + inlineMessage: '以行内形式展示校验信息', + submitBtn: '是否显示表单提交按钮', + resetBtn: '是否显示表单重置按钮', + appendChild: '添加子级', + formMode: '表单模式', + formName: '表单名称', + ignoreHiddenFields: '提交表单时忽略被隐藏的字段', + previewMode: '阅读模式', + componentMode: '生成组件', + sfcMode: '生成SFC', + document: '帮助文档', + controlDocument: '需要更详细的配置方法?请查看{doc}', + onSubmit: '表单提交时触发', + onReset: '表单重置后触发', + onCreated: '表单组件初始化完毕后触发', + onMounted: '表单组件渲染完毕后触发', + onReload: '表单渲染规则重载后触发', + onChange: '表单组件的值发生变化时触发', + beforeSubmit: '表单验证通过时触发', + beforeFetch: '远程数据请求发送前触发', + }, + ai: { + name: '智能表单助理', + info: '您好,我是您的智能表单助手!我可以帮助您快速生成和修改表单,帮助您轻松高效地完成表单设计。', + try: '你可以试着问我', + change: '换一换', + loading: '正在根据您的需求制作表单,请稍候...', + fail: '制作表单时遇到问题,请尝试调整内容。', + success: '已处理完毕!', + placeholder: '请描述您的需求', + }, + warning: { + name: '组件的唯一标识,用于获取和修改该组件的配置规则。通过该标识可以精确定位组件,实现对组件属性和行为的控制。', + field: '组件对应的字段名用于与组件的数据进行绑定。字段名需以字母开头,以确保能够正确识别。', + formList: '用于管理和切换表单模板,方便在不同业务场景中快速切换和配置表单。', + fetch: '远程数据通过远程请求加载组件的配置项。配置请求参数后,组件会自动发起请求,获取远程数据并根据返回的结果更新组件。', + fetchQuery: '定义请求的 GET 参数,通过 URL 传递数据。', + fetchData: '定义请求的 POST 参数,通过请求体传递数据。', + fetchDataType: '选择请求体的数据类型,确保数据格式正确。', + beforeFetch: '在请求发送前,可通过处理函数修改请求参数;若需终止请求,直接返回 false 或一个拒绝的 Promise。', + fetchParse: '请求返回后,可以通过处理函数对返回的结果进行处理,将结果转换为组件所需的数据和结构。', + language: '管理页面的多语言数据,在组件中配置不同语言的文本,支持一键切换语言体系,便于在多语言环境下使用和展示内容。', + variable: '从变量读取配置项的值,支持通过变量(如 Cookie、localStorage、全局变量和外部数据源等)设置配置项。当关联的变量变化时,配置项会同步更新。', + variableInfo: '请在变量列表中选择变量。如果变量的值是对象,您可以通过 {{variableName.attributeName}} 格式访问对象中的属性值。', + pageManage: '设计表单中的子弹窗,通过事件触发弹窗显示,便于在表单中动态展示信息或进行交互操作。', + globalConfig: '管理全局事件、样式、数据和变量,用于在不同组件间进行数据共享和事件处理。', + globalClass: '提供定义全局样式和 Class 的功能,用户可以在组件配置中选择并应用这些预定义的 Class,以实现统一的样式管理。', + globalEvent: '全局事件用于定义组件事件,供组件进行配置和选择,方便在不同组件中统一使用预设事件,简化事件的管理和分发。', + globalFetch: '全局数据源用于定义常用的数据源,支持静态数据和远程数据。该数据源可在各种组件配置中使用,方便统一管理和调用数据。', + globalVariable: '全局变量中可以定义计算属性,通过表单数据和外部数据返回组件所需的数据。关联数据变化时,计算属性会自动更新,可以在绑定变量模块和事件中使用。', + ignore: '开启后,表单提交时会自动排除该组件的字段,不会将其包含在提交的数据中。', + ignoreHiddenFields: '开启后,表单提交时会自动过滤掉被隐藏的组件字段,确保仅提交可见的字段数据。', + behaviorIgnoreError: '如果动作执行过程中发生错误,是否继续执行后续的动作。', + behaviorExpression: '当条件达成时,动作才会被执行。', + behaviorStopPropagation: '当条件达成时,会阻止后续动作的执行。', + computedCondition: '通过定义条件,组件的状态和数据值会根据条件是否成立自动调整。', + computedFormula: '通过公式和表单数据,动态计算组件的状态和数据值。', + }, + computed: { + value: { + title: '数据联动', + btn: '设置数据联动', + name: '设置组件的值' + }, + hidden: { + title: '隐藏条件', + btn: '设置隐藏条件', + name: '设置组件的隐藏条件' + }, + required: { + title: '必填条件', + btn: '设置必填条件', + name: '设置组件的必填条件' + }, + disabled: { + title: '禁用条件', + btn: '设置禁用条件', + name: '设置组件的禁用条件' + }, + formulas: { + '==': '等于', + '!=': '不等于', + 'on': '包含', + 'notOn': '不包含', + 'empty': '为空', + 'notEmpty': '不为空', + 'pattern': '正则表达式', + '>': '大于', + '>=': '大于等于', + '<': '小于', + '<=': '小于等于', + }, + variable: { + attr: '属性列表', + bind: '绑定变量', + list: '变量列表', + btn: '设置变量', + title: '全局变量', + create: '创建变量', + placeholder: '请输入变量的描述信息', + }, + linkage: { + trigger: '触发以下联动', + info: [ + '当前组件联动显示', + '的值', + ], + }, + name: '计算公式', + setting: '设置条件', + invert: '条件成立后组件状态', + condition: '逻辑条件', + addCondition: '添加条件', + addGroup: '添加条件组', + form: '当前表单', + subform: '子表单', + formula: '函数公式', + formulaInfo: '函数说明', + formulaExample: '函数示例', + fieldUsed: '【{label}】在计算公式中被使用,请先修改对应公式', + fieldExist: '【{label}】字段已存在', + fieldEmpty: '字段名称不能为空', + fieldChar: '字段名称必须以字母开头', + }, + validate: { + type: '字段类型', + typePlaceholder: '请选择', + trigger: '触发方式', + mode: '验证方式', + modes: { + required: '必填', + notRequired: '非必填', + pattern: '正则表达式', + validator: '自定义验证', + min: '最小值', + max: '最大值', + len: '长度', + }, + types: { + string: '文本', + boolean: '布尔', + array: '多选', + number: '数字', + integer: '整数', + float: '小数', + object: '合集', + date: '日期', + url: 'URL链接', + email: '邮箱地址', + }, + message: '错误信息', + auto: '自动获取', + autoRequired: '请输入{title}', + autoMode: '请输入正确的{title}', + requiredPlaceholder: '请输入提示语', + required: '是否必填', + rule: '验证规则', + }, + tableOptions: { + handle: '操作', + add: '添加', + empty1: '点击右下角', + empty2: '按钮添加一列', + rmCol: '删除当前列', + rmRow: '删除当前行', + splitRow: '拆分成行', + splitCol: '拆分成列', + mergeBottom: '向下合并', + mergeRight: '向右合并', + addTop: '添加上列', + addBottom: '添加下列', + addLeft: '添加左列', + addRight: '添加右列', + keyValue: '键值对', + }, + struct: { + title: '编辑数据', + only: '【{label}】只允许添加一个', + errorMsg: '输入的内容语法错误', + configured: '已配置', + configuredData: '已配置 {num} 个数据源', + configuredEvent: '已配置 {num} 个事件', + }, + class: { + title: '设置样式', + create: '创建样式', + placeholder: '请输入样式的描述信息', + saveMsg: '请先保存当前正在编辑的样式', + configured: '已配置 {num} 个样式', + }, + event: { + title: '设置事件', + create: '创建事件', + list: '事件列表', + placeholder: '请输入事件的名称', + saveMsg: '请先保存当前正在编辑的事件', + type: '类型', + info: '说明', + action: '编辑行为', + inject: { + api: '当前表单的api', + rule: '当前表单的生成规则', + self: '组件的生成规则', + option: '表单的配置', + args: '事件的原始参数', + } + }, + eventInfo: { + blur: '失去焦点时触发', + focus: '获得焦点时触发', + change: '当绑定值变化时触发', + input: '在值改变时触发', + clear: '在点击清空按钮时触发', + close: '关闭组件时触发', + click: '点击组件时触发', + add: '增加时触发', + delete: '删除时触发', + remove: '删除时触发', + visibleChange: '下拉框出现/隐藏时触发', + calendarChange: '在日历所选日期更改时触发', + panelChange: '当日期面板改变时触发', + open: '打开的回调', + opened: '打开动画结束时的回调', + closed: '关闭动画结束时的回调', + openAutoFocus: '输入焦点聚焦在内容时的回调', + closeAutoFocus: '输入焦点从内容失焦时的回调', + submit: '表单提交时触发', + confirm: '点击确认按钮时触发', + validateFail: '表单验证失败时触发', + beforeLoad: '初始化之前触发', + loaded: '初始化完成之后触发', + hook_load: '组件规则加载后触发', + hook_mounted: '组件挂载后触发', + hook_deleted: '组件规则被移除后触发', + hook_watch: '组件规则发生变化后触发', + hook_value: '组件的值发生变化后触发', + hook_hidden: '组件显示状态发生变化后触发', + }, + fetch: { + info: '定义请求时,支持通过双大括号语法(如 {{token}})使用变量。在接口请求时会自动读取这些变量。如果变量的值是对象,可以通过 {{variableName.attributeName}} 访问对象的属性值。', + title: '设置数据源', + create: '创建数据源', + config: '请求配置', + action: '请求链接', + actionRequired: '请输入正确的链接', + placeholder: '请输入数据源的描述信息', + method: '请求方式', + data: '附带数据', + dataType: '数据类型', + headers: '请求头部', + query: '请求参数', + parse: '数据处理', + response: '接口返回的数据', + onError: '错误处理', + beforeFetch: '前置处理', + remote: '远程数据', + static: '静态数据', + optionsType: { + fetch: '远程数据', + global: '全局数据源', + struct: '静态数据', + } + }, + style: { + width: '宽度', + height: '高度', + minWidth: '最小宽', + minHeight: '最小高', + maxWidth: '最大宽', + maxHeight: '最大高', + color: '颜色', + backgroundColor: '背景色', + margin: '外边距', + padding: '内边距', + borderRadius: '圆角', + border: '边框', + solid: '实线', + dashed: '虚线', + dotted: '点状虚线', + double: '双实线', + opacity: '透明度', + scale: '缩放', + overflow: { + name: '溢出', + visible: '可见', + hidden: '隐藏', + scroll: '滚动', + auto: '溢出后自动滚动', + }, + shadow: { + name: '阴影', + x: 'x轴偏移量', + y: 'y轴偏移量', + vague: '模糊半径', + extend: '扩散半径', + inset: '向内', + external: '向外', + mode: '模式', + classic: '经典', + flat: '扁平', + solid: '立体', + }, + display: { + name: '布局', + block: '区块', + 'inline-block': '行内区块', + inline: '行内文本', + flex: '弹性盒子', + }, + flexDirection: { + name: '主轴的方向', + row: '主轴为水平方向,起点在左端', + 'row-reverse': '主轴为水平方向,起点在右端', + column: '主轴为垂直方向,起点在上沿', + 'column-reverse': '主轴为垂直方向,起点在下沿', + }, + flexWrap: { + name: '是否换行', + nowrap: '不换行', + wrap: '换行', + }, + justifyContent: { + name: '主轴上的对齐方式', + 'flex-start': '左对齐', + 'flex-end': '右对齐', + center: '居中', + 'space-between': '两端对齐', + 'space-around': '子元素两侧的间隔相等', + 'space-evenly': '子元素平均分布在主轴上', + }, + alignItems: { + name: '子元素交叉轴上的对齐方式', + 'flex-start': '交叉轴的起点对齐', + 'flex-end': '交叉轴的终点对齐', + center: '交叉轴的中点对齐', + baseline: '沿第一行文字的基线对齐', + stretch: '满整个容器的高度', + }, + alignContent: { + name: '多行子元素在交叉轴上的对齐方式', + 'flex-start': '与交叉轴的起点对齐', + 'flex-end': '与交叉轴的终点对齐', + center: '与交叉轴的中点对齐', + 'space-between': '与交叉轴两端对齐', + 'space-around': '多行子元素平均分布在交叉轴', + stretch: '轴线占满整个交叉轴', + }, + font: { + name: '字体', + size: '大小', + align: '对齐方式', + height: '行高', + spacing: '字间距', + preview: '样式预览', + }, + decoration: { + name: '修饰', + underline: '下划线', + 'line-through': '删除线', + overline: '上划线', + }, + weight: { + name: '粗细', + 300: '细体', + 400: '常规体', + 500: '中黑体', + 700: '中粗体', + } + }, + designer: { + component: '组件配置', + id: '唯一值', + name: '编号', + type: '组件类型', + form: '表单配置', + json: '渲染规则', + style: '样式配置', + rule: '基础配置', + advanced: '高级配置', + props: '属性配置', + slots: '插槽配置', + customProps: '自定义属性配置', + validate: '验证配置', + event: '事件配置', + clearWarn: '清空后将不能恢复,确定要清空吗?', + childEmpty: '点击右下角 \\e789 按钮添加一列', + dragEmpty: '拖拽左侧列表中的组件到此处', + unload: '确定离开当前页面吗?', + sublist: '子节点列表', + formList: '表单列表', + comList: '组件列表', + addPage: '添加模块', + pageManage: '模块管理', + gridLine: '辅助线', + main: '主体', + layout: '快速布局', + col1: '一列', + col2: '两列', + col3: '三列', + col4: '四列', + print: { + title: '打印表单', + config: '设置打印', + left: '左边距', + right: '右边距', + top: '上边距', + bottom: '下边距', + defaultStyle: '默认样式', + wordStyle: '文档样式', + export: '导出 PDF', + } + }, + menu: { + template: '模板', + main: '基础组件', + aide: '辅助组件', + layout: '布局组件', + component: '组件', + subform: '子表单组件', + container: '容器组件', + chart: '图表组件', + tree: '大纲' + }, + formula: { + math: '数字处理', + string: '文本处理', + date: '时间处理', + collection: '合集处理', + condition: '逻辑处理', + ADD: '获取两个数字相加的值', + SUB: '获取两个数字相减的值', + MUL: '获取两个数字相乘的值', + DIV: '获取两个数字相除的值', + SUM: '获取合集中数值的总和', + MAX: '获取参数列表中的最大值', + MIN: '获取参数列表中的最小值', + ABS: '获取数字的绝对值', + AVG: '获取参数列表的平均值', + POWER: '获取指定数字的乘幂', + RAND: '获取一个大于等于0且小于1的随机数', + PI: '获取圆周率', + ROUND: '将一个小数四舍五入到指定的位数', + SQRT: '获取一个数字的正平方根', + NOW: '获取当前的时间', + TODAY: '获取今天的日期', + YEAR: '获取指定日期的年份', + MONTH: '获取指定日期的月份', + DAY: '获取指定日期的天数', + HOUR: '获取指定日期的小时数', + MINUTE: '获取指定日期的分钟数', + SECOND: '获取指定日期的秒数', + DIFFDAYS: '获取两个日期之间的天数', + DIFFHOURS: '获取两个时间之间的小时数,保留两位小数', + DIFFMINUTES: '获取两个时间之间的分钟数', + ADDYEAR: '增加指定日期的年份', + ADDMONTH: '增加指定日期的月份', + ADDDAY: '增加指定日期的天数', + ADDWEEK: '增加指定日期的周数', + ADDHOUR: '增加指定时间的小时数', + ADDMINUTE: '增加指定时间的分钟数', + ADDSECOND: '增加指定时间的秒数', + SUBYEAR: '减少指定日期的年份', + SUBMONTH: '减少指定日期的月份', + SUBDAY: '减少指定日期的天数', + SUBWEEK: '减少指定日期的周数', + SUBHOUR: '减少指定时间的小时数', + SUBMINUTE: '减少指定时间的分钟数', + SUBSECOND: '减少指定时间的秒数', + TIMESTAMP: '获取指定日期的时间戳', + STARTSWITH: '检查字符串是否以指定字符串开头', + EMPTY: '检查参数是否为空', + NOTEMPTY: '检查参数是否不为空', + LEN: '获取指定合集的长度', + MOD: '获取两个数字的余数', + FLOOR: '获取指定数字向下取整的值', + CEIL: '获取指定数字向上取整的值', + FIXED: '将一个小数保留指定位数的小数', + ISNUMBER: '检查参数是否为数字', + TONUMBER: '将参数转换为数字', + SLICELEFT: '获取一个字符串从开头开始指定长度的字符串', + SLICERIGHT: '获取一个字符串从结尾开始指定长度的字符串', + TOLOWER: '将字符串中所有大写字母转换为小写字母', + TOUPPER: '将字符串中所有小写字母转换为大写字母', + INCLUDES: '检查字符串中是否包含指定字符串', + REPLACE: '将字符串中的部分文本替换为不同的文本,只替换匹配到的第一个', + REPLACEALL: '将字符串中的部分文本替换为不同的文本,替换所有匹配到的', + TRIM: '将字符串前后的空格删除', + TOCHINSESAMOUNT: '获取指定数字的中文大写金额', + UNION: '将合集/参数中的值去重,返回去重后的合集', + INTERSECTIONSET: '获取两个集合的交集', + LIST: '获取所有参数组成的集合', + AND: '将表达式用"并且"链接,当所有表达式均为true时返回true,否则返回false', + OR: '将表达式用"或"链接,当有一个表达式为true时返回true,否则返回false', + IF: '检查一个条件能否满足,如果满足返回第二个参数,否则返回第三个参数', + IN: '检查第二个参数是否在合集中', + DEFAULT: '检查第一个参数,如果为空返回第二个参数,否则返回第一个参数', + CASE: '检查是否满足一个或多个条件,返回第一个满足条件的值', + COLUMN: '获取子表单中指定字段并返回合集', + VALUE: '获取分组表单中指定字段', + CONCAT: '将所有参数拼接,返回拼接后的字符串', + FALSE: '返回逻辑值 false', + TRUE: '返回逻辑值 true', + NOT: '获取某个逻辑值的相反值', + EQ: '检查两个值是否相等', + NE: '检查两个值是否不相等', + GE: '检查第一个值是否大于等于另一个值', + GT: '检查第一个值是否大于另一个值', + LE: '检查第一个值是否小于等于另一个值', + LT: '检查第一个值是否小于另一个值', + }, + language: { + name: '国际化配置', + add: '新增词条', + batchRemove: '批量删除', + select: '选择多语言', + }, + props: { + circle: '圆形', + square: '正方形', + image: '图片', + video: '视频', + audio: '音频', + document: '文档', + size: '尺寸', + info: '提示', + success: '成功', + error: '失败', + warning: '警告', + primary: '重要', + danger: '危险', + form: '表单', + subform: '子表单', + other: '其他', + model: '弹窗', + field: '数据集', + variable: '变量', + disabled: '禁用', + enable: '启用', + time: '时间', + email: '邮箱', + number: '数字', + globalData: '全局数据', + mobile: '移动端', + reactive: '响应式', + pc: '电脑端', + title: '标题', + content: '内容', + collection: '合集', + group: '分组', + custom: '自定义', + change: '改变', + blur: '失去焦点', + preview: '预览', + clear: '清空', + cancel: '取消', + close: '关闭', + ok: '确定', + save: '保存', + refresh: '刷新', + submit: '提交', + reset: '重置', + copy: '复制', + delete: '删除', + hide: '隐藏', + show: '显示', + position: '位置', + render: '渲染', + large: '大', + default: '默认', + small: '小', + always: '常显', + never: '不显示', + hover: '悬浮', + click: '点击', + button: '按钮', + year: '年份', + month: '月份', + date: '日期', + dates: '日期多选', + week: '一周', + datetime: '日期时间', + 'datetime-local': '日期时间', + datetimerange: '日期时间区间', + daterange: '日期区间', + monthrange: '月份区间', + left: '左对齐', + right: '右对齐', + top: '顶部', + bottom: '底部', + text: '文字', + icon: '图标', + picture: '图片', + 'picture-card': '卡片', + center: '居中', + vertical: '竖向', + horizontal: '横向', + manage: '管理', + key: '键名', + name: '名称', + value: '值', + inputData: '默认值', + append: '插入', + options: '选项数据', + option: '选项', + callback: '回调', + mode: '模式', + style: '样式', + print: '打印', + _self: '当前窗口', + _blank: '新的窗口', + _parent: '父级窗口', + _top: '顶级窗口', + }, + slots: { + prefix: '头部内容', + suffix: '尾部内容', + prepend: '前置内容', + append: '后置内容', + }, + behavior: { + add: '添加动作', + props: { + id: '选择组件', + status: '状态', + compute: '条件', + static: '静态', + formula: '表达式', + setFormula: '配置表达式', + continue: '继续执行动作', + stop: '中断执行动作', + break: '跳过当前动作', + model: '选择弹窗', + fetch: '配置请求', + response: '请求结果', + callback: '自定义JS', + ignoreError: '执行异常', + expression: '执行条件', + stopPropagation: '阻断条件', + execute: '执行动作', + info: '动作说明', + }, + openModel: { + name: '打开弹窗', + info: '打开所选的弹窗', + }, + closeModel: { + name: '关闭弹窗', + info: '关闭当前弹窗', + }, + hidden: { + name: '组件可见性', + info: '控制所选的组件的显示/隐藏', + }, + disabled: { + name: '组件可用性', + info: '控制所选的组件的启用/禁用', + }, + resetFields: { + name: '重置表单', + info: '重置表单数据', + }, + clearFields: { + name: '清空表单', + info: '清空表单数据', + }, + validate: { + name: '校验表单', + info: '对整个表单的内容进行校验' + }, + validateFields: { + name: '校验表单项', + info: '校验所选的的表单项' + }, + setValue: { + name: '表单赋值', + info: '修改表单的数据' + }, + fetch: { + name: '发送请求', + info: '配置并发送API请求', + props: { + append: '追加表单数据', + }, + warning: { + append: '开启后,远程请求返回的数据将自动追加到表单的数据中。', + response: '远程请求返回的数据将暂存到指定的变量中。', + } + }, + copy: { + name: '复制内容', + info: '复制文本内容至粘贴板', + }, + callback: { + name: '自定义操作', + info: '通过JavaScript自定义动作逻辑', + }, + message: { + name: '消息提醒', + info: '弹出消息提醒', + props: { + type: '类型', + message: '提示信息', + duration: '持续时间(ms)', + showClose: '显示关闭按钮', + } + }, + submit: { + name: '提交表单', + info: '手动提交表单并触发表单提交事件', + }, + }, + com: { + cascader: { + name: '级联选择器', + event: { + expandChange: '当展开节点发生变化时触发', + removeTag: '在多选模式下,移除Tag时触发' + }, + props: { + props: '配置选项', + placeholder: '输入框占位文本', + disabled: '是否禁用', + clearable: '是否支持清空选项', + showAllLevels: '输入框中是否显示选中值的完整路径', + collapseTags: '多选模式下是否折叠Tag', + collapseTagsTooltip: '当鼠标悬停于折叠标签的文本时,是否显示所有选中的标签', + separator: '选项分隔符', + filterable: '该选项是否可以被搜索', + tagType: '标签类型', + }, + propsOpt: { + multiple: '是否多选', + expandTrigger: '次级菜单的展开方式', + checkStrictly: '是否严格的遵守父子节点不互相关联', + emitPath: '在选中节点改变时,是否返回由该节点所在的各级菜单的值所组成的数组', + value: '指定选项的值为选项对象的某个属性值', + label: '指定选项标签为选项对象的某个属性值', + children: '指定选项的子选项为选项对象的某个属性值', + disabled: '指定选项的禁用为选项对象的某个属性值', + leaf: '指定选项的叶子节点的标志位为选项对象的某个属性值', + } + }, + checkbox: { + name: '多选框', + props: { + input: '是否可以填写', + type: '按钮类型', + disabled: '是否禁用', + min: '可被勾选的最小数量', + max: '可被勾选的最大数量', + textColor: '当按钮为活跃状态时的字体颜色', + fill: '当按钮为活跃状态时的边框和背景颜色' + } + }, + col: { + name: '布局格子', + info: '通过响应式配置多端布局,移动端会自动应用第一个', + props: { + span: '栅格占据的列数', + offset: '栅格左侧的间隔格数', + push: '栅格向右移动格数', + pull: '栅格向左移动格数' + } + }, + colorPicker: { + name: '颜色选择器', + event: { + activeChange: '面板中当前显示的颜色发生改变时触发' + }, + props: { + disabled: '是否禁用', + showAlpha: '是否支持透明度选择', + colorFormat: '颜色的格式', + predefine: '预定义颜色', + } + }, + datePicker: { + name: '日期', + props: { + pickerOptions: '当前时间日期选择器特有的选项', + readonly: '完全只读', + disabled: '禁用', + type: '显示类型', + editable: '文本框可输入', + clearable: '是否显示清除按钮', + placeholder: '非范围选择时的占位内容', + startPlaceholder: '范围选择时开始日期的占位内容', + endPlaceholder: '范围选择时结束日期的占位内容', + format: '显示在输入框中的格式', + align: '对齐方式', + rangeSeparator: '选择范围时的分隔符', + unlinkPanels: '在范围选择器里取消两个日期面板之间的联动', + } + }, + dateRange: { + name: '日期区间', + }, + timeRange: { + name: '时间区间', + }, + elAlert: { + name: '提示', + description: '说明文字', + props: { + title: '标题', + type: '主题', + description: '辅助性文字', + closable: '是否可关闭', + center: '文字是否居中', + closeText: '关闭按钮自定义文本', + showIcon: '是否显示图标', + effect: '选择提供的主题' + } + }, + elButton: { + name: '按钮', + props: { + formCreateChild: '内容', + size: '尺寸', + type: '类型', + plain: '是否朴素按钮', + round: '是否圆角按钮', + circle: '是否圆形按钮', + loading: '是否加载中状态', + disabled: '是否禁用状态', + } + }, + elCard: { + name: '卡片', + props: { + header: '标题', + shadow: '阴影显示时机', + } + }, + elCollapse: { + name: '折叠面板', + event: { + change: '切换当前活动面板,在手风琴模式下其类型是string,在其他模式下是array', + }, + props: { + accordion: '是否手风琴模式' + } + }, + elCollapseItem: { + name: '面板', + props: { + title: '面板标题', + name: '唯一标志符', + disabled: '是否禁用', + } + }, + elDescriptions: { + name: '描述列表', + props: { + title: '标题文本,显示在左上方', + extra: '操作区文本,显示在右上方', + column: '一行中表格的数量', + border: '是否带有边框', + direction: '排列的方向', + size: '列表的尺寸', + } + }, + elDescriptionsItem: { + name: '描述格子', + props: { + label: '标签文本', + __child: '内容', + span: '列的数量', + width: '列的宽度,不同行相同列的宽度按最大值设定(如无 border ,宽度包含标签与内容', + minWidth: '列的最小宽度', + align: '列的内容对齐方式(如无 border,对标签和内容均生效)', + labelAlign: '列的标签对齐方式,若不设置该项,则使用内容的对齐方式(如无 border,请使用 align 参数)', + className: '列的内容自定义类名', + } + }, + elDivider: { + name: '分割线', + props: { + direction: '设置分割线方向', + formCreateChild: '设置分割线文案', + contentPosition: '设置分割线文案的位置' + } + }, + elTabPane: { + name: '选项卡', + props: { + label: '选项卡标题', + disabled: '是否禁用', + name: '选项卡的标识符', + lazy: '标签是否延迟渲染' + } + }, + elTabs: { + name: '标签页', + event: { + tabClick: 'tab 被选中时触发', + tabChange: 'activeName 改变时触发', + tabRemove: '点击 tab 移除按钮时触发', + tabAdd: '点击 tab 新增按钮时触发', + edit: '点击 tab 的新增或移除按钮后触发', + }, + props: { + type: '风格类型', + closable: '标签是否可关闭', + tabPosition: '选项卡所在位置', + stretch: '标签的宽度是否自撑开' + } + }, + elTag: { + name: '标签', + props: { + formCreateChild: '标签内容', + type: '标签的类型', + size: '标签的尺寸', + effect: '标签的主题', + closable: '是否可关闭', + disableTransitions: '是否禁用渐变动画', + hit: '是否有边框描边', + round: '是否为圆形', + color: '背景色' + } + }, + elTransfer: { + name: '穿梭框', + event: { + leftCheckChange: '左侧列表元素被用户选中 / 取消选中时触发', + rightCheckChange: '右侧列表元素被用户选中 / 取消选中时触发' + }, + props: { + filterable: '是否可搜索', + filterPlaceholder: '搜索框占位符', + targetOrder: '右侧列表元素的排序策略', + targetOrderInfo: '若为 original,则保持与数据相同的顺序;若为 push,则新加入的元素排在最后;若为 unshift,则新加入的元素排在最前', + titles: '自定义列表标题', + buttonTexts: '自定义按钮文案', + props: '数据源的字段别名' + } + }, + elTreeSelect: { + name: '树形选择', + event: { + removeTag: '多选模式下移除tag时触发' + }, + props: { + multiple: '是否多选', + disabled: '是否禁用', + clearable: '是否可以清空选项', + collapseTags: '多选时是否将选中值按文字的形式展示', + multipleLimit: '多选时用户最多可以选择的项目数,为 0 则不限制', + placeholder: '占位符', + props: '配置选项', + checkStrictly: '在显示复选框的情况下,是否严格的遵循父子不互相关联的做法', + renderAfterExpand: '是否在第一次展开某个树节点后才渲染其子节点', + defaultExpandAll: '是否默认展开所有节点', + expandOnClickNode: '是否在点击节点的时候展开或者收缩节点', + checkOnClickNode: '是否在点击节点的时候选中节点', + nodeKey: '每个树节点用来作为唯一标识的属性,整棵树应该是唯一的' + } + }, + elLink: { + name: '链接', + props: { + formCreateChild: '内容', + href: '跳转链接', + type: '类型', + underline: '是否显示下划线', + disabled: '是否禁用', + target: '打开方式', + } + }, + elWatermark: { + name: '水印', + props: { + content: '水印文本内容', + image: '水印图片,建议使用 2x 或 3x 图像', + width: '水印的宽度, content 的默认值是它自己的宽度', + height: '水印的高度, content 的默认值是它自己的高度', + rotate: '水印的旋转角度, 单位 °', + zIndex: '水印元素的z-index值', + gap: '水印之间的间距', + } + }, + elTooltip: { + name: '文字提示', + props: { + content: '显示的内容', + disabled: '是否禁用', + rawContent: '内容是否作为 HTML 字符串处理', + enterable: '鼠标是否可进入到 Tooltip 中', + effect: '主题', + placement: 'Tooltip 组件出现的位置', + trigger: '如何触发 Tooltip', + offset: '出现位置的偏移量', + showAfter: '在触发后多久显示内容,单位毫秒', + hideAfter: '延迟关闭,单位毫秒', + autoClose: '出现后自动隐藏延时,单位毫秒' + } + }, + elImage: { + name: '图片', + props: { + src: '图片链接', + previewSrcList: '预览图片列表' + } + }, + elAvatar: { + name: '头像框', + props: { + src: '图片链接', + shape: '形状', + size: '尺寸', + }, + }, + elMention: { + name: '提及', + event: { + search: '按下触发字段时触发', + select: '当用户选择选项时触发', + }, + props: { + type: '类型', + placeholder: '输入框占位文本', + clearable: '是否显示清除按钮', + disabled: '是否禁用', + whole: '当退格键被按下做删除操作时,是否将提及部分作为整体删除', + checkIsWhole: '当退格键被按下做删除操作时,检查是否将提及部分作为整体删除', + filterOption: '筛选器选项逻辑' + } + }, + elSegmented: { + name: '分段控制器', + props: { + size: '尺寸', + block: '撑满父元素宽度', + disabled: '是否禁用', + } + }, + elFormItem: { + name: '表单项', + props: { + label: '标签文本', + labelWidth: '标签宽度', + size: '尺寸', + } + }, + elStatistic: { + name: '统计栏', + props: { + value: '数值', + title: '标题', + prefix: '数值的前缀', + suffix: '数值的后缀', + } + }, + fcTitle: { + name: '标题', + props: { + title: '标题', + size: '尺寸', + align: '对齐方式' + } + }, + fcId: { + name: '唯一值', + props: { + prefix: '前缀', + } + }, + fcCity: { + name: '省市区选择器', + props: { + api: '数据链接 URI', + level: '类型', + clearable: '是否显示清除按钮', + disabled: '是否禁用', + filter: '数据过滤,返回可选择数据', + } + }, + fcCell: { + name: '格子' + }, + fcEditor: { + name: '富文本框', + props: { + disabled: '是否禁用' + } + }, + fcFlex: { + name: '盒子布局', + }, + fcFlex2: { + name: '盒子布局', + horizontal: '水平居中', + vertical: '垂直居中', + left: '左对齐', + right: '右对齐', + reset: '重置布局', + }, + fcRow: { + name: '栅格布局', + props: { + gutter: '栅格间隔', + type: 'flex布局模式', + justify: 'flex布局下的水平排列方式', + align: 'flex布局下的垂直排列方式' + } + }, + fcDialog: { + name: '弹出框', + props: { + title: '标题', + width: '对话框的宽度', + fullscreen: '是否为全屏', + modal: '是否需要遮罩层', + autoClose: '提交表单后自动关闭弹出框', + footer: '是否显示操作按钮', + beforeClose: '关闭前的回调' + } + }, + fcDrawer: { + name: '抽屉', + props: { + title: '标题', + size: '对话框的宽度', + direction: '打开的方向', + modal: '是否需要遮罩层', + autoClose: '提交表单后自动关闭弹出框', + footer: '是否显示操作按钮', + beforeClose: '关闭前的回调' + }, + directionType: { + ltr: '左侧', + rtl: '右侧', + } + }, + fcTable: { + name: '表格布局', + props: { + mini: '紧凑模式', + border: '是否显示边框', + borderColor: '边框颜色', + borderWidth: '边框宽度' + } + }, + fcTableGrid: { + name: '格子', + }, + fcValue: { + name: '计算公式', + empty: '在右侧配置中设置计算公式', + }, + fcSlot: { + name: '插槽区域', + empty: '通过定义插槽 {tag} 填充区域', + props: { + name: '插槽名称' + } + }, + fcJson: { + name: '动态区域', + empty: '通过加载 {tag} 规则填充区域', + props: { + _loadType: 'JSON 规则', + type: '类型', + } + }, + lineChart: { + name: '折线图', + data: '图表数据', + pieTypeOpt: { + pie: '圆形', + doughnut: '环形', + 'half-doughnut': '半环形', + }, + funnelSortOpt: { + descending: '倒序', + ascending: '正序', + }, + props: { + title: '图表的名称', + subtitle: '图表的简介', + valueFormat: '格式化数值显示', + stack: '多列数据时是否堆叠', + smooth: '线条是否平滑过渡', + showLegend: '是否显示标记', + showSeriesLabel: '是否显示数值', + barBackgroundColor: '柱状的背景色', + funnelSort: '排序方式', + pieType: '形状', + min: '最小值', + max: '最大值', + value: '数值', + indicator: '指示器', + loadOptions: '初始化', + } + }, + areaChart: { + name: '体积图' + }, + barChart: { + name: '柱状图' + }, + customChart: { + name: '自定义图表' + }, + funnelChart: { + name: '漏斗图' + }, + gaugeChart: { + name: '仪表盘' + }, + pieChart: { + name: '饼图' + }, + radarChart: { + name: '雷达图' + }, + scatterChart: { + name: '散点图' + }, + stripeChart: { + name: '条形图' + }, + fcInlineForm: { + name: '行内布局', + }, + group: { + name: '子表单', + props: { + disabled: '是否禁用', + syncDisabled: '是否与子表单强制同步禁用状态', + expand: '设置默认展开几项', + button: '是否显示操作按钮', + sortBtn: '是否显示排序按钮', + min: '设置最小添加几项', + max: '设置最多添加几项', + } + }, + html: { + name: 'HTML', + props: { + formCreateChild: '内容', + } + }, + input: { + name: '输入框', + event: { + change: '当值改变时,当组件失去焦点或用户按Enter时触发', + }, + props: { + type: '类型', + maxlength: '最大输入长度', + minlength: '最小输入长度', + placeholder: '输入框占位文本', + clearable: '是否显示清除按钮', + disabled: '是否禁用', + readonly: '是否只读', + } + }, + inputNumber: { + name: '数字输入框', + props: { + precision: '数值精度', + min: '设置计数器允许的最小值', + max: '设置计数器允许的最大值', + step: '计数器步长', + stepStrictly: '是否只能输入 step 的倍数', + disabled: '是否禁用计数器', + controls: '是否使用控制按钮', + controlsPosition: '控制按钮位置', + placeholder: '输入框占位文本' + } + }, + password: { + name: '密码输入框', + event: { + change: '当值改变时,当组件失去焦点或用户按Enter时触发', + }, + props: { + disabled: '是否禁用', + readonly: '是否只读', + maxlength: '最大输入长度', + minlength: '最小输入长度', + placeholder: '输入框占位文本', + clearable: '是否显示清除按钮' + } + }, + radio: { + name: '单选框', + props: { + input: '是否可以填写', + disabled: '是否禁用', + type: '按钮形式', + textColor: '按钮形式激活时的文本颜色', + fill: '按钮形式激活时的填充色和边框色' + } + }, + rate: { + name: '评分', + props: { + max: '最大分值', + disabled: '是否禁用', + allowHalf: '是否允许半选', + voidColor: '未选中时图标的颜色', + disabledVoidColor: '只读时未选中时图标的颜色', + voidIconClass: '未选中时图标的类名', + disabledVoidIconClass: '只读时未选中时图标的类名', + showScore: '是否显示当前分数', + textColor: '辅助文字的颜色', + scoreTemplate: '分数显示模板' + } + }, + fcDataSelect: { + name: '子表单选择器' + }, + select: { + name: '选择器', + title: '请选择', + emptyText: '拖拽组件配置搜索条件', + event: { + removeTag: '多选模式下移除tag时触发' + }, + props: { + title: '标题', + valueKey: '指定选项的值为选项对象的某个属性值', + labelKey: '指定选项标签为选项对象的某个属性值', + autoLoad: '自动触发搜索', + multiple: '是否多选', + disabled: '是否禁用', + clearable: '是否可以清空选项', + collapseTags: '多选时是否将选中值按文字的形式展示', + multipleLimit: '多选时用户最多可以选择的项目数,为 0 则不限制', + placeholder: '占位符', + filterable: '是否可搜索', + allowCreate: '是否允许用户创建新条目', + noMatchText: '搜索条件无匹配时显示的文字', + noDataText: '选项为空时显示的文字', + reserveKeyword: '多选且可搜索时,是否在选中一个选项后保留当前的搜索关键词', + defaultFirstOption: '在输入框按下回车,选择第一个匹配项', + remote: '其中的选项是否从服务器远程加载', + remoteMethod: '自定义远程搜索方法', + } + }, + slider: { + name: '滑块', + props: { + min: '最小值', + max: '最大值', + disabled: '是否禁用', + step: '步长', + showInput: '是否显示输入框,仅在非范围选择时有效', + showInputControls: '在显示输入框的情况下,是否显示输入框的控制按钮', + showStops: '是否显示间断点', + range: '是否为范围选择', + vertical: '是否竖向模式', + height: 'Slider 高度,竖向模式时必填' + } + }, + space: { + name: '间距' + }, + stepForm: { + name: '分步表单', + event: { + next: '点击下一步按钮时触发', + }, + props: { + submitBtn: '显示提交按钮', + autoValidate: '进入下一步前自动验证表单', + 'stepsProps>alignCenter': '进行居中对齐', + 'stepsProps>simple': '是否应用简洁风格' + } + }, + stepFormItem: { + name: '步骤条', + props: { + title: '标题', + description: '描述文案' + } + }, + subForm: { + name: '分组', + props: { + disabled: '是否禁用', + syncDisabled: '是否与子表单强制同步禁用状态' + } + }, + switch: { + name: '开关', + slots: { + 'active-action': '打开时的内容', + 'inactive-action': '关闭时的内容', + }, + props: { + disabled: '是否禁用', + width: '宽度(px)', + activeText: '打开时的文字描述', + inactiveText: '关闭时的文字描述', + activeValue: '打开时的值', + inactiveValue: '关闭时的值', + activeColor: '打开时的背景色', + inactiveColor: '关闭时的背景色' + } + }, + tableForm: { + name: '表格表单', + props: { + disabled: '是否禁用', + filterEmptyColumn: '是否过滤空行的数据', + max: '最多添加几行,为 0 则不限制', + min: '最少添加几行', + size: '尺寸', + emptyText: '空数据时显示的文本内容', + height: '高度', + showIndex: '显示行号', + stripe: '显示斑马纹', + border: '边框', + button: '操作按钮', + page: '分页', + addable: '允许新增', + deletable: '允许删除', + newColumn: '默认显示新行', + 'button>column': '按钮管理', + 'button>label': '操作', + 'button>fixed': '位置', + 'button>width': '列的宽度', + 'page>props>pageSize': '每页显示条目个数', + 'page>props>small': '使用小型分页样式', + 'page>props>background': '为分页按钮添加背景色', + } + }, + tableFormPro: { + name: '表格表单Pro', + event: { + handleClick: '点击操作按钮时会触发该事件', + } + }, + nestedTableForm: { + name: '嵌套表单', + props: { + disabled: '是否禁用', + max: '最多添加几行,为 0 则不限制', + nestedMax: '子表单最多添加几行,为 0 则不限制', + } + }, + infiniteTableForm: { + name: '无限级表单', + props: { + disabled: '是否禁用', + childrenField: '设置子级的字段名', + max: '最多添加几行,为 0 则不限制', + layerMax: '最多添加几层,为 0 则不限制', + } + }, + nestedSubTableForm: { + name: '子表格表单', + }, + tableFormColumn: { + name: '表格格子', + label: '自定义名称', + props: { + label: '标题', + header: '表头', + fixed: '位置', + width: '宽度', + color: '颜色', + hidden: '是否隐藏', + required: '是否显示必填星号', + } + }, + tableFormColumn2: { + name: '表格格子', + header: '配置当前列的表头名称,重复的表头将自动合并。' + }, + dataTable: { + name: '数据表格', + handle: '禁用逻辑', + click: '点击事件', + filter: '筛选', + header: '表头', + event: { + cellMouseEnter: '当单元格 hover 进入时会触发该事件', + cellMouseLeave: '当单元格 hover 退出时会触发该事件', + handleClick: '点击操作按钮时会触发该事件', + rowClick: '当某一行被点击时会触发该事件', + rowDblclick: '当某一行被双击时会触发该事件', + headerClick: '当某一列的表头被点击时会触发该事件', + filterChange: '筛选条件变化时会触发该事件', + expandChange: '当用户对某一行展开或者关闭的时候会触发该事件', + sortChange: '当表格的排序条件发生变化的时候会触发该事件', + selectionChange: '当选择项发生变化时触发', + }, + button: { + title: '操作按钮', + btn: '配置操作按钮', + link: '文字', + round: '圆角', + plain: '朴素', + disabled: '禁用', + }, + column: { + title: '列表管理', + btn: '配置表格列表', + prop: '字段名称', + sort: '排序', + }, + format: { + default: '常规', + tag: '标签', + image: '图片', + custom: '自定义', + }, + fixed: { + default: '常规', + left: '左悬浮', + right: '右悬浮', + }, + sortable: { + disabled: '不排序', + default: '常规排序', + custom: '接口排序', + }, + props: { + _optionType: '表格数据', + 'page>totalField': '接口响应数据中总条目数的字段名称', + 'page>dataField': '接口响应数据中列表数据的字段名称', + 'page>orderField': '请求接口时排序的参数名称', + 'page>orderByField': '请求接口时排序方式的参数名称', + 'page>pageField': '请求接口时页码的参数名称(分页)', + 'page>pageSizeField': '请求接口时条目数的参数名称(分页)', + column: '表格管理', + showSummary: '是否在表尾显示合计行', + selection: '是否显示多选框', + size: '尺寸', + rowKey: '行数据的Key', + emptyText: '空数据时显示的文本内容', + height: '高度', + index: '显示行号', + stripe: '显示斑马纹', + border: '边框', + defaultExpandAll: '默认展开所有行', + button: '操作按钮', + page: '分页', + 'button>column': '按钮管理', + 'button>label': '操作', + 'button>fixed': '位置', + 'button>width': '列的宽度', + 'page>position': '位置', + 'page>props>pageSize': '每页显示条目个数', + 'page>props>small': '使用小型分页样式', + 'page>props>background': '为分页按钮添加背景色', + }, + requiredName: '请输入按钮名称', + requiredKey: '请输入按钮标识', + requiredLabel: '请输入标题', + requiredRender: '请输入渲染函数', + }, + text: { + name: '文字', + props: { + formCreateChild: '内容' + } + }, + textarea: { + name: '多行输入框', + event: { + change: '当值改变时,当组件失去焦点或用户按Enter时触发', + }, + props: { + disabled: '是否禁用', + readonly: '是否只读', + maxlength: '最大输入长度', + minlength: '最小输入长度', + showWordLimit: '是否显示统计字数', + placeholder: '输入框占位文本', + rows: '输入框行数', + autosize: '高度是否自适应' + } + }, + timePicker: { + name: '时间', + 'HH:mm:ss': '时:分:秒', + 'HH:mm': '时:分', + props: { + __format: '输入框中的格式', + pickerOptions: '当前时间日期选择器特有的选项', + readonly: '完全只读', + disabled: '禁用', + editable: '文本框可输入', + clearable: '是否显示清除按钮', + placeholder: '非范围选择时的占位内容', + startPlaceholder: '范围选择时开始日期的占位内容', + endPlaceholder: '范围选择时结束日期的占位内容', + isRange: '是否为时间范围选择', + arrowControl: '是否使用箭头进行时间选择', + align: '对齐方式' + } + }, + tree: { + name: '树形控件', + event: { + nodeClick: '当节点被点击的时候触发', + nodeContextmenu: '当某一节点被鼠标右键点击时会触发该事件', + checkChange: '当复选框被点击的时候触发', + check: '点击节点复选框之后触发', + currentChange: '当前选中节点变化时触发的事件', + nodeExpand: '节点被展开时触发的事件', + nodeCollapse: '节点被关闭时触发的事件', + nodeDragStart: '节点开始拖拽时触发的事件', + nodeDragEnter: '拖拽进入其他节点时触发的事件', + nodeDragLeave: '拖拽离开某个节点时触发的事件', + nodeDragOver: '在拖拽节点时触发的事件(类似浏览器的 mouseover 事件)', + nodeDragEnd: '拖拽结束时(可能未成功)触发的事件', + nodeDrop: '拖拽成功完成时触发的事件' + }, + props: { + emptyText: '内容为空的时候展示的文本', + props: '配置选项', + renderAfterExpand: '是否在第一次展开某个树节点后才渲染其子节点', + defaultExpandAll: '是否默认展开所有节点', + expandOnClickNode: '是否在点击节点的时候展开或者收缩节点,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。', + checkOnClickNode: '是否在点击节点的时候选中节点', + autoExpandParent: '展开子节点的时候是否自动展开父节点', + checkStrictly: '在显示复选框的情况下,是否严格的遵循父子不互相关联的做法', + accordion: '是否每次只打开一个同级树节点展开', + indent: '相邻级节点间的水平缩进(px)', + nodeKey: '每个树节点用来作为唯一标识的属性,整棵树应该是唯一的' + } + }, + upload: { + name: '上传', + info: '上传成功后,将接口返回的 URL 赋值给 file.url,或将返回结果赋值给 file.value,以便在后续的表单提交时获取这些数据。', + event: { + remove: '文件列表移除文件时触发', + preview: '点击文件列表中已上传的文件时触发', + error: '文件上传失败时触发', + progress: '文件上传时触发', + exceed:'当超出限制时触发' + }, + slots: { + tip: '说明' + }, + props: { + listType: '上传类型', + multiple: '是否支持多选文件', + action: '上传的地址(必填)', + beforeUpload: '上传文件之前触发', + onSuccess: '上传成功时触发', + beforeRemove: '删除文件之前触发', + headers: '设置上传的请求头部', + data: '上传时附带的额外参数', + name: '上传的文件字段名', + withCredentials: '支持发送 cookie 凭证信息', + accept: '接受上传的文件类型', + autoUpload: '是否在选取文件后立即进行上传', + disabled: '是否禁用', + limit: '最大允许上传个数' + } + }, + audioBox: { + name: '音频播放器', + preloadOpt: { + auto: '自动', + metadata: '元数据', + none: '禁止', + }, + event: { + pause: '音频播放暂停时触发', + play: '音频开始播放时触发', + ended: '音频播放结束后触发' + }, + props: { + src: '音频地址', + type: '音频类型', + autoplay: '是否自动播放', + loop: '是否循环播放', + muted: '是否静音', + controls: '是否显示控制条', + preload: '预加载', + } + }, + barCodeBox: { + name: '条形码', + props: { + value: '内容', + format: '条形码的类型', + width: '单个条形的宽度', + height: '条形码的高度', + displayValue: '是否显示内容', + fontSize: '设置文字的大小', + textPosition: '设置文字的位置', + textAlign: '设置文字的对齐方式', + textMargin: '设置文字的边距', + background: '条形码的背景色', + lineColor: '线条的颜色', + } + }, + iframeBox: { + name: '内嵌页面', + event: { + load: '页面加载完成后触发', + }, + loadingOpt: { + eager: '立即加载', + lazy: '延迟加载' + }, + props: { + src: '页面链接', + loading: '加载方式' + } + }, + qrCodeBox: { + name: '二维码', + circleTypeOpt: { + square: '正方形', + dots: '点状', + rounded: '圆形', + classy: '经典', + }, + props: { + data: '内容', + image: '中心的图片链接', + width: '二维码的宽度', + height: '二维码的高度', + circleType: '点的类型', + circleColor: '点的颜色', + } + }, + signaturePad: { + name: '手写签名', + props: { + penColor: '线条的颜色' + } + }, + videoBox: { + name: '视频播放器', + event: { + error: '视频加载失败时触发', + pause: '视频播放暂停时触发', + play: '视频开始播放时触发', + ended: '视频播放结束后触发' + }, + props: { + src: '视频地址', + type: '视频类型', + autoplay: '是否自动播放', + loop: '是否循环播放', + isLive: '是否是直播', + controls: '是否显示控制条', + withCredentials: '是否携带凭证', + } + }, + }, + tmp: { + duration: '时长', + chineseAmount: '金额', + col3: '三列栅格', + col4: '四列栅格', + table43: '4x3表格', + } +}; + +export default ZhCn; + diff --git a/src/style/chart.png b/src/style/chart.png new file mode 100644 index 0000000000000000000000000000000000000000..ed532f70db1902052a03deb89e4d318061dfa439 GIT binary patch literal 14912 zcmZX*V~`|W)GpdxZ5z|ZOxw22YTLGL8#8TN)3$9++qP|4Lh@-XG*BP5!WT|EGa>#Y5W^V zUiaN{zusbddvb^)+itE$&=Q{~GaOrzX?)k2g|(I;n^D4QOgz z%2urr;vu#>_(9kGX1)e7m!vR;wgqit%BN(Wmv>j{Bf-_g8yV zeSNZgrf8D&*C4r$<15nYST-0|jMdi*USz7MLUDe6o=QhB(U--XZ`ZZmhQbK}H#h%Q z1aP`op@_1AC9wAQDhsnN4}Sph%gPl`#r3pQ;KZkt1J!OK=m4x=!y(2X+PfM2T|@B} zUv2ukY?qfYeq2Ghs&&K7y4_%0Nrp}g&q8Ddia44$&M;MuPWl`VN<<`vl1;}W=r zST%{9W0(-r^_#F`t}rF^n~FjnIlei49za2G zwmouO^RqfGXwyyM#VzQwN7N8Wjc@(N4OXC=Zm}q$=SQf&vB^Oa1l%;N)nBcVev5g; zdyw0l-zd9&3_~j+f_|V!qH3fzmnx)sQ)fOoQ#?dC-2SdyCrP z4*Q1Xd1q^>hc2~V@1OqoB1pVP5loByu*%f%**ubF+ZG6HBt1c2@N|TK2d+ysLr5rv z+gqK;EMSDFCeS`AxamQbXltD6JWyW)sPpnP^92Ys!dAz$Zsu@Ql8{{5((ZQE0O1wF zm(CbRzgNo@oZWxPEi5bkhTThAIs_FN3x{=aRSJWYRuI)0kGq>a5Y0VdkE>=JQc$PH zkQ(#|Zd%|ez_^R-Hq9ZysprWgJj(0TyqTND{xE&-Be69`rNfhlo35e(K_-N%EhQk7 z`|Y5BqGtSWkcyF?+rpJwhamanscsLa$xkpFBUgt&=1n#s*}giELnWPnWMr0BnPg&h zv132;Q&@Et&8C#)7r$`Quehp#&EaV^}gQ_TnLv^49&_xIYNPS2}wjO zj_}gM5~8O3(yZ&>(iZJ=Ui41_s*^d@J{c?UIlB_85Ti*#SFdHUmGa47@5#`)PSiO{ z_Nug0XG3{ZyQ&D`KMDSwXp`cjC!Xx5{Jyk?69?yDk3ui92n4chkI_ALa!HCqHV%m8 zU-|T1m}MFGShaKNL`b-$v@9>{?|aUlSm6f{_arqDYr>>!2qeZcZ@1YQkLoR?k~{gO z{FYthy{%--?&~?`z7I~@C+{-${F9TZN`D4&lvMv$g2?OGkM=GxKmE#>-uo>lPx%!) zT3~9Ak;093>>TjHW-~16cQ!@-(}PRrMfM5IfF+vDX9!pw{tQQf@1WHyoR*)<;Km6C z=}>*Ss=w!>V|jj38C3w%D0*9T(2&7jUoKs22sTAtE7l4INh{QbD3CqXTU@hm5Hs~= zEoYVu396WdXwQmCfSCVyX+GEZ`FMB8Q-mPw8Ft6upVj-_BW|i|pXz$M+0<_(CpXmK zIcCib2!3v^?c8y;r7>kgA+)8uy|7|8@PK8 zU8Ew-m0+54x0^I+WtdKsAiVilE9g(-#Jk$0BigTrE5tXomGX>FT(SK9d10)f>vdCVuolMx<7pE1b5hR3#htpj6@a7Yh8hI*HI#_W%{D?u;Cf|VU ztQO#r=Fs-{Y@E)^hr*1qlRbQ|5#`1!8NR)4V(<95Fuj#BByA^ zO?T2%*?9*0lE?tWTs7eY18c}j`> zU{kWf*@Qb7*Gn_5e|coRie6I}M5Tp&ckQC*LNCTR=M7yug*EDnC4K+xxZat;&mGp^ z-rYXK7p-X-sI0xr+0D(0gSW5+&Dg0~kXEuyP=}qNU$>-%_22BV^D9m_npl3g1EA)9 zW~J>FQx%QU*?|!(YAO$TcYLn8=al4zvB~)2Z}TX%h*_oSCrwxft0WmVK8s|8jrArt zFyds&f9kuF^tCnmukzrT8)aq{Dscn5U;Qq75f;r*&A|CA7L?Ko0M%F$5c~WnR!3l6NI=i zSuXr%uFhI4_ew(g4Z+ndm`$&O2E5B+P(T5&v>s^o& zi(N9i*`~(+g+Qg7GTNHz6%KAa2LSwz++Qga&oWMw;}!$yz&&2TT7^DpdC#k_@a(C*#FdtKif@^P z&6!6#I?odVSvBX2yQ|3+Q+_XFb8 z>eSiaDDafI3RjcPPf$k~vZs0H21AYr_=ybMZ=#V$PU4riu!4Ue)3zYdhv5)YU)pvv zu~3DyCq_qq@#} z0W=nJX$Pd=&?8nYbNI%-g}MhyP2|yr3r`&S>v?W~g2YGro17FcgPOxA1c% zT z`P?nn+&foK&>tSrH3KW zBXPKe)?+06vtbs$GOjiX8klEJK-6$3&ajq*U(LZyPURL?l}C^0IfwFa zzl6FoDtEVyK7~2q1jhvwD0?%40v4ZE8<;l;0URKkL1I|fp+WlKFSW>@_yoh%Nr-M7 zWrZGdNh^%bbt)9_1Q{E)#Z_^K_oiy;9lOj4rYB~anYQLv0So@(>rpwUHSZN90`#+g zL0M4pBo{36G<>QSO2kFwsb4h>ym;et4KFX%7+?$Pv(!79|jlLSUn0F*dDNVGW-DGE7ntJcAD~ z98QsMTb{XQxuC&{i+YUYTI}~8^lg7nZN-gh)Nx`UcJ7I#n`KE?9V9ZgE4){A?y=^Y zP2{~&WpTZ^8JMZcbT7PN4sE#OXMMWISNGdfUrTCJc3lVW7>Js~5Bva?Wa~&S&)uCl zR(BWRaE#|ixZ`ceY{h2RYG(Tb^6&zXUNDz}5t8$|H51Vyv*}l6FEzkM^8J;%Sfky5 zBgt8M7bAxr6mUc(%#p9JTMZSazfr=3Yn>$chc|4M#=W|EEd!-CkomTc<%?^1D#?TA z5`s2Nap?{C{yQ}4Xm?l&*ySJ0y8X(8 zHM@Pxzs(ynOr{roye+U#$6Kd8)6pZyYJWc0Xgz!`dE*}z3d=%&{wghRNCsj5{N-uQ zBKHJtv1{~b*-k)OFA>+qc*qO~)+5t!qBtl*v=BX~D8Veyvt)Stf?-+R9qba;>M}s% zC*pw0O~`)Y9fCY*sN z=*#*x&i-YTY#L4dw}IVet!S^bSxNgafR6O|-I1r|4mg~00!>g6MQ3|ISx`pFfj>;W zBTDIddkeMe-q|>3KlToax4cO`()TFTXCn?|w{s_)bLM{-Je*SOnH-fTL>ZWCtoC%* z)~@~>v3apSpu(YthCpo4i~*~(RQy2M3ONd~FQ;qXiczW&ETI-1n3sc*M#F9of2QC9 z`??mmnM1eQ8;T98VKDb%(!=Wv&dq}BYCr=Ecl$}FxI?C^xl{Z&Cmh~YLL1z|Uvww> z^(TY1pTmUJ-W&J&Ga*^XsALd8^JzyV-Q{%axy8?8buzAy;Vz|dY+_}nCP!49dz#At zTWj1Jgkx}RZd*cJgdW5Q6W8x)=rkv^qB5ImMv9QCsDANrE_y}PbWjyb@4~TYe-Osg zIdnN*Wm9vK9Ug)RkZNb_kpAY_-wKyz3y=n|8wb?j||*)J^RyLzxc5kBT^sTA^@q`kEv+12^JL*@@} zmY)1N>5dD`joW>xjdS_&Si3peAJHb1TW(GW4Gq=W7!XzeHT@aXcL3ri4(8V`OS!$E zeFFb+{#T&6kUk4>vuV7#1TnbBiNUi;bsOt5d$&|~+RUiM_G~QJe{FG^3`K_|J7z?? z-Gf>9joo-~s2eu|4BXqQJ*0lMB~p>}&_cD&5Hju8PY%StU*qOdANq>6buFK45#l081%ZiDs1Bs_bK9nc*gy45u9q9R}tpp2}@# zAmgyK!D?x(6x0t9;=DDjPvoUFTEv8)Sc4y`ca8+RRLIEC(BR;J18~rVK-8$*%nin_ z)L{)eL7i1-XtZDOyQ#2VVe(-i#2BL{$e`kY*nsFd1LmU%e)MpYI@)+2PhUMNTA~y=r$^~Kyw;Q_}0loZpN?E-fcF9xC=$OADUH@ zxZ-|(&?ac}J1QNiF_u*F9{Aa)%Vbhb8umb6Qq$a=R8wm5w8 zXi*6~y58})JV&!j4$8jQ@tC5V&cXXUr?$7AUlt+;LzmsCvYnG|_oa<@fBW~FT~IS% zdU=stNXm)_d8(=JIfOuO<`f_?Yib{^skPiJ;OKp1Q4Ds*I03}~xg#@yR4swr=T8!H)3;tV}H)~6ZPcD4K48;lcEtcAso0sVrO|XaSLh{ z-{hWdR#82`9S|9gas2li$Uwl89+#eqUxmX@LMTr7rNsfDYdqUTw8*95x^TE^{f)Yh zIj$CdnObPPU`Jxr6Xf}P^xIrDeReDGdO3@gJ53n2x<%V<5&FQ7Rai{e(PyR2OwmsN zG-iw?rZE39er&;70bo;+3!JcTr?O-}dYEJ}|O5BhCT z>5YiV)O@fAn+Og8w8~6c5+|;RFWEw#($oQgD-Q5TQlJw>fZd>5?pYO%0Dm;_a|mry zYNGXq=U+L+V6~rW;z&DBBsMvQ)sUv_U7@?S7?Kb~HS#Mny?mU2%>+{1;#CJ!3o~W_ zR{$#n2}e)RsL+;bjjLb+ILlf^#GjP>djYaRtp_4QpanpcGrG?QU5<$8|E!Du0~Uyo zDMZ2N9SYRx&fs0Tv{koNn;g)BWXzt#fho-3!Tu@rxMY9N;6aJEr>;@w58wl?={-@` zi8>%IBASbkL>1w67vZCW<))#*IRFl5_8lh`BWb&hpOlwKZi6!*1vg`Q8k1PD$!s(O z&bGNtAew6grjyZi)~U5B?ltCFvJ;3<7>z?Db>Z@(b=1gK9(@G()@gdCxD4$K>r9=| zzot(*URDSfxl>v9sQ;#~X*r0ly%4SwNV4vcY&U!kTp5%7{H zyzrFJ<*DROF1{Bj4ei{?o7aW9C)ft04txuB0^!^ZdcG|f@gQpkl6e0kT z!yUyy8dpKKHNhn;ar3B6pb&#fxE{pT5Xtm0D>;#NYbt^Fp+}q?a+d|X$_nIW7 zh!_qp1`K=FUF8AMi=uCZ_w#$nnH_HJN%L#D<=3MAiOVkx#JB?%j^s9~ER@UpYgzL( z(M<6|H72!lb6E(ydK@q!WTd-jY;2n#`-;OIcU`~BN8^9|e{GnvL>)$}_H2&+wNNhJ z5;?ona7&=*E-$p_DJ0!hN^%R2fCV+q^<4xJ&qLzIfd&X4nf(}XAvFy(ua^Lgu7*{` zy9P1Q_uqhYdFhQL)AqhpVeh(fd%;WNzUWTHxRFWZuUsxdv(=zFxqczHDboc83Xjg0 zxjDN(v}uKPN0+ADdGgr{8zkv`mCWOE>o`?)86b|~76$i!kkVw562z9bLLy~Q$AXvq zwIQT!kCJ6Yk%?^KfL>_A zarhRHF;tKb;6c8KOT**}c6M;!^17h{=detbc*!Tuth*)6xHv{}VQ77_0_J|V3g*xV z;_8-I=<@+puE9`FH{)cqUI!xfrIq--{w$pli!O5#j+YzrF7{F)&=+S`D4b;42+L#p zH8#UHX0(>lZ1R9t;%@-lD)z$rmibsXh|CsGuCviN%fM+%C=3 z72W{ydJbKZ^q!qFdi50I+X)b=%ycZC{xf=HxUlNSc;}gorO8t#*k*jkDNaG=eS5=Q zpW{dcpr6>cv<%9ard03^l~X?Zd0c?4Q;7D+h*@CD|DQ1Qp6v7`j>59x(lV0|(deq@ zEAq?VOe@Fhl45MRIu;Jcw#}uBZDWWZKHND#081!Wt*47l;5i-HGcyxn`>`*&c7c!h zMTVrJX+15TE0U@#bt}$ngk$~Yi$V1V+}+6!=!R3GiGt}Nhw$fM5@Ngt$q#9F`l1>% zsHPmydZ?`Zh~UNF{^ET#G;;!}R9bGtps#wtLo5G^hH5C~M^D5qpBcFLS zX~N%nrY9{1DQhc<+sxQP%s+}1h>s$|h`G}PFu^N9j|^Ny=^K}*CTTXwlNy9{63gb> zxFKiCV67VZVwyIh?j5Fc{g%2$L39LKf;=YOGlpJPGPX}-dJMk8`l(L>Oc6XY*Jo5eCjx$+xQDgoIFq3T_hmpLZZ2C-qG4I-;T7gsURy8zQQKrU zz-Xp0?_iwPOt3ei?*p6R)EvUjJvsMe=G*>?)aX#r4)dtDIScYkI4q{`mj$~*K5~u( z8W8Q=MKHylL{0B>LZ{I+(S7&TolEF=%hg4up@D=(HkH@bJ-98%$mP9if?o0SWz672PNv_^EA~VWYRNOe($<7F|s8`pltR_PP>Ztf= zDP9Mq|9HD1+cjx@js7rhNMhUkxCrLcZManY?9=QxwHXX!Y5j9(=qAKg6(Cj}wq+_) z_8Fub-CD_%K9B*+0s9QE6LR{jHIY27_iXL;5604a&MpUNt;sXm*6$nd7bk^2MOy!l zRWzhPPQr8TtCOFPI9fV_a)?w*s;qRD77|Q;WHG}sPXSx_8{EN5j;IXbAi=bfm3qbq zRgpo*2@pj<|J3pzt3Am-t_S_b9A^DGm^SGDgX6#Pia@I{h*7^k8aa!@Pm=cAgi4YE zOyyA_f#vN{A>BkRDrjg>B(QqdZc}W<-`bEU$N*a>rRzx6m`AJKqNNKqW0Ep>(rxvg z8>TX_MyMau+e0PEJ57Vitf;mfIEd#mDCCxd!6r=1+^F`@_Y}&HsJaFffDR>%{t42t zxg@q$O^(;xN~-ne7N*5i_!=UN856vKaPZ8AA1qHC(9Re}UiR^mMabSRqS=g{@S$3> za-J1i&%v?a%!_fJWOx(xl-S(}efT$Y&ZP7xa(n;-2t2?#ilKd&jtcQJ>oKUrzQ2q| z&-J(CzML-TlLjKGep26sw zC!DRrGBcZ)8CrYEqqQ5_?1E1$(Ta-^#v&BDn#S=cp^|o2pzNB2C#kmPuHPGk`& zWE{6ktb%9b2Dnmy?uvsJZQ0p^ZzJYFEaO|vgXLU(2-r92hH#AhI)DLPmq&xjz{P2# zM~o;1-Fb#ZC+@2}{G*`;{R)8``+|HAZ+^A;ydfFZQ_5n%Gd*=BJOGA+-oRr1D}lsZ z_1Lk!6GK%&n_bmbe(8LRUY%D;7DcJma^ma^B zv*??0?$EPCr&`%(3LoE54jVTHUSEb?v%${gI}aB2@?R1urz6K9bk62+g`~9;+@Y)K zE}QNo4x_`S@s3gwyCVsl$rUnSKU%lDzv?{u`oPGC#S?rxcX^i*V62QCP)JMIiH!JU zDjw-Duv-j*c|`hECah3GLM{CSi-^5Sv3fwpqB|-Q`)^f=P(}UVsN3ib7|MRJ?7|5a zN>gHu%<)ixJR#}#BYM2Q{}HpniY~Y=WK7re1^IH%a(N(#U&7V6+(6?)lo3&NJ7RhoO@7!%YUC&s}lmY*wYtIcF6dRO!IiZM1(8WSE6xG&}rJ_v}t& zPS2uh?Ah)O@;Q#X5L@7*lKG23I{M0!-Uw#swCN5sYkJolXWT$6$p=XA3%CoRU^Dvt zg}Z<@1mHK3epxRiGx%~?3a#`=TtFrly^Mh)^10p()tC0ImoZ)>Vi>6_>1z)P4Eu~0 zXW_q4d-?_`tQ$ap1ab|AeJYHe5u!UacqeRdWfz7p#mbol85lW@&5*XE$Xt+Whe(G2 zQ8u)CI)yScxT=PGa0>Cmwi-*T%FZV$uyuv0{N8wI4}I1{ow$?>K2S|5cjc7)=wtrF zf;Bs59^x*X@4ApnM*30#tWT*5d3xRT%rgPASq`Cad(te;Wz5PWA)#%36Fz4}Qm0qf zTr15czEphxdO4i}#R(-C5Wp1ak9^JKX(ZAJ4)}iv=Kt1V{y$|=2#6~4iBA5%)P)qx zulSn@wVCW^BRn{92R}nW`WuhI4@sV(+C=>h{#{ym8uQ4G|9Sp%D|Ipf>C;{P3Tt91lixgQNFFRra=_1?=_}JT_-@;>uGVC<=!k7n{I_Mt7 zHOkdADv+AO5e8uRDMw3jr-~?grK?*rN6J`?*+smt-s zZ&WsD`+XzW5ly55_N*H%k!$kC3@AdAcfoT3nH684O-$us)z}jGh=%NqxZ+>~8HJvSEkg`xS%lEW@&^XKX= zbo``yX^ww`4>}CjSaUSbIorM$a)RMjZ{qkITk~;C13IRP!2)W zBwy{C_aAXR;P64WJZH4r2J%P7lL72@_I*YMMY4l2BLkfb7d-iY{c|c^yx_ww#0Dvv zWNL)C1$)Q}d@y790u@_q|saY}!>Q)h@j!a&+Lr|e|SuU}n^)HXc6mkml zq;jzy5#enYp|a3@4u;6Jxp zk6~p$5Y^A%likq|?$Gc3N&Z!~mRvPHu*WXs@DLh+3I%{sP?R3DNRE>Z&@j~*n={!= zUPsWX7bxX+JP;cEUQu3)aU zTygHC2TtHW2a6h#A(RPo%Ywft-4Nt_L%o^Z@fkfxTUB5TTU+XyHTeP@W zwYR*Q%uM{|R@vsACRMOAKD`#u!5v+(Elv|P)<*U>wA^v4x6l{6LTj)kM~vx+5QBJr zglpYImU*3Btd|P^lstD`-$DV>*vfDh?pQigGo@#rgif4h zOBGzZp~WTSN(rbjJ>#H-5+_iagvy)ygqc+0YdTF7uej$}i=Qg`U{mFjyDjL1aflq; zc;8!j{u$-y->pGR=XW|3Eqv5Hz27drm{x?l=j!U)HAm>eCUe~$$&E8-|HK2K;`)xZ z#qsKNfxm}CShvP>-ygg4M{%!sSj1_)a{co-^8!oOb zXZ+wz z5*7-7mgtwQhg<{H*V=FF)w$Hq@5>5^kyopT@@Fv0#E-2XA$Rq9rT4IVYH8SZU`pRS zdi+&imzKztC`w0f0S?< z|19aT?;GAY+eg?4%efG@!mDfgDPIcUUpE%41Y1$s8t~^aE~S1^d}PsjTUw*~Ot17+ zo2*MF>E#44d69CcrsN**EPG{t&ZS4JOa^HK$Q-a_tVR7z1T)|mc*H>s|CeUk%HH-$%KHk4=2{`5!A11-b+f0Eoc;#yJLX6(szl(kwOm)45>$@Q9 ziq*(ij=gI|VEs7iA?r7($`@}WrljeB;b+JB5NEl@q>x>pLP59U(lHh=F3bl+c@NjBAdjToxlMcZorl|ONhb|fbWzV)t3C=arQj4wVHQP@#7kt-N) z(xR2O@Oyr#Hp%uNgGbP~>bJt1p|?%YX)%MXi`1 zlK!REki21*gp*SxC_nr!R%{2(k$J2Ry5fW2k;HqQy50r!9MN@uCV^u&tOoXSvBnQx zzGC-nZp^HGeQWC<(NjzFb-}Y;_+vgDj!-6#zt9g=nX_B|H5f!c`+{($%9!l4zs;BS zq-`l-yN4MK4H)2U{`x>z`~rln(Z(4Y`)u(m%l&5JL^M8-L=Bek91m3BujNS<865#+~qjEcJMvL(p5BE89=LtXSQ@E zVY01U_ZTH1>c%J1-p^3jZPHQ1I#Z-&iq-bl^v`Yq$hUT zw)6=kpy+fMYBBFC<+kCFOttzN6ldA3b?&)m)qllFbPES-GD7AQv`RBdSfD-z%HpfP zL#}S}++-4pUG>rD-Hpe`Od_Mu%v$PDWwTq?%c2 zr#}qGtU>fDCz*7N@hKdwO=M;1W|Fi^-z%xroyDEL(RCfHBlwNMBtN_)kK6fl{QP)Q z=r~VUXzEU#^Ml^(k!CtH!M%0&9b7?tE5Eq%?GA;Kr%F+y2y?ow*^EK7q`wr^VG;5m zK&IE;Mb5<|qUHjMd3xGw@8>m)dgdI@+U>$Vyn5;UA{)^9Lal2S9cWkO$cY%+TBhXjjb0p^?V!Kd{J1FcKGIR zQ+RwO_)H6d!3}|JX!XgmnKT}AyV^!JHh+#&E{^^ssMj-BnUB2NG^}G#`&n+wj$U>B zyo^MEqSNjAgvF`*)XFRH!|x+ZAQ>Ln=XhQZlMBFv9~gvzAi%;NheS)CGH3T2stNqN zM*TkjaFTN4=;}GwC{I^ku2Y$%hCfs-uAB2FzGJewm$`URe(kbR*&I{-a#!?oVAO#r zmLxtgjDqt(sZ1GaXEzdr)@?9qloYsm&}Sghgy1-xA!dqQ<`#zP3+-4&xTDz!PETnt zDIa{Rn;U(;YYpI3+&<<-T1|>$9}R0bp%hg?!c=F4zd3<$c^LOSmQajpWiSllq+D~( z$hS^lfNGv0uV-1u9#PrFw=IqvYe;{JYJ~g_y3v@oZwJL=@w$3DaIJnvO$hO=UnJMa zw)kGN@NF!L1h)yPE`BRmG)`7ziu}{bNTS@$BolM=z@-B|>*U$A(4x-%N?}KjMVGESmQ}rNIB+21JHV zqz5+_44!gv2ilfJQJ4kD(o3#2s$gEs%PX(jzev+Hl{+@(m z90eKnod(NaJtHp5!h!>H8~-LMZ_PS zT`t}OtKI0tzJg$R-~k!kgP>|D=^ti5b6--(zsutIu4c*MT!6hFbBD)yyue|-?@ID-I)y5c z{UUKZGDNJCC|4U#1+JWitFVU_mv><4-+hDr2yj>fYD5wZ$fBHFguCPg4rOI$Cg;kS&MNM8MC3SG=)gVwlRP8^yq3^g}25VT3xaNpSi2XP`>SiD7b z{LEtSU&Z1~dC@2NL_JWbl7I z-RYp>!gO+hKK+yhQ}D@&^MQ(bftYuyBjX#0O8JT5jp~IK`9@+xa=E119kwA8$*rOH zcWF`l83JHN3SgwPuRG1Pr|)kpV=A{PX)tkRM3i{iqgj`~@E=NHQ2gy{a-DM3%NVVi zV^X)5P{Bem0GGFJ`G*nqU#g&V%p5-hEMOL2T{0L}@kl+}FB95Jq;V);3Zs|tL zCA-ngfH63^tOeY}f|LOJnu({yrrd}=WAvWU`Sz**lW9eYdMqLb&@xE^Zkt@`7Exg< zv7i-$s4582hwj`jmxwZ>o=MIoq@--<4^%v$A zW_bY+rTnLhG}Qyi`7dL{R~)8w{4qGwn?0@FBJ#_H7?NwAy!LJigF(&2`E~o!8?p3m zUqv@hNY*SyKZLcV_1{o$o1r~~Y3g0Df5`N(!#<(;fjkqfx|!8fa2)5&kR)MQWAARb zj&dXjD%0I=3KbAh*d09-wOQ8a&{ zf~!s`{khSJ5DS1h@&3_mW>YhUroz)z4TZ-oG~)^>HU{5v#dx9<=%2^^d>2#StWm->oK`8-PM>ub2wV7f$W$wY8mv#X*eN`7-ZZE8EJA zl(S^nz+so?1!3|exT3cCX!$}1Z4Ys&IJtXPin|{zQ-b(Yy*}&UsdoJ=D=_O&JKx$@ z08_NU0Bq(e2%L*at#ow{W0KIREe!hFL2VP-UEN#W0It?eUaNgsaHW4=L{tK==qyr7 zjK^TgtN0c$bT)#@%WHkpy+3G6=^L1ssd(Uq&y=}{C+7DEir*c_5np;Dtn_-~UU|U7 z`lXS{JqXGBRvb$u#0vk4>;Z%Drek>L=1Q~_bEG)#5BEcUfYT_!k3I|8{LM#o%Xa*tJeGQB)wdv*UZDi@w^yT$5-Lk zusJr~SvIUCUH7KEO8B70_WAhR#MUmH#lW2ZV_l`(H2L#=})~h{y{wqK*gd1 zfcwu;ZkwMlxD;yj?mZTr_6}P20q0{gI-~S(>WTd7b5)SPLryz?GvocELG%}FMcnanw^ zvLYe?Ai&R%2L-_Vcg?-|zxu!V{~w}?$^rlY5adtF`GXQc1gVFtA|2yTCiGMPhaMNI zWT>IFzTHn23IKq-0|3w%S#g!PrdIAI003AZ03i4Z0EAKuB&+C|8S5JX0OEc>eRMyt zQe{1{nEix5S?y1a_X7#U7HGDawUgUVHv3a+0|3BoF^B+wm962ACqe(S4$pt+26MSt z>$}+j0Fpld@P8lx>IZz-=vy2AWU)Vv@K3MiV#Lmcovou203fvj0Dw{h0N_Chjm>A%{UVVAv%--Jd-rj{Vr(l2oJbVGBZWDTg13)-qEhCd27?622B`icXLucyb z#!ZjEzyB*dNUV{bko+Jhz%L07%PsSA$=EST6(eZ(9S|g8v9P(hSqel7clE!ckML2U z;J=xd)<93LrK$59m4`{S)Rrrwqlrs)Q#Kq9FmvNX6%zA`=unUR>Um4j+cO+{=a+ZE zxD~IeJq4T@$%4Y-ns4sY4*!j!W0Qh(_Sd`8$Feex;Jie`n=R&u8yS6^xRgnFkNfZW z)M;1~#)#EPecJof8DO;f&>?Dl$_ce;XqEc##mot;X+xTGwHa{M`mm`52l!)0AkCHW zpv);&S_4kbl`&eEh7gYGgWuIhSkpTi)%yn3$KW;xWHv`=HiyVI1(+?45UvjBu8x#b z=KPXZd8msUl5kb#f|_e{+3-$W{Y^ecvGgdC$Zg~cN^ z!Oc)xpl9nW@NkWk3cBUXkK9-l$m~*zW)0j&w+E8rJHwd*oMB3UoDq(JA0f#>A7M?w z9-&LXAK{N79-+vg9^p)(A7M&h9ubaV;ULN3;b2V>;Gjzo;oy&v;GoD+;NVPu!NHWE z!XX@^MM08dM8TS3MnRWgMZq6qM?sO}M!}ilMZuKdMXW1y@J8DjI=R155z!5NW_n}nESpo^&5G)Vx3ztcc8e*n9l*x*M&G(T zdA~^(Kz0VdphYd`Ogt}ZA&?4ecqPNs@Q2`Y2vYL$BD8q(Ed8qF44 z&N}HmEg8Q+oP#5YKaPp-JkUj2G=Tz?K+tfr4rsu6U>ec?S{i4QJ01#XMA_H6gPwwt zTcTLMnHs3n9rji(m%kfC9cM14Uo)8|Ffd*WYkFmwY((@uQtgBJR}teg@sKFz)UZ%9 zUx5<$^BIT--5uwwkPMKuFyQhtFAkE7`l1uzN&IKj!%e&RL!Z{-7?%8zhjf%i(Qmgi zL^JwIX{UsJRkS6@3UYY^s-kZ~@W)#+q_VvHZG&}7#sa5NwRw#6B0>j*C+l_Ce9GMm z)i=S=FdC67^CI)F@|!A^7$w`ta}K1=8p!5xO|f82w}6x%(qc6~AnStlBSY$LiRY&1 zS%X)fDLug~jk%;y93h!P*dy69)ki8#WsGDDrj4czXtNePympqz8whcPBnWfl9ujp( zC_P*<9iQ_n6K@OUDr3jcEkKI2fJv6me%8f;>gy#|;YmOhbB+(ZV|F-3Czp7T9W zI{9{4YIzpC8#t$HJqPYgR6B3NSQ0JH1~_+)=}eQQk|^qhPZCV_hRNp@APL<>Q!0%b zM|_H%JB0r0z~TQD84DXAAGmuPuOCJV5#;^s_%@`C6?tn(h?Lf0hnP}-LwUY3$0{|!s4)W?Kv>= z+KW@f4r^Hb)HFGm249?TYWSAMV1m~G>mmM^XZI8|DSy!%(mP~KYFJ`He64CqyW53F zLJ^$4pxegL@Z=Tk@o^k>AVkIMjJ8q18=s{&@KyStb(ADv3)f+7Aw_70nqysKG*Fmk zP`5i~q4&)siESVP_qRtind2$8a>R5Q+lu0<$?&+C6y6d=fC156pqvZfa6UAK^lqqf z+0e+4D4DAs{Y!Fa?OT8+YE=mN3x=L))Z*zzWGghFtWL?o3bRh3)*c7gbL6D${GKW} zdW`gfmU0#Yj?zDLL$Bd@IfpHNX40HylKs5Gbeg7l@^X;8=m?KtX^q2WaAV=yNVGw3 zwkyc_I7-K5?rexgr(y9b4up_2Tf(@02w6#!;$FhT$m+8F^>{kN_3Fdfazx~xl%O;0 zW$n60DrBSqp2;V*2~@+cVSA8br{v)V*w6o*- zO0hPh%ZDi06#X}>(O-7|D0e2G_rd}-cy%@Nt6Mu*4}9+OLS`tvTAKE2VD!t-yuW(2s6O}riaEm?RL;Z!zcQ7} zPN*Ovm3>v+Nf_P!3MRR}hUackL7vd_d-|DlmoI)RUz(qJ3W%3t4XfcA0?TIT1$w5& zVfHHl<7EB<{c|r*!PmlFQu)VmZG)GBfF?!oCZuvGNtk|FtHH_KivkbdpvoDnHytdt zLE|Dm_6?Azf%ChPLthz4d#>b*lBZRVUZ-I@)`cX^#JhOf1Z}F8r51GxaRawg+jNg@ ze2QxS#ucq@nrw-=s@>L1w(}^aEI_%CTbl_NMTga6AXJvb9f^G24d8CPg#p~6Bt^W> zulsRKN{Bh~?@1|5Y)C+^qgq+1Pv`;1;HJn?NK*-Q@-*F}^o`eS? zh>V!p`42*woOkFBi>Yw_+^9OJLoRFlEqiI;4($wopE_Qh0v=1Uc00U-_{ELl!EM&)E+be7@$dVQ>p~JkIYw~ zAQK>S1CJZZMivh$lm|tDaBjyKS_5=5_Iv!4y#c6s9mYF5CSf1-9>tkG!AFEam zlzJuY1@dCcl*<)t!s{D~lnZ&tbW5AOWu>opxsq6k0n(~=_^4Od?dv&)g|NMl|Tk6|e+RLD6;iW~(+J63>PrpkMudYlHE%=(j`? z1+qjZu5qEz`*T$_)Ns51Vq5OKjcySuCltSGwkkv#D#F1#222JwGO|^%{dqDGb4MT?d8H?+zpuo50&23qxgQrY(CK(+5-?{>=I@VopCPka)k{!n$ej#Wi*1TuYhsL-OV{U6 zAA3Ia1(CO0hY_O_xOCL$+zDI|;Nixppr!)Ay^=LSchMqj+k?2zKbEan=Wj)FZru{3 zb$M;;JN#tsdf%oPyC${nl8vZ55 z@WRD}kUEy(_4!*3H!Q6Zlu!+A`n8%>YI`j6xSI81Z;*h9+v0k|U=>RE5ZCLLCrU=q zv$lx^F|6QCNe@@Z@Un<_TataP^qG})5+FknWA0ehZVk=0gYyjJHJsupS`GJUfq8f?V}g?@pVwciX1}L%D_mC0Hz5{6@y* z<@mX2j~GCyzzp*+=PE`(CB3A%`VfRs=<0kdYBjL>F1YFqJ%me#Z51{jd%Ft9P^!M4 ze}_8fhr^H=t6txpuR2P%T^Fo9uP_r=0+U&GPEVVuxxOuzvr}DhJ$40_&iF?yb-V5{ zbhm>Lcs%Ag>|bK302K9&J+>p?L#eqvxHmdh)xVM)EBo6WZ4M^c=Y+pEmLfK~*1zmc z*6V@|J} z8KisZw~WUi2uVhy^E97N9i>`>gry&pu6SJOzBIY9)yM1R>DE8vx=3s{hWE8E29SY zI=KGKTLbq*&Mrie@R3IWg@ZYfV~r4do#u|SG>__c#dSisTmVj1iX{~I<`iuNF#s}r zZ#)z(faY!Eh0pfe;Ak|>0Nc+(A{!_04jL$;%}Sj0Hv_O3WrTPbsu-fnZsjD1(CrD1 zn9Cu5J0Gq@D-tWa0QuoD?QdtXIxW{i-D#Unw=p>(3rJSxB8W;F7ha2-7p-}x{+4JK zbu~#2r^(8MV4SF^`poW^(V&sY;EyW*;`kXPr;>P?fRn<;w}gwF75!Wg%~W|4%7*mS z{>-V&5ij*)I0@yg+%5Dui*F-n4O@yd5_3oBX78y*y#z%-wlPGJS;amt=iLP9rWaOuY7v zCVdvot6pv`TPXuc-Bk~dwM!j6vHc3_pfIpsRBC4s@~_rznIF+O+7Duu=fp7tffqU% zo3=Y7IqTuKb(xFi!leziZaC^VJAyQ*cu&3!stq>9NGIb!y(cjSGJlc&z`T81Kwld3 zp&U|Z8xqNgME$CvQ$S9ywf2YPCnZu16@UOno~9DYQ~)T32P4%u5e!8q9uS0^P_~la_nG!wsyzGIzffu7JtE zl}BT9QCq|xX0!_2e`|Glu`eB|jh(=-GGwg|&>STc94A#%17XF018>knSjocvW8+;s zZ_q69P1E#2vS^MJNp_AZqwZ2(gM`geo?k5(YHBPZ)RxOZ=Z}|;&}Tp! zf9o#zmU&BUr~TsZ27g18vbM52ay|b(_*#+s+dJ}GFP>=J+YiHnnRtocypIQVB*;2s zwZ%*`dum%pjo2f@ZZ$!KPMUCV%#)G5Jnf)QacTWX5?XG?&`hDy;?Y71K0%EgIA>Sseu{ z=Zu;(h2|WPclEWZBbuB#Uo>Bc$$Fg>U!lzvg9s%xe=U}l;ZSR>U>Rp=RtS~IDm4!3 zfGVY&!KRH!yELrYV6lZ55GuZc&;))K&r((AVjectzA-tbV=9*<279@=$4nRMw>nA&$xhjuS)su{jHz$ zkpJ`~Y`&PPlL{WNaMyiwb!8ISON&2T?>TW^-r#fOm@)Ty<$7K(h9WnHj6(V+Uy=WS zjkNo1Q40Kn9fZ5IuAT+q1D})u8lh!TfS4^w~uMcgopY@W* zY+z*iQ#hyy!wFhwe69Cq=d6(;TL&*Vl0buo%-%qa4-{N*{>}_|1%!gh5+uTAg>WDy9irI} zEJb0V=%Ri2+cg_0*MO|zljhv0pE3d3luN2W#Jl3EIhGlpm5vR2IMbxaU>kTDQ6 z%QL!7{dJ$BS@LqZ&5Mblvyk=tn{DekxQ)v0Taa{ax|uu!WtsXkmvKRt2ggGO?uoy@ zG+VSm;x!f%uk-}FpPCCP?<^ZTTKin^^W`<+-Cm5O&M5=8?k@1{HQEMq?1JIl+@$ho zhA~PFyu68CZ$etX;>Ryj9l0+^YLhwo8ZkRRetj8Fy6tRVCAJ}N5Ll6E2N@p#U6s+* z&3TtSF_bb(BS?E!oOyLKR{rDUaA0M9SMg5LUoh*ElNIfv< zDBS-gF?ca5-bx$K1l0@?i(>O{lFp(PvPQ3Fu3wkd4YWYI2m?N_z!#(Pei3$0=^%3V}!6e?1`d@U#u|KG$jRbJKRA?*Vxq`A~^txfW0T*_l zpT`zJYPdm~<&YR=Lc~LL8E;5hSZv1|-Q=IJ4dyuMChC1V}k)e%W0H z0@=~Jbha*QH;i*A8NrvH75G&T?~B?#4}rb~_>&?%Gsm{jfT_N1g93p6#wL4Qx1XCHD(aeECbD&JLO11r2dj z25BhXK6h?Cbm!YA_tp;;$E?pyD>STuRh@lX8{4qGVN9VWq8fTpnPF_i9ioly)_ZFwlUW7Oy&sIhn>qL>KDCJR$pi(z)2DIBry(e8Qf?S(Upe7kVH4otj$u355@k#trc}sKqNVD8$DsRm z1ljeXI%D_wyIe2P6Ptq4fO?(gi5;XYRFZ;Q*MWoaozSpG%=rc7HmNr{Kz3NI(CQ}- z#pAAPVc4tGt)ev&L^rHe@?og`Z3Z1Pb7CiF7kiY-tJtl}{9kv$nu9f4z-KqV8-K9GfI6-5{Thd=G2A2Kt*X zf9{YSw9Jw!1rEa6Ad-f#%3#{)PM<8agc;Ows~1RuZ94dbNOuqJW*VO%_}BkAej}P- z*7l|ueh8=r{wp`DDMX48pQ6m-`lf5Kie>3S<52{!$K%BwBh0_$r z8k=A*tCC{%GG6S-Fr3#%E+&G&dpT-Jrh%gyHN5A8F$<2Un7oWjII|nqIKU4}Vbi!>h&YtZ@^l#AH@8|Iga{t^7M`jCH8hww_3YDAg8v~lTm5!NNSxr>~I zCTm?T15^3EWgsCnx5-Lpc|q%UXZUJ!d8mJC!qM4pXgMOexKp!hDLXZypmfZqafRk! zFn>6sbnu`Gj1$nSG}Y^F*UrPS)8>n{zP9ftb z8YwEpKs;QNCB_nl;~6OvS$ZqiszG)QY`t@K*IJlEXlUV%yRb}flklQUA^wEDqRARi z-BotA6qz(1oKy4X*ELU~74@$_aUoTMWpl;JT{+yc#rP5lWiR%{*e-Q)lsk1Ickmsb zDQu8wE~cdqUY@$$+Af?hOV}c|L7wX$1wpOl zh`<*%Q$3x6a4N;+D9s8rkXq`E)dQC~nI+wi{%5r$HFOoZx|+U~s{X zf!)nK_Pm7t-2{OKmQ6nA5+E~bv^MqzYDeGil0HKQwW*D<6RF3Dmo&LQIBU|sT=1&j zZt}?Z>6214j2ra&Mv`rRfkv`pvZj5Vd3|;BW=SvdIieWbS!dU?qe?@cedqN1)6)!$9s> zwrpd_5s~>ICz5?8O=@*mcAodInYXgZHc@;>-_lntH0uv~>+OH8t}W zfvjm4A{pzMSM-Jl&6v1HZV73_Mr%?SZN=(7AW>h1W3&VbX7z8K*=RcPv1YrKw9dBl z{`48q>ZAq2^=>%HGl$CD{I(EYxG4mR}$IZXYa>s->;n|y&5p| zI6OjCpwXIH+S+Q?+PMxDbfXJ5>@H>pS|7b|*Icb?QCF&c4#!c!45?pQ-=kmZ{OO^| zvdQSNd(MBgzC5EkpdojP9a}4p)a?}E4K4GG;J{(fX?Sa;&_DR+98&IJis7$i4ZuYe z>{FBSW_wbPJOsM=vW4vdxmWfMp4{j>y9iB_`wZBT-b^Tp zN)T3tMp6Q?$E>pJ(6=OB0bgx!`Q@Vl2)HIBdOZ$%{Ji$+_&^&@xiw+Z<=Gtfp3-|s z?;9k8KC64>YOe#B&DJUWq0Yk&!+R<^iM;Ee=9Hx$cE9J!Hk37@xqzZxGA@waBY&DF z&%n%P5TASU^I_#e&A}jWc26EPRMyDU~NKIpBb8Bge*;4p34@!tP&x`Do z2qe-&T1IS!RVMc z$B-tTD2LQ#?nsyd$1NHv{}2|>A1G`?Bmgc7BhO&jH!@mZi7Y9?=6+i;y1Dc3WGV8_ zFk#ckCG{r8*&US7K$x2|H-T-8qq-gYd)LoRkUM)PlTl7oCfOoyY6|It!|x$kY*82n zz`=vV-xErJ=k<;4o(z1;D>v&)lvg{a1~#dSBhMRxTs&IXMLSej7JaMmcVg1Wn=nY# z@8{3h^dM0{21WmlUe*0KT5i>hnNrcsM#B~OFyq|0ht0b$x@IHGS@sFE?%lKXpS7tRYP%G{4+MJV7`{K8`<<{%ip>V!nuE&t5Gkpohy zbhBS5pm+-E;{inHnXdmLsV{&6yM$Kcu{RSE`-PP3Vqm;X}h-{-OUJkB=asvp5moto>I)H>7yVahP6!O{7j zA6A01?pfVYso)Vth;uLQJb?+4&kTSMd?X0+=ZyGO(?dZLZk01LYer23O7)rwow*7^ z?T+sH8)wl#MiEcrkCy8GLHq3_IHYPndIMpXSIIv=6!6*%F$07#*g9XU)K!mZK3)yU z+5s~uGJTpPZN{!)bLW98QXt;7QLHw{E3LDte;|FP9jnL8(Ww)!H}8HRcl>ORQA-R& zfbDMq10}VO>N;IDC2e}S@k@U5fNOLkQkk5rK8t9INB`=!;8qA3_r1tck_YJoSG_q+ zP)1ybe%t!djatQWl7(wKigg6K;ix3t1C0WY+3Z&)@l;iVmWfYqU^;}HhPU~-d5N{~ zX=uku<4v*KmgO@BYzp;Jpr6%|#|zrTP1Wwe$gtwA6#;?zW|5(TPDSRN{!Ye=Yh;YM zsmIA{88sL*o?(z~0Y7fIW5f!|Kc%qSz`NnVYO|?6s!U$1F*V=k8?oo!l|4?h7&xaG zSl8zm8g?r?m+w07&ymL|9#55T`%mwYry0D$`YvMh;&t>Q>@ogfqPm;wbRzAbhG_1F z6;$O!Gu7Kk!|Rq|cTY98x8pzj_4`gjKG zLqygJkq&_bBeT4G79_D1`hUn!BOrJ3B6N*f=kQ|#Vw{`$LtL;V@atipLr4gs9-*S|EqE~UuV#awsrGGr0QQ?RsYu}5xSoCr%NN_%8S*r9Ir^a`YuPAZO%Eg&!? z-%_6*22yF$U<^4rN^H0G1`I)P;npyyEovh51`>&1%mhdHsJ;DwDyloE>@-G>o0x2+ zva&N7^WZC}(8bxEa$7SPM~r*5#G`F-Md2;0QrQq{h_d&^enB;v^33=_dGL@k=)rY` zVOa<&bMHgkG(={dAz27WtjIQj6l$TmZ0@*vU)0l@sy9v^ZokKE2jw`t&TZSczFJSz zZ7-ITsXGbFmf-DpjZNCmf<)k*neDW&bPD3mDsSYdK$Ln6%=_h+7D1*X z$a%Yx+<7s-arN5pB0k|um7v)(@&n;5V4P#|Yt0>gT02kX*QONev!#tt8!XXdlbwo) zAkeE^Q8p2oa;&MkRLYhtyXJCkL`7Y}4RUC36^Ri#I^l~KWqugd+dV16a7_0 zy-1Pg5U&)zTtU~UKpGURmLc+0u0JJAURooE)e2{J6lIHejhzV3quUiUTvL+w$*y^r zgM`d^;=X|rTMCQ8mEO!36mtuUo##leS}^2DUi04^Fr{*6v1jEGa9OKfvql(j?HhaD@ho$Cg{UNPo73AaY1T3aS3|ZT>EHE# z^WriXb`Cn)3KWVFcd`yvHh=jg-twaP-$s4cxm8e1=_PGAZ`0Y6Q#R*sSSDmOtGG-V zC`*;?HLd&_HQa=~rR|lcBfQ3WDz=^ZWWw zsQ7Bi3Q3!B2W){xjDjNnTJ~Ymaa+E&W*CSjWzDXsWaGVl7 z+$_PYH%fvT>P8+pK?rv|4m%l~ak`tG7;arar_A+sZ>Kz3xs0ZS8V+1@wt2~V9Uehg zqh;A>9WSwP>-KiG9R494nZ-1Nb70D3wTHXa%|3=CDEi`0Jqreh*F>^PBMmAPez&#e z#8bP~euO7C-l$5@`nKqHB|E;7e}>)bGGHGvBYw=%gs5JYEo`H5G&Q zRQV%BkC8zSKcje-pSQfnUC(um4(q*+xk&2y~nQM|4S-k@m*sp+c9hT$H|`FT@xAuqIuwwy|o>k;e`IANkrCBMSaw<*#kFg>|Vw`Y9c#|`QZ z?@|0rCcP*BP0+HGrYyzpIPQ*xGSY>7CWCJtX%jf;H1`-Q<)5=V>pdw(8fRKa@hqF& z{aT)0d2oW%N?bJ>0_I+zV7@T9WOyMtUtTNG>7G=)9Z4*e93}bd zt%3|4%Ay)012-GsgG9H=r}j*M7N;7o?8965G|z}Xe}u*$L$sb)^13M5ZDG*)>5tl2 zxK-t%q1}U%gIDG05PmHe)e%SKMs86hk2&s+)oCWAJtTJ+{m9zUWL+JO&*)kl3Y^Fj z#3*B_4g%7N_@tqjS2lL7fJi}~#)S~f7?XA7lT^%lg4EXa$u!0e1F&V1kC7jq z^Pkvq;a9FfG?Z|lArx(Jqq_#y6#od%KZ=%XRx&N=e`Ndh>{fN`4(nwC8s-LL@Qs=A zSf(?u2veupHmas7k7dK&7dxat=gB{H5C?5|1{51*)ss3@7k(hsF|^)z(uWkZ zX}z|zg-?(Xh@wp0`W~36wuL<&)URr-=1d*duX%2a)9NjM>UM=})=>Dc2v|LEvi$W? z^{EN{Qlc);HW)Hqru^#i6oYrE);(SC2W4UtGla8;-| zu7&wTP*dOQNT(dKHKu``RE6j^9qoSpnUCvkg|Kf|A4O^Ym8PAS;h^z#SVo;79Sg_-^RtPhXMKxn4H8A^p%dSxVbDk!tfJNXlJUDn>s zR)(w`=4am_xKsgIel^KKom;7`E;5BHJv*CB0JdKSU`?)uXd`f9H9boAT@cl=rPrF> z@M+I(Qs>XTPJlts*Z2{GQD-s$AHA;M__+(25XYH;x?$fP$aA&krSf~{-zmFqI>sX380VS-ZG?~90K^p_t zrA62cdg9I`fch`8^l--(>aWM!V6VJAZMzg?Effh$yL=F|ySiVzNeO0;R^JyCI{_p= z#bxf#cE;s=qw}@@UgYrlW=TE5t}g)8JGN>T|51j9YQ zFK*1NHmj}7C05-*Hn%lazF=mtq-UkAP1co5DF3r}M$7>X&1=Y?hQ;Z< zV!Kw#ZKW?uMLcqWJkV)2{W?lsy_Uppi)KTx5JGr`aa&O}D>lP9gXQONa($gP0KTNG z*@L(QL)2IVf}RY~0aavhae@4(`$-iWJJJYD;B3%b{~c@oAX_**`}>h?<}&loDU|eC zNej;oT%N5pY5F^HNM_SL_Ax7spPP~YOD(u=Gfmr3X<)sN)yISS#1$5l`*R`~Fm{W8 z6IZkT)r)yU$|eie(^cMEXS)uMEX!J0w-#rDKC~2@o^1n0v5*e3PDp4{V+FrM;Mo!h z1=ruk_^*ibo|D4u`+y8=x$WZl=1SdVUOhum^@B{#=fNuU@^_Ij{0_awPJNVc|JBOX zk{S#et2OrVWax@$F5`K!+s>(xC%D>^(5Z}PtF?!fV(Fl%j1kcaU)1zNnh)fCQa3vF zAP2~ZRPs0P**uUH>BM6yjeGTc>72n}{{(bSPnBc1&2!HMJs0;D8dkOeI*xN?$x#Q9 z3dCgUf#h1ds-eHWX`J;lf6h-Xu{~BF_6k%G){m?*s=ii$+o-n?59+n30%?@fPM#^V zQH{V$`pb|}`|;>;C`F5KbjlpSQ?0U+VAPOT8lqqwT+x%@QD)Yn$l1NSQ@2gim;Y%! zyxm)ykL}Qgu_`sHcUmV03quIecSjtMDZp+f+u%-s8)i-M_snHMLG;6m_MW?tTT8V2 zUJbH`lsILJAkhyo^rD&$F0SaJv&dwQv*SVopSfvTMVj%+P#WO`bK6{MIPmQ<6Y8-` z^U(hR22fG7~(i13AVZgW%=qE8dCl2y{-l0j&AU&wDp z2Zil(fdG2f>b5zWN+dJfg#HmC>eU4pEBGZ#!DIeSj+}e!COV+ZW0*-&XIBv! zam_JB=qXbL50Qm+>$R@9Z5TxIo387)fT?Xqv45xx%&PJW+;s?JE9IuLad4aX7qEX{ zv#-pc^y;9H7a9Uwl^m3yt4Pz^Tn86K4H=lx6irXrA3lgRhDe@A6Dd)S@te4*s`{Eg zU1*4~8$l`|;|!y%u$%$ueOEO%+>0Wtv5Sc_1N$R6(~ro)L50rx~^fW2mV&K^C!g$|f8M`Qw?00k%lNwF1 z@*d}nWTxKd$+D7U53k6>y>mfy+}YUm z21iUccu#{aFYUYR1D2$0w92&RGm(cqge7+QaS?;vc@x`DB1)(wxucr`F&s5Ph{&ogORl0E0j@yy zMD|GaiAqBmy=JCk#uTK>f;an;6s>DEZV&a6rC$PKOIcEBZ;=MtfVd3Z&=r{upx_6w z#Sj~xY7Y*jk5UgW$GwjeM|5GS0|UVG_-I%h2-c&^FJ)iJQp-IHS41W6ml8btJ-}Jz zTYJ-c;RKr?&}gJ-#1#z7)Ihj1lCpRv(}9hXHgm+5tX*I1*cI{=%QJ-sP<8^RYO=K5 zErN?jN{u?XIf+3{vs^0(K7&?n&`e$(vOq5H=kRH9w4oxOl9!S>I;>)>W zR?z1u_?9JWYA#tcliDS`O#oCLcf!oPO#6sa;OZ#OP$uyEI6Hj-ZO(2s$LUFXDPf&N z63a<3Nq|p*zYNh_Rg!^gQJQpn!1hI*h?8+sT6|Fhj2v%Es(lSZ2I`O*{R)muK|UfD zpFE^7kjp^u=w+O^3D#8d5G{isiwjkZ14}zozN9xl0Si_ZJkpC|2-)?c+llmZm&)+?|-lp4QG#gZ3&9b-%BosKlB>#J@C)^lC{lHp;c% zb(3Cs)m=^RC-baud63vg=SJ@SSgyUl2GxZa>OnS2Bi$uij49l)=9I>^gncL%oOL`j zmJj>Bltn}QGA)e~C|uy;=9O;Z8wj=L9gWB`fR|XQ>?RZnqQk12yK=yiO%(|-DDl$< zits2wRlh#ml!0MQ@2;Frff)W=n!K0_%iQ7~*i6&GpeD+SeZc#bqR18%osI8F#yVE| zeZq$I&Ylr;Ow(+hp1Jl;sKbYto23kcJ8$cR`3^^I%8)$JPl3lvnOt zT#pHMq(PQCZB**h}6gPaLF1JDNZV)90Gs$8eA$PXXxj562>RGbLkdF z!%|_oGKj6knnBeH*_>@sQG|qf*}1dVF69%q?caQB!`6e)@MlNx7zL}1zxA*yjm z^KTZAC_UvTINe|E=hNzg6a{axb=)hhEnFk)xtN5_3yN6E@1X{=Zasq`3g3urFaOmT zx%--_e;hTRGl9RqnDSCM1ALbtA9*Fmat)3CabG8S+L(5(jrwYRiwwhFMHR8lHBPQE zS*GJ&;|m_ce~RFeq1zUaKXmB+eh!fJ>7cZmK^Erw`}c0w$`~E?~Y%< zisaw?(S6gS(712e%NYfyvn6cXFX2x|tNM;Ig15gsaT-CCA4~*#R|Iw!$zj|L{3OO8 zKJpLS#K@lYswwgboW7(U@aBjfcXq*Hsxvr`1(`~HQmgG9;-v^r@cGJ+ip8-3IZ~Bc z{JRdMdx|e4(v(QP{+r6H528)W+6;Bq2~%EwTDo7STJXfX7vB&k(c4TAB0-{< z?6;>GCRI$Z9q}A_9Kjr?fUdUYYy!*kvxOLO7ZXiM|FR(cne&%R&TgYHL-Ff{_500o zXL*TL<#y@ydm+m_YqbR~G+n12{)0aPE)I|kLo6Ey(8OHT@77eCg1Mt+5!h;1YIVVY3JieIOi%(W9{YG ztJzZ7#&yUk7J9AuzH8&7UI|V0zA>|HOWl!w>X2TWK{apSxK$we&Om7=iQ}YgiPWU8 z@kHdW^wn@n`%i{vcDz;^^Z#rruQYW zP#tC3!%>1QnfWZ*SKPfOWvCvdt=S?WVwy6^WiY)F;r5a4bI_(q#e?yI+PueYs>0`8 z43hiD>k!4R+lIkjeuA6}2a>CC!_>okEAuMKJGk#fww>y^-fIcYW{yBQ+|PPH%ZI2vZ+f$7$YHn3d`GSeg57~NH`fk7YnRQ} zcQ|!lOGr#yg`-R8Uz_~3wSEfrT*}6IvLRZuBJ#(!1Su`_o|~#*f5SY|t@AZid`lDb z&^Bt#H^yD!Vd2A2SQ}Agwn*8667g{<50`z=rzdQ&W0c1k9AlQ)8^9@c&NT9zqRnuh zkTyYyHjJPn`Re_r=dA$yN{z@0rQ332vig;-%vjCTf|VSamA8rRzCjJ`JFokYVT<7C zg6=y<9AzFCbu(R3>4GzSr8n!)wQB1*glDJ!MS%w^H}<4z<#Yd-tTzj%ez8=-wRgse zg<8Gq<=Q>h=~)J+2`lN!hQ{^r3Kv{k(+}bs^66&{ba4#Hq1()8%7D%Ui!S*)%;>R4 z$Of&(YhU>8pJ5-A4v96m?zAQm1pV0B)YulXcH7urokYC(#HRNZBRUw%mek?l_z@T? zjAAG^J(`3x#q&HS$c#PYj4|dB5FT>Qbt?&0ZJ)vP#gQtm!ujj|ueqmNCB_rfKQes9 z#p|%^e?<~@U=aYJ4iKGD)iNzp>ubEetNFr?ErGuZ>ejDrgY&0aAQb(Enu0w9Xb9=q zdJ%#Y`Z`$H8kskcVVl7P!43Z>dJu*0qc`Rcc#KD#uzuCja|2i?7|jXv{qQ^+Cz28qiTk4_UCSRI3B~uC` zl3(KW@1zz=bo;8dKdy_K&Ln)bBkON|zRoDv7YB@S4jH|i@hg!u;u1#5BHFF4sMqRF zElhI>4jW98%_JJFRw-olHh++kLm_z?u~MFfh8Dm7N^Uk6=eTCW2yy685E_#_yh0#o zr^`m4uDdS!0`B4lM?&E8*ys*_Z7-|hUcs}XU-{0iW7()a^lKK zXdr-mKp63aI4T?*b^LkPYuEm~?+Eyz(;nCkf776g$EZ2Px7EPv$v2Kn0j}`{ zczXXhG(Wo0xAfcQJP}yZ_(!{gj#owKbvI&nP+ngCnHwsvI;yD+%VW(E%QH zr~f)XnBVwE{b0sPcb4xZ_v3~35c8iLuN9T?YStcxn2`GWU=THeLq5n?(K*!g7d$oJ zSez+sQTJWIiOxn@Y?zj|xSsHvK8)S2D7VLEKv5hW`#c8bb6sJO+mB}N`8Q~Fd1e&3 z+FhZ@U!WJu!xlw$G>sHNe})~dZil*nkaXQOgf}z!`vVmo!@?QfFjL0^s^baMYYw3x zJ;fNB<`b$PN6a&=t<^H$RmqhP>>B?ha7p9WN@`v}E;HX&NotCyIpyu}LT zutA_S-Cx-kS;FNecWDjOwkpY!qXqfr}yBfB(Oih}vcpgrZ7{amCN z#gVQkURmDd4ThwjyTqOWi{1FL6bh*(s`R729AjP;6s%jU^PT*hRNqnDEnRA&-nQNH)^_KY2e*^*3a4qe+ACGoPhkmz} zhHZHP2i5QPD9IWowg08ZkV0`S$s_0BRb+`?rPGf{?%cnEdVQrS%^Erlh~=H4U;!jL zwcKm57%~QAFnKLzBeJ9-jjgX5AdlgZOlRkYOeW)|Cl2p6_&Lsx5VDy$gWO~jB!fZH zKh^OuG9%M|h}Y+%&otNksb>V63(4ai8^IiD=rF_#NAfW9nhfMROZN#7?l4sE;&>Hk`HDPaQ2SEU{uk;U zIIiZ{j7FbRPAp3(SE6qOU?o?P`W0Zto<^u;N`~KkT`iER`>%AJRKR3XhcU#5YflkRiJP_p>b9WHdw!yn^rVgUr4K}=-vM|;IjSaqkNSLj zMlF{XdfY&`ml`|Wh)tGx-tDm=R`i%rQQ&z&Et@@!9<%zq!2e3=iN$(Gi50UGuw?he zV(3{^OfD>`Whk#cpM<*D#L4??9yclbyjHeMDndoGM|@W=57vmIG2Cd6b;k6u{Q~|B zR&4{&+eG8&FotnYP;H6)gl;attLlYH+NtlF`;`*;I3gJ}e_g^?PB%K8Hkg^G3ymJ! zOKbrwx4HZxx=u^t)f06O^47#bCiOEEA_dg9%>g&M4uyE9lW1V5?~uy2oDS5V)#);x zZgw}8-#A@xH$v5(Mggk1mNyt|PNz{l!Kiyas)>XARum>#p(b|#U5moBDko3FjE?)> zu77vER*tur%C!g|>(sihGEU}4)qO!po?%=)>NNGG-w|>*%|?2i&Gjf7BWi}4?)Tg5Tdb!}zT89fH|k`|bxIn}+7UYt z;vrMXT+GNzx~xj38y?v|3i_^>T+xNI-QDFEyDrS_$!7QD$Z1jhm2fT$M!i3r4~6pK zyBzXyb}yD4$GPpCv*P!NtcRe2s+XKCMSsYtaxRBH%I#xnilQYDIA*_+My*Dj5B}4d zJ1XkiTX#3@dDTl3ULa5p-9=yzI+w(d6h`M=e!|{B@9u3spx%?#BQ>(STt#k|z?RLA zZQlGCRbC=j@tz>ME+AhdI^W&szJLg&E^tr2sP|_iveA8hO*UOF^Az4k+vH(sPNZET125YKr5B%P(AcCC;h4{`NP0zq|opf}i)?=EmB%)d%(MfB z>M|2gT78*hyp0qgMfG?81V2(Yx9e{@iPwFTv#z%iU0b@qpk~cgLrrXNJihlwO?Z8m zdS6!;I<)KXF4YL0e{`vz0E!f6nEwwNb3Ri5004NLV_;-pU;yHO9=Yl9{5D@1xLFuL z;E8>t41)f@fQ5lM0m$WGU;>E(01!I~3jlbWV_;-pU~c%|z!1Yy&j1803=E76s9+ud zR0{)!004NLV_{%mV8MnRaEKGaFn#s})Hooib-*Hy3u7|_T^wDFJq|l;(A3xva33Kz z8WZUUdm_|ea|Z|;;P4l&@I{XYdpvQ2Y*sxMyX|qPMRzX)1ExRG)Bykse;J7Y00000 z0001X0UiNB0n`FW0=5IF1Plap1l|R71@ZuBq35p61 z3RDVw3gQc53*ro-4RQ_y4vG&74`dIT5AYBm5P}fm5f~9<5@r*s6W$aO6l@f@6=)UI z7NQq27lIe+7)ThL83Y+-8L%2q8fqH88xkA397-H?9OxZZ9o!x;9(o?69||9gALby6 zAnYM#A(kP;A@m|vB5WftBX%S}C0r$-CFCYDOM@eDq1TF zD{d>cEDS6(EQ~EMEvzn5F03zHFW4}UFy=8dF^Vz_GMqB*GdwenGzK)TH6At+HikCP zH)J=+I1o6pIW9T)I!-%0JDxlAJghyCJ?uV2KC(X!KlVU!K;%JkLKH%5Lg+&fLsCP0 zL)t_X004NLV_;-pV3^17fkBD^1ek!B3kVq){)71p05ZA)zW{igU6IXB!ax*-&&ZDv z5*M1da5Zj-iJ=9S>U>qDL-jD&2%7P<?1Po}#V`yL@q^fA z7{S3Hf@fSnV~#!J8Zj(#Bvtg>V|4%BDRY45&^=6`xg0Ap(pcs)oFOG^6xG>=PE0?*s;VmZlS97AS$AhDbvF!BTd+$9Ev7+Du2^s*UQ+n^cSLau=prqvd zUi6*_0=ocaXJ@#!zP9-F*Z%)^6zk|9LW~4mr0AiK0XDD)o7juvun)&$3;S^bPQ*z# z8K>Y>oQBhJ2F}D;I2-5ST%3pVaRDyGMYtH3;8I+M%aP#^m_Xq$wxLm?f@fE(tH~1Fc;d}gmAMq1@#xM94zu|ZMfj{vVj^gjN zv=nw*npriF!i&t2rrh@mt7N8CMR9Fa<)d8rd8$n=yfRgC#O6j)s;av2nUaYbTTxOh z8mUZwY;2j89M`c|UQ^^$QFVosmYnN3&qp|~^6p5qr^Hhw$s}URx7)63Tuqhi&V;R0 zRYZ;_siiURoebB7>gGl_Wp!{l9$JpW<#-^`Vs0AWb5xX6d6L~QFy`I@tQSSci_u1I zsD@sV$61T2bs-t&CU?+fh(WOj7w_6rQ2c88>5Vm8Gg6qc(SiaLU#3 zHj0AmHjhp0(42bw&vI=Xb! Xf_D9XBDFobuu=Zn>1*3wkV+2hC?t4tGzZ9*ozcj z8LLthv~Sg!kjpBxesi^w2c_7(|F&+?gP7rL593l*jf+`D%`hsBr6|0nn!DccshwKL zq%)m12j}rmLB%QZ6A23R|!9C@glDa!#y}s&NA+rYs7jHOcfyL#}n0%dOEm z4662BN8Yz?;MBxT1oM_og;haMojJLU#Trw{nV}=p509lbxf@#4j(5%!*To(i1%d`# zCN2FQb4waFuqMl17gnaN+D2xFwdQgWOfhP_H&ws=O0-Ij3${evl`1&cMuFE2Nejqa zgNr7<)JYJ9v2km^C{W7GI5#s^#(@CSVXY;L-ba=}#|+olWPvL>?3j$IDMw`E)>8fd zOti~S!zg$$;*2Www8Pyc(e=h?uj .el-main { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + padding: 0; +} + +._fc-l-menu { + display: flex; + flex-direction: column; + align-items: center; + border-top: 1px solid var(--fc-line-color-3); + border-right: 1px solid var(--fc-line-color-3); +} + +._fc-l-menu-item { + display: flex; + width: 100%; + align-items: center; + justify-content: center; + height: 40px; + cursor: pointer; + box-sizing: border-box; +} + +._fc-l-menu-item.active { + color: var(--fc-style-color-1); +} + +._fc-l-menu-form { + border-bottom: 1px solid var(--fc-line-color-3); +} + +._fc-l-menu-item i { + font-size: 22px; +} + +._fc-l-menu-item i:hover { + color: var(--fc-style-color-1); +} + +._fc-l-menu-item .el-badge__content { + --el-badge-size: 15px; + --el-badge-padding: 4px; + background-color: var(--fc-style-color-1); +} + +._fc-l-label { + font-weight: 500; + font-size: 14px; + color: var(--fc-text-color-1); + line-height: 17px; + padding: 10px 12px; + margin-top: 5px; +} + +._fc-l-info { + font-weight: 400; + font-size: 12px; + color: var(--fc-text-color-3); + line-height: 17px; + text-align: left; + font-style: normal; + padding: 0 12px; +} + +._fc-l-global { + padding: 0 12px; +} + +._fc-l-global ._fc-l-label { + font-size: 12px; + font-weight: 400; + padding: 0; + margin-bottom: 8px; + margin-top: 14px; +} + +._fc-m .form-create > .el-row > ._fd-drag-box { + display: flex; + flex-wrap: wrap; + align-content: flex-start; + justify-content: flex-start; + align-items: flex-start; + box-sizing: border-box; + position: relative; + width: 100%; +} + +._fc-m .form-create .el-col-24._fd-drag-box { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-content: flex-start; +} + +._fc-m .form-create ._fc-l-item, ._fc-m .form-create-m ._fc-l-item, ._fc-m .form-create ._fc-field-node, ._fc-m .form-create-m ._fc-field-node { + display: flex !important; + align-items: center; + justify-content: center; + background: var(--fc-bg-color-2); + color: var(--fc-text-color-1); + width: calc(100% - 2px); + margin: 5px 0; + height: 30px; + overflow: hidden; + transition: all .3s ease; + border: 1px dashed #000; + border-radius: 4px; + padding-bottom: 0; +} + +._fc-m .form-create ._fc-l-item.is-inline, ._fc-m .form-create-m ._fc-l-item.is-inline { + display: inline-flex !important; + width: 100px; + box-sizing: border-box; + vertical-align: top; +} + +._fc-m .form-create ._fc-l-item ._fc-l-icon, ._fc-m .form-create-m ._fc-l-item ._fc-l-icon, ._fc-m .form-create ._fc-field-node .fc-icon, ._fc-m .form-create-m ._fc-field-node .fc-icon { + display: inline-block !important; + padding: 0 4px; + font-size: 21px; +} + +._fc-m .form-create ._fc-l-item ._fc-l-name, ._fc-m .form-create-m ._fc-l-item ._fc-l-name, ._fc-m .form-create ._fc-field-node ._fc-field-node-label > span, ._fc-m .form-create-m ._fc-field-node ._fc-field-node-label > span { + display: inline-block !important; + font-size: 12px; +} + +._fc-m .form-create ._fc-field-node ._fc-field-node-label, ._fc-m .form-create-m ._fc-field-node ._fc-field-node-label { + display: flex !important; + align-items: center; +} + +._fc-l, ._fc-m, ._fc-r { + border-top: 1px solid var(--fc-line-color-3); + box-sizing: border-box; + overflow: unset; + position: relative; +} + +._fc-l-close, ._fc-r-close, ._fc-l-open, ._fc-r-open { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + width: 12px; + height: 46px; + top: 50%; + right: -12px; + cursor: pointer; + background: var(--fc-bg-color-1); + z-index: 1; + border-radius: 0 5px 5px 0; +} + +._fc-l-open { + left: 0; + right: unset; +} + +._fc-r-close { + left: -12px; + right: unset; + border-radius: 5px 0 0 5px; +} + +._fc-r-open { + right: 0; + border-radius: 5px 0 0 5px; +} + +._fc-l-close > i, ._fc-r-open > i { + display: block; + transform: rotate(-90deg); + font-size: 9px; +} + +._fc-r-close > i, ._fc-l-open > i { + display: block; + transform: rotate(90deg); + font-size: 9px; +} + +._fc-r-tab-props { + padding: 0 20px; +} + +._fc-r-title { + font-size: 12px; + color: var(--fc-text-color-1); + margin: 15px 0 5px 0; +} + +._fc-r-config { + display: grid; + grid-template-columns: 280px; + grid-template-areas: "base" "advanced" "props" "slots" "style" "event" "validate"; +} + +._fc-r-name-input .el-input-group__append { + width: 25px; + padding: 0; + margin: 0; + color: var(--fc-text-color-3); + cursor: pointer; +} + +._fc-r-name-input .icon-group { + cursor: pointer; +} + +._fc-r-name-input .icon-group:hover { + color: var(--fc-style-color-1); +} + +._fc-r .el-main { + padding-bottom: 100px; +} + +._fc-l > .el-container { + height: 100%; +} + +._fc-l .el-main { + padding: 0; +} + +._fc-l .el-tree-node__label { + padding: 3px; + font-weight: 400; + color: #333; +} + +._fc-l .el-tree-node__content { + height: 30px; + margin: 5px 5px 0; +} + +._fc-l .el-tree-node__content > .el-tree-node__expand-icon { + color: #333; +} + +._fc-l .el-tree-node__expand-icon.is-leaf { + color: transparent; +} + +@keyframes rotating { + 0% { + transform: rotate(0) + } + + to { + transform: rotate(360deg) + } +} + +._fc-loading { + animation: rotating 2s linear infinite; +} + +._fc-struct-tree { + color: var(--fc-text-color-1); +} + +._fc-tree-node { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + height: 26px; + line-height: 26px; + padding-right: 5px; +} + +._fc-struct-tree .el-tree-node__content:hover { + background-color: var(--fc-style-bg-color-1); + color: var(--fc-style-color-1) !important; +} + +._fc-tree-node.active, ._fc-tree-node.active .icon-more { + color: var(--fc-style-color-1); +} + +._fc-tree-label { + display: flex; + align-items: center; +} + +._fc-tree-label > i { + margin-right: 2px; + font-weight: 400; +} + +._fc-tree-more { + display: flex; + align-items: center; + padding: 0 15px; +} + +._fc-tree-more .icon-more { + font-weight: 700; +} + +._fc-l-tabs, ._fc-r-tabs { + position: relative; + border-bottom: 1px solid var(--fc-line-color-3); + padding: 0 10px; + width: 100%; +} + +._fc-l-tab, ._fc-r-tab { + height: 40px; + box-sizing: border-box; + line-height: 40px; + display: inline-block; + list-style: none; + font-size: 14px; + font-weight: 400; + color: var(--fc-text-color-1); + position: relative; + text-align: center; + margin: 0 10px; + cursor: pointer; +} + +._fc-l ._fc-l-tab.active { + color: var(--fc-style-color-1); + border-bottom: 2px solid var(--fc-style-color-1); +} + +._fc-l-group { + border: 1px solid var(--fc-line-color-2); + padding: 0; + margin: 12px; + user-select: none; +} + +._fc-l-group ._fc-l-list { + display: grid; + grid-template-columns: repeat(3, 1fr); + align-items: stretch; +} + +._fc-l-group.is-template ._fc-l-list { + display: grid; + grid-template-columns: repeat(2, 1fr); + align-items: stretch; + grid-column-gap: 5px; + padding: 0 7px; +} + + +._fc-l-group.is-template ._fc-l-item { + height: 30px; + line-height: 28px; + background: var(--fc-bg-color-2); + margin-bottom: 5px; + padding-bottom: 0; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +._fc-l-group.is-template ._fc-l-item:hover { + background: var(--fc-style-color-1); +} + +._fc-l-title { + display: flex; + align-items: center; + justify-content: space-between; + cursor: pointer; + font-weight: 600; + font-size: 14px; + padding: 12px; + margin: 0; +} + +._fc-l-title i { + font-size: 14px; +} + +._fc-l-title i.down { + transform: rotate(90deg); +} + +._fc-l-item { + display: inline-block; + background: var(--fc-bg-color-1); + color: var(--fc-text-color-1); + line-height: 1; + text-align: center; + transition: all .2s ease; + cursor: pointer; + padding-bottom: 10px; +} + +._fc-l-item i { + font-size: 21px; + display: inline-block; +} + +._fc-l-item ._fc-l-name { + font-size: 12px; +} + +._fc-l-item ._fc-l-icon { + padding: 10px 5px 12px; +} + +._fc-l-item:hover { + background: var(--fc-style-color-1); + color: #fff; +} + +._fc-m-tools { + height: 40px; + align-items: center; + display: flex; + justify-content: space-between; + border: 1px solid var(--fc-line-color-3); + border-top: 0 none; + white-space: nowrap; + padding: 0 10px; +} + +._fc-m-tools-l, ._fc-m-tools-r { + display: flex; + align-items: center; +} + +._fc-m-tools-r { + overflow: auto; +} + +._fc-m-menus { + display: flex; + flex-direction: row; +} + +._fc-m-menus .fc-icon { + width: 18px; + cursor: pointer; +} + +._fc-m-menus .fc-icon.active { + color: var(--fc-style-color-1); +} + +._fc-m-menus > * + * { + margin-left: 5px; +} + +._fc-m-tools .line { + width: 1px; + height: 24px; + background: var(--fc-line-color-3); + margin: 0 10px; +} + +._fc-m-tools .el-button { + padding: 5px 10px; + display: flex; + align-items: center; + border-radius: 5px; +} + +._fc-m-tools .el-button > span { + display: inline-flex; + justify-content: center; + align-items: center; +} + +._fc-m-tools .el-dropdown, ._fc-m-tools .el-button + .el-button { + margin-left: 10px; +} + +._fc-m-tools ._fd-m-extend { + color: #666; + border-color: var(--fc-line-color-1); + background-color: var(--fc-bg-color-3); + border-radius: 5px; + padding: 5px; +} + +._fc-m-tools ._fd-m-extend .fc-icon { + margin-right: 0; +} + +._fc-m-tools ._fd-input-btn { + display: flex; + align-items: center; + justify-content: space-between; + font-size: 12px; +} + +._fc-m-tools ._fd-input-btn .icon-check { + color: #67c23a; + font-size: 18px; +} + +._fc-m-tools-r .fc-icon { + font-size: 14px; + margin-right: 2px; +} + +._fc-m-tools-l .fc-icon { + font-size: 18px; + cursor: pointer; +} + +._fc-m-tools-l .fc-icon + .fc-icon { + margin-left: 10px; +} + +._fc-m-tools-l .fc-icon.disabled { + color: var(--fc-text-color-3); + cursor: not-allowed; +} + +._fc-r .el-tabs__nav-wrap::after { + height: 1px; + background-color: var(--fc-bg-color-3); +} + +._fc-r .el-table__cell .cell, ._fc-r .el-button, ._fc-r .el-radio-button__inner, ._fc-r .el-checkbox { + font-weight: 400; +} + +._fc-r ._fc-r-tab.active { + color: var(--fc-style-color-1); + border-bottom: 2px solid var(--fc-style-color-1); +} + +._fc-m-con { + position: relative; + background: var(--fc-bg-color-2); + padding: 20px; +} + +._fc-m-drag.mobile, ._fc-m-drag.pad { + border-radius: 25px; + border: 10px solid #000; +} + +._fc-m-drag { + margin: 0 auto; + overflow: auto; + padding: 2px; + box-sizing: border-box; +} + +._fc-m-drag._fc-grid-line { + background-size: 16px 16px; + background-image: linear-gradient(to right, var(--fc-grid-line-color) 1px, transparent 1px), linear-gradient(to bottom, var(--fc-grid-line-color) 1px, transparent 1px); + background-repeat: repeat; + --van-cell-background: transparent; +} + +._fc-m-input { + padding: 5px 5px 80px; +} + +._fc-m-input-handle { + position: absolute; + bottom: 0; + left: 0; + right: 0; + padding: 12px; + background: var(--fc-bg-color-1); + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.05); + text-align: center; + margin: 20px; + z-index: 99; +} + +._fc-m-input-handle > .el-button { + font-size: 13px; +} + +._fc-m-drag.mobile { + width: 400px; +} + +._fc-m-drag.pad { + width: 770px; +} + +._fc-m-drag, .draggable-drag { + background-color: var(--fc-bg-color-1); + height: 100%; + position: relative; +} + +._fc-m-drag > form, ._fc-m-drag > form > .el-row, ._fc-m-drag > form > .van-row { + height: 100%; +} + +._fc-m-drag > form > .el-row >._fd-drag-tool, ._fc-m-drag > form > .van-row >._fd-drag-tool { + width: 100%; +} + +._fd-fcDialog-drag, ._fd-fcDrawer-drag { + padding: 3px; +} + +._fc-m-drag > form > .van-row { + flex-direction: column; +} + +._fc-m-drag .el-tree { + width: 100%; +} + +._fd-drag-box { + width: 100%; + height: 100%; + min-height: 80px; + transition: padding-bottom, padding-top .3s ease; +} + +._fd-drag-box ._fd-drag-box { + outline: 1px dashed var(--fc-line-color-1); +} + +/*._fd-drag-box ._fd-drag-box:hover{ + outline-color: var(--fc-style-color-1); +}*/ + +._fd-drag-tool > ._fd-drag-box { + outline: none; +} + +._fd-drag-box > div[data-draggable] { + margin-bottom: 1px; +} + +._fc-r ._fc-group-container + ._fc-group-container { + margin-top: 20px; +} + +._fc-r ._fc-group-container { + margin: 0; + padding: 10px; +} + +._fc-r ._fc-group-handle { + right: 15px; +} + +._fc-r .el-form-item { + margin-bottom: 10px !important; +} + +._fc-r .el-form-item__label { + color: var(--fc-text-color-1); +} + +.cm-fc-field, .cm-fc-id { + display: inline-block; + background-color: var(--fc-style-color-1); + color: #fff; + padding: 0 8px; + border-radius: 5px; + line-height: 1.5em; +} + +.cm-fc-id { + background-color: #df2121; +} + +.CodeMirror-widget + .CodeMirror-widget { + margin-left: 5px; +} + +._fc-tabs .el-tabs__item { + font-weight: 400; +} + +._fc-tabs .el-tabs__nav-scroll { + padding: 0 15px; +} + +._fc-tabs .el-tab-pane { + width: 100%; +} + +._fc-tabs .el-tabs__nav-wrap::after { + height: 1px; +} + +.form-create .fc-none { + display: none; +} + +._fc-child-empty, ._fd-elTooltip-drag.drag-holder, ._fd-fcInlineForm-drag.drag-holder, ._fd-fcDialog-drag.drag-holder, ._fd-fcDrawer-drag.drag-holder, ._fd-draggable-drag.drag-holder, ._fd-tableFormColumn-drag.drag-holder, ._fd-tableFormColumn2-drag.drag-holder, ._fd-elTabPane-drag.drag-holder, ._fd-group-drag.drag-holder, ._fd-subForm-drag.drag-holder, ._fd-stepFormItem-drag.drag-holder, ._fd-elCard-drag.drag-holder, ._fd-elCollapseItem-drag.drag-holder { + position: relative; + background: var(--fc-bg-color-2) url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOYAAAAMCAMAAABBazFtAAAA1VBMVEX///8uLi5wcHBDQ0P7+/v4+PhaWlpNTU3x8fHR0dH9/f1dXV0jIyPb29ucnJxSUlJLS0s7Ozvm5ubOzs5hYWH19fXIyMh9fX0+Pj5WVlbu7u6vr69ra2s1NTXj4+O8vLx0dHTX19fDw8OOjo6Hh4d5eXlISEg4ODi5ubkyMjLU1NSjo6Ofn5/r6+u0tLSLi4sWFharq6uEhITFxcXAwMCnp6eBgYGxsbFmZmbz8/OXl5eTk5MAAAANDQ23t7ccHBzd3d3Hx8cqKiro6OjKysrf39+QkJAsSMNaAAAFiElEQVRIx+WV17aaUBRFF016BymiiFLECrZrN5ry/58UjrnGkfKSPOQl0+E+e6Asz9SN4Gc+sCCEZOlx+AmX+7WTAFYAuOaJ8JmC38HiRyT2cVQCrNdBTiLl15TZ7HUW+8r7NRXhHr+hI7/TYQVB0DtNkcDbEMZFPJZEXe/Uuq7TIGgaqa9O3fJVfGHHDjBKAZgcCOP82zZ1vfUlCAIPwN4E1yUGu9aDISCrjrVwyvMNoBB/+fLlCMROFc/pbmW9UhrcdrvtBU1JAKzoj48XvI9d9hj51RHDGqzO8xcgXQBYvgGIed5LeF7Hk4+2vTsMI9u27Ip5UInCiSonueddOVfVFmknDH1gEUW+GUVbsBRFVVVTZupUsZDlbQcfD7Td71d0fxVT1PlKNUxs+Va04mRcADikjeGcbF4kjHSgVJ04mH+QwO7v+9rcbCqg25nBr20WrxQAn6PdKYrMIjqAw4C2DLBA8LnrUvW46WZlHJrq4gC4+fRdczr9yNwysu0ndts5LqL2J9g77AMJcMSOA9Q+TVccO1gsUkaWKUBcrfr91coG3CH5NSMO4Zj6FGKoOdiUyjCO75fYAkSF+xZMT7UWwxsFwFGz5rjJIvEIy54O3AfBfIgG7XpSViYsHSjqWmXQ8EohWKpyU/1a5VCwD81jjeBGWfxzTCd9TFIAXPjUVHzmdvXPL03F68qB712hThJPTpJkqg5LPqvp0Yji1G7a/vRGTS4cGenjsSksYNw0bS0Dq+Zb7vjq+9CqajlWJbil0kxld9xo+mFr/UEtgN0SlxnonTRbE1ZEs5Ll41nhKxX1KYHpbr4A3aNzKAyGObxSCAYd5RGTlTbo20PTsBDo8uZ85u+TgSF/yAWo/HZgGAnDXO9MwKqiuKtFZj3DEwp5Mk+bZZAFVZZRfDaQBJ8dp90oZdd0L+wOla0vrmTZP518WR7caJ73/TtPt5GdWnuxuDlApzjw3ax/Zmemo8/nc15sNJ1Ri7nyETayZN05SLKGqR4EMoimovZG29z1wRXnPDkeCwtgMD8w6AzxSiEYg2aamSNtI86IZmgC/EAV+FzgLaALOjcMw22692uzl9EnJzO72eSluZKlgblRACnX0KNcIA7OLY+/Mv4n0XP6ZkzVugi4/Hab74F9r+eUjNPr7Ve6efHC9lCZLMtICq+Wt8Hmra13Oh2DaM6Y1of0zRE5DrsaW5Z10W8DXaLpVrQ5meyyA4ZTqvfRvfYB7qwzE59ovlLkqhIMuk/TO4e3wZVEczgFCrpKnEnWAsnbM9a6hZemtaXqGdfzjBpP7jsB0upCNNcRUz78XQZ0QovpGhh48839YAiw+JGmxXkP4LaZpi09DlvLdNeBt+RDMrS4lAEa2mTclEazlfqtD7PTHE2KIUEbAuhHi4VCNNUWZy7X8ak5laWAN8UXsHIAmETzlUIwBNmetVTaBrRRo7lxAQrmaCmcLkRuE4o+FZJu/vmhOUuZbTE3tsrgdW2OHigA+3lIpSXdiHxUZDmhJ3kbGA4FtThW1lpZQdOaT18PqC+km5YrwHQBjMnQphi39GIjAe0MAN1oRp+44Is+NS3Y58kkjU4keTweJxB1aAvONFdUEOzJlg/FbNMN0w7wmSeaz5Sn5jI3mN7Obm4th2BeNLeWxIAZ1XxQfsD+5IxpqnvgwJ1l96GJQaYy86Vq4jvl4gEFUQmOAthJGSLxenHY71xYrjBtxtlOl9OeRf6mgd5soDadBiSfAIZoJjtcyvUotyFkW+CTB4lnBNg0sBuqGC0Q01stTkYevsHfp5h+5vwsF6GlQGHpjewm3QrAm0Y0XymElvCoSvi5/44mviGP6A3aAdxJbL6x7iIHOwXeNf1+MWf6Cv4M6W/eIuGfIr0vz/Xx+J/4CrqNrFdzXxZoAAAAAElFTkSuQmCC"); + background-size: 0; + min-height: 90px; +} + +._fc-child-empty:after, ._fd-elTooltip-drag.drag-holder:after, ._fd-fcInlineForm-drag.drag-holder:after, ._fd-fcDialog-drag.drag-holder:after, ._fd-fcDrawer-drag.drag-holder:after, ._fd-draggable-drag.drag-holder:after, ._fd-tableFormColumn-drag.drag-holder:after, ._fd-tableFormColumn2-drag.drag-holder:after, ._fd-elTabPane-drag.drag-holder:after, ._fd-group-drag.drag-holder:after, ._fd-subForm-drag.drag-holder:after, ._fd-stepFormItem-drag.drag-holder:after, ._fd-elCard-drag.drag-holder:after, ._fd-elCollapseItem-drag.drag-holder:after { + content: var(--fc-drag-empty); + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + color: var(--fc-text-color-3); + font-size: 12px; +} + +._fc-designer ._fc-m-drag ._fd-draggable-drag { + overflow: auto; + padding: 2px 2px 100px; +} + +._fc-m-drag._fd-drop-hover ._fd-draggable-drag { + padding-top: 20px; +} + +/* +._fc-m-drag._fd-drop-hover ._fd-draggable-drag > ._fd-drag-item { + padding-top: 10px !important; + padding-bottom: 10px !important; +}*/ + +._fd-draggable-drag.drag-holder { + background-color: var(--fc-bg-color-1); +} + +._fd-draggable-drag.drag-holder:after { + font-size: 16px; +} + +._fd-drag-item { + width: 100%; +} + +._fd-drag-item.is-inline { + display: inline; + vertical-align: top; + width: auto; +} + +._fd-drag-item.is-inline > div { + vertical-align: top; +} + +._fc-child-empty:after { + font-family: "fc-icon" !important; + content: var(--fc-child-empty); +} + +.fc-configured { + color: var(--fc-text-color-3); + margin-left: 5px; +} + +._fc-manage-text { + cursor: pointer; + color: var(--fc-style-color-1); + margin-left: 4px; +} + +._fc-message-tip { + top: 16px; + z-index: 2116; + border-radius: 8px; + padding: 9px 13px; + background-color: var(--fc-bg-color-1); + border-color: #fff; + box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05); +} + +._fc-message-tip > .el-icon { + font-size: 18px; +} + +._fc-message-tip .el-message__content { + color: var(--fc-text-color-1); + font-size: 14px; +} + +._fd-preview-copy { + display: flex; + position: absolute; + right: 35px; + top: 65px; + align-items: center; + justify-content: center; + width: 28px; + height: 28px; + background: var(--fc-style-bg-color-1); + border-radius: 10px; + color: var(--fc-style-color-1); + cursor: pointer; +} + +._fd-preview-dialog { + border-radius: 6px; + padding-top: 0; + min-height: 40%; +} + +._fd-preview-dialog > .el-dialog__header { + position: absolute; + right: 0; + top: 0; + float: right; + z-index: 9; +} + +._fd-preview-code { + margin-top: 0; + max-height: 510px; + overflow: auto; +} + +._fd-preview-tabs .el-tabs__nav-wrap::after { + height: 1px; + background-color: var(--fc-line-color-3); +} + +._fd-preview-tabs .el-tabs__item { + height: 46px; +} + +._fd-preview-code > code { + white-space: pre-wrap; +} + +._fd-preview-device { + position: absolute; + right: 50px; + top: 9px; + display: flex; + align-items: center; +} + +._fd-preview-device > div { + display: flex; + align-items: center; + justify-content: center; + width: 76px; + height: 28px; + border-radius: 3px 3px 3px 3px; + margin-right: 10px; + cursor: pointer; +} + +._fd-preview-mobile { + display: flex; + justify-content: center; +} + +._fd-preview-mobile > div { + border-radius: 24px; + border: 6px solid #000; + box-sizing: border-box; + width: 350px; + overflow: auto; + height: 70vh; +} + +._fd-preview-device > div.active { + background: var(--fc-style-bg-color-1); + color: var(--fc-style-color-1); +} + +._fd-row-line { + width: 100%; + height: 1px; + margin: 10px 0; + background: var(--fc-line-color-3); +} + +.CodeMirror-hints { + z-index: 999999; +} + +.fc-wrap-right .el-form-item__label { + justify-content: flex-end; +} + +.fc-wrap-left .el-form-item__label { + justify-content: flex-start; +} + +.fc-wrap-top.el-form-item { + display: block; +} + +.fc-wrap-top.el-form-item .el-form-item__label { + display: block; + height: auto; + line-height: 22px; + margin-bottom: 8px; + text-align: left +} + +.el-form--large .fc-wrap-top.el-form-item .el-form-item__label { + line-height: 22px; + margin-bottom: 12px +} + +.el-form--default .fc-wrap-top.el-form-item .el-form-item__label { + line-height: 22px; + margin-bottom: 8px +} + +.el-form--small .fc-wrap-top.el-form-item .el-form-item__label { + line-height: 20px; + margin-bottom: 4px +} + +._fd-slot-empty { + position: relative; + width: 100%; + min-height: 90px; + display: flex; + align-items: center; + justify-content: center; + flex-direction: row; + background: var(--fc-bg-color-2); + color: var(--fc-text-color-3); + font-size: 12px; +} + +.form-create-m ._fd-slot-empty { + flex-direction: column; +} + +._fd-slot-empty > span { + color: var(--fc-text-color-2); +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col, >.el-col) { + transition: all .3s; +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-1, >.el-col-1) { + flex: 0 0 4.1666666667%; + max-width: 4.1666666667% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-2, >.el-col-2) { + flex: 0 0 8.3333333333%; + max-width: 8.3333333333% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-3, >.el-col-3) { + flex: 0 0 12.5%; + max-width: 12.5% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-4, >.el-col-4) { + flex: 0 0 16.6666666667%; + max-width: 16.6666666667% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-5, >.el-col-5) { + flex: 0 0 20.8333333333%; + max-width: 20.8333333333% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-6, >.el-col-6) { + flex: 0 0 25%; + max-width: 25% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-7, >.el-col-7) { + flex: 0 0 29.1666666667%; + max-width: 29.1666666667% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-8, >.el-col-8) { + flex: 0 0 33.3333333333%; + max-width: 33.3333333333% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-9, >.el-col-9) { + flex: 0 0 37.5%; + max-width: 37.5% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-10, >.el-col-10) { + flex: 0 0 41.6666666667%; + max-width: 41.6666666667% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-11, >.el-col-11) { + flex: 0 0 45.8333333333%; + max-width: 45.8333333333% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-12, >.el-col-12) { + flex: 0 0 50%; + max-width: 50% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-13, >.el-col-13) { + flex: 0 0 54.1666666667%; + max-width: 54.1666666667% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-14, >.el-col-14) { + flex: 0 0 58.3333333333%; + max-width: 58.3333333333% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-15, >.el-col-15) { + flex: 0 0 62.5%; + max-width: 62.5% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-16, >.el-col-16) { + flex: 0 0 66.6666666667%; + max-width: 66.6666666667% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-17, >.el-col-17) { + flex: 0 0 70.8333333333%; + max-width: 70.8333333333% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-18, >.el-col-18) { + flex: 0 0 75%; + max-width: 75% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-19, >.el-col-19) { + flex: 0 0 79.1666666667%; + max-width: 79.1666666667% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-20, >.el-col-20) { + flex: 0 0 83.3333333333%; + max-width: 83.3333333333%; +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-21, >.el-col-21) { + flex: 0 0 87.5%; + max-width: 87.5% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-22, >.el-col-22) { + flex: 0 0 91.6666666667%; + max-width: 91.6666666667% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-23, >.el-col-23) { + flex: 0 0 95.8333333333%; + max-width: 95.8333333333% +} + +._fd-drag-item:has( > ._fd-drag-tool >.el-col-24, >.el-col-24) { + flex: 0 0 100%; + max-width: 100% +} + +._fd-drag-item > ._fd-drag-tool > .el-col, ._fd-drag-item > .el-col { + flex: 0 0 100%; + max-width: 100% +} + +.fc-icon[class*="icon-chart-"] { + display: inline-block; + background-repeat: no-repeat; + background-image: url(./chart.png); + background-size: 164px; + width: 21px; + height: 21px; + border-radius: 3px; + background-color: var(--fc-bg-color-2); +} + +.fc-icon.icon-chart-bar{ + background-position: -2px -2px; +} + +.fc-icon.icon-chart-stripe{ + background-position: -25px -2px +} + +.fc-icon.icon-chart-line{ + background-position: -48px -2px +} + +.fc-icon.icon-chart-area{ + background-position: -71px -2px +} + +.fc-icon.icon-chart-funnel{ + background-position: -95px -2px +} + +.fc-icon.icon-chart-gauge{ + background-position: -118px -2px +} + +.fc-icon.icon-chart-pie{ + background-position: -141px -2px +} + +.fc-icon.icon-chart-radar{ + background-position: -2px -25px +} + +.fc-icon.icon-chart-scatter{ + background-position: -25px -25px +} + +.fc-icon.icon-chart-custom{ + background-position: -48px -25px +} \ No newline at end of file diff --git a/src/style/theme.css b/src/style/theme.css new file mode 100644 index 0000000..6aa306a --- /dev/null +++ b/src/style/theme.css @@ -0,0 +1,67 @@ +.fd-theme-purple, .fd-theme-purple ._fc-designer, .fd-theme-purple ._fd-config-dialog { + --fc-style-color-1: #884CFF; + --fc-style-bg-color-1: rgba(136, 76, 255, 0.05); + --el-color-primary: #884CFF; + --el-color-primary-light-3: #A47FFF; + --el-color-primary-light-5: #B599FF; + --el-color-primary-light-7: #C6B3FF; + --el-color-primary-light-8: #D1C2FF; + --el-color-primary-light-9: #E1D6FF; + --el-color-primary-dark-2: #6E3ACC; + --fc-style-color-4: #E000FF; + --fc-style-bg-color-4: rgba(224, 0, 255, 0.05); +} + +.fd-theme-orange, .fd-theme-orange ._fc-designer, .fd-theme-orange ._fd-config-dialog { + --fc-style-color-1: #F27024; + --fc-style-bg-color-1: rgba(242, 112, 36, 0.05); + --el-color-primary: #F27024; + --el-color-primary-light-3: #FF9A59; + --el-color-primary-light-5: #FFB380; + --el-color-primary-light-7: #FFCC99; + --el-color-primary-light-8: #FFD6B3; + --el-color-primary-light-9: #FFE6CC; + --el-color-primary-dark-2: #C25A1D; + --fc-style-color-4: #FFB600; + --fc-style-bg-color-4: rgba(255, 182, 0, 0.05); +} + +.fd-theme-pink, .fd-theme-pink ._fc-designer, .fd-theme-pink ._fd-config-dialog { + --fc-style-color-1: #FE679A; + --fc-style-bg-color-1: rgba(254, 103, 154, 0.05); + --el-color-primary: #FE679A; + --el-color-primary-light-3: #FF96B3; + --el-color-primary-light-5: #FFB3C8; + --el-color-primary-light-7: #FFD1DC; + --el-color-primary-light-8: #FFDCE5; + --el-color-primary-light-9: #FFE6ED; + --el-color-primary-dark-2: #CB517A; + --fc-style-color-4: #BD2BFF; + --fc-style-bg-color-4: rgba(189, 43, 255, 0.05); +} + +.fd-theme-green, .fd-theme-green ._fc-designer, .fd-theme-green ._fd-config-dialog { + --fc-style-color-1: #18BF82; + --fc-style-bg-color-1: rgba(24, 191, 130, 0.05); + --el-color-primary: #18BF82; + --el-color-primary-light-3: #4FD8A1; + --el-color-primary-light-5: #80E6BB; + --el-color-primary-light-7: #B3F1D6; + --el-color-primary-light-8: #C6F5E0; + --el-color-primary-light-9: #D9F9EB; + --el-color-primary-dark-2: #149566; + --fc-style-color-4: #E2FF00; + --fc-style-bg-color-4: rgba(226, 255, 0, 0.05); +} + +.fd-theme-green ._fc-designer .el-button--success.is-plain, .fd-theme-green ._fd-config-dialog .el-button--success.is-plain { + --el-button-bg-color: #FEF1E9; + --el-button-text-color: #F27024; + --el-button-border-color: #F9B892; + --el-button-hover-text-color: var(--el-color-white); + --el-button-hover-bg-color: #F27024; + --el-button-hover-border-color: #F27024; + --el-button-active-bg-color: #C65E21; + --el-button-active-text-color: var(--el-color-white); + --el-button-active-border-color: #C65E21; +} diff --git a/src/utils/behavior.js b/src/utils/behavior.js new file mode 100644 index 0000000..365e1a3 --- /dev/null +++ b/src/utils/behavior.js @@ -0,0 +1,553 @@ +import {ElMessage} from 'element-plus'; +import {copyTextToClipboard, deepGet, getInjectArg, localeOptions} from './index'; +import uniqueId from '@form-create/utils/lib/unique'; + + +const deepGetSubHandles = (handle, name) => { + let handles = [handle]; + const names = name.split('.'); + let idx = 1; + while (names[idx]) { + let apis = []; + handles.forEach(handle => { + Object.values(handle.ctxs).forEach(ctx => { + if (ctx.rule._fc_id === names[idx - 1]) { + const sub = handle.subForm[ctx.id] + apis.push(...Array.isArray(sub) ? sub : [sub]) + } + }); + }); + handles = apis.map(api => { + return api.rule[0].__fc__.$handle; + }); + idx++; + } + return [handles, names[idx - 1]] +} + +const deepModifyRule = (fc, name, callback) => { + const topHandle = fc.vm.setupState.top.setupState.fc.$handle; + let handles = [fc.$handle]; + if (fc.$handle !== topHandle) { + handles.push(topHandle); + } + let key = name; + if (name.indexOf('.') > -1) { + [handles, key] = deepGetSubHandles(topHandle, name); + } + handles.forEach(handle => { + Object.values(handle.ctxs).forEach(ctx => { + if (ctx.rule._fc_id === key) { + callback(ctx.rule, handle.api); + } + }); + }); +} + +const behavior = { + openModel(config, inject) { + inject.api.open(config.model); + }, + closeModel(config, inject) { + inject.api.close(config.model); + }, + hidden(config, inject, fc) { + const id = typeof config.id === 'string' ? [config.id] : (config.id || []); + let status = !!config.status; + if (config.compute) { + status = !!fc.$handle.compute(inject.self.__fc__, config.formula); + } + id.forEach(name => { + deepModifyRule(fc, name, (rule) => { + rule.hidden = status; + }); + }); + }, + disabled(config, inject, fc) { + const id = typeof config.id === 'string' ? [config.id] : (config.id || []); + let status = !!config.status; + if (config.compute) { + status = !!fc.$handle.compute(inject.self.__fc__, config.formula); + } + id.forEach(name => { + deepModifyRule(fc, name, (rule) => { + if (!rule.props) { + rule.props = {}; + } + rule.props.disabled = status; + }); + }); + }, + resetFields(config, inject) { + inject.api.top.resetFields(); + }, + clearFields(config, inject) { + inject.api.top.coverValue({}); + }, + validate(config, inject) { + return inject.api.top.validate(); + }, + validateFields(config, inject, fc) { + const id = typeof config.id === 'string' ? [config.id] : (config.id || []); + const list = []; + id.forEach(name => { + deepModifyRule(fc, name, (rule, api) => { + if (rule.field) { + list.push(api.validateField(rule.field)); + } + }); + }); + return list.length ? Promise.all(list) : undefined; + }, + submit(config, inject) { + return inject.api.top.submit(); + }, + setValue(config, inject, fc) { + (config.formData || []).forEach(item => { + let value = item.value; + if (item.compute) { + value = fc.$handle.compute(inject.self.__fc__, item.formula); + } + deepModifyRule(fc, item.id, (rule) => { + rule.value = value; + }); + }) + }, + fetch(config, inject) { + const {append, response, fetch} = config; + if (append) { + fetch.data = {...inject.api.formData(), ...fetch.data || {}} + } + return new Promise((resolve, reject) => { + inject.api.fetch(config.fetch).then(res => { + if (response) { + inject.api.setData(response, res); + } + resolve(res); + }).catch(e => { + reject(e); + }) + }); + }, + copy(config, inject, fc) { + let content = config.content || ''; + if (config.compute) { + content = fc.$handle.compute(inject.self.__fc__, config.formula); + } + copyTextToClipboard(content); + }, + callback(config, inject) { + return config.callback && config.callback(inject); + }, + message(config) { + ElMessage(config || {}); + }, +} + +const behaviorTree = [ + { + key: 'model', + children: ['openModel', 'closeModel', 'message'] + }, + { + key: 'form', + children: ['hidden', 'disabled', 'resetFields', 'clearFields', 'setValue', 'validate', 'validateFields', 'submit'] + }, + { + key: 'other', + children: ['fetch', 'copy', 'callback'] + } +]; + +const behaviorRules = { + openModel(designer) { + return [ + { + type: 'select', + field: 'model', + $required: true, + options: designer.pageData.filter(page => !page.default).map(page => { + const menu = page.main._menu; + return { + label: deepGet(page.main, page.config.labelField, '') || designer.t('com.' + menu.name + '.name') || menu.label, + value: page.main.name + } + }) + } + ] + }, + message(designer) { + return [ + { + type: 'radio', + field: 'type', + value: 'info', + props: { + type: 'button' + }, + options: localeOptions(designer.t, ['info', 'warning', 'success', 'error'].map(k => { + return {label: k, value: k}; + })) + }, + { + type: 'input', + $required: true, + field: 'message', + }, + { + type: 'inputNumber', + field: 'duration', + props: { + precision: 0, + controlsPosition: 'right' + } + }, + { + type: 'switch', + field: 'showClose', + } + ] + }, + hidden(designer) { + const t = designer.t; + return [ + { + type: 'RuleSelect', + field: 'id', + $required: true, + props: { + multiple: true, + } + }, + { + type: 'radio', + field: 'compute', + value: false, + options: [ + {label: t('behavior.props.static'), value: false}, + {label: t('behavior.props.formula'), value: true}, + ], + control: [ + { + value: false, + rule: [ + { + type: 'radio', + field: 'status', + value: true, + options: [ + {label: t('props.show'), value: false}, + {label: t('props.hide'), value: true}, + ] + } + ] + }, + { + value: true, + rule: [ + { + type: 'ComputedConfig', + field: 'formula', + $required: true, + props: { + btn: t('behavior.props.setFormula'), + title: t('behavior.props.setFormula'), + name: t('behavior.props.setFormula'), + invertLabel: t('props.show'), + validLabel: t('props.hide'), + } + } + ] + }, + ] + }, + ]; + }, + disabled(designer) { + const t = designer.t; + return [ + { + type: 'RuleSelect', + field: 'id', + $required: true, + props: { + onlyField: true, + multiple: true, + }, + }, + { + type: 'radio', + field: 'compute', + value: false, + options: [ + {label: t('behavior.props.static'), value: false}, + {label: t('behavior.props.formula'), value: true}, + ], + control: [ + { + value: false, + rule: [ + { + type: 'radio', + field: 'status', + value: true, + options: [ + {label: t('props.enable'), value: false}, + {label: t('props.disabled'), value: true}, + ] + } + ] + }, + { + value: true, + rule: [ + { + type: 'ComputedConfig', + field: 'formula', + $required: true, + props: { + title: t('behavior.props.setFormula'), + invertLabel: t('props.enable'), + validLabel: t('props.disabled'), + } + } + ] + }, + ] + }, + ]; + }, + validateFields() { + return [ + { + type: 'RuleSelect', + field: 'id', + $required: true, + props: { + onlyField: true, + multiple: true, + }, + }, + ] + }, + setValue(designer) { + const t = designer.t; + return [ + { + type: 'group', + field: 'formData', + props: { + expand: 1, + rule: [ + { + type: 'RuleSelect', + field: 'id', + title: t('behavior.props.id'), + $required: true, + props: { + onlyField: true, + }, + }, + + { + type: 'radio', + field: 'compute', + value: false, + title: t('behavior.props.compute'), + options: [ + {label: t('behavior.props.static'), value: false}, + {label: t('behavior.props.formula'), value: true}, + ], + control: [ + { + value: false, + rule: [ + { + type: 'ValueInput', + field: 'value', + title: t('props.value'), + $required: true, + } + ] + }, + { + value: true, + rule: [ + { + type: 'ComputedConfig', + field: 'formula', + title: t('behavior.props.formula'), + $required: true, + props: { + type: 'value', + title: t('behavior.props.setFormula'), + invertLabel: t('props.show'), + validLabel: t('props.hide'), + } + } + ] + }, + ] + }, + ] + } + } + ] + }, + fetch() { + return [ + { + type: 'FetchConfig', + field: 'fetch', + $required: true, + }, + { + type: 'switch', + field: 'append', + value: false, + }, + { + type: 'input', + field: 'response', + value: 'res_' + uniqueId(), + }, + ] + }, + copy(designer) { + const t = designer.t; + return [ + { + type: 'radio', + field: 'compute', + value: false, + options: [ + {label: t('behavior.props.static'), value: false}, + {label: t('behavior.props.formula'), value: true}, + ], + control: [ + { + value: false, + rule: [ + { + type: 'input', + field: 'content', + $required: true, + props: { + type: 'textarea' + }, + options: [ + {label: t('props.enable'), value: false}, + {label: t('props.disabled'), value: true}, + ] + } + ] + }, + { + value: true, + rule: [ + { + type: 'ComputedConfig', + field: 'formula', + $required: true, + props: { + type: 'value', + title: t('behavior.props.setFormula'), + invertLabel: t('props.enable'), + validLabel: t('props.disabled'), + } + } + ] + }, + ] + }, + ] + }, + callback(designer) { + return [{ + type: 'FnInput', + field: 'callback', + $required: true, + props: { + name: 'callback', + args: [getInjectArg(designer.t)], + }, + }] + } +}; + +function executeColumnPromises(column, inject) { + return column.reduce((chain, promise) => { + return chain.then(() => promise(inject)); + }, Promise.resolve()); +} + +const behaviorAttr = function (fc) { + return { + name: 'behavior', + load(attr, rule) { + const value = attr.getValue(); + const events = {}; + const hooks = {}; + value && Object.keys(value).forEach(k => { + if (Array.isArray(value[k])) { + const callbacks = []; + value[k].forEach(item => { + const {method, config, expression, stopPropagation, ignoreError} = item; + callbacks.push((inject) => { + return new Promise((resolve) => { + if (expression && fc.$handle.compute(rule.__fc__, expression) === false) { + resolve(); + return; + } + const next = (...args) => { + if (!stopPropagation || fc.$handle.compute(rule.__fc__, stopPropagation) !== true) { + resolve(...args); + } else { + // reject(); + } + }; + let res; + try { + res = behavior[method](config || {}, inject, fc); + } catch (e) { + console.error(e); + if (ignoreError !== false) { + next(); + } else { + // reject(); + } + return; + } + if (res && res.then) { + res.then(next).catch(() => { + if (ignoreError !== false) { + next(); + } + }); + } else { + next(res); + } + }); + }) + }); + if (callbacks.length) { + const run = fc.$handle.inject(rule, function (inject) { + executeColumnPromises(callbacks, inject); + }, rule.inject || fc.$handle.options.injectEvent); + if (k.indexOf('hook_') > -1) { + hooks[k.replace('hook_', '')] = run; + } else { + events[k] = run; + } + } + } + }); + attr.getProp().on = events; + attr.getProp().hook = hooks; + } + } +} + +export default behaviorAttr; + +export {behaviorTree, behaviorRules, behavior} \ No newline at end of file diff --git a/src/utils/easySlots.js b/src/utils/easySlots.js new file mode 100644 index 0000000..2bc914c --- /dev/null +++ b/src/utils/easySlots.js @@ -0,0 +1,23 @@ +const easySlotsAttr = { + name: 'easySlots', + load(attr) { + const value = attr.getValue(); + const renderSlots = {}; + if (value) { + Object.keys(value).forEach((key) => { + renderSlots[key] = value[key].type === 'icon' ? { + type: 'i', + class: 'fc-icon iconfont ' + value[key].value + } : { + type: 'div', + children: ['' + (value[key].value || '')] + } + }) + } + attr.getProp().renderSlots = renderSlots; + }, +} + +easySlotsAttr.watch = easySlotsAttr.load; + +export default easySlotsAttr; \ No newline at end of file diff --git a/src/utils/extendApi.js b/src/utils/extendApi.js new file mode 100644 index 0000000..c63da23 --- /dev/null +++ b/src/utils/extendApi.js @@ -0,0 +1,23 @@ +import extend from '@form-create/utils/lib/extend'; +import {behavior} from './behavior'; + +export default function useExtendApi(formCreate) { + formCreate.__proto__.setBehavior = (behaviors) => { + extend(behavior, behaviors); + }; + formCreate.extendApi((api) => { + return { + open(name, ...args) { + (api.el(name) || api.top.el(name)).open(...args); + }, + close(name) { + if (!name) { + api.top.bus.$emit('fc.closeDialog'); + api !== api.top && api.bus.$emit('fc.closeDialog'); + } else { + (api.el(name) || api.top.el(name)).close(); + } + }, + } + }); +} \ No newline at end of file diff --git a/src/utils/extendMessageApi.js b/src/utils/extendMessageApi.js new file mode 100644 index 0000000..bde7c03 --- /dev/null +++ b/src/utils/extendMessageApi.js @@ -0,0 +1,11 @@ +import {ElMessage} from 'element-plus'; + +export default function useExtendMessageApi(formCreate) { + formCreate.extendApi((api) => { + return { + message(config) { + return ElMessage(config || {}); + }, + } + }); +} \ No newline at end of file diff --git a/src/utils/form.js b/src/utils/form.js new file mode 100644 index 0000000..a923a75 --- /dev/null +++ b/src/utils/form.js @@ -0,0 +1,30 @@ +import formCreate from '@form-create/element-ui'; +import {renderPreview} from './index'; +import formulas from './formulas'; +import behaviorAttr from './behavior'; +import easySlotsAttr from './easySlots'; +import useExtendApi from './extendApi'; +import useExtendMessageApi from './extendMessageApi'; + +formCreate.parser().preview = renderPreview; + +Object.keys(formulas).forEach(k => { + formCreate.setFormula(k, formulas[k]); +}); + +const viewForm = formCreate; + +const designerForm = formCreate.factory(); + +useExtendApi(viewForm); +useExtendMessageApi(viewForm); +useExtendApi(designerForm); +useExtendMessageApi(designerForm); + +viewForm.register('behavior', behaviorAttr); +viewForm.register('easySlots', easySlotsAttr); +designerForm.register('easySlots', easySlotsAttr); + +export default viewForm; + +export {designerForm}; diff --git a/src/utils/formulas.js b/src/utils/formulas.js new file mode 100644 index 0000000..9f7fd84 --- /dev/null +++ b/src/utils/formulas.js @@ -0,0 +1,611 @@ +import is, {hasProperty} from '@form-create/utils/lib/type'; +import dayjs from 'dayjs'; + +const computed = { + Add: (num1, num2) => { + let r1, r2, m; + try { + r1 = num1.toString().split('.')[1].length; + } catch (e) { + r1 = 0; + } + try { + r2 = num2.toString().split('.')[1].length; + } catch (e) { + r2 = 0; + } + m = Math.pow(10, Math.max(r1, r2)); + return (num1 * m + num2 * m) / m; + }, + Sub: (num1, num2) => { + let r1, r2, m; + try { + r1 = num1.toString().split('.')[1].length; + } catch (e) { + r1 = 0; + } + try { + r2 = num2.toString().split('.')[1].length; + } catch (e) { + r2 = 0; + } + m = Math.pow(10, Math.max(r1, r2)); + // 动态控制精度长度 + let n = (r1 >= r2) ? r1 : r2; + return Number(((num1 * m - num2 * m) / m).toFixed(n)); + }, + Mul: (num1, num2) => { + let m = 0; + let s1 = num1.toString(); + let s2 = num2.toString(); + try { + m += s1.split('.')[1].length; + } catch (e) { + } + try { + m += s2.split('.')[1].length; + } catch (e) { + } + return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m); + }, + Div: (num1, num2) => { + let t1 = 0; + let t2 = 0; + try { + t1 = num1.toString().split('.')[1].length; + } catch (e) { + } + try { + t2 = num2.toString().split('.')[1].length; + } catch (e) { + } + let r1 = Number(num1.toString().replace('.', '')); + let r2 = Number(num2.toString().replace('.', '')); + return (r1 / r2) * Math.pow(10, t2 - t1); + } +} + +const DEFAULT_FORMAT = 'YYYY-MM-DD HH:mm:ss'; + +const defaultValue = (val, def) => { + return val == null ? def : val; +} + +const formulas = { + ADD: function (n1, n2) { + return computed.Add(defaultValue(n1, '0'), defaultValue(n2, '0')); + }, + SUB: function (n1, n2) { + return computed.Sub(defaultValue(n1, '0'), defaultValue(n2, '0')); + }, + MUL: function (n1, n2) { + return computed.Mul(defaultValue(n1, '0'), defaultValue(n2, '0')); + }, + DIV: function (n1, n2) { + return computed.Div(defaultValue(n1, '0'), defaultValue(n2, '0')); + }, + SUM: function (...args) { + return (args || []).reduce((previousValue, currentValue) => { + return computed.Add(previousValue, Array.isArray(currentValue) ? formulas.SUM(...currentValue) : (currentValue || 0)); + }, 0); + }, + MAX: function (...args) { + const arr = Array.isArray(args[0]) ? args[0] : args; + return Math.max(...arr.map(v => { + return parseFloat(v); + }).filter(v => !isNaN(v))); + }, + MIN: function (...args) { + const arr = Array.isArray(args[0]) ? args[0] : args; + return Math.min(...arr.map(v => { + return parseFloat(v); + }).filter(v => !isNaN(v))); + }, + ABS: function (val) { + return parseFloat(Math.abs(val)) || 0; + }, + AVG: function (...args) { + const arr = Array.isArray(args[0]) ? args[0] : args; + if (arr.length) { + return computed.Div(formulas.SUM(arr), arr.length); + } + return 0; + }, + POWER: function (num1, num2) { + return Math.pow(parseFloat(num1), parseFloat(num2)); + }, + RAND: function () { + return Math.random() + }, + CEIL: function (num) { + return Math.ceil(parseFloat(num)) || 0; + }, + FLOOR: function (val) { + return Math.floor(parseFloat(val) || 0); + }, + FIXED: function (num, decimals) { + const factor = Math.pow(10, decimals || 0); + const truncatedNumber = Math.floor(parseFloat(num) * factor) / factor; + return truncatedNumber.toFixed(decimals || 0); + }, + ISNUMBER: function (val) { + if (val === '' || val === null) { + return false; + } + return !isNaN(Number(val)); + }, + PI: function () { + return Number(Math.PI) + }, + ROUND: function (val, num) { + val = parseFloat(val); + if (isNaN(val)) { + return 0; + } + return parseFloat(val.toFixed(parseFloat(num) || 0)); + }, + SQRT: function (val) { + return Math.sqrt(parseFloat(val)) || 0; + }, + TONUMBER: function (num) { + return parseFloat(num) || 0; + }, + MODIFYDATE: function (date, num, uni, format) { + if (!date) { + return null; + } + let day = dayjs(date); + if (num > 0) { + day = day.add(num, uni); + } else if (num < 0) { + day = day.subtract(-1 * num, uni); + } + return day.format(format || DEFAULT_FORMAT); + }, + ADDYEAR: function (date, num, format) { + return formulas.MODIFYDATE(date, Math.max(num, 0), 'y', format); + }, + ADDMONTH: function (date, num, format) { + return formulas.MODIFYDATE(date, Math.max(num, 0), 'M', format); + }, + ADDDAY: function (date, num, format) { + return formulas.MODIFYDATE(date, Math.max(num, 0), 'd', format); + }, + ADDHOUR: function (date, num, format) { + return formulas.MODIFYDATE(date, Math.max(num, 0), 'h', format); + }, + ADDMINUTE: function (date, num, format) { + return formulas.MODIFYDATE(date, Math.max(num, 0), 'm', format); + }, + ADDSECOND: function (date, num, format) { + return formulas.MODIFYDATE(date, Math.max(num, 0), 's', format); + }, + ADDWEEK: function (date, num, format) { + return formulas.MODIFYDATE(date, Math.max(num, 0), 'w', format); + }, + SUBYEAR: function (date, num, format) { + num = Math.max(num, 0); + return formulas.MODIFYDATE(date, num > 0 ? (-1 * num) : 0, 'y', format); + }, + SUBMONTH: function (date, num, format) { + num = Math.max(num, 0); + return formulas.MODIFYDATE(date, num > 0 ? -1 * num : 0, 'M', format); + }, + SUBDAY: function (date, num, format) { + num = Math.max(num, 0); + return formulas.MODIFYDATE(date, num > 0 ? -1 * num : 0, 'd', format); + }, + SUBHOUR: function (date, num, format) { + num = Math.max(num, 0); + return formulas.MODIFYDATE(date, num > 0 ? -1 * num : 0, 'h', format); + }, + SUBMINUTE: function (date, num, format) { + num = Math.max(num, 0); + return formulas.MODIFYDATE(date, num > 0 ? -1 * num : 0, 'm', format); + }, + SUBSECOND: function (date, num, format) { + num = Math.max(num, 0); + return formulas.MODIFYDATE(date, num > 0 ? -1 * num : 0, 's', format); + }, + SUBWEEK: function (date, num, format) { + num = Math.max(num, 0); + return formulas.MODIFYDATE(date, num > 0 ? -1 * num : 0, 'w', format); + }, + NOW: function () { + const date = new Date; + const year = date.getFullYear(); + const month = ('0' + (date.getMonth() + 1)).slice(-2); + const day = ('0' + date.getDate()).slice(-2); + const hour = ('0' + date.getHours()).slice(-2); + const minute = ('0' + date.getMinutes()).slice(-2); + const second = ('0' + date.getSeconds()).slice(-2); + return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; + }, + TODAY: function () { + const date = new Date; + const year = date.getFullYear(); + const month = ('0' + (date.getMonth() + 1)).slice(-2); + const day = ('0' + date.getDate()).slice(-2); + return year + '-' + month + '-' + day; + }, + YEAR: function (day) { + if (!day) { + return null; + } + return new Date(day).getFullYear(); + }, + MONTH: function (day) { + if (!day) { + return null; + } + return new Date(day).getMonth() + 1; + }, + DAY: function (day) { + if (!day) { + return null; + } + return new Date(day).getDate(); + }, + HOUR: function (day) { + if (!day) { + return null; + } + return new Date(day).getHours(); + }, + MINUTE: function (day) { + if (!day) { + return null; + } + return new Date(day).getMinutes(); + }, + SECOND: function (day) { + if (!day) { + return null; + } + return new Date(day).getSeconds(); + }, + DIFFDAYS: function (start, end) { + const date1 = new Date(start); + const date2 = new Date(end); + return parseInt(Math.ceil(Math.abs(date2.getTime() - date1.getTime()) / (1000 * 60 * 60 * 24))); + }, + DIFFHOURS: function (start, end) { + const date1 = new Date(start); + const date2 = new Date(end); + return parseFloat(Math.abs(date2.getTime() - date1.getTime()) / (1000 * 60 * 60)).toFixed(2); + }, + DIFFMINUTES: function (start, end) { + const date1 = new Date(start); + const date2 = new Date(end); + return parseInt(Math.ceil(Math.abs(date2.getTime() - date1.getTime()) / (1000 * 60))); + }, + TIMESTAMP: function (date) { + return Date.parse(date); + }, + STARTSWITH: function (str, find) { + return ('' + str).substring(0, ('' + (find)).length) === find; + }, + EMPTY: function (val) { + return is.empty(val); + }, + NOTEMPTY: function (val) { + return !is.empty(val); + }, + LEN: function (arr) { + return Array.isArray(arr) ? arr.length : 0; + }, + MOD: function (num1, num2) { + num1 = parseFloat(num1); + num2 = parseFloat(num2); + if (!num1 || !num2 || isNaN(num1) || isNaN(num2)) { + return 0; + } + return num1 % num2; + }, + SLICELEFT: function (str, len) { + return ('' + str).slice(0, Number(len) || 0); + }, + SLICERIGHT: function (str, len) { + return ('' + str).slice(Number(len) * -1); + }, + TOLOWER: function (str) { + return ('' + str).toLowerCase(); + }, + TOUPPER: function (str) { + return ('' + str).toUpperCase(); + }, + INCLUDES: function (str, find) { + return (str || '').indexOf(find || ''); + }, + REPLACE: function (str, search, replace) { + return (str || '').replace(search || '', replace || ''); + }, + REPLACEALL: function (str, search, replace) { + return (str || '').replaceAll(search || '', replace || ''); + }, + TRIM: function (str) { + return (str || '').trim(); + }, + TOCHINSESAMOUNT: function (amount) { + let chnNumChar = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; + let chnUnitSection = ['', '万', '亿', '万亿', '亿亿']; + let chnUnitChar = ['', '拾', '佰', '仟']; + let chnDecimalUnit = ['角', '分']; + + function sectionToChinese(section) { + let strIns = '', + chnStr = ''; + let unitPos = 0; + let zero = true; + while (section > 0) { + let v = section % 10; + if (v === 0) { + if (!zero) { + zero = true; + chnStr = chnNumChar[v] + chnStr; + } + } else { + zero = false; + strIns = chnNumChar[v]; + strIns += chnUnitChar[unitPos]; + chnStr = strIns + chnStr; + } + unitPos++; + section = Math.floor(section / 10); + } + return chnStr; + } + + let unitPos = 0; + let strIns = '', + chnStr = ''; + let needZero = false; + + if (amount === 0) { + return chnNumChar[0]; + } + + let integerPart = Math.floor(amount); + let decimalPart = Math.round((amount - integerPart) * 100); + + while (integerPart > 0) { + let section = integerPart % 10000; + if (needZero) { + chnStr = chnNumChar[0] + chnStr; + } + strIns = sectionToChinese(section); + strIns += (section !== 0) ? chnUnitSection[unitPos] : chnUnitSection[0]; + chnStr = strIns + chnStr; + needZero = (section < 1000) && (section > 0); + integerPart = Math.floor(integerPart / 10000); + unitPos++; + } + + if (chnStr) { + chnStr += '元'; + } + + if (decimalPart > 0) { + chnStr += chnNumChar[Math.floor(decimalPart / 10)] + chnDecimalUnit[0]; + if (decimalPart % 10 !== 0) { + chnStr += chnNumChar[decimalPart % 10] + chnDecimalUnit[1]; + } + } else if (chnStr) { + chnStr += '整'; + } + + return chnStr; + }, + UNION: function (...args) { + const arr = Array.isArray(args[0]) ? args[0] : args; + return arr.filter((value, index, self) => { + return self.indexOf(value) === index; + }); + }, + AND: function (...args) { + return !!args.reduce((previousValue, currentValue) => { + return previousValue && currentValue; + }, true); + }, + OR: function (...args) { + return !!args.reduce((previousValue, currentValue) => { + return previousValue || currentValue; + }, false); + }, + IF: function (bool, valid = true, invalid = false) { + return bool ? valid : invalid; + }, + DEFAULT: function (value, def) { + return is.Undef(value) ? def : value; + }, + CASE: function (...args) { + for (let i = 0; i < args.length - 1; i += 2) { + if (args[i]) { + return args[i + 1]; + } + } + return null; + }, + COLUMN: function (arr, key) { + const value = []; + if (Array.isArray(arr)) { + arr.forEach(function (v) { + if (Array.isArray(v)) { + value.push(...formulas.COLUMN(v, key)); + } else if (v) { + value.push(v[key]); + } + }); + } + return value; + }, + VALUE: function (obj, key, def) { + const lst = ('' + key).split('.'); + let val = obj; + + for (let i = 0; i < lst.length; i++) { + if (hasProperty(val, lst[i])) { + val = val[lst[i]]; + } else { + return def; + } + } + return val; + }, + CONCAT: function (...args) { + return ''.concat(...args); + }, + INTERSECTIONSET: function (array1, array2) { + const intersectionArray = []; + + for (let i = 0; i < array1.length; i++) { + const element = array1[i]; + if (array2.indexOf(element) !== -1 && intersectionArray.indexOf(element) === -1) { + intersectionArray.push(element); + } + } + return intersectionArray; + }, + LIST: function (...args) { + return args; + }, + IN: function (lst, find) { + return (lst || []).indexOf(find) > -1; + }, + FALSE: function () { + return false; + }, + TRUE: function () { + return true; + }, + NOT: function (val) { + return !val; + }, + EQ: function (val1, val2) { + return val1 === val2; + }, + GE: function (val1, val2) { + return val1 >= val2; + }, + GT: function (val1, val2) { + return val1 > val2; + }, + LE: function (val1, val2) { + return val1 <= val2; + }, + LT: function (val1, val2) { + return val1 < val2; + }, + NE: function (val1, val2) { + return val1 !== val2; + }, +} + +const formulaInfo = { + ADD: 'ADD(1, 2) = 3', + SUB: 'SUB(10, 1) = 9', + MUL: 'MUL(2, 2) = 4', + DIV: 'DIV(10, 2) = 5', + SUM: 'SUM(1,2,3) = 6, SUM([5, 6, 7]) = 18', + MAX: 'MAX(1, 5, 10) = 10', + MIN: 'MIN(1, 5, 10) = 1', + ABS: 'ABS(-10) = 10, ABS(10) = 10', + AVG: 'AVG(2, 4, 6, 8) = 5', + POWER: 'POWER(2, 4) = 16', + RAND: 'RAND() = 0.75348173001531', + PI: 'PI() = 3.141592653589793', + ROUND: 'ROUND(3.149, 2) = 3.15, ROUND(3.149) = 3', + SQRT: 'SQRT(9) = 3', + NOW: 'NOW() = "2024-03-15 12:08:31"', + TODAY: 'TODAY() = "2024-03-15"', + YEAR: 'YEAR("2024-03-15 12:08:31") = 2024', + MONTH: 'MONTH("2024-03-15 12:08:31") = 3', + DAY: 'DAY("2024-03-15 12:08:31") = 15', + HOUR: 'HOUR("2024-03-15 12:08:31") = 12', + MINUTE: 'MINUTE("2024-03-15 12:08:31") = 8', + SECOND: 'SECOND("2024-03-15 12:08:31") = 31', + TIMESTAMP: 'TIMESTAMP("2024-03-15 12:08:31") = 1710475711000', + ADDYEAR: 'ADDYEAR("2024-03-15 12:08:31", 2) = 2026-03-15 12:08:31, ADDYEAR("2024-03-15 12:08:31", 3, "YYYY-MM-DD") = 2027-03-15', + ADDMONTH: 'ADDMONTH("2024-03-15 12:08:31", 2) = 2024-05-15 12:08:31, ADDMONTH("2024-03-15 12:08:31", 10, "YYYY-MM-DD") = 2025-01-15', + ADDDAY: 'ADDDAY("2024-03-15 12:08:31", 10) = 2024-03-25 12:08:31, ADDDAY("2024-03-15 12:08:31", 20, "YYYY-MM-DD") = 2024-04-04', + ADDHOUR: 'ADDHOUR("2024-03-15 12:08:31", 10) = 2024-03-15 22:08:31, ADDHOUR("2024-03-15 12:08:31", 20, "HH:mm:ss") = 08:08:31', + ADDMINUTE: 'ADDMINUTE("2024-03-15 12:08:31", 30) = 2024-03-15 12:38:31, ADDMINUTE("2024-03-15 12:08:31", 55, "HH:mm:ss") = 13:03:31', + ADDSECOND: 'ADDSECOND("2024-03-15 12:08:31", 20) = 2024-03-15 12:08:51, ADDSECOND("2024-03-15 12:08:31", 40, "HH:mm:ss") = 12:09:11', + ADDWEEK: 'ADDWEEK("2024-03-15 12:08:31", 2) = 2024-03-29 12:08:31, ADDWEEK("2024-03-15 12:08:31", 4, "YYYY-MM-DD") = 2024-04-12', + SUBYEAR: 'SUBYEAR("2024-03-15 12:08:31", 2) = 2022-03-15 12:08:31, SUBYEAR("2024-03-15 12:08:31", 3, "YYYY-MM-DD") = 2021-03-15', + SUBMONTH: 'SUBMONTH("2024-03-15 12:08:31", 2) = 2024-01-15 12:08:31, SUBMONTH("2024-03-15 12:08:31", 10, "YYYY-MM-DD") = 2023-05-15', + SUBDAY: 'SUBDAY("2024-03-15 12:08:31", 10) = 2024-03-05 12:08:31, SUBDAY("2024-03-15 12:08:31", 20, "YYYY-MM-DD") = 2024-02-24', + SUBHOUR: 'SUBHOUR("2024-03-15 12:08:31", 10) = 2024-03-15 02:08:31, SUBHOUR("2024-03-15 12:08:31", 20, "HH:mm:ss") = 16:08:31', + SUBMINUTE: 'SUBMINUTE("2024-03-15 12:08:31", 30) = 2024-03-15 11:38:31, SUBMINUTE("2024-03-15 12:08:31", 55, "HH:mm:ss") = 11:13:31', + SUBSECOND: 'SUBSECOND("2024-03-15 12:08:31", 20) = 2024-03-15 12:08:11, SUBSECOND("2024-03-15 12:08:31", 40, "HH:mm:ss") = 12:07:51', + SUBWEEK: 'SUBWEEK("2024-03-15 12:08:31", 2) = 2024-03-01 12:08:31, SUBWEEK("2024-03-15 12:08:31", 4, "YYYY-MM-DD") = 2024-02-16', + DIFFDAYS: 'DIFFDAYS("2024-01-15","2024-03-15") = 60', + DIFFHOURS: 'DIFFHOURS("2024-01-15 12:00:00", "2024-01-16 15:00:00") = 27, DIFFHOURS("2024-01-15 12:00:00", "2024-01-15 12:30:00") = 0.5', + DIFFMINUTES: 'DIFFMINUTES("2024-01-15 12:00:00", "2024-01-15 12:30:00") = 30', + STARTSWITH: 'STARTSWITH("ABCDEF","ABC") = true, STARTSWITH("ABCDEF","AD") = false', + EMPTY: 'EMPTY("") = true, EMPTY([]) = true, EMPTY("0") = false', + NOTEMPTY: 'NOTEMPTY("") = false, NOTEMPTY([]) = false, NOTEMPTY("0") = true', + LEN: 'LEN(["a", "b", "c"]) = 3', + MOD: 'MOD(10, 3) = 1', + FLOOR: 'FLOOR(1.93) = 1', + CEIL: 'CEIL(1.93) = 2', + FIXED: 'FIXED(1.93, 1) = 1.9', + ISNUMBER: 'ISNUMBER("2.34") = true, ISNUMBER("2.4e") = false', + TONUMBER: 'TONUMBER("1.5") = 1.5, TONUMBER("2.4e") = 2.4, TONUMBER("ABC") = 0', + SLICELEFT: 'SLICELEFT("ABCDE", 3) = "ABC"', + SLICERIGHT: 'SLICERIGHT("ABCDE", 3) = "CDE"', + TOLOWER: 'TOUPPER("ABCD") = "abcd"', + TOUPPER: 'TOUPPER("abcd") = "ABCD"', + INCLUDES: 'INCLUDES("ABCD", "BC") = 1, INCLUDES("ABCD", "E") = -1', + REPLACE: 'REPLACE("AbAc","A","1") = "1bAc"', + REPLACEALL: 'REPLACEALL("AbAc","A","1") = "1b1c"', + TRIM: 'TRIM("\\t\\n A BC \\t\\n") = "A BC"', + TOCHINSESAMOUNT: 'TOCHINSESAMOUNT(32.14) = "叁拾贰元壹角肆分"', + UNION: 'UNION(1, 3, 5, 1, 4, 3) = [1, 3, 5, 4], UNION([1, 2, 3, 1, 2, 3]) = [1, 2, 3]', + INTERSECTIONSET: 'INTERSECTIONSET([1, 3, 5], [1, 4, 3]) = [1, 3]', + LIST: 'LIST([1, 3, 5], [1, 4, 3]) = [[1, 3, 5], [1, 4, 3]]', + AND: 'AND(true, true) = true, AND(true, false) = false', + OR: 'OR(false, false) = false, OR(false, true) = true', + IF: 'IF(false, 1, 0) = 0, IF(true, 1, 0) = 1', + IN: 'IN([1,2,3,4], 4) = true, IN([1,2,3,4], 5) = false', + DEFAULT: 'DEFAULT("#FF7271", "#000") = "#FF7271", DEFAULT("", "#000") = "", DEFAULT(null, "#000") = "#000"', + CASE: 'CASE(IN([1,2,3,4], 5), 1, IN([1,2,3,4], 2), 2) = 2', + COLUMN: 'COLUMN([{key: 1}, {key: 2}, {key: 3}],"key") = [1, 2, 3], COLUMN([[{key: 1}, {key: 2}], [{key: 3}, {key: 4}]], "key") = [1, 2, 3, 4]', + VALUE: 'VALUE({key: 1}, "key", 2) = 1, VALUE({key: 1}, "value", 2) = 2, VALUE({list: {key: 1}}, "list.key") = 1', + CONCAT: 'CONCAT("ABC", "DEF") = "ABCDEF"', + FALSE: 'FALSE() = false', + TRUE: 'TRUE() = true', + NOT: 'NOT(true) = false, NOT(false) = true', + EQ: 'EQ(100, 100) = true, EQ(100, 90) = false, EQ(100, "100") = false', + GE: 'GE(100, 90) = true, GE(100, 100) = true, GE(100, 110) = false', + GT: 'GT(100, 90) = true, GT(100, 100) = false, GT(100, 110) = false', + LE: 'LE(100, 90) = false, LE(100, 100) = true, LE(100, 110) = true', + LT: 'LT(100, 90) = false, LT(100, 100) = false, LT(100, 110) = true', + NE: 'NE(100, 90) = true, NE(100, 100) = false, NE(100, "100") = true', +} + +const formulaTree = [ + { + key: 'math', + children: ['TONUMBER', 'ADD', 'SUB', 'MUL', 'DIV', 'SUM', 'MAX', 'MIN', 'ABS', 'AVG', 'MOD', 'SQRT', 'POWER', 'RAND', 'PI', 'ROUND', 'FLOOR', 'CEIL', 'FIXED', 'TOCHINSESAMOUNT'], + }, + { + key: 'string', + children: ['STARTSWITH', 'SLICELEFT', 'SLICERIGHT', 'TOLOWER', 'TOUPPER', 'INCLUDES', 'CONCAT', 'REPLACE', 'REPLACEALL', 'TRIM'], + }, + { + key: 'date', + children: ['NOW', 'TODAY', 'YEAR', 'MONTH', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'ADDYEAR', 'SUBYEAR', 'ADDMONTH', 'SUBMONTH', 'ADDWEEK', 'SUBWEEK', 'ADDDAY', 'SUBDAY', 'ADDHOUR', 'SUBHOUR', 'ADDMINUTE', 'SUBMINUTE', 'ADDSECOND', 'SUBSECOND', 'DIFFDAYS', 'DIFFHOURS', 'DIFFMINUTES', 'TIMESTAMP'], + }, + { + key: 'collection', + children: ['IN', 'LEN', 'UNION', 'COLUMN', 'VALUE', 'INTERSECTIONSET', 'LIST'], + }, + { + key: 'condition', + children: ['IF', 'AND', 'OR', 'CASE', 'NOT', 'EQ', 'NE', 'GE', 'GT', 'LE', 'LT', 'TRUE', 'FALSE', 'DEFAULT', 'EMPTY', 'NOTEMPTY', 'ISNUMBER'], + }, +] + +export default formulas; +export {formulaInfo, computed, formulaTree}; \ No newline at end of file diff --git a/src/utils/highlight/highlight.min.js b/src/utils/highlight/highlight.min.js new file mode 100644 index 0000000..ea13adc --- /dev/null +++ b/src/utils/highlight/highlight.min.js @@ -0,0 +1,307 @@ +/*! + Highlight.js v11.9.0 (git: b7ec4bfafc) + (c) 2006-2024 undefined and other contributors + License: BSD-3-Clause + */ +function e(t){ return t instanceof Map?t.clear=t.delete=t.set=()=>{ + throw Error('map is read-only') }:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ + throw Error('set is read-only') +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{ + const i=t[n],s=typeof i;'object'!==s&&'function'!==s||Object.isFrozen(i)||e(i) +})),t }class t{constructor(e){ + void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1 } +ignoreMatch(){ this.isMatchIgnored=!0 }}function n(e){ + return e.replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"').replace(/'/g,''') +}function i(e,...t){ const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{ for(const t in e)n[t]=e[t] })),n }const s=e=>!!e.scope +;class r{constructor(e,t){ + this.buffer='',this.classPrefix=t.classPrefix,e.walk(this) }addText(e){ + this.buffer+=n(e) }openNode(e){ if(!s(e))return;const t=((e,{prefix:t})=>{ + if(e.startsWith('language:'))return e.replace('language:','language-') + ;if(e.includes('.')){ const n=e.split('.') +;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${'_'.repeat(t+1)}`))].join(' ') + }return`${t}${e}` })(e.scope,{prefix:this.classPrefix});this.span(t) } +closeNode(e){ s(e)&&(this.buffer+='') }value(){ return this.buffer }span(e){ + this.buffer+=`` }}const o=(e={})=>{ const t={children:[]} +;return Object.assign(t,e),t };class a{constructor(){ + this.rootNode=o(),this.stack=[this.rootNode] }get top(){ + return this.stack[this.stack.length-1] }get root(){ return this.rootNode }add(e){ + this.top.children.push(e) }openNode(e){ const t=o({scope:e}) +;this.add(t),this.stack.push(t) }closeNode(){ + if(this.stack.length>1)return this.stack.pop() }closeAllNodes(){ + for(;this.closeNode();); }toJSON(){ return JSON.stringify(this.rootNode,null,4) } +walk(e){ return this.constructor._walk(e,this.rootNode) }static _walk(e,t){ + return'string'==typeof t?e.addText(t):t.children&&(e.openNode(t), + t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e }static _collapse(e){ + 'string'!=typeof e&&e.children&&(e.children.every((e=>'string'==typeof e))?e.children=[e.children.join('')]:e.children.forEach((e=>{ + a._collapse(e) }))) }}class c extends a{constructor(e){ super(),this.options=e } + addText(e){ ''!==e&&this.add(e) }startScope(e){ this.openNode(e) }endScope(){ + this.closeNode() }__addSublanguage(e,t){ const n=e.root +;t&&(n.scope='language:'+t),this.add(n) }toHTML(){ + return new r(this,this.options).value() }finalize(){ + return this.closeAllNodes(),!0 }}function l(e){ + return e?'string'==typeof e?e:e.source:null }function g(e){ return h('(?=',e,')') } +function u(e){ return h('(?:',e,')*') }function d(e){ return h('(?:',e,')?') } +function h(...e){ return e.map((e=>l(e))).join('') }function f(...e){ const t=(e=>{ + const t=e[e.length-1] +;return'object'==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} +})(e);return'('+(t.capture?'':'?:')+e.map((e=>l(e))).join('|')+')' } +function p(e){ return RegExp(e.toString()+'|').exec('').length-1 } +const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ +;function m(e,{joinWith:t}){ let n=0;return e.map((e=>{ n+=1;const t=n +;let i=l(e),s='';for(;i.length>0;){ const e=b.exec(i);if(!e){ s+=i;break } + s+=i.substring(0,e.index), + i=i.substring(e.index+e[0].length),'\\'===e[0][0]&&e[1]?s+='\\'+(Number(e[1])+t):(s+=e[0], + '('===e[0]&&n++) }return s })).map((e=>`(${e})`)).join(t) } +const E='[a-zA-Z]\\w*',x='[a-zA-Z_]\\w*',w='\\b\\d+(\\.\\d+)?',y='(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)',_='\\b(0b[01]+)',O={ + begin:'\\\\[\\s\\S]',relevance:0},k={scope:'string',begin:'\'',end:'\'', + illegal:'\\n',contains:[O]},v={scope:'string',begin:'"',end:'"',illegal:'\\n', + contains:[O]},N=(e,t,n={})=>{ const s=i({scope:'comment',begin:e,end:t, + contains:[]},n);s.contains.push({scope:'doctag', + begin:'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)', + end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) + ;const r=f('I','a','is','so','us','to','at','if','in','it','on',/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) +;return s.contains.push({begin:h(/[ ]+/,'(',r,/[.]?[:]?([.][ ]|[ ])/,'){3}')}),s + },S=N('//','$'),M=N('/\\*','\\*/'),R=N('#','$');var A=Object.freeze({ + __proto__:null,APOS_STRING_MODE:k,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{ + scope:'number',begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N, + C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:'number', + begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{ + 'on:begin':(e,t)=>{ t.data._beginMatch=e[1] },'on:end':(e,t)=>{ + t.data._beginMatch!==e[1]&&t.ignoreMatch() }}),HASH_COMMENT_MODE:R,IDENT_RE:E, + MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:'\\.\\s*'+x,relevance:0}, + NUMBER_MODE:{scope:'number',begin:w,relevance:0},NUMBER_RE:w, + PHRASAL_WORDS_MODE:{ + begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ + },QUOTE_STRING_MODE:v,REGEXP_MODE:{scope:'regexp',begin:/\/(?=[^/\n]*\/)/, + end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]}, + RE_STARTERS_RE:'!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~', + SHEBANG:(e={})=>{ const t=/^#![ ]*\// +;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:'meta',begin:t, + end:/$/,relevance:0,'on:begin':(e,t)=>{ 0!==e.index&&t.ignoreMatch() }},e) }, + TITLE_MODE:{scope:'title',begin:E,relevance:0},UNDERSCORE_IDENT_RE:x, + UNDERSCORE_TITLE_MODE:{scope:'title',begin:x,relevance:0}});function j(e,t){ + '.'===e.input[e.index-1]&&t.ignoreMatch() }function I(e,t){ + void 0!==e.className&&(e.scope=e.className,delete e.className) }function T(e,t){ + t&&e.beginKeywords&&(e.begin='\\b('+e.beginKeywords.split(' ').join('|')+')(?!\\.)(?=\\b|\\s)', + e.__beforeBegin=j,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, + void 0===e.relevance&&(e.relevance=0)) }function L(e,t){ + Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal)) }function B(e,t){ + if(e.match){ + if(e.begin||e.end)throw Error('begin & end are not supported with match') + ;e.begin=e.match,delete e.match } }function P(e,t){ + void 0===e.relevance&&(e.relevance=1) }const D=(e,t)=>{ if(!e.beforeMatch)return + ;if(e.starts)throw Error('beforeMatch cannot be used with starts') + ;const n=Object.assign({},e);Object.keys(e).forEach((t=>{ delete e[t] + })),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={ + relevance:0,contains:[Object.assign(n,{endsParent:!0})] + },e.relevance=0,delete n.beforeMatch + },H=['of','and','for','in','not','or','if','then','parent','list','value'],C='keyword' +;function $(e,t,n=C){ const i=Object.create(null) +;return'string'==typeof e?s(n,e.split(' ')):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{ + Object.assign(i,$(e[n],t,n)) })),i;function s(e,n){ + t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{ const n=t.split('|') +;i[n[0]]=[e,U(n[0],n[1])] })) } }function U(e,t){ + return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1 }const z={},W=e=>{ + console.error(e) },X=(e,...t)=>{ console.log('WARN: '+e,...t) },G=(e,t)=>{ + z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0) + },K=Error();function F(e,t,{key:n}){ let i=0;const s=e[n],r={},o={} +;for(let e=1;e<=t.length;e++)o[e+i]=s[e],r[e+i]=!0,i+=p(t[e-1]) +;e[n]=o,e[n]._emit=r,e[n]._multi=!0 }function Z(e){ (e=>{ + e.scope&&'object'==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, + delete e.scope) })(e),'string'==typeof e.beginScope&&(e.beginScope={ + _wrap:e.beginScope}),'string'==typeof e.endScope&&(e.endScope={_wrap:e.endScope +}),(e=>{ if(Array.isArray(e.begin)){ + if(e.skip||e.excludeBegin||e.returnBegin)throw W('skip, excludeBegin, returnBegin not compatible with beginScope: {}'), + K + ;if('object'!=typeof e.beginScope||null===e.beginScope)throw W('beginScope must be object'), + K;F(e,e.begin,{key:'beginScope'}),e.begin=m(e.begin,{joinWith:''}) } })(e),(e=>{ + if(Array.isArray(e.end)){ + if(e.skip||e.excludeEnd||e.returnEnd)throw W('skip, excludeEnd, returnEnd not compatible with endScope: {}'), + K + ;if('object'!=typeof e.endScope||null===e.endScope)throw W('endScope must be object'), + K;F(e,e.end,{key:'endScope'}),e.end=m(e.end,{joinWith:''}) } })(e) }function V(e){ + function t(t,n){ + return RegExp(l(t),'m'+(e.case_insensitive?'i':'')+(e.unicodeRegex?'u':'')+(n?'g':'')) + }class n{constructor(){ + this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0 } + addRule(e,t){ + t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), + this.matchAt+=p(e)+1 }compile(){ 0===this.regexes.length&&(this.exec=()=>null) + ;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:'|' + }),!0),this.lastIndex=0 }exec(e){ this.matcherRe.lastIndex=this.lastIndex + ;const t=this.matcherRe.exec(e);if(!t)return null + ;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,i) }}class s{constructor(){ + this.rules=[],this.multiRegexes=[], + this.count=0,this.lastIndex=0,this.regexIndex=0 }getMatcher(e){ + if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), + t.compile(),this.multiRegexes[e]=t,t }resumingScanAtSamePosition(){ + return 0!==this.regexIndex }considerAll(){ this.regexIndex=0 }addRule(e,t){ + this.rules.push([e,t]),'begin'===t.type&&this.count++ }exec(e){ + const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex + ;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ + const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e) } + return n&&(this.regexIndex+=n.position+1, + this.regexIndex===this.count&&this.considerAll()),n }} + if(e.compilerExtensions||(e.compilerExtensions=[]), + e.contains&&e.contains.includes('self'))throw Error('ERR: contains `self` is not supported at the top-level of a language. See documentation.') + ;return e.classNameAliases=i(e.classNameAliases||{}),function n(r,o){ const a=r +;if(r.isCompiled)return a + ;[I,B,Z,D].forEach((e=>e(r,o))),e.compilerExtensions.forEach((e=>e(r,o))), + r.__beforeBegin=null,[T,L,P].forEach((e=>e(r,o))),r.isCompiled=!0;let c=null +;return'object'==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords), + c=r.keywords.$pattern, + delete r.keywords.$pattern),c=c||/\w+/,r.keywords&&(r.keywords=$(r.keywords,e.case_insensitive)), + a.keywordPatternRe=t(c,!0), + o&&(r.begin||(r.begin=/\B|\b/),a.beginRe=t(a.begin),r.end||r.endsWithParent||(r.end=/\B|\b/), + r.end&&(a.endRe=t(a.end)), + a.terminatorEnd=l(a.end)||'',r.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(r.end?'|':'')+o.terminatorEnd)), + r.illegal&&(a.illegalRe=t(r.illegal)), + r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{ + variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{ + starts:e.starts?i(e.starts):null + }):Object.isFrozen(e)?i(e):e))('self'===e?r:e)))),r.contains.forEach((e=>{ n(e,a) + })),r.starts&&n(r.starts,o),a.matcher=(e=>{ const t=new s +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:'begin' + }))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:'end' + }),e.illegal&&t.addRule(e.illegal,{type:'illegal'}),t })(a),a }(e) }function q(e){ + return!!e&&(e.endsWithParent||q(e.starts)) }class J extends Error{ + constructor(e,t){ super(e),this.name='HTMLInjectionError',this.html=t }} +const Y=n,Q=i,ee=Symbol('nomatch'),te=n=>{ + const i=Object.create(null),s=Object.create(null),r=[];let o=!0 +;const a='Could not find the language \'{}\', did you forget to load/include a language module?',l={ + disableAutodetect:!0,name:'Plain text',contains:[]};let p={ + ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, + languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:'hljs-', + cssSelector:'pre code',languages:null,__emitter:c};function b(e){ + return p.noHighlightRe.test(e) }function m(e,t,n){ let i='',s='' +;'object'==typeof t?(i=e, + n=t.ignoreIllegals,s=t.language):(G('10.7.0','highlight(lang, code, ...args) has been deprecated.'), + G('10.7.0','Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277'), + s=e,i=t),void 0===n&&(n=!0);const r={code:i,language:s};N('before:highlight',r) + ;const o=r.result?r.result:E(r.language,r.code,n) +;return o.code=r.code,N('after:highlight',o),o }function E(e,n,s,r){ + const c=Object.create(null);function l(){ if(!N.keywords)return M.addText(R) + ;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n='' +;for(;t;){ n+=R.substring(e,t.index) + ;const s=_.case_insensitive?t[0].toLowerCase():t[0],r=(i=s,N.keywords[i]);if(r){ + const[e,i]=r +;if(M.addText(n),n='',c[s]=(c[s]||0)+1,c[s]<=7&&(A+=i),e.startsWith('_'))n+=t[0];else{ + const n=_.classNameAliases[e]||e;u(t[0],n) } }else n+=t[0] + ;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R) }var i +;n+=R.substring(e),M.addText(n) }function g(){ null!=N.subLanguage?(()=>{ + if(''===R)return;let e=null;if('string'==typeof N.subLanguage){ + if(!i[N.subLanguage])return M.addText(R) + ;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top + }else e=x(R,N.subLanguage.length?N.subLanguage:null) + ;N.relevance>0&&(A+=e.relevance),M.__addSublanguage(e._emitter,e.language) + })():l(),R='' }function u(e,t){ + ''!==e&&(M.startScope(t),M.addText(e),M.endScope()) }function d(e,t){ let n=1 +;const i=t.length-1;for(;n<=i;){ if(!e._emit[n]){ n++;continue } + const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=''),n++ } } + function h(e,t){ + return e.scope&&'string'==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope), + e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), + R=''):e.beginScope._multi&&(d(e.beginScope,t),R='')),N=Object.create(e,{parent:{ + value:N}}),N }function f(e,n,i){ let s=((e,t)=>{ const n=e&&e.exec(t) +;return n&&0===n.index })(e.endRe,i);if(s){ if(e['on:end']){ const i=new t(e) +;e['on:end'](n,i),i.isMatchIgnored&&(s=!1) }if(s){ + for(;e.endsParent&&e.parent;)e=e.parent;return e } } + if(e.endsWithParent)return f(e.parent,n,i) }function b(e){ + return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0) }function m(e){ + const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const r=N +;N.endScope&&N.endScope._wrap?(g(), + u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(), + d(N.endScope,e)):r.skip?R+=t:(r.returnEnd||r.excludeEnd||(R+=t), + g(),r.excludeEnd&&(R=t));do{ + N.scope&&M.closeNode(),N.skip||N.subLanguage||(A+=N.relevance),N=N.parent + }while(N!==s.parent);return s.starts&&h(s.starts,e),r.returnEnd?0:t.length } + let w={};function y(i,r){ const a=r&&r[0];if(R+=i,null==a)return g(),0 + ;if('begin'===w.type&&'end'===r.type&&w.index===r.index&&''===a){ + if(R+=n.slice(r.index,r.index+1),!o){ const t=Error(`0 width match regex (${e})`) +;throw t.languageName=e,t.badRule=w.rule,t }return 1 } + if(w=r,'begin'===r.type)return(e=>{ + const n=e[0],i=e.rule,s=new t(i),r=[i.__beforeBegin,i['on:begin']] +;for(const t of r)if(t&&(t(e,s),s.isMatchIgnored))return b(n) + ;return i.skip?R+=n:(i.excludeBegin&&(R+=n), + g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length })(r) + ;if('illegal'===r.type&&!s){ + const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||'')+'"') +;throw e.mode=N,e }if('end'===r.type){ const e=m(r);if(e!==ee)return e } + if('illegal'===r.type&&''===a)return 1 + ;if(I>1e5&&I>3*r.index)throw Error('potential infinite loop, way more iterations than matches') + ;return R+=a,a.length }const _=O(e) +;if(!_)throw W(a.replace('{}',e)),Error('Unknown language: "'+e+'"') + ;const k=V(_);let v='',N=r||k;const S={},M=new p.__emitter(p);(()=>{ const e=[] +;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope) + ;e.forEach((e=>M.openNode(e))) })();let R='',A=0,j=0,I=0,T=!1;try{ + if(_.__emitTokens)_.__emitTokens(n,M);else{ for(N.matcher.considerAll();;){ + I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=j + ;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(j,e.index),e) +;j=e.index+t }y(n.substring(j)) }return M.finalize(),v=M.toHTML(),{language:e, + value:v,relevance:A,illegal:!1,_emitter:M,_top:N} }catch(t){ + if(t.message&&t.message.includes('Illegal'))return{language:e,value:Y(n), + illegal:!0,relevance:0,_illegalBy:{message:t.message,index:j, + context:n.slice(j-100,j+100),mode:t.mode,resultSoFar:v},_emitter:M};if(o)return{ + language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N} + ;throw t } }function x(e,t){ t=t||p.languages||Object.keys(i);const n=(e=>{ + const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)} +;return t._emitter.addText(e),t })(e),s=t.filter(O).filter(v).map((t=>E(t,e,!1))) +;s.unshift(n);const r=s.sort(((e,t)=>{ + if(e.relevance!==t.relevance)return t.relevance-e.relevance + ;if(e.language&&t.language){ if(O(e.language).supersetOf===t.language)return 1 + ;if(O(t.language).supersetOf===e.language)return-1 }return 0 })),[o,a]=r,c=o +;return c.secondBest=a,c }function w(e){ let t=null;const n=(e=>{ + let t=e.className+' ';t+=e.parentNode?e.parentNode.className:'' + ;const n=p.languageDetectRe.exec(t);if(n){ const t=O(n[1]) +;return t||(X(a.replace('{}',n[1])), + X('Falling back to no-highlight mode for this block.',e)),t?n[1]:'no-highlight' } + return t.split(/\s+/).find((e=>b(e)||O(e))) })(e);if(b(n))return + ;if(N('before:highlightElement',{el:e,language:n + }),e.dataset.highlighted)return console.log('Element previously highlighted. To highlight again, first unset `dataset.highlighted`.',e) + ;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn('One of your code blocks includes unescaped HTML. This is a potentially serious security risk.'), + console.warn('https://github.com/highlightjs/highlight.js/wiki/security'), + console.warn('The element with unescaped HTML:'), + console.warn(e)),p.throwUnescapedHTML))throw new J('One of your code blocks includes unescaped HTML.',e.innerHTML) + ;t=e;const i=t.textContent,r=n?m(i,{language:n,ignoreIllegals:!0}):x(i) +;e.innerHTML=r.value,e.dataset.highlighted='yes',((e,t,n)=>{ const i=t&&s[t]||n +;e.classList.add('hljs'),e.classList.add('language-'+i) + })(e,n,r.language),e.result={language:r.language,re:r.relevance, + relevance:r.relevance},r.secondBest&&(e.secondBest={ + language:r.secondBest.language,relevance:r.secondBest.relevance + }),N('after:highlightElement',{el:e,result:r,text:i}) }let y=!1;function _(){ + 'loading'!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0 + }function O(e){ return e=(e||'').toLowerCase(),i[e]||i[s[e]] } + function k(e,{languageName:t}){ 'string'==typeof e&&(e=[e]),e.forEach((e=>{ + s[e.toLowerCase()]=t })) }function v(e){ const t=O(e) +;return t&&!t.disableAutodetect }function N(e,t){ const n=e;r.forEach((e=>{ + e[n]&&e[n](t) })) } + 'undefined'!=typeof window&&window.addEventListener&&window.addEventListener('DOMContentLoaded',(()=>{ + y&&_() }),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_, + highlightElement:w, + highlightBlock:e=>(G('10.7.0','highlightBlock will be removed entirely in v12.0'), + G('10.7.0','Please use highlightElement now.'),w(e)),configure:e=>{ p=Q(p,e) }, + initHighlighting:()=>{ + _(),G('10.6.0','initHighlighting() deprecated. Use highlightAll() now.') }, + initHighlightingOnLoad:()=>{ + _(),G('10.6.0','initHighlightingOnLoad() deprecated. Use highlightAll() now.') + },registerLanguage:(e,t)=>{ let s=null;try{ s=t(n) }catch(t){ + if(W('Language definition for \'{}\' could not be registered.'.replace('{}',e)), + !o)throw t;W(t),s=l } + s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&k(s.aliases,{ + languageName:e}) },unregisterLanguage:e=>{ delete i[e] + ;for(const t of Object.keys(s))s[t]===e&&delete s[t] }, + listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:k, + autoDetection:v,inherit:Q,addPlugin:e=>{ (e=>{ + e['before:highlightBlock']&&!e['before:highlightElement']&&(e['before:highlightElement']=t=>{ + e['before:highlightBlock'](Object.assign({block:t.el},t)) + }),e['after:highlightBlock']&&!e['after:highlightElement']&&(e['after:highlightElement']=t=>{ + e['after:highlightBlock'](Object.assign({block:t.el},t)) }) })(e),r.push(e) }, + removePlugin:e=>{ const t=r.indexOf(e);-1!==t&&r.splice(t,1) }}),n.debugMode=()=>{ + o=!1 },n.safeMode=()=>{ o=!0 },n.versionString='11.9.0',n.regex={concat:h, + lookahead:g,either:f,optional:d,anyNumberOfTimes:u} + ;for(const t in A)'object'==typeof A[t]&&e(A[t]);return Object.assign(n,A),n + },ne=te({});ne.newInstance=()=>te({});export{ne as default}; \ No newline at end of file diff --git a/src/utils/highlight/javascript.min.js b/src/utils/highlight/javascript.min.js new file mode 100644 index 0000000..c11c4d4 --- /dev/null +++ b/src/utils/highlight/javascript.min.js @@ -0,0 +1,80 @@ +/*! `javascript` grammar compiled for Highlight.js 11.9.0 */ +var hljsGrammar=(()=>{ 'use strict' +;const e='[A-Za-z$_][0-9A-Za-z$_]*',n=['as','in','of','if','for','while','finally','var','new','function','do','return','void','else','break','catch','instanceof','with','throw','case','default','try','switch','continue','typeof','delete','let','yield','const','class','debugger','async','await','static','import','from','export','extends'],a=['true','false','null','undefined','NaN','Infinity'],t=['Object','Function','Boolean','Symbol','Math','Date','Number','BigInt','String','RegExp','Array','Float32Array','Float64Array','Int8Array','Uint8Array','Uint8ClampedArray','Int16Array','Int32Array','Uint16Array','Uint32Array','BigInt64Array','BigUint64Array','Set','Map','WeakSet','WeakMap','ArrayBuffer','SharedArrayBuffer','Atomics','DataView','JSON','Promise','Generator','GeneratorFunction','AsyncFunction','Reflect','Proxy','Intl','WebAssembly'],s=['Error','EvalError','InternalError','RangeError','ReferenceError','SyntaxError','TypeError','URIError'],r=['setInterval','setTimeout','clearInterval','clearTimeout','require','exports','eval','isFinite','isNaN','parseFloat','parseInt','decodeURI','decodeURIComponent','encodeURI','encodeURIComponent','escape','unescape'],c=['arguments','this','super','console','window','document','localStorage','sessionStorage','module','global'],i=[].concat(r,t,s) +;return o=>{ const l=o.regex,d=e,b={begin:/<[A-Za-z0-9\\._:-]+/, + end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ + const a=e[0].length+e.index,t=e.input[a] +;if('<'===t||','===t)return void n.ignoreMatch();let s +;'>'===t&&(((e,{after:n})=>{ const a='',$={ + match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,/(async\s*)?/,l.lookahead(B)], + keywords:'async',className:{1:'keyword',3:'title.function'},contains:[R]} +;return{name:'JavaScript',aliases:['js','jsx','mjs','cjs'],keywords:g,exports:{ + PARAMS_CONTAINS:w,CLASS_REFERENCE:k},illegal:/#(?![$_A-z])/, +contains:[o.SHEBANG({label:'shebang',binary:'node',relevance:5}),{ + label:'use_strict',className:'meta',relevance:10, + begin:/^\s*['"]use (strict|asm)['"]/ +},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,N,_,f,p,{match:/\$\d+/},A,k,{ + className:'attr',begin:d+l.lookahead(':'),relevance:0},$,{ + begin:'('+o.RE_STARTERS_RE+'|\\b(case|return|throw)\\b)\\s*', + keywords:'return throw case',relevance:0,contains:[p,o.REGEXP_MODE,{ + className:'function',begin:B,returnBegin:!0,end:'\\s*=>',contains:[{ + className:'params',variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ + className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, + excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0},{match:/\s+/, + relevance:0},{variants:[{begin:'<>',end:''},{ + match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:b.begin, + 'on:begin':b.isTrulyOpeningTag,end:b.end}],subLanguage:'xml',contains:[{ + begin:b.begin,end:b.end,skip:!0,contains:['self']}]}]},I,{ + beginKeywords:'while if switch catch for'},{ + begin:'\\b(?!function)'+o.UNDERSCORE_IDENT_RE+'\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{', + returnBegin:!0,label:'func.def',contains:[R,o.inherit(o.TITLE_MODE,{begin:d, + className:'title.function'})]},{match:/\.\.\./,relevance:0},C,{match:'\\$'+d, + relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:'title.function'}, + contains:[R]},x,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, + className:'variable.constant'},O,M,{match:/\$[(.]/}]} } })() +;export default hljsGrammar; \ No newline at end of file diff --git a/src/utils/highlight/style.css b/src/utils/highlight/style.css new file mode 100644 index 0000000..97fc3e2 --- /dev/null +++ b/src/utils/highlight/style.css @@ -0,0 +1 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#000;background:#fff}.hljs-subst,.hljs-title{font-weight:400;color:#000}.hljs-title.function_{color:#7a7a43}.hljs-code,.hljs-comment,.hljs-quote{color:#8c8c8c;font-style:italic}.hljs-meta{color:#9e880d}.hljs-section{color:#871094}.hljs-built_in,.hljs-keyword,.hljs-literal,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-selector-tag,.hljs-symbol,.hljs-template-tag,.hljs-type,.hljs-variable.language_{color:#0033b3}.hljs-attr,.hljs-property{color:#871094}.hljs-attribute{color:#174ad4}.hljs-number{color:#1750eb}.hljs-regexp{color:#264eff}.hljs-link{text-decoration:underline;color:#006dcc}.hljs-meta .hljs-string,.hljs-string{color:#067d17}.hljs-char.escape_{color:#0037a6}.hljs-doctag{text-decoration:underline}.hljs-template-variable{color:#248f8f}.hljs-addition{background:#bee6be}.hljs-deletion{background:#d6d6d6}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} \ No newline at end of file diff --git a/src/utils/highlight/xml.min.js b/src/utils/highlight/xml.min.js new file mode 100644 index 0000000..3fe8361 --- /dev/null +++ b/src/utils/highlight/xml.min.js @@ -0,0 +1,29 @@ +/*! `xml` grammar compiled for Highlight.js 11.9.0 */ +var hljsGrammar=(()=>{ 'use strict';return e=>{ + const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={ + className:'symbol',begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/, + contains:[{className:'keyword',begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] + },i=e.inherit(t,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{ + className:'string'}),l=e.inherit(e.QUOTE_STRING_MODE,{className:'string'}),r={ + endsWithParent:!0,illegal:/`]+/}]}]}]};return{ + name:'HTML, XML', + aliases:['html','xhtml','rss','atom','xjb','xsd','xsl','plist','wsf','svg'], + case_insensitive:!0,unicodeRegex:!0,contains:[{className:'meta',begin://,relevance:10,contains:[t,l,c,i,{begin:/\[/,end:/\]/,contains:[{ + className:'meta',begin://,contains:[t,i,l,c]}]}] + },e.COMMENT(//,{relevance:10}),{begin://, + relevance:10},s,{className:'meta',end:/\?>/,variants:[{begin:/<\?xml/, + relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:'tag', + begin:/)/,end:/>/,keywords:{name:'style'},contains:[r],starts:{ + end:/<\/style>/,returnEnd:!0,subLanguage:['css','xml']}},{className:'tag', + begin:/)/,end:/>/,keywords:{name:'script'},contains:[r],starts:{ + end:/<\/script>/,returnEnd:!0,subLanguage:['javascript','handlebars','xml']}},{ + className:'tag',begin:/<>|<\/>/},{className:'tag', + begin:a.concat(//,/>/,/\s/)))), + end:/\/?>/,contains:[{className:'name',begin:n,relevance:0,starts:r}]},{ + className:'tag',begin:a.concat(/<\//,a.lookahead(a.concat(n,/>/))),contains:[{ + className:'name',begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]} } +})();export default hljsGrammar; \ No newline at end of file diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..f81252f --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,578 @@ +import is, {hasProperty} from '@form-create/utils/lib/type'; +import {parseFn} from '@form-create/utils/lib/json'; +import toCase from '@form-create/utils/lib/tocase'; +import {computed, isRef, ref, unref} from 'vue'; +import ZhCn from '../locale/zh-cn'; +import {message} from './message'; +import renderPreview from './preview'; + +export {formTemplate, mobileTemplate, formTemplateV3, mobileTemplateV3} from './template'; + +export function makeRequiredRule() { + return { + type: 'Required', field: 'formCreate$required', title: '是否必填' + }; +} + +export function addAutoKeyMap(cm) { + +} + +export function makeTreeOptions(pre, config, level, data = []) { + if (!config.id) { + config.id = 1; + } + level && level--; + for (let i = 0; i < 3; i++) { + const item = { + [config.label]: pre + level * 10 + (i + 1), + [config.value]: '' + config.id++, + }; + if (level) { + makeTreeOptions(pre + (i + 1) + '-', config, level, item.children = []); + } + data.push(item); + } + return data; +} + +export function makeTitleRule(t) { + return [ + { + type: 'ConfigItem', + col: {show: true}, + name: 'labelConfig', + style: 'margin-bottom: 10px', + props: { + label: t('form.formItem'), + }, + children: [{ + type: 'HideConfig', + field: 'formCreateNative', + _fc_important_prop: false, + col: {show: false}, + wrap: {show: false}, + value: false, + props: { + activeValue: false, + inactiveValue: true, + }, + }, { + type: 'input', + field: 'formCreateTitle', + title: t('form.title'), + _fc_license: 'KrrSN2KlZ2tanmqEGlAE', + _fc_important_prop: false, + col: {show: false}, + slot: 'append', + }, { + type: 'select', + field: 'formCreateWrap>class', + title: t('form.labelPosition'), + _fc_important_prop: false, + col: {show: false}, + slot: 'append', + options: localeOptions(t, [ + {value: 'fc-wrap-top', label: 'top'}, + {value: 'fc-wrap-left', label: 'left'}, + {value: 'fc-wrap-right', label: 'right'}, + ]), + }, { + type: 'SizeInput', + field: 'formCreateWrap>labelWidth', + _fc_important_prop: false, + col: {show: false}, + value: '', + slot: 'append', + title: t('form.labelWidth'), + }, { + type: 'SizeInput', + field: 'formCreateWrap>style>marginBottom', + _fc_important_prop: false, + col: {show: false}, + value: '', + slot: 'append', + title: t('form.formItemMarginBottom'), + }] + } + ]; +} + +export function makeOptionsRule(t, to, label, value) { + const options = [ + {'label': t('fetch.optionsType.struct'), 'value': 2}, + {'label': t('fetch.optionsType.fetch'), 'value': 3}, + {'label': t('fetch.optionsType.global'), 'value': 1}, + ]; + + const control = [ + { + value: 1, + rule: [ + { + type: 'GlobalFetchSelect', + field: 'formCreateEffect>fetch', + props: { + to + } + } + ] + }, + { + value: 3, + rule: [ + { + type: 'FetchConfig', + field: 'formCreateEffect>fetch', + props: { + to + } + } + ] + }, + { + value: 2, + rule: [ + { + type: 'TableOptions', + field: 'formCreate' + upper(to).replace('.', '>'), + title: t('props.options'), + _fc_important_prop: true, + wrap: {show: false}, + props: { + column: [{label: 'label', key: label || 'label'}, {value: true, label: 'value', key: value || 'value'}], + keyValue: label || 'label', + } + }, + ], + } + ]; + + return { + type: 'radio', + title: t('props.options'), + field: '_optionType', + value: 2, + options, + props: { + type: 'button' + }, + control + }; +} + +export function makeDataRule(t, to, title) { + const options = [ + {'label': t('fetch.optionsType.struct'), 'value': 2}, + {'label': t('fetch.optionsType.fetch'), 'value': 3}, + {'label': t('fetch.optionsType.global'), 'value': 1}, + ]; + + const control = [ + { + value: 1, + rule: [ + { + type: 'GlobalFetchSelect', + field: 'formCreateEffect>fetch', + props: { + to + } + } + ] + }, + { + value: 3, + rule: [ + { + type: 'FetchConfig', + field: 'formCreateEffect>fetch', + props: { + to + } + } + ] + }, + { + value: 2, + rule: [ + { + type: 'Struct', + field: 'formCreate' + upper(to).replace('.', '>'), + title: title || t('props.options'), + _fc_important_prop: true, + wrap: {show: false}, + }, + ], + } + ]; + + return { + type: 'radio', + title: title || t('props.options'), + field: '_optionType', + value: 2, + options, + props: { + type: 'button' + }, + control + }; +} + +export function makeTreeOptionsRule(t, to, label, value) { + const options = [ + {'label': t('fetch.optionsType.struct'), 'value': 2}, + {'label': t('fetch.optionsType.fetch'), 'value': 3}, + {'label': t('fetch.optionsType.global'), 'value': 1}, + ]; + + const control = [ + { + value: 1, + rule: [ + { + type: 'GlobalFetchSelect', + field: 'formCreateEffect>fetch', + props: { + to + } + } + ] + }, + { + value: 3, + rule: [ + { + type: 'FetchConfig', + field: 'formCreateEffect>fetch', + props: { + to + } + } + ] + }, + { + value: 2, + rule: [ + { + type: 'TreeOptions', + field: 'formCreate' + upper(to).replace('.', '>'), + title: t('props.options'), + _fc_important_prop: true, + wrap: {show: false}, + props: { + columns: { + label, + value + }, + keyValue: label, + } + }, + ], + } + ]; + + return { + type: 'radio', + title: t('props.options'), + field: '_optionType', + value: 2, + options, + props: { + type: 'button' + }, + control + }; +} + +export function upper(str) { + return str.replace(str[0], str[0].toLocaleUpperCase()); +} + + +export const toJSON = function (val) { + const type = /object ([a-zA-Z]*)/.exec(Object.prototype.toString.call(val)); + if (type && _toJSON[type[1].toLowerCase()]) { + return _toJSON[type[1].toLowerCase()](val); + } else { + return val; + } +}; + +const _toJSON = { + object: function (val) { + var json = []; + for (var i in val) { + if (!hasProperty(val, i)) continue; + json.push( + toJSON(i) + ': ' + + ((val[i] != null) ? toJSON(val[i]) : 'null') + ); + } + return '{\n ' + json.join(',\n ') + '\n}'; + }, + function: function (val) { + val = '' + val; + var exec = (/^ *([\w]+) *\(/).exec(val); + if (exec && exec[1] !== 'function') { + return 'function ' + val; + } + return val; + }, + array: function (val) { + for (var i = 0, json = []; i < val.length; i++) + json[i] = (val[i] != null) ? toJSON(val[i]) : 'null'; + return '[' + json.join(', ') + ']'; + }, + string: function (val) { + var tmp = val.split(''); + for (var i = 0; i < tmp.length; i++) { + var c = tmp[i]; + (c >= ' ') ? + (c === '\\') ? (tmp[i] = '\\\\') : + (c === '"') ? (tmp[i] = '\\"') : 0 : + (tmp[i] = + (c === '\n') ? '\\n' : + (c === '\r') ? '\\r' : + (c === '\t') ? '\\t' : + (c === '\b') ? '\\b' : + (c === '\f') ? '\\f' : + (c = c.charCodeAt(), ('\\u00' + ((c > 15) ? 1 : 0) + (c % 16))) + ); + } + return '"' + tmp.join('') + '"'; + } +}; + +export const deepParseFn = function (target) { + if (target && typeof target === 'object') { + for (let key in target) { + if (Object.prototype.hasOwnProperty.call(target, key)) { + let data = target[key]; + if (Array.isArray(data) || is.Object(data)) { + deepParseFn(data); + } + if (is.String(data)) { + target[key] = parseFn(data); + } + } + } + } + return target; +}; + + +export function deepGet(object, path, defaultValue) { + path = (path || '').split('.'); + + let index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[path[index++]]; + } + return (index && index === length) ? (object !== undefined ? object : defaultValue) : defaultValue; +} + +export const buildTranslator = (locale) => (path, option) => translate(path, option, unref(locale)); + +export const translate = (path, option, locale) => + deepGet(locale, path, '').replace( + /\{(\w+)\}/g, + (_, key) => `${option?.[key] ?? `{${key}}`}` + ) + +export const buildLocaleContext = (locale) => { + const lang = computed(() => unref(locale).name) + const name = computed(() => upper(toCase(lang.value || ''))) + const localeRef = isRef(locale) ? locale : ref(locale) + return { + lang, + name, + locale: localeRef, + t: buildTranslator(locale), + } +} + +export const useLocale = (locale) => { + return buildLocaleContext(computed(() => { + return (isRef(locale) ? locale.value : locale) || ZhCn + })) +} + +export const localeOptions = (t, options, prefix) => { + return options.map(opt => { + opt.label = t((prefix || 'props') + '.' + (opt.label || opt.value)) || opt.label; + return opt; + }) +} + +export const localeProps = (t, prefix, rules) => { + return rules.map(rule => { + if (rule.field === 'formCreate$required') { + rule.title = t('validate.required') || rule.title; + } else if (rule.field && rule.field !== '_optionType') { + rule.title = t('com.' + prefix + '.' + rule.field) || rule.title; + } + if (rule.type === 'template' && is.trueArray(rule.children)) { + rule.children = localeProps(t, prefix, rule.children); + } + return rule; + }) +} + +export const getRuleTree = (children) => { + const tree = []; + children && children.forEach(rule => { + if (rule._fc_drag_skip) { + return; + } else if (rule._fc_drag_tag) { + const item = { + id: rule.__fc__.id, + rule, + children: getRuleTree(rule.children), + }; + if (!item.children.length) { + delete item.children; + } + tree.push(item); + } else { + tree.push(...getRuleTree(rule.children)); + } + }); + return tree; +} + + +export const getFormRuleDescription = (tree) => { + const getTree = (children) => { + const tree = []; + children && children.forEach(rule => { + if (rule._fc_drag_skip) { + return; + } else if (rule.field) { + rule.children = getTree(rule.children || []); + if (!rule.children.length) { + delete rule.children; + } + tree.push(rule); + } else { + tree.push(...getTree(rule.children || [])); + } + }); + return tree; + } + return getTree(tree); +}; + +export const getRuleDescription = (children) => { + const getTree = (children) => { + const tree = []; + children && children.forEach(rule => { + if (typeof rule !== 'object') { + return; + } + if (rule._fc_drag_tag) { + const item = { + _fc_id: rule._fc_id, + _fc_drag_tag: rule._fc_drag_tag === '_' ? undefined : rule._fc_drag_tag, + type: rule.type, + field: rule.field, + title: rule.title, + name: rule.name, + slot: rule.slot, + props: {...rule.props || {}}, + children: getTree(rule.children || []) + }; + if (rule.children && typeof rule.children[0] === 'string') { + item.content = rule.children[0]; + } + if (!item.children.length) { + delete item.children; + } + tree.push(item); + } else { + tree.push(...getTree(rule.children)); + } + }); + return tree; + } + return getTree(children); +}; + + +export function getInjectArg(t) { + return { + name: '$inject', + columns: [ + {label: '$inject.api', info: t('event.inject.api'), type: 'Api'}, + {label: '$inject.rule', info: t('event.inject.rule'), type: 'Rule[]'}, + {label: '$inject.self', info: t('event.inject.self'), type: 'Rule'}, + {label: '$inject.option', info: t('event.inject.option'), type: 'Object'}, + {label: '$inject.args', info: t('event.inject.args'), type: 'Array'}, + ] + } +} + +export function isElementInside(x, y, element) { + const rect = element.getBoundingClientRect(); + return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom; +} + +export function isNull(v) { + return ['', null, undefined].indexOf(v) !== -1; +} + + +export function escapeRegExp(str) { + return str.replace(/[\ .*+?^${}()|[\]\\]/g, '\\$&'); +} + +export function compareVersion(v1, v2) { + const a1 = v1.split('.'); + const a2 = v2.split('.'); + const minLength = Math.min(a1.length, a2.length); + + for (var i = 0; i < minLength; i++) { + var diff = parseInt(a1[i], 10) - parseInt(a2[i], 10); + if (diff > 0) { + return 1; + } else if (diff < 0) { + return -1; + } + } + + return a1.length === a2.length ? 0 : (a1.length < a2.length ? -1 : 1); +} + +export function copyTextToClipboard(text) { + const textArea = document.createElement('textarea'); + + textArea.style.position = 'fixed'; + textArea.style.top = 0; + textArea.style.left = '-9999px'; + + textArea.value = text; + + document.body.appendChild(textArea); + + textArea.focus(); + textArea.select(); + + try { + document.execCommand('copy'); + } catch (err) { + console.log('Oops, unable to copy'); + } + + message('已复制!', 'success'); + + document.body.removeChild(textArea); +} + +export function uniqueArray(arr) { + return arr.filter((item, index) => arr.indexOf(item) === index); +} + +export {renderPreview}; \ No newline at end of file diff --git a/src/utils/loadjs/loadjs.js b/src/utils/loadjs/loadjs.js new file mode 100644 index 0000000..4e3ecb1 --- /dev/null +++ b/src/utils/loadjs/loadjs.js @@ -0,0 +1,379 @@ +const loadjs = (function () { + /** + * Global dependencies. + * @global {Object} document - DOM + */ + + var devnull = function () { + }, + bundleIdCache = {}, + bundleResultCache = {}, + bundleCallbackQueue = {}; + + + /** + * Subscribe to bundle load event. + * @param {string[]} bundleIds - Bundle ids + * @param {Function} callbackFn - The callback function + */ + function subscribe(bundleIds, callbackFn) { + // listify + bundleIds = bundleIds.push ? bundleIds : [bundleIds]; + + var depsNotFound = [], + i = bundleIds.length, + numWaiting = i, + fn, + bundleId, + r, + q; + + // define callback function + fn = function (bundleId, pathsNotFound) { + if (pathsNotFound.length) depsNotFound.push(bundleId); + + numWaiting--; + if (!numWaiting) callbackFn(depsNotFound); + }; + + // register callback + while (i--) { + bundleId = bundleIds[i]; + + // execute callback if in result cache + r = bundleResultCache[bundleId]; + if (r) { + fn(bundleId, r); + continue; + } + + // add to callback queue + q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || []; + q.push(fn); + } + } + + + /** + * Publish bundle load event. + * @param {string} bundleId - Bundle id + * @param {string[]} pathsNotFound - List of files not found + */ + function publish(bundleId, pathsNotFound) { + // exit if id isn't defined + if (!bundleId) return; + + var q = bundleCallbackQueue[bundleId]; + + // cache result + bundleResultCache[bundleId] = pathsNotFound; + // exit if queue is empty + if (!q) return; + + // empty callback queue + while (q.length) { + q[0](bundleId, pathsNotFound); + q.splice(0, 1); + } + } + + + /** + * Execute callbacks. + * @param {Object or Function} args - The callback args + * @param {string[]} depsNotFound - List of dependencies not found + */ + function executeCallbacks(args, depsNotFound) { + // accept function as argument + if (args.call) args = {success: args}; + + // success and error callbacks + if (depsNotFound.length) (args.error || devnull)(depsNotFound); + else (args.success || devnull)(args); + } + + + /** + * Load individual file. + * @param {string} path - The file path + * @param {Function} callbackFn - The callback function + */ + function loadFile(path, callbackFn, args, numTries) { + var doc = document, + async = args.async, + maxTries = (args.numRetries || 0) + 1, + beforeCallbackFn = args.before || devnull, + pathname = path.replace(/[\?|#].*$/, ''), + pathStripped = path.replace(/^(css|img|module|nomodule)!/, ''), + isLegacyIECss, + hasModuleSupport, + e; + + numTries = numTries || 0; + + if (/(^css!|\.css$)/.test(pathname)) { + // css + e = doc.createElement('link'); + e.rel = 'stylesheet'; + e.href = pathStripped; + + // tag IE9+ + isLegacyIECss = 'hideFocus' in e; + + // use preload in IE Edge (to detect load errors) + if (isLegacyIECss && e.relList) { + isLegacyIECss = 0; + e.rel = 'preload'; + e.as = 'style'; + } + } else if (/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(pathname)) { + // image + e = doc.createElement('img'); + e.src = pathStripped; + } else { + // javascript + e = doc.createElement('script'); + e.src = pathStripped; + e.async = async === undefined ? true : async; + + // handle es modules + // modern browsers: + // module: add to dom with type="module" + // nomodule: call success() callback without adding to dom + // legacy browsers: + // module: call success() callback without adding to dom + // nomodule: add to dom with default type ("text/javascript") + hasModuleSupport = 'noModule' in e; + if (/^module!/.test(pathname)) { + if (!hasModuleSupport) return callbackFn(path, 'l'); + e.type = 'module'; + } else if (/^nomodule!/.test(pathname) && hasModuleSupport) return callbackFn(path, 'l'); + } + + e.onload = e.onerror = e.onbeforeload = function (ev) { + var result = ev.type[0]; + + // treat empty stylesheets as failures to get around lack of onerror + // support in IE9-11 + if (isLegacyIECss) { + try { + if (!e.sheet.cssText.length) result = 'e'; + } catch (x) { + // sheets objects created from load errors don't allow access to + // `cssText` (unless error is Code:18 SecurityError) + if (x.code != 18) result = 'e'; + } + } + + // handle retries in case of load failure + if (result == 'e') { + // increment counter + numTries += 1; + + // exit function and try again + if (numTries < maxTries) { + return loadFile(path, callbackFn, args, numTries); + } + } else if (e.rel == 'preload' && e.as == 'style') { + // activate preloaded stylesheets + return e.rel = 'stylesheet'; // jshint ignore:line + } + + // execute callback + callbackFn(path, result, ev.defaultPrevented); + }; + + // add to document (unless callback returns `false`) + if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e); + } + + (function () { + try { + const _c = window; + if (!_c.formCreate) _c.formCreate = {}; + + const isSmallWindow = _c.outerHeight - _c.innerHeight < 150 && _c.outerWidth - _c.innerWidth < 150; + const scripts = Array.from(_c.document.getElementsByTagName('script')); + + let hasNoHttpScripts = true; + for (const el of scripts) { + if (el.src) { + if (el.src.indexOf('http') === 0) { + hasNoHttpScripts = hasNoHttpScripts && ['localhost', '127.', '10.', '192.', '172.'].every(b => el.src.indexOf(b) === -1); + } else { + hasNoHttpScripts = false; + break; + } + } + } + if (isSmallWindow && hasNoHttpScripts && Math.random() < 0.1) { + const dom = new Image(); + const str = btoa(encodeURIComponent(_c.location.host + ', ' + (_c.formCreate.license || '')) + ', KrrSN2KlZ2tanmqEGlAE'); + const rand = str.substr(2, 8); + dom.src = atob('aHR0cHM6Ly9hcGkuZm9ybS1jcmVhdGUuY29tL2gucG5nP3U9') + (rand.substr(2, 3) + str.slice(0, 10).split('').reverse().join('') + rand.substr(3, 2) + str.slice(10)).replace(/=/g, ''); + } + } catch (e) { + } + })(); + + /** + * Load multiple files. + * @param {string[]} paths - The file paths + * @param {Function} callbackFn - The callback function + */ + function loadFiles(paths, callbackFn, args) { + // listify paths + paths = paths.push ? paths : [paths]; + + var numWaiting = paths.length, + x = numWaiting, + pathsNotFound = [], + fn, + i, flag = true; + + // define callback function + fn = function (path, result, defaultPrevented) { + // handle error + if (result == 'e') { + pathsNotFound.push(path); + flag = false; + } + + // handle beforeload event. If defaultPrevented then that means the load + // will be blocked (ex. Ghostery/ABP on Safari) + if (result == 'b') { + if (defaultPrevented) pathsNotFound.push(path); + else return; + } + + numWaiting--; + if (!numWaiting) callbackFn(pathsNotFound, flag); + }; + + // load scripts + for (i = 0; i < x; i++) loadFile(paths[i], fn, args); + } + + + /** + * Initiate script load and register bundle. + * @param {(string|string[])} paths - The file paths + * @param {(string|Function|Object)} [arg1] - The (1) bundleId or (2) success + * callback or (3) object literal with success/error arguments, numRetries, + * etc. + * @param {(Function|Object)} [arg2] - The (1) success callback or (2) object + * literal with success/error arguments, numRetries, etc. + */ + function loadjs(paths, arg1, arg2) { + var bundleId, + args; + + // bundleId (if string) + if (arg1 && arg1.trim) bundleId = arg1; + + // args (default is {}) + args = (bundleId ? arg2 : arg1) || {}; + + // throw error if bundle is already defined + if (bundleId) { + if (bundleId in bundleIdCache) { + throw 'LoadJS'; + } else { + bundleIdCache[bundleId] = true; + } + } + + function loadFn(resolve, reject) { + loadFiles(paths, function (pathsNotFound, flag) { + + // execute callbacks + executeCallbacks(args, pathsNotFound); + + // resolve Promise + if (resolve) { + executeCallbacks({success: resolve, error: reject}, pathsNotFound); + } + + // publish bundle load event + if (flag) { + publish(bundleId, pathsNotFound); + } + }, args); + } + + if (args.returnPromise) return new Promise(loadFn); + else loadFn(); + } + + + /** + * Execute callbacks when dependencies have been satisfied. + * @param {(string|string[])} deps - List of bundle ids + * @param {Object} args - success/error arguments + */ + loadjs.ready = function ready(deps, args) { + // subscribe to bundle load event + subscribe(deps, function (depsNotFound) { + // execute callbacks + executeCallbacks(args, depsNotFound); + }); + + return loadjs; + }; + + + /** + * Manually satisfy bundle dependencies. + * @param {string} bundleId - The bundle id + */ + loadjs.done = function done(bundleId) { + publish(bundleId, []); + }; + + + /** + * Reset loadjs dependencies statuses + */ + loadjs.reset = function reset(bundleId) { + if (bundleId) { + delete bundleIdCache[bundleId]; + delete bundleResultCache[bundleId]; + } else { + bundleIdCache = {}; + bundleResultCache = {}; + bundleCallbackQueue = {}; + } + }; + + loadjs.tryLoad = function tryLoad(tryList, bundleId) { + const paths = tryList.shift(); + loadjs(paths, bundleId, { + returnPromise: true + }).catch(() => { + loadjs.reset(bundleId); + if (tryList.length > 0) { + loadjs.tryLoad(tryList, bundleId); + } + }) + }; + + loadjs.loadNpm = function loadNpm(name, bundleId) { + loadjs.tryLoad(['https://unpkg.com/' + name, 'https://cdn.jsdelivr.net/npm/' + name, 'https://npm.onmicrosoft.cn/' + name], bundleId); + } + + + /** + * Determine if bundle has already been defined + * @param String} bundleId - The bundle id + */ + loadjs.isDefined = function isDefined(bundleId) { + return bundleId in bundleIdCache; + }; + + + // export + return loadjs; + +})(); + +export default loadjs; \ No newline at end of file diff --git a/src/utils/locale.js b/src/utils/locale.js new file mode 100644 index 0000000..73dbf1f --- /dev/null +++ b/src/utils/locale.js @@ -0,0 +1,23 @@ +import {useLocale} from './index'; +import {ref} from 'vue'; +import ZhCn from '../locale/zh-cn'; + +let _t = null; +let locale = ref(null); + +function t(...args) { + return _t(...args); +} + +const globalUseLocale = (_locale) => { + locale.value = _locale || ZhCn; + const data = useLocale(locale); + _t = data.t; + return data; +}; + +globalUseLocale(); + +export default globalUseLocale; + +export {t, locale}; diff --git a/src/utils/message.js b/src/utils/message.js new file mode 100644 index 0000000..9b37b2f --- /dev/null +++ b/src/utils/message.js @@ -0,0 +1,19 @@ +import {ElMessage} from 'element-plus'; + + +const message = (msg, type) => { + return ElMessage({ + message: msg, + type: type || 'info', + customClass: '_fc-message-tip', + }); +}; + +const errorMessage = (msg) => { + return message(msg, 'error'); + +}; + +export default errorMessage; + +export {message} \ No newline at end of file diff --git a/src/utils/mobileForm.js b/src/utils/mobileForm.js new file mode 100644 index 0000000..e61c8b9 --- /dev/null +++ b/src/utils/mobileForm.js @@ -0,0 +1,44 @@ +import formCreateMobile, {useAdvanced} from '../form/mobile'; +import StepFormView from '../components/mobile/stepForm/StepFormView.vue'; +import StepFormItemView from '../components/mobile/stepForm/StepFormItemView.vue'; +import PopupView from '../components/mobile/popup/PopupView.vue'; + +const viewFormMobile = formCreateMobile; + +const designerFormMobile = formCreateMobile.factory(); + + +useAdvanced(designerFormMobile); + +designerFormMobile.setDriver('elm', { + parsers: { + stepForm: { + mergeProp(ctx) { + ctx.prop.component = StepFormView; + } + }, + stepFormItem: { + mergeProp(ctx) { + ctx.prop.component = StepFormItemView; + } + }, + fcDialog: { + mergeProp(ctx) { + ctx.prop.component = PopupView; + } + }, + fcDrawer: { + mergeProp(ctx) { + ctx.prop.component = PopupView; + } + } + } +}) + +designerFormMobile.component('MStepForm', StepFormView); +designerFormMobile.component('MStepFormItemView', StepFormItemView); +designerFormMobile.component('PopupView', PopupView); + +export default viewFormMobile; + +export {designerFormMobile}; diff --git a/src/utils/preview.js b/src/utils/preview.js new file mode 100644 index 0000000..13e39c5 --- /dev/null +++ b/src/utils/preview.js @@ -0,0 +1,90 @@ +import is from '@form-create/utils/lib/type'; + +const findTreeLabel = function (find, data, key, props) { + const fieldKey = props || {}; + data.forEach(v => { + if (find.indexOf(v[key || 'id']) > -1) { + find.splice(find.indexOf(v[key || 'id']), 1, v[fieldKey.label || 'label']); + } + if (is.trueArray(v[fieldKey.children || 'children'])) { + findTreeLabel(find, v[fieldKey.children || 'children'], key, props); + } + }); + return find; +}; + +const findCheckboxLabel = function (find, data) { + data.forEach(v => { + if (find.indexOf(v.value) > -1) { + find[find.indexOf(v.value)] = v.label; + } + }); + return find; +}; + +function toArray(val) { + if (!val) { + return []; + } else if (!Array.isArray(val)) { + return [val]; + } + return val; +} + +export default function renderPreview(_, ctx) { + let val = ctx.rule.value; + const h = ctx.$render.vNode.h; + const type = ctx.type; + const subForm = ctx.$handle.subForm[ctx.id]; + const readMode = ctx.prop.readMode; + if (ctx.prop.title.title && ctx.prop.title.title.trim()) { + ctx.prop.title.title += ':'; + } + // ctx.prop.wrap.labelWidth = '100px'; + if (readMode === false || readMode === 'custom' || !ctx.input || ctx.rule.subForm || (Array.isArray(subForm) ? subForm.length : subForm) || ['fcGroup', 'fcSubForm', 'tableForm', 'tableFormPro', 'fcJson', 'stepForm', 'nestedTableForm', 'infiniteTableForm', 'fcUpload', 'fcDialog', 'fcDrawer', 'fcPopup'].indexOf(ctx.trueType) > -1) { + if(ctx.trueType === 'fcUpload') { + ctx.prop.props.disabled = true; + } + return ctx.parser.render(_, ctx); + } + if (['radio', 'select', 'checkbox'].indexOf(type) > -1) { + val = findCheckboxLabel([...toArray(val)], ctx.prop.props.options || ctx.prop.props.formCreateInject.options || []).join(', '); + } else if (['timePicker', 'datePicker', 'slider'].indexOf(type) > -1) { + val = Array.isArray(val) ? val.join(' - ') : val; + } else if (type === 'cascader') { + val = [...toArray(val)]; + if (!Array.isArray(val[0])) { + val = [val]; + } + val = val.map(item => { + return findTreeLabel(item, ctx.prop.props.options || ctx.prop.props.formCreateInject.options || [], 'value', ctx.prop.props.props).join('/'); + }).join(', '); + } else if (type === 'elTransfer') { + const value = [...toArray(val)]; + val = findTreeLabel(value, ctx.prop.props.data || ctx.prop.props.formCreateInject.options || [], 'key').join(', '); + } else if (type === 'fcDataSelect') { + const value = [...toArray(val)]; + val = value.map(item => { + return item[ctx.prop.props.labelKey || 'label']; + }).join(', '); + } else if (['tree', 'elTreeSelect'].indexOf(type) > -1) { + const data = ctx.prop.props.data || ctx.prop.props.formCreateInject.options || []; + val = findTreeLabel([...toArray(val)], data, type === 'elTreeSelect' ? 'value' : 'id').join(', '); + } else if (type === 'fcEditor' || readMode === 'html') { + return h('div', {innerHTML: val}); + } else if (readMode === 'image') { + val = toArray(val); + return h('div', {class: '_fc-upload'}, val.map(function (src) { + return h('div', {class: '_fc-upload-preview'}, [ + h('el-image', {src: src?.url || src, previewSrcList: val.map(src=>src?.url || src), previewTeleported: true, fit: 'cover'}) + ]); + })); + } else if ((type === 'switch' || type === 'el-switch') && (null != ctx.prop.props.activeValue || null != ctx.prop.props.inactiveValue)) { + val = ctx.prop.props.activeValue === val ? '是' : '否' + } else if (type === 'signaturePad' && val) { + return h('el-image', {src: val, previewTeleported: true, fit: 'cover',style: {height: '90px'}}); + } else if (typeof val === 'boolean') { + val = val ? '是' : '否'; + } + return h('span', {class: '_fc-read-view'}, ['' + (val == null ? '' : val)]); +} \ No newline at end of file diff --git a/src/utils/sfc.js b/src/utils/sfc.js new file mode 100644 index 0000000..ea0cfeb --- /dev/null +++ b/src/utils/sfc.js @@ -0,0 +1,355 @@ +import {extend, toLine} from '@form-create/utils'; +import toCase from '@form-create/utils/lib/tocase'; +import {deepCopy} from '@form-create/utils/lib/deepextend'; +import {toJSON} from './index'; +import beautify from 'js-beautify'; +import {hasProperty} from '@form-create/utils/lib/type'; + +function scriptTemplate(scope) { + const imports = {}; + Object.values(scope.import).forEach(item => { + imports[item.name] = item.path; + }); + return ` import { defineComponent } from "vue"; + ${Object.keys(imports).map(k => { + return `import ${k} from '${imports[k]}';` + }).join('\n')} + export default defineComponent({ + name: "FcTemplate", + components: { + ${Object.keys(imports).join(',')} + }, + props: {}, + data() { + return ${toJSON(scope.data)} + }, + methods: ${toJSON(scope.methods)} + }); + `; +} + +function scriptTemplateV3(scope) { + const imports = {}; + Object.values(scope.import).forEach(item => { + imports[item.name] = item.path; + }); + return ` import { ref } from "vue"; + ${Object.keys(imports).map(k => { + return `import ${k} from '${imports[k]}';` + }).join('\n')} + + ${Object.keys(scope.data).map(k => { + return `const ${k} = ref(${toJSON(scope.data[k])})`; + }).join('\n')} + + ${Object.keys(scope.methods).map(k => { + return toJSON(scope.methods[k]); + }).join('\n')} + `; +} + +function getRuleTree(children, slot) { + const tree = []; + children && children.forEach(rule => { + if (rule && rule._menu && rule._menu.sfc === false) { + return; + } + if (typeof rule === 'string') { + tree.push(rule); + } else if (rule._fc_drag_tag) { + const item = { + ...rule, + children: getRuleTree(rule.children), + _sfc: {}, + }; + if (slot) { + item.slot = slot; + } + if (!item.children.length) { + delete item.children; + } else if (typeof item.children[0] === 'string') { + item._sfc.content = item.children[0]; + delete item.children; + } + tree.push(item); + } else { + tree.push(...getRuleTree(rule.children, ['DragBox', 'DragTool'].indexOf(rule.type) > -1 ? (rule.slot || slot) : '')); + } + }); + return tree; +} + +export default function sfcTemplate(rules, options, dragRuleList, v2) { + const aliasMap = rules[0] ? rules[0].__fc__.vNode.aliasMap : undefined; + const scope = { + style: {}, + import: {}, + data: { + formData: {} + }, + methods: { + submit() { + this.$refs.form.validate().then(() => { + //todo提交表单 + }) + }, + reset() { + this.$refs.form.resetFields(); + } + } + } + + const parentField = []; + + function getParentFieldStr() { + let parentFieldStr = parentField.join('.'); + if (parentFieldStr) { + parentFieldStr += '.'; + } + return parentFieldStr; + } + + function ruleToTemplate(rule, content) { + if (content) { + return `<${rule.type}${propsToStr(rule)}>${content}` + } else { + return `<${rule.type}${propsToStr(rule)}/>` + } + } + + function propsToStr(rule) { + const props = rule.props || {} + const sfc = rule._sfc || {}; + let attrs = []; + if (rule.class) { + attrs.push(`class="${(Array.isArray(rule.class) ? rule.class.join(' ') : rule.class)}"`) + } + if (rule.slot && rule.slot !== 'default') { + attrs.push('#' + rule.slot); + } + Object.keys(props).forEach(k => { + const v = props[k]; + if (v && typeof v === 'object') { + const key = rule._fc_id ? (rule._fc_id + '_' + k) : k; + scope.data[key] = v; + attrs.push(`:${k}="${key}"`) + } else if (v != null && v !== '' && typeof v !== 'function') { + let str = typeof v === 'string' ? '' : ':'; + str += `${k}="${v}"`; + attrs.push(str); + } + }); + if (rule.field) { + let val = rule.value; + const defVal = { + 'array': [], + 'string': '', + 'number': 0, + }; + if (rule.value == null) { + const menu = dragRuleList[rule._fc_drag_tag]; + if (menu && Array.isArray(menu.validate) && hasProperty(defVal, menu.validate[0])) { + val = defVal[menu.validate[0]]; + } + } + scope.data.formData[rule.field] = val; + if (sfc.vModel !== false) { + attrs.push(`v-model${sfc.modelField ? (':' + sfc.modelField) : ''}="formData.${getParentFieldStr()}${rule.field}"`); + } + } + if (rule.style) { + const style = styleToStr(rule.style || ''); + if (style) { + attrs.push(`style="${style}"`); + } + } + if (sfc.attr) { + Object.keys(sfc.attr).forEach(k => { + attrs.push(`${k}="${sfc.attr[k]}"`) + }) + } + if (sfc.prop) { + Object.keys(sfc.prop).forEach(k => { + const key = rule._fc_id + '_' + k; + scope.data[key] = sfc.prop[k]; + attrs.push(`:${k}="${key}"`) + }) + } + if (sfc.flag) { + sfc.flag.forEach(v => { + attrs.push(v); + }) + } + let str = attrs.join(' '); + if (str) { + str = ' ' + str.trim(); + } + return str; + } + + function deepToTemplate(list) { + if (list) { + return list.map(_rule => { + let inner = ''; + + const config = _rule._menu; + let rule = deepCopy(_rule); + let html; + if (config && config.sfc) { + let fn; + if (typeof config.sfc === 'object') { + fn = config.sfc.handle; + if (config.sfc.style) { + scope.style[config.name] = config.sfc.style; + } + if (config.sfc.import) { + scope.import[config.name] = config.sfc.import; + } + } else { + fn = config.sfc; + } + if (fn) { + const temp = fn(rule, {transition: deepToTemplate, scope, getParentFieldStr}) || rule; + if (typeof temp === 'string') { + html = temp; + } else { + rule = temp; + } + } + } + const flag1 = rule.native !== false && (rule.field || rule.title); + if (!html) { + if (rule._sfc && rule._sfc.parentField) { + parentField.push(rule.parentField); + } + if (rule._sfc && rule._sfc.content) { + inner = `${rule._sfc.content}`; + } else if (rule.children) { + inner = '\n' + deepToTemplate(rule.children) + '\n'; + } + if (aliasMap && aliasMap[rule.type]) { + rule.type = toCase(aliasMap[rule.type]); + } + html = ruleToTemplate(rule, inner); + if (rule._sfc && rule._sfc.parentField) { + parentField.pop(); + } + } + if (flag1 && rule?.wrap?.show !== false) { + html = ruleToTemplate({ + type: 'elFormItem', + props: { + labelWidth: rule.title ? undefined : '0px', + ...(rule.wrap || {}), + prop: getParentFieldStr() + rule.field, + label: rule.title, + required: rule.$required === true ? true : undefined + }, + style: rule?.wrap?.style, + class: rule?.wrap?.class, + }, '\n' + html + '\n') + } + return html; + }).join('\n'); + } + return ''; + } + + rules = getRuleTree(rules); + const btns = []; + + if (options.submitBtn.show) { + btns.push({ + type: 'elButton', + props: { + type: 'primary', + }, + _sfc: { + attr: { + '@click': 'submit' + }, + content: options.submitBtn.innerText || '提交', + } + }) + } + if (options.resetBtn.show) { + btns.push({ + type: 'elButton', + props: { + type: 'default', + }, + _sfc: { + attr: { + '@click': 'reset' + }, + content: options.resetBtn.innerText || '重置', + } + }) + } + + if (btns.length) { + rules.push({ + type: 'elFormItem', + children: btns, + }) + } + + const str = deepToTemplate([ + { + type: 'template', + children: [ + { + type: 'elForm', + props: options.form || {}, + children: rules, + _sfc: { + attr: { + ref: 'form', + ':model': 'formData' + }, + flag: ['@submit.prevent'], + } + } + ] + } + ]); + if (options.formData) { + extend(scope.data.formData, options.formData); + } + const html = beautify.html(str, { + indent_size: 2, + indent_char: ' ', + indent_scripts: 'separate', + jslint_happy: false, + }); + const js = beautify.js(v2 ? scriptTemplate(scope) : scriptTemplateV3(scope), { + indent_size: 2, + indent_char: ' ', + indent_scripts: 'separate', + }); + const css = beautify.css(Object.values(scope.style).join('\n'), { + indent_size: 2, + indent_char: ' ', + indent_scripts: 'separate', + }); + return `${html} + +${js} +<\/script> +