diff --git a/.gitignore b/.gitignore index f306598..4c59fdd 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,8 @@ es/ *.swp *.dia~ +npm-lock.json + npm-debug.log* yarn-debug.log* yarn-error.log* diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..0822280 --- /dev/null +++ b/.npmrc @@ -0,0 +1,4 @@ +registry=https://registry.npmmirror.com +shamefully-hoist=true +auto-install-peers=true +strict-peer-dependencies=false diff --git a/README.md b/README.md index b4f7da2..5b2282f 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,41 @@ -### @alilc/lowcode-engine-ext +## @felce/lowcode-engine-ext ### 简介 -lowcode-engine-ext 是阿里低代码引擎官方提供的 setter 和 setter 必须依赖的插件集合 -setter(设置器) 是用来展示每个物料的属性,[setter使用说明手册](https://www.yuque.com/lce/doc/cl03wo_nmhznb) [官方setter列表说明](https://www.yuque.com/lce/doc/oc220p#fl46) +lowcode-engine-ext 引擎官方提供的 setter 和 setter 必须依赖的插件集合 + +setter(设置器) 是用来展示每个物料的属性,[setter 使用说明手册](https://www.yuque.com/lce/doc/cl03wo_nmhznb) [官方 setter 列表说明](https://www.yuque.com/lce/doc/oc220p#fl46) ### 使用方式 -使用 CDN 方式引用,下方是官方提供的两个稳定 CDN +使用 CDN 方式引用 -#### 方式 1:alifd cdn - 1: alifd cdn -```html -https://alifd.alicdn.com/npm/@alilc/lowcode-engine-ext@1.0.5/dist/css/engine-ext.css +#### unpkg -https://alifd.alicdn.com/npm/@alilc/lowcode-engine-ext@1.0.5/dist/js/engine-ext.js +```html +https://unpkg.com/@felce/lowcode-engine-ext@1.1.1/dist/css/engine-ext.css +https://unpkg.com/@felce/lowcode-engine-ext@1.1.1/dist/js/engine-ext.js ``` -#### 方式 2: uipaas cdn +#### npmmirror + +✨ 国内推荐使用 npm 镜像,速度更快 + ```html -https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine-ext/1.0.5/dist/css/engine-ext.css +https://registry.npmmirror.com/@felce/lowcode-engine-ext/1.1.1/files/dist/css/engine-ext.css +https://registry.npmmirror.com/@felce/lowcode-engine-ext/1.1.1/files/dist/js/engine-ext.js +``` + +#### jsdelivr -https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine-ext/1.0.5/dist/js/engine-ext.js +```html +https://cdn.jsdelivr.net/npm/@felce/lowcode-engine-ext@1.1.1/dist/css/engine-ext.css +https://cdn.jsdelivr.net/npm/@felce/lowcode-engine-ext@1.1.1/dist/js/engine-ext.js ``` #### 拓展变量绑定面板 -通过传入extraDataMap拓展属性绑定面板 +通过传入 extraDataMap 拓展属性绑定面板 ```typescript ctx.skeleton.add({ @@ -48,13 +57,11 @@ ctx.skeleton.add({ }, { label: 'prop2', - children: [ - { label: 'propxxx', value: 1 } - ] - } + children: [{ label: 'propxxx', value: 1 }], + }, ], - } - } + }, + }, }, }); ``` diff --git a/build.cloud.json b/build.cloud.json deleted file mode 100644 index 28078fb..0000000 --- a/build.cloud.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "entry": { - "engine-ext": "./src/index.tsx" - }, - "library": "___AliLowCodeEngineExt___", - "libraryTarget": "umd", - "externals": { - "react": "var window.React", - "react-dom": "var window.ReactDOM", - "prop-types": "var window.PropTypes", - "rax": "var window.Rax", - "@alilc/lowcode-engine": "var window.AliLowCodeEngine", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", - "moment": "var moment", - "lodash": "var _", - "@alifd/next": "var Next" - }, - "polyfill": false, - "outputDir": "dist", - "vendor": false, - "ignoreHtmlTemplate": true, - "sourceMap": true, - "plugins": [ - "build-plugin-react-app", - ["build-plugin-fusion", { - "externalNext": "umd" - }], - ["build-plugin-moment-locales", { - "locales": ["zh-cn"] - }], - "./build.plugin.js" - ] -} diff --git a/build.json b/build.json deleted file mode 100644 index a0e167e..0000000 --- a/build.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - - "externals": { - "react": "var window.React", - "react-dom": "var window.ReactDOM", - "prop-types": "var window.PropTypes", - "rax": "var window.Rax", - "@alilc/lowcode-engine": "var window.AliLowCodeEngine", - "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt", - "moment": "var moment", - "lodash": "var _", - "@alifd/next": "var Next" - }, - "plugins": [ - "build-plugin-component", - [ - "build-plugin-fusion", - { - "themePackage": "@alifd/theme-lowcode-light", - "externalNext": "umd" - } - ], - [ - "build-plugin-moment-locales", - { - "locales": ["zh-cn"] - } - ], - "./build.plugin.js" - ] -} diff --git a/build.plugin.js b/build.plugin.js deleted file mode 100644 index bd2137e..0000000 --- a/build.plugin.js +++ /dev/null @@ -1,29 +0,0 @@ -const TsconfigPathsPlugin = require('tsconfig-paths-webpack-plugin'); - -module.exports = ({ context,onGetWebpackConfig }) => { - onGetWebpackConfig((config) => { - config.resolve.plugin('tsconfigpaths').use(TsconfigPathsPlugin, [ - { - configFile: './tsconfig.json', - }, - ]); - - /* - config - // 定义插件名称 - .plugin('MonacoWebpackPlugin') - // 第一项为具体插件,第二项为插件参数 - .use(new MonacoWebpackPlugin({ - languages:["javascript","css","json"] - }), []); - */ - config.plugins.delete('hot'); - config.devServer.hot(false); - if (context.command === 'start') { - config.devtool('inline-source-map'); - } - // console.log('====context',context.command) - - // config.devtool('inline-source-map'); - }); -}; diff --git a/demo/index.less b/demo/index.less new file mode 100644 index 0000000..3bd5845 --- /dev/null +++ b/demo/index.less @@ -0,0 +1,40 @@ +.setter-container { + width: 100%; + height: 100%; + padding: 20px 12px; + box-sizing: border-box; + overflow-y: auto; +} +.lc-title { + display: inline-flex; + align-items: center; + color: var(--color-text); + padding: 10px; + .lc-title-icon { + display: flex; + align-items: center; + margin-right: 4px; + img { + width: 16px; + height: 16px; + filter: brightness(0) invert(1); + } + } + &.only-icon { + .lc-title-icon { + margin-right: 0; + } + } + &.has-tip { + cursor: help; + text-decoration-line: underline; + text-decoration-style: dashed; + text-decoration-color: var(--color-text-light, rgba(31, 56, 88, .3)); + } + line-height: initial !important; + word-break: break-all; +} + +.actived .lc-title { + color: var(--color-actived); +} diff --git a/demo/index.tsx b/demo/index.tsx new file mode 100644 index 0000000..7fc7cb4 --- /dev/null +++ b/demo/index.tsx @@ -0,0 +1,78 @@ +import { + Designer, + DocumentModel, + LowCodePluginManager, + Node, + Project, + SettingTopEntry, +} from '@felce/lowcode-designer'; +import { Editor } from '@felce/lowcode-editor-core'; +import { createField } from '@felce/lowcode-editor-skeleton'; +import { Component, createElement } from 'react'; +import { createRoot } from 'react-dom/client'; +import LowcodeEngineExt from '../src/index'; +import { setters } from '@felce/lowcode-engine'; +import '@alifd/next/dist/next.css'; +import './index.less'; + +class App extends Component { + state = { + value: new Map(), + }; + settings: SettingTopEntry | null = null; + + constructor(props: any) { + super(props); + // const editor = new Editor(); + // const designer = new Designer({ editor }); + // const prject = new Project(designer); + // const document = new DocumentModel(prject); + // const innerPlugins = new LowCodePluginManager({ + // assembleApis(context) { + // context.setters = + // } + // }); + // const plugins = (this.settings = new SettingTopEntry({}, [document.root!])); + } + + changeHandle(key: string, newValue: any) { + console.log('changeHandle', key, newValue); + this.state.value.set(key, newValue); + this.setState({ + value: this.state.value, + }); + } + + renderSetter() { + const { setters, pluginMap } = LowcodeEngineExt; + return Object.keys(setters).map((key) => { + const component = createElement(setters[key].component || setters[key], { + onChange: (value: any) => this.changeHandle(setters[key].name, value), + // value: this.state.value.get(setters[key].name), + field: {}, + options: [ + { label: 'label1', value: 'value1' }, + { label: 'label2', value: 'value2' }, + ], + }); + return createField( + { + title: setters[key].name, + }, + component, + ); + }); + } + + render() { + const { setters, pluginMap } = LowcodeEngineExt; + const value = this.state.value.get(setters.StringSetter.name); + console.log('render', value); + + return
{this.renderSetter()}
; + } +} + +const root = createRoot(document.getElementById('lce-container')!); + +root.render(); diff --git a/demo/usage.md b/demo/usage.md index 5f6ccf2..57b6cee 100644 --- a/demo/usage.md +++ b/demo/usage.md @@ -8,7 +8,7 @@ order: 1 ```jsx import React, { Component } from 'react'; import ReactDOM from 'react-dom'; -import LowcodeEngineExt from '@alilc/lowcode-engine-ext'; +import LowcodeEngineExt from '@felce/lowcode-engine-ext'; class App extends Component { render() { @@ -20,5 +20,7 @@ class App extends Component { } } -ReactDOM.render(, mountNode); +const root = createRoot(document.getElementById('lce-container')!); + +root.render(); ``` diff --git a/public/index.html b/index.html similarity index 84% rename from public/index.html rename to index.html index 4cf1915..531f06c 100644 --- a/public/index.html +++ b/index.html @@ -10,12 +10,14 @@ body { font-family: PingFangSC-Regular, Roboto, Helvetica Neue, Helvetica, Tahoma, Arial, PingFang SC-Light, Microsoft YaHei; font-size: 12px; + * { box-sizing: border-box; } } - body, #lce-container { + body, + #lce-container { position: fixed; left: 0; right: 0; @@ -41,8 +43,8 @@ min-width: 1024px; } - - + +
- + + diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 21ce944..0000000 --- a/jest.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - setupFilesAfterEnv: ['/test/setupTests.js'], -}; diff --git a/package.json b/package.json index 6ce32c9..213ba35 100644 --- a/package.json +++ b/package.json @@ -1,77 +1,77 @@ { - "name": "@alilc/lowcode-engine-ext", - "version": "1.0.6", - "description": "", + "name": "@felce/lowcode-engine-ext", + "version": "1.2.2", + "description": "低代码官方提供的扩展集 - Official extension set provided by lowcode-engine", "files": [ - "dist", - "es", - "lib" + "dist" ], - "main": "lib/index.js", - "module": "es/index.js", - "stylePath": "style.js", + "main": "dist/engine-ext.umd.js", + "module": "dist/engine-ext.es.js", + "types": "dist/index.d.ts", "scripts": { - "start": "build-scripts start --config build.cloud.json --port 4008", - "build": "build-scripts build && build-scripts build --config build.cloud.json", - "cloud-build": "build-scripts build --config build.cloud.json", - "test": "build-scripts test", - "prepublishOnly": "npm run build", + "start": "vite", + "build": "vite build", + "test": "vitest", + "prepublishOnly": "pnpm run build", "eslint": "eslint --cache --ext .js,.jsx ./", "eslint:fix": "npm run eslint -- --fix", "stylelint": "stylelint \"**/*.{css,scss,less}\"", "lint": "npm run eslint && npm run stylelint", "f2elint-scan": "f2elint scan -q", - "f2elint-fix": "f2elint fix", - "syncOss": "node ./scripts/sync-oss.js" + "f2elint-fix": "f2elint fix" }, "keywords": [ - "ice", + "lowcode", "react", - "component" + "ext" ], "dependencies": { - "@alilc/lowcode-plugin-base-monaco-editor": "^1.1.1", - "@alilc/lowcode-types": "^1.0.0", - "@alilc/lowcode-utils": "^1.0.0", - "antd": "^5.2.3", - "classnames": "^2.2.6", + "@alifd/next": "^1.27.30", + "@felce/lowcode-plugin-base-monaco-editor": "latest", + "@felce/lowcode-editor-skeleton": "latest", + "@felce/lowcode-engine": "latest", + "@felce/lowcode-types": "latest", + "@felce/lowcode-utils": "latest", + "@felce/lowcode-designer": "latest", + "classnames": "^2.5.1", "cssjson": "^2.1.3", - "js-beautify": "^1.13.0", - "react-color": "^2.19.3" + "js-beautify": "^1.15.1", + "react": "^18.3.1", + "react-color": "^2.19.3", + "react-dom": "^18.3.1" }, "devDependencies": { - "@alib/build-scripts": "^0.1.3", - "@alifd/next": "1.x", - "@iceworks/spec": "^1.0.0", - "@types/react": "^16.9.13", - "@types/react-dom": "^16.9.4", - "build-plugin-component": "^1.0.0", - "build-plugin-fusion": "^0.1.0", - "build-plugin-fusion-css": "1.0.3", - "build-plugin-moment-locales": "^0.1.0", - "@alilc/lowcode-editor-skeleton": "^1.0.0", - "build-plugin-react-app": "^1.1.2", - "enzyme": "^3.10.0", - "enzyme-adapter-react-16": "^1.14.0", - "f2elint": "^2.2.0", - "react": "^16.3.0", - "react-dom": "^16.3.0", - "tsconfig-paths-webpack-plugin": "^3.2.0" + "@testing-library/dom": "^10.4.0", + "@testing-library/react": "^16.1.0", + "@types/react": "^18.3.12", + "@types/react-color": "^3.0.12", + "@types/react-dom": "^18.3.1", + "@types/js-beautify": "^1.14.3", + "@vitejs/plugin-react-swc": "3.7.2", + "@vitest/ui": "2.1.8", + "f2elint": "^4.9.1", + "jsdom": "^25.0.1", + "less": "^4.2.1", + "sass-embedded": "^1.83.0", + "vite": "^6.0.3", + "vite-plugin-dts": "^4.3.0", + "vitest": "^2.1.8", + "vite-plugin-external": "^4.3.1" }, "peerDependencies": { - "react": "^16.3.0", - "@alifd/next": "1.x" + "@alifd/next": "1.x", + "react": "^18" }, "componentConfig": { "name": "lowcode-engine-ext", - "title": "", - "category": "" + "title": "官方提供的扩展集", + "category": "lowcode" }, "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" }, "license": "MIT", - "homepage": "https://unpkg.com/@alilc/lowcode-engine-ext@1.0.6/build/index.html", - "repository": "git@github.com:alibaba/lowcode-engine-ext.git" + "homepage": "https://unpkg.com/@felce/lowcode-engine-ext@1.2.0/build/index.html", + "repository": "git@github.com:fe-lce/lowcode-engine-ext.git" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..3022e5c --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,4352 @@ +lockfileVersion: 5.4 + +specifiers: + '@alifd/next': ^1.27.30 + '@felce/lowcode-designer': latest + '@felce/lowcode-editor-skeleton': latest + '@felce/lowcode-engine': latest + '@felce/lowcode-plugin-base-monaco-editor': latest + '@felce/lowcode-types': latest + '@felce/lowcode-utils': latest + '@testing-library/dom': ^10.4.0 + '@testing-library/react': ^16.1.0 + '@types/js-beautify': ^1.14.3 + '@types/react': ^18.3.12 + '@types/react-color': ^3.0.12 + '@types/react-dom': ^18.3.1 + '@vitejs/plugin-react-swc': 3.7.2 + '@vitest/ui': 2.1.8 + classnames: ^2.5.1 + cssjson: ^2.1.3 + f2elint: ^4.9.1 + js-beautify: ^1.15.1 + jsdom: ^25.0.1 + less: ^4.2.1 + react: ^18.3.1 + react-color: ^2.19.3 + react-dom: ^18.3.1 + sass-embedded: ^1.83.0 + vite: ^6.0.3 + vite-plugin-dts: ^4.3.0 + vite-plugin-external: ^4.3.1 + vitest: ^2.1.8 + +dependencies: + '@alifd/next': 1.27.30_rvlneaam22f6syrfxovdh6jas4 + '@felce/lowcode-designer': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-editor-skeleton': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-engine': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-plugin-base-monaco-editor': 1.3.0-beta.3 + '@felce/lowcode-types': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-utils': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + classnames: 2.5.1 + cssjson: 2.1.3 + js-beautify: 1.15.1 + react: 18.3.1 + react-color: 2.19.3_react@18.3.1 + react-dom: 18.3.1_react@18.3.1 + +devDependencies: + '@testing-library/dom': 10.4.0 + '@testing-library/react': 16.1.0_z6octng6bfe6dlaosvrb7yeilu + '@types/js-beautify': 1.14.3 + '@types/react': 18.3.17 + '@types/react-color': 3.0.13_@types+react@18.3.17 + '@types/react-dom': 18.3.5_@types+react@18.3.17 + '@vitejs/plugin-react-swc': 3.7.2_vite@6.0.3 + '@vitest/ui': 2.1.8_vitest@2.1.8 + f2elint: 4.9.1 + jsdom: 25.0.1 + less: 4.2.1 + sass-embedded: 1.83.0 + vite: 6.0.3_ahjh2i6fbktk2q4a5frfh4rxa4 + vite-plugin-dts: 4.3.0_76h7ayhxucz4r6hiysvdf3qf4a + vite-plugin-external: 4.3.1 + vitest: 2.1.8_ur5au2lahz2oftporakumkt27q + +packages: + + /@alifd/babel-runtime-jsx-style-transform/1.0.0: + resolution: {integrity: sha512-+9K1r90w1XxN8b/Z45RxzH3NpwKgyi7BxyMg03vkF6LS4anKAuT3bPtamXBGDU871aGnjNelM8TndLkDQcKupA==} + dev: false + + /@alifd/field/1.7.0: + resolution: {integrity: sha512-rXqtuJudWaSl+1EOjUqr1OHUh8PWnzvyMmm6sKev9uTbctrt+pHEkRh3fbXebJhtEXgZbqhh/UM2afqy1nIIeA==} + dependencies: + '@alifd/validate': 1.4.0 + prop-types: 15.8.1 + dev: false + + /@alifd/field/2.0.3: + resolution: {integrity: sha512-Bq7lPT6lyjO+2A/9iZLt09Ix6IJruqmd/KYiJW1fbPecIokLQ0cgwCoU4fTxGBS2trR9n/o3kIhWt731PDERdg==} + dependencies: + '@alifd/validate': 2.0.3 + tslib: 2.8.1 + dev: false + + /@alifd/meet-react-component-one/1.3.2_nnrd3gsncyragczmpvfhocinkq: + resolution: {integrity: sha512-KxcBKh0q4hOubOL83jflfttPz5ikjL9HW1C5HDBhBHOGR1z9/vyi0feUL7XUrXvKcCcILq8DRXy1qTiJsP0MZw==} + peerDependencies: + react: '>=16.13.1' + react-dom: '>=16.13.1' + dependencies: + '@gcanvas/core': 1.0.0 + classnames: 2.5.1 + omit.js: 2.0.2 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + style-unit: 2.0.1 + swiper: 6.5.0 + tslib: 2.8.1 + universal-env: 3.3.3 + universal-panresponder: 0.6.5 + universal-transition: 1.1.1 + dev: false + + /@alifd/meet-react/2.9.9_iz2whttfr67n2wc7fny4maofje: + resolution: {integrity: sha512-l8xUMwMpgdMlwsC2+8apAu22MCiCYan5S/36RxT0SfAbHp2O5ggov5gw0uAA108DIsQd7cV/5adW+kWHnN8sOg==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@alifd/babel-runtime-jsx-style-transform': 1.0.0 + '@alifd/field': 1.7.0 + '@alifd/meet-react-component-one': 1.3.2_nnrd3gsncyragczmpvfhocinkq + '@uni/clipboard': 1.0.9 + '@uni/env': 1.1.1 + '@uni/file': 1.1.1 + '@uni/image': 1.1.3 + '@uni/navigate': 1.0.11 + '@uni/page-scroll-to': 1.0.0 + '@uni/vibrate': 1.0.1 + classnames: 2.2.6 + dayjs: 1.11.13 + driver-universal: 3.5.0 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + tslib: 2.8.1 + universal-canvas-context: 1.0.0 + universal-choose-image: 1.3.0_rax@1.2.3 + universal-element: 0.0.6 + transitivePeerDependencies: + - rax + dev: false + + /@alifd/next/1.27.30_rvlneaam22f6syrfxovdh6jas4: + resolution: {integrity: sha512-i4EI9rrNvRFGOVCPFAqtjSHCFg454VIQvQCEq5uLKFXUqdG4X4U09htUketE9O5iWCoNfKwFmQYI0aj5t/YZuQ==} + peerDependencies: + '@alifd/meet-react': ^2.0.0 + moment: ^2.22.1 + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@alifd/field': 2.0.3 + '@alifd/meet-react': 2.9.9_iz2whttfr67n2wc7fny4maofje + '@alifd/overlay': 0.3.6 + '@alifd/validate': 2.0.3 + '@types/react-transition-group': 4.4.12_@types+react@18.3.17 + babel-runtime: 6.26.0 + big.js: 6.2.2 + classnames: 2.5.1 + dayjs: 1.11.13 + hoist-non-react-statics: 3.3.2 + lodash.clonedeep: 4.5.0 + moment: 2.30.1 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + react-lifecycles-compat: 3.0.4 + react-transition-group: 2.9.0_nnrd3gsncyragczmpvfhocinkq + resize-observer-polyfill: 1.5.1 + shallow-element-equals: 1.0.1 + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/react' + dev: false + + /@alifd/overlay/0.3.6: + resolution: {integrity: sha512-Nkf7wfm66Z1AMzyLkFIKztBl8epQjHxbxElZddLsZrsTfRKLudym0HhE+q19ER2gmI6xfm7Sa03CsDpvHOxPng==} + dependencies: + resize-observer-polyfill: 1.5.1 + dev: false + + /@alifd/validate/1.4.0: + resolution: {integrity: sha512-RNayg1HVrJBhP5wOmjRq9x0xCC/2H1isDy038V69ggPyAP0k+3JAzIZKNkDoCLJlF4dWPCcsSwXaJafr0A60Wg==} + dev: false + + /@alifd/validate/2.0.3: + resolution: {integrity: sha512-xwA5XvpKhHIrYqpZ4gldppQ/bIIqqik1TMhtjLidi+LeIdRlxRc1NVC3FW9iF/6nPfiK3PhNpTYOjavQT0nKPQ==} + dependencies: + tslib: 2.8.1 + dev: false + + /@alilc/lowcode-datasource-types/1.2.1: + resolution: {integrity: sha512-wHumEFSsg3LMt2ZsmBdGB/KTelbzO+Nul7odYSBUjyMKD/UYw0DN8yrQNpS0qeGgy6Bw2Hii6583P23ERDvLqQ==} + dependencies: + tslib: 2.8.1 + dev: false + + /@babel/code-frame/7.26.2: + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + dev: true + + /@babel/helper-string-parser/7.25.9: + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier/7.25.9: + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/parser/7.26.3: + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.26.3 + dev: true + + /@babel/runtime/7.26.0: + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + + /@babel/types/7.26.3: + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + dev: true + + /@bufbuild/protobuf/2.2.3: + resolution: {integrity: sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg==} + dev: true + + /@clack/core/0.3.5: + resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + dev: true + + /@clack/prompts/0.7.0: + resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} + dependencies: + '@clack/core': 0.3.5 + picocolors: 1.1.1 + sisteransi: 1.0.5 + dev: true + bundledDependencies: + - is-unicode-supported + + /@esbuild/aix-ppc64/0.21.5: + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/aix-ppc64/0.24.0: + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm/0.21.5: + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm/0.24.0: + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64/0.21.5: + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64/0.24.0: + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.21.5: + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.24.0: + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.21.5: + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.24.0: + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.21.5: + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.24.0: + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.21.5: + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.24.0: + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.21.5: + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.24.0: + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.21.5: + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.24.0: + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.21.5: + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.24.0: + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.21.5: + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.24.0: + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.21.5: + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.24.0: + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.21.5: + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.24.0: + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.21.5: + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.24.0: + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.21.5: + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.24.0: + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.21.5: + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.24.0: + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.21.5: + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.24.0: + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.21.5: + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.24.0: + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-arm64/0.24.0: + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.21.5: + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.24.0: + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.21.5: + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.24.0: + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64/0.21.5: + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64/0.24.0: + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32/0.21.5: + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32/0.24.0: + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64/0.21.5: + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64/0.24.0: + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@felce/lowcode-designer/1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq: + resolution: {integrity: sha512-HPCN01geeSBigdIxf/F+njdRro1EQoYQgbGdha2xDhad5x5TPsGqiFytbS4bVKCYEBYSIgvdoWHmgc73MViz1g==} + dependencies: + '@felce/lowcode-editor-core': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-types': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-utils': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + ric-shim: 1.0.1 + semver: 7.6.3 + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + - react-native + - reflect-metadata + - supports-color + dev: false + + /@felce/lowcode-editor-core/1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq: + resolution: {integrity: sha512-3nC6iSaO+anRB+ZOBGNK3tK8VsnVUbK2/NEPbCe7AAGBizElZPT65+s9pzRnuNOovYf5yFoYGZhmpqGgkNZh9g==} + dependencies: + '@alifd/next': 1.27.30_rvlneaam22f6syrfxovdh6jas4 + '@felce/lowcode-types': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-utils': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + classnames: 2.5.1 + debug: 4.4.0 + intl-messageformat: 10.7.10 + lodash.get: 4.4.2 + mobx: 6.13.5 + mobx-react: 9.2.0_4du6hmh5obecsnitoasjoyfjkq + power-di: 2.4.41_reflect-metadata@0.2.2 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + store: 2.0.12 + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + - react-native + - reflect-metadata + - supports-color + dev: false + + /@felce/lowcode-editor-skeleton/1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq: + resolution: {integrity: sha512-m0auvpI+ONO5KJXGvH8d45NpPFiNbY6tzOiP2DxT1aJcs6mb00TfUkrwrgqL68BIIDxj1VlzPCoG5IgY65vlJA==} + dependencies: + '@alifd/next': 1.27.30_rvlneaam22f6syrfxovdh6jas4 + '@felce/lowcode-designer': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-editor-core': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-shell': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-types': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-utils': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + - react-native + - reflect-metadata + - supports-color + dev: false + + /@felce/lowcode-engine/1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq: + resolution: {integrity: sha512-9Z5Sou1kIyQfB2wlac51HooYuS6JcTLQP1tELg364iZ29/Ee84eE69HjcrD4E6Fb3sibuw2W0n8JevD2Ke/AAg==} + dependencies: + '@alifd/next': 1.27.30_rvlneaam22f6syrfxovdh6jas4 + '@felce/lowcode-designer': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-editor-core': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-editor-skeleton': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-plugin-command': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-plugin-designer': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-plugin-outline-pane': 1.5.0-beta.5_lu4jqaj53isxombhbp2abouhtq + '@felce/lowcode-shell': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-types': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-utils': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-workspace': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + - react-native + - reflect-metadata + - supports-color + dev: false + + /@felce/lowcode-plugin-base-monaco-editor/1.3.0-beta.3: + resolution: {integrity: sha512-/K10xU4zARXUDl6ixYNCoYWrMKEVpYikdDcNJynAtaKH450NuwY5PljGvqBat9pQVVFtCjdciXOcGq4KaAbsVw==} + dependencies: + '@monaco-editor/loader': 1.3.0_monaco-editor@0.31.1 + classnames: 2.5.1 + lodash: 4.17.21 + monaco-editor: 0.31.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + dev: false + + /@felce/lowcode-plugin-command/1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma: + resolution: {integrity: sha512-mkHjT6Dd/2jm0t34bwZBwF9ELViLIbDdNmejiNIEeqMCq13uvtw3T/jD0/ljprNPtZrz7pcEYq69pxeQy9h9OA==} + dependencies: + '@felce/lowcode-types': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-utils': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + - react-dom + dev: false + + /@felce/lowcode-plugin-designer/1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq: + resolution: {integrity: sha512-/mKphlSjLnxJ/oSeqrDoPAIqZibhxM5rI70rH3PKVRRmr7JicYsFY8rzZqBV087G51Ybo4RZbB0l6j38s/wlTQ==} + dependencies: + '@felce/lowcode-designer': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-editor-core': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-utils': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + - react-native + - reflect-metadata + - supports-color + dev: false + + /@felce/lowcode-plugin-outline-pane/1.5.0-beta.5_lu4jqaj53isxombhbp2abouhtq: + resolution: {integrity: sha512-yo0WpkqcHT4Qrdd0RkRofk/ia8gejqaJroxJmgLqene0jl25wqc4qBApeQy+4/CXKQDhLG4Y4SF/72VdAicG8w==} + dependencies: + '@alifd/next': 1.27.30_rvlneaam22f6syrfxovdh6jas4 + '@felce/lowcode-types': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-utils': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + ric-shim: 1.0.1 + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + dev: false + + /@felce/lowcode-shell/1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq: + resolution: {integrity: sha512-iD7JjgboJzFHegdUb+nv8m1PO6TThMBH4KFV9Mtm8HfgHpJ1xr4MW3vUhzFjVTZDqH9pVa1UrpGfPw73jaapHw==} + dependencies: + '@alifd/next': 1.27.30_rvlneaam22f6syrfxovdh6jas4 + '@felce/lowcode-designer': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-editor-core': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-editor-skeleton': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-types': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-utils': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-workspace': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + - react-native + - reflect-metadata + - supports-color + dev: false + + /@felce/lowcode-types/1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma: + resolution: {integrity: sha512-m5wfv7Qj2PM6sor8xyS9/jA7xBGS5dSEgfl+iAMzzF/c1Nf8++eiGmCVSaBCvPKI5/zN2qN1//GQt4pNtdC9bw==} + dependencies: + '@alifd/next': 1.27.30_rvlneaam22f6syrfxovdh6jas4 + '@alilc/lowcode-datasource-types': 1.2.1 + react: 18.3.1 + strict-event-emitter-types: 2.0.0 + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + - react-dom + dev: false + + /@felce/lowcode-utils/1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma: + resolution: {integrity: sha512-CWJj3lvkEiA1dl03V5x0WIFkxVmnWilqqA0DFtxJ7zoQQVtxl9AgsSIomdNcwRUisOMIU//4M17AGd9HMqe4vw==} + dependencies: + '@felce/lowcode-types': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + classnames: 2.5.1 + events: 3.3.0 + mobx: 6.13.5 + prop-types: 15.8.1 + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + - react-dom + dev: false + + /@felce/lowcode-workspace/1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq: + resolution: {integrity: sha512-vkfvmoV5YeEOtUsliEp4Hqk4AtMpP4BYLof5oMQD3zWqSq89EoPc6G7GO5fpNJNy8GKE5Eyk3SFKflvUEjSjig==} + dependencies: + '@felce/lowcode-designer': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-editor-core': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-editor-skeleton': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-shell': 1.5.0-beta.5_64yjvzlpbene4wzl4xfovwroyq + '@felce/lowcode-types': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + '@felce/lowcode-utils': 1.5.0-beta.5_7o2pmx6ksh4v5gcwlfmkm4lfma + classnames: 2.5.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + transitivePeerDependencies: + - '@alifd/meet-react' + - '@types/react' + - moment + - react-native + - reflect-metadata + - supports-color + dev: false + + /@formatjs/ecma402-abstract/2.3.1: + resolution: {integrity: sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw==} + dependencies: + '@formatjs/fast-memoize': 2.2.5 + '@formatjs/intl-localematcher': 0.5.9 + decimal.js: 10.4.3 + tslib: 2.8.1 + dev: false + + /@formatjs/fast-memoize/2.2.5: + resolution: {integrity: sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g==} + dependencies: + tslib: 2.8.1 + dev: false + + /@formatjs/icu-messageformat-parser/2.9.7: + resolution: {integrity: sha512-cuEHyRM5VqLQobANOjtjlgU7+qmk9Q3fDQuBiRRJ3+Wp3ZoZhpUPtUfuimZXsir6SaI2TaAJ+SLo9vLnV5QcbA==} + dependencies: + '@formatjs/ecma402-abstract': 2.3.1 + '@formatjs/icu-skeleton-parser': 1.8.11 + tslib: 2.8.1 + dev: false + + /@formatjs/icu-skeleton-parser/1.8.11: + resolution: {integrity: sha512-8LlHHE/yL/zVJZHAX3pbKaCjZKmBIO6aJY1mkVh4RMSEu/2WRZ4Ysvv3kKXJ9M8RJLBHdnk1/dUQFdod1Dt7Dw==} + dependencies: + '@formatjs/ecma402-abstract': 2.3.1 + tslib: 2.8.1 + dev: false + + /@formatjs/intl-localematcher/0.5.9: + resolution: {integrity: sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA==} + dependencies: + tslib: 2.8.1 + dev: false + + /@gcanvas/core/1.0.0: + resolution: {integrity: sha512-v+moRYrngBYtaFTABYjzeve9H+EAvh1zJd7RCzELQM/vLQCqjcpjh3R+R80W4i4y6dos1yQhMB2SVH8tfx0iEg==} + dev: false + + /@icons/material/0.2.4_react@18.3.1: + resolution: {integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==} + peerDependencies: + react: '*' + dependencies: + react: 18.3.1 + dev: false + + /@isaacs/cliui/8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + 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 + dev: false + + /@jridgewell/sourcemap-codec/1.5.0: + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + dev: true + + /@kwsites/file-exists/1.1.1: + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + dependencies: + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@kwsites/promise-deferred/1.1.1: + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + dev: true + + /@microsoft/api-extractor-model/7.30.1: + resolution: {integrity: sha512-CTS2PlASJHxVY8hqHORVb1HdECWOEMcMnM6/kDkPr0RZapAFSIHhg9D4jxuE8g+OWYHtPc10LCpmde5pylTRlA==} + dependencies: + '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc-config': 0.17.1 + '@rushstack/node-core-library': 5.10.1 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/api-extractor/7.48.1: + resolution: {integrity: sha512-HN9Osa1WxqLM66RaqB5nPAadx+nTIQmY/XtkFdaJvusjG8Tus++QqZtD7KPZDSkhEMGHsYeSyeU8qUzCDUXPjg==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.30.1 + '@microsoft/tsdoc': 0.15.1 + '@microsoft/tsdoc-config': 0.17.1 + '@rushstack/node-core-library': 5.10.1 + '@rushstack/rig-package': 0.5.3 + '@rushstack/terminal': 0.14.4 + '@rushstack/ts-command-line': 4.23.2 + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.9 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/tsdoc-config/0.17.1: + resolution: {integrity: sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==} + dependencies: + '@microsoft/tsdoc': 0.15.1 + ajv: 8.12.0 + jju: 1.4.0 + resolve: 1.22.9 + dev: true + + /@microsoft/tsdoc/0.15.1: + resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} + dev: true + + /@monaco-editor/loader/1.3.0_monaco-editor@0.31.1: + resolution: {integrity: sha512-N3mGq1ktC3zh7WUx3NGO+PSDdNq9Vspk/41rEmRdrCqV9vNbBTRzAOplmUpNQsi+hmTs++ERMBobMERb8Kb+3g==} + peerDependencies: + monaco-editor: '>= 0.21.0 < 1' + dependencies: + monaco-editor: 0.31.1 + state-local: 1.0.7 + dev: false + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@one-ini/wasm/0.1.1: + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + dev: false + + /@pkgjs/parseargs/0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + + /@pkgr/core/0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dev: true + + /@pnpm/config.env-replace/1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + dev: true + + /@pnpm/network.ca-file/1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + dependencies: + graceful-fs: 4.2.10 + dev: true + + /@pnpm/npm-conf/2.3.1: + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + dev: true + + /@polka/url/1.0.0-next.28: + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + dev: true + + /@rollup/pluginutils/5.1.4: + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + dev: true + + /@rollup/rollup-android-arm-eabi/4.28.1: + resolution: {integrity: sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64/4.28.1: + resolution: {integrity: sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64/4.28.1: + resolution: {integrity: sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64/4.28.1: + resolution: {integrity: sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-freebsd-arm64/4.28.1: + resolution: {integrity: sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-freebsd-x64/4.28.1: + resolution: {integrity: sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf/4.28.1: + resolution: {integrity: sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==} + cpu: [arm] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-musleabihf/4.28.1: + resolution: {integrity: sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==} + cpu: [arm] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu/4.28.1: + resolution: {integrity: sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl/4.28.1: + resolution: {integrity: sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-loongarch64-gnu/4.28.1: + resolution: {integrity: sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==} + cpu: [loong64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-powerpc64le-gnu/4.28.1: + resolution: {integrity: sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu/4.28.1: + resolution: {integrity: sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-s390x-gnu/4.28.1: + resolution: {integrity: sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu/4.28.1: + resolution: {integrity: sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl/4.28.1: + resolution: {integrity: sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc/4.28.1: + resolution: {integrity: sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc/4.28.1: + resolution: {integrity: sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc/4.28.1: + resolution: {integrity: sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rushstack/node-core-library/5.10.1: + resolution: {integrity: sha512-BSb/KcyBHmUQwINrgtzo6jiH0HlGFmrUy33vO6unmceuVKTEyL2q+P0fQq2oB5hvXVWOEUhxB2QvlkZluvUEmg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + ajv: 8.13.0 + ajv-draft-04: 1.0.0_ajv@8.13.0 + ajv-formats: 3.0.1_ajv@8.13.0 + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.9 + semver: 7.5.4 + dev: true + + /@rushstack/rig-package/0.5.3: + resolution: {integrity: sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==} + dependencies: + resolve: 1.22.9 + strip-json-comments: 3.1.1 + dev: true + + /@rushstack/terminal/0.14.4: + resolution: {integrity: sha512-NxACqERW0PHq8Rpq1V6v5iTHEwkRGxenjEW+VWqRYQ8T9puUzgmGHmEZUaUEDHAe9Qyvp0/Ew04sAiQw9XjhJg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@rushstack/node-core-library': 5.10.1 + supports-color: 8.1.1 + dev: true + + /@rushstack/ts-command-line/4.23.2: + resolution: {integrity: sha512-JJ7XZX5K3ThBBva38aomgsPv1L7FV6XmSOcR6HtM7HDFZJkepqT65imw26h9ggGqMjsY0R9jcl30tzKcVj9aOQ==} + dependencies: + '@rushstack/terminal': 0.14.4 + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@swc/core-darwin-arm64/1.10.1: + resolution: {integrity: sha512-NyELPp8EsVZtxH/mEqvzSyWpfPJ1lugpTQcSlMduZLj1EASLO4sC8wt8hmL1aizRlsbjCX+r0PyL+l0xQ64/6Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-darwin-x64/1.10.1: + resolution: {integrity: sha512-L4BNt1fdQ5ZZhAk5qoDfUnXRabDOXKnXBxMDJ+PWLSxOGBbWE6aJTnu4zbGjJvtot0KM46m2LPAPY8ttknqaZA==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm-gnueabihf/1.10.1: + resolution: {integrity: sha512-Y1u9OqCHgvVp2tYQAJ7hcU9qO5brDMIrA5R31rwWQIAKDkJKtv3IlTHF0hrbWk1wPR0ZdngkQSJZple7G+Grvw==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-gnu/1.10.1: + resolution: {integrity: sha512-tNQHO/UKdtnqjc7o04iRXng1wTUXPgVd8Y6LI4qIbHVoVPwksZydISjMcilKNLKIwOoUQAkxyJ16SlOAeADzhQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl/1.10.1: + resolution: {integrity: sha512-x0L2Pd9weQ6n8dI1z1Isq00VHFvpBClwQJvrt3NHzmR+1wCT/gcYl1tp9P5xHh3ldM8Cn4UjWCw+7PaUgg8FcQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-gnu/1.10.1: + resolution: {integrity: sha512-yyYEwQcObV3AUsC79rSzN9z6kiWxKAVJ6Ntwq2N9YoZqSPYph+4/Am5fM1xEQYf/kb99csj0FgOelomJSobxQA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-x64-musl/1.10.1: + resolution: {integrity: sha512-tcaS43Ydd7Fk7sW5ROpaf2Kq1zR+sI5K0RM+0qYLYYurvsJruj3GhBCaiN3gkzd8m/8wkqNqtVklWaQYSDsyqA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-arm64-msvc/1.10.1: + resolution: {integrity: sha512-D3Qo1voA7AkbOzQ2UGuKNHfYGKL6eejN8VWOoQYtGHHQi1p5KK/Q7V1ku55oxXBsj79Ny5FRMqiRJpVGad7bjQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-ia32-msvc/1.10.1: + resolution: {integrity: sha512-WalYdFoU3454Og+sDKHM1MrjvxUGwA2oralknXkXL8S0I/8RkWZOB++p3pLaGbTvOO++T+6znFbQdR8KRaa7DA==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core-win32-x64-msvc/1.10.1: + resolution: {integrity: sha512-JWobfQDbTnoqaIwPKQ3DVSywihVXlQMbDuwik/dDWlj33A8oEHcjPOGs4OqcA3RHv24i+lfCQpM3Mn4FAMfacA==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core/1.10.1: + resolution: {integrity: sha512-rQ4dS6GAdmtzKiCRt3LFVxl37FaY1cgL9kSUTnhQ2xc3fmHOd7jdJK/V4pSZMG1ruGTd0bsi34O2R0Olg9Zo/w==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.17 + optionalDependencies: + '@swc/core-darwin-arm64': 1.10.1 + '@swc/core-darwin-x64': 1.10.1 + '@swc/core-linux-arm-gnueabihf': 1.10.1 + '@swc/core-linux-arm64-gnu': 1.10.1 + '@swc/core-linux-arm64-musl': 1.10.1 + '@swc/core-linux-x64-gnu': 1.10.1 + '@swc/core-linux-x64-musl': 1.10.1 + '@swc/core-win32-arm64-msvc': 1.10.1 + '@swc/core-win32-ia32-msvc': 1.10.1 + '@swc/core-win32-x64-msvc': 1.10.1 + dev: true + + /@swc/counter/0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: true + + /@swc/types/0.1.17: + resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} + dependencies: + '@swc/counter': 0.1.3 + dev: true + + /@testing-library/dom/10.4.0: + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/runtime': 7.26.0 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/react/16.1.0_z6octng6bfe6dlaosvrb7yeilu: + resolution: {integrity: sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.26.0 + '@testing-library/dom': 10.4.0 + '@types/react': 18.3.17 + '@types/react-dom': 18.3.5_@types+react@18.3.17 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + dev: true + + /@types/argparse/1.0.38: + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + dev: true + + /@types/aria-query/5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true + + /@types/estree/1.0.6: + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + dev: true + + /@types/fs-extra/11.0.4: + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 14.18.63 + dev: true + + /@types/js-beautify/1.14.3: + resolution: {integrity: sha512-FMbQHz+qd9DoGvgLHxeqqVPaNRffpIu5ZjozwV8hf9JAGpIOzuAf4wGbRSo8LNITHqGjmmVjaMggTT5P4v4IHg==} + dev: true + + /@types/jsonfile/6.1.4: + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + dependencies: + '@types/node': 14.18.63 + dev: true + + /@types/node/14.18.63: + resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} + dev: true + + /@types/prop-types/15.7.14: + resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + + /@types/react-color/3.0.13_@types+react@18.3.17: + resolution: {integrity: sha512-2c/9FZ4ixC5T3JzN0LP5Cke2Mf0MKOP2Eh0NPDPWmuVH3NjPyhEjqNMQpN1Phr5m74egAy+p2lYNAFrX1z9Yrg==} + peerDependencies: + '@types/react': '*' + dependencies: + '@types/react': 18.3.17 + '@types/reactcss': 1.2.13_@types+react@18.3.17 + dev: true + + /@types/react-dom/18.3.5_@types+react@18.3.17: + resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} + peerDependencies: + '@types/react': ^18.0.0 + dependencies: + '@types/react': 18.3.17 + dev: true + + /@types/react-transition-group/4.4.12_@types+react@18.3.17: + resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} + peerDependencies: + '@types/react': '*' + dependencies: + '@types/react': 18.3.17 + dev: false + + /@types/react/18.3.17: + resolution: {integrity: sha512-opAQ5no6LqJNo9TqnxBKsgnkIYHozW9KSTlFVoSUJYh1Fl/sswkEoqIugRSm7tbh6pABtYjGAjW+GOS23j8qbw==} + dependencies: + '@types/prop-types': 15.7.14 + csstype: 3.1.3 + + /@types/reactcss/1.2.13_@types+react@18.3.17: + resolution: {integrity: sha512-gi3S+aUi6kpkF5vdhUsnkwbiSEIU/BEJyD7kBy2SudWBUuKmJk8AQKE0OVcQQeEy40Azh0lV6uynxlikYIJuwg==} + peerDependencies: + '@types/react': '*' + dependencies: + '@types/react': 18.3.17 + dev: true + + /@uni/action-sheet/1.0.8: + resolution: {integrity: sha512-3L+ZHK6qYv/3w/ODGZugfbTYc8vT+lkxt/XAl5WRpiFCukjwP5yxRp+feE1SEHdprJXUlHBYTT/Tp0JfRIELJQ==} + dependencies: + '@uni/env': 1.1.1 + dev: false + + /@uni/clipboard/1.0.9: + resolution: {integrity: sha512-NoqYayQCHB0KIFc2r8akf1S3UtSnBhk+Nc3fX+wFnpRx6qmHHzZSeBk+mTqKVOTfeE3OdcubQAAt/sWfWS/4mw==} + dependencies: + '@uni/env': 1.1.1 + dev: false + + /@uni/env/1.1.1: + resolution: {integrity: sha512-oQGRQg3cFVb6ByppV0WVue/BE98cw0xvAniX9L0wQtzU94RvZg9/GpkFIDwrlgcvzXlTgUPTTMG9B/riiiFQyQ==} + dev: false + + /@uni/file/1.1.1: + resolution: {integrity: sha512-gbymGoyD02cWHGVGapxp0zl3VAEU/u4vpDSyfS1tSnIGFjwIbCGq+W+uTAnJYduDbdy4Xiuwzbf0b/4slY9bmQ==} + dependencies: + '@uni/env': 1.1.1 + dev: false + + /@uni/image/1.1.3: + resolution: {integrity: sha512-68RGzXMYAp8EUZ5jogdQd+KVqyVlKZwuncWmZ96aDqwHhd/J1MnAJuAOAEBL3jCNqXNsvXHLBr5yleg2gdf1yQ==} + dependencies: + '@uni/video': 1.0.8 + dev: false + + /@uni/navigate/1.0.11: + resolution: {integrity: sha512-7xUVksKKcIMqsxpPBgYRRrkOIVy9bmWmgbinISnZaVobmqSr0oFWN9pHgeCOuvxN66jlVqPIEKHcWyD8IV1oEg==} + dependencies: + '@uni/env': 1.1.1 + dev: false + + /@uni/page-scroll-to/1.0.0: + resolution: {integrity: sha512-fQTndD14OTezRzXAtsuhdrruO0lz0+lTXa/eSeekVqEkDq9L/OK+T9B6IJS3Ui4Xc1aEkWGSyGe0TaTOfKE9tQ==} + dependencies: + '@uni/env': 1.1.1 + dev: false + + /@uni/vibrate/1.0.1: + resolution: {integrity: sha512-IocrIbBaZYjBHzvRIGSyN3K2He9Y7BS/VMEri2On9QITU3U2kampDiGGPyA/lQxVSZNemyK6/xtxWoxTjNh91w==} + dependencies: + '@uni/env': 1.1.1 + dev: false + + /@uni/video/1.0.8: + resolution: {integrity: sha512-Gzo+7Qsq5jmBxcW/B9EF0l77nneBeuHuCBUIVSetSTCQtjdxoF9LF/K3UZE2Z20Raq7/MLrtaDa2KqeLmwWu8A==} + dependencies: + '@uni/action-sheet': 1.0.8 + dev: false + + /@vitejs/plugin-react-swc/3.7.2_vite@6.0.3: + resolution: {integrity: sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew==} + peerDependencies: + vite: ^4 || ^5 || ^6 + dependencies: + '@swc/core': 1.10.1 + vite: 6.0.3_ahjh2i6fbktk2q4a5frfh4rxa4 + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@vitest/expect/2.1.8: + resolution: {integrity: sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==} + dependencies: + '@vitest/spy': 2.1.8 + '@vitest/utils': 2.1.8 + chai: 5.1.2 + tinyrainbow: 1.2.0 + dev: true + + /@vitest/mocker/2.1.8_vite@5.4.11: + resolution: {integrity: sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + dependencies: + '@vitest/spy': 2.1.8 + estree-walker: 3.0.3 + magic-string: 0.30.17 + vite: 5.4.11_ahjh2i6fbktk2q4a5frfh4rxa4 + dev: true + + /@vitest/pretty-format/2.1.8: + resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} + dependencies: + tinyrainbow: 1.2.0 + dev: true + + /@vitest/runner/2.1.8: + resolution: {integrity: sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==} + dependencies: + '@vitest/utils': 2.1.8 + pathe: 1.1.2 + dev: true + + /@vitest/snapshot/2.1.8: + resolution: {integrity: sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==} + dependencies: + '@vitest/pretty-format': 2.1.8 + magic-string: 0.30.17 + pathe: 1.1.2 + dev: true + + /@vitest/spy/2.1.8: + resolution: {integrity: sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==} + dependencies: + tinyspy: 3.0.2 + dev: true + + /@vitest/ui/2.1.8_vitest@2.1.8: + resolution: {integrity: sha512-5zPJ1fs0ixSVSs5+5V2XJjXLmNzjugHRyV11RqxYVR+oMcogZ9qTuSfKW+OcTV0JeFNznI83BNylzH6SSNJ1+w==} + peerDependencies: + vitest: 2.1.8 + dependencies: + '@vitest/utils': 2.1.8 + fflate: 0.8.2 + flatted: 3.3.2 + pathe: 1.1.2 + sirv: 3.0.0 + tinyglobby: 0.2.10 + tinyrainbow: 1.2.0 + vitest: 2.1.8_ur5au2lahz2oftporakumkt27q + dev: true + + /@vitest/utils/2.1.8: + resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} + dependencies: + '@vitest/pretty-format': 2.1.8 + loupe: 3.1.2 + tinyrainbow: 1.2.0 + dev: true + + /@volar/language-core/2.4.11: + resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} + dependencies: + '@volar/source-map': 2.4.11 + dev: true + + /@volar/source-map/2.4.11: + resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} + dev: true + + /@volar/typescript/2.4.11: + resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} + dependencies: + '@volar/language-core': 2.4.11 + path-browserify: 1.0.1 + vscode-uri: 3.0.8 + dev: true + + /@vue/compiler-core/3.5.13: + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} + dependencies: + '@babel/parser': 7.26.3 + '@vue/shared': 3.5.13 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + dev: true + + /@vue/compiler-dom/3.5.13: + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} + dependencies: + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 + dev: true + + /@vue/compiler-vue2/2.7.16: + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /@vue/language-core/2.1.6_typescript@5.7.2: + resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 2.4.11 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.13 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + typescript: 5.7.2 + dev: true + + /@vue/shared/3.5.13: + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + dev: true + + /abbrev/2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /acorn/8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base/7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + dev: true + + /ajv-draft-04/1.0.0_ajv@8.13.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.13.0 + dev: true + + /ajv-formats/3.0.1_ajv@8.13.0: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.13.0 + dev: true + + /ajv/8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ajv/8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /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'} + dev: false + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles/5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles/6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false + + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /aria-query/5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + dev: true + + /assertion-error/2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + dev: true + + /async/3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + dev: true + + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /babel-runtime/6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + dev: false + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /big.js/6.2.2: + resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} + dev: false + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + + /braces/3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + dev: true + + /buffer-builder/0.2.0: + resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} + dev: true + + /cac/6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + + /chai/5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + engines: {node: '>=12'} + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + dev: true + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk/5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /check-error/2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + dev: true + + /classnames/2.2.6: + resolution: {integrity: sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==} + dev: false + + /classnames/2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + dev: false + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /colorjs.io/0.5.2: + resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /command-exists/1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + dev: true + + /commander/10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: false + + /commander/12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + dev: true + + /compare-versions/6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + dev: true + + /computeds/0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /confbox/0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + dev: true + + /config-chain/1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + /copy-anything/2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + dev: true + + /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. + requiresBuild: true + dev: false + + /cross-spawn/7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: false + + /cssjson/2.1.3: + resolution: {integrity: sha512-VKzsSbYW4gwfS6Fg+z1mEII+cvurP/Vr7G3cDLEkvR0tcQD20LpF/ljOOFVVT9XYkOFo4TQWRcB/mSmbrKsXxA==} + dev: false + + /cssstyle/4.1.0: + resolution: {integrity: sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==} + engines: {node: '>=18'} + dependencies: + rrweb-cssom: 0.7.1 + dev: true + + /csstype/3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /data-urls/5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.1.0 + dev: true + + /dayjs/1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dev: false + + /de-indent/1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: 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 + dependencies: + ms: 2.1.3 + + /decimal.js/10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + /deep-eql/5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + dev: true + + /deep-extend/0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + + /deepmerge/4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /dequal/2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: true + + /detect-indent/7.0.1: + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + engines: {node: '>=12.20'} + dev: true + + /detect-newline/4.0.1: + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /dom-accessibility-api/0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true + + /dom-helpers/3.4.0: + resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==} + dependencies: + '@babel/runtime': 7.26.0 + dev: false + + /dom7/3.0.0: + resolution: {integrity: sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==} + dependencies: + ssr-window: 3.0.0 + dev: false + + /driver-dom/2.2.2: + resolution: {integrity: sha512-v/jCQnQkjv0q3Z51zYhG5MfzMjlfJURiC8mhaAwhHsih55j8AnPupurSBOJn67qAE4Ol5XiGlqDnjWAH9XM1OA==} + dependencies: + style-unit: 3.0.5 + dev: false + + /driver-miniapp/0.1.5: + resolution: {integrity: sha512-27SwcAaL50jhaQwhHDXqqiT1BtOw0sp1ZIk8YNvgyBLjrZJhkRx/LTS3xmfgXlKkft8wxsO3039lFXWxKTCDKA==} + dev: false + + /driver-universal/3.5.0: + resolution: {integrity: sha512-Np6RFlzVyuy2xRmgbzlBIWYm3cIgpd2eVCNT0/Ai0fLpjaYhUUjejjobXGA7LiBR1C57YY51AbBsGZjjzQK99g==} + dependencies: + driver-dom: 2.2.2 + driver-miniapp: 0.1.5 + driver-weex: 2.1.0 + universal-env: 3.3.3 + dev: false + + /driver-weex/2.1.0: + resolution: {integrity: sha512-Hl/Bdubctm8Cr24acSe8NKwOztmXS7qE3kh+eNjp+NvTPr8DBpDlRIj1g/r1b2Ci82cz43b+Tm29L+sAveoh8g==} + dependencies: + driver-dom: 2.2.2 + style-unit: 3.0.5 + dev: false + + /eastasianwidth/0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + + /editorconfig/1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.6.3 + dev: false + + /ejs/3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + jake: 10.9.2 + dev: true + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false + + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + + /entities/4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: true + + /errno/0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + requiresBuild: true + dependencies: + prr: 1.0.1 + dev: true + optional: true + + /es-module-lexer/1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + dev: true + + /esbuild/0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + dev: true + + /esbuild/0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /estree-walker/3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.6 + dev: true + + /events/3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + + /expect-type/1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + dev: true + + /f2elint/4.9.1: + resolution: {integrity: sha512-nUpi94IJoQoe7jo8k16HT36n/P94Au0yQ/oWAk8o9H9dEb1prWDjjB7Gvd0+5oRe6HxEnkRj0DQYl5WpuegyDw==} + hasBin: true + dependencies: + '@clack/prompts': 0.7.0 + chalk: 5.3.0 + command-exists: 1.2.9 + commander: 12.1.0 + init-roll: 1.3.0 + prettier-config-ali: 1.3.2 + transitivePeerDependencies: + - prettier + - supports-color + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob/3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + 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 + dev: true + + /fastq/1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /fdir/6.4.2_picomatch@4.0.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + dependencies: + picomatch: 4.0.2 + dev: true + + /fflate/0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + dev: true + + /filelist/1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + dependencies: + minimatch: 5.1.6 + dev: true + + /fill-range/7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /flatted/3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + dev: true + + /foreground-child/3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + dev: false + + /form-data/4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /fs-extra/11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs-extra/7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fsevents/2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /get-stdin/9.0.0: + resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + engines: {node: '>=12'} + dev: true + + /git-hooks-list/3.1.0: + resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} + dev: true + + /git-up/7.0.0: + resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} + dependencies: + is-ssh: 1.4.0 + parse-url: 8.1.0 + dev: true + + /git-url-parse/13.1.1: + resolution: {integrity: sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==} + dependencies: + git-up: 7.0.0 + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob/10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + dev: false + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /graceful-fs/4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /hasown/2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /he/1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /hoist-non-react-statics/3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /html-encoding-sniffer/4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + dependencies: + whatwg-encoding: 3.1.1 + dev: true + + /http-proxy-agent/7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent/7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.3 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /iconv-lite/0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /image-size/0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /immutable/5.0.3: + resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} + dev: true + + /import-lazy/4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + + /ini/1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + /init-roll/1.3.0: + resolution: {integrity: sha512-SzDOkRypGlF3329FJKJcIi7P3y+TQNEh8XsKc8ba4VQVhX/Eng3T6BkTS5HM9iNWcYIpOWzptj9kqMn1UQKOfg==} + dependencies: + chalk: 5.3.0 + deepmerge: 4.3.1 + ejs: 3.1.10 + fast-deep-equal: 3.1.3 + fast-glob: 3.3.2 + json5: 2.2.3 + latest-version: 9.0.0 + package-json-from-git: 1.2.2 + prettier: 3.4.2 + sort-package-json: 2.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /intl-messageformat/10.7.10: + resolution: {integrity: sha512-hp7iejCBiJdW3zmOe18FdlJu8U/JsADSDiBPQhfdSeI8B9POtvPRvPh3nMlvhYayGMKLv6maldhR7y3Pf1vkpw==} + dependencies: + '@formatjs/ecma402-abstract': 2.3.1 + '@formatjs/fast-memoize': 2.2.5 + '@formatjs/icu-messageformat-parser': 2.9.7 + tslib: 2.8.1 + dev: false + + /is-core-module/2.16.0: + resolution: {integrity: sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g==} + engines: {node: '>= 0.4'} + dependencies: + hasown: 2.0.2 + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: false + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-plain-obj/4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: true + + /is-potential-custom-element-name/1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-ssh/1.4.0: + resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} + dependencies: + protocols: 2.0.1 + dev: true + + /is-what/3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: false + + /jackspeak/3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + + /jake/10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + dev: true + + /jju/1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + dev: true + + /js-beautify/1.15.1: + resolution: {integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==} + engines: {node: '>=14'} + hasBin: true + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 10.4.5 + js-cookie: 3.0.5 + nopt: 7.2.1 + dev: false + + /js-cookie/3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + dev: false + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /jsdom/25.0.1: + resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + cssstyle: 4.1.0 + data-urls: 5.0.0 + decimal.js: 10.4.3 + form-data: 4.0.1 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.16 + parse5: 7.2.1 + rrweb-cssom: 0.7.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.0.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.1.0 + ws: 8.18.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonfile/4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /kolorist/1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + + /ky/1.7.3: + resolution: {integrity: sha512-Sz49ZWR/BjNOq+2UK1k9ONZUVq8eyuCj30Zgc8VrRNtFlTBZduzuvehUd5kjQF6/Fms3Ir3EYqzJryw9tRvsSw==} + engines: {node: '>=18'} + dev: true + + /latest-version/9.0.0: + resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==} + engines: {node: '>=18'} + dependencies: + package-json: 10.0.1 + dev: true + + /less/4.2.1: + resolution: {integrity: sha512-CasaJidTIhWmjcqv0Uj5vccMI7pJgfD9lMkKtlnTHAdJdYK/7l8pM9tumLyJ0zhbD4KJLo/YvTj+xznQd5NBhg==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + dev: true + + /local-pkg/0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + dependencies: + mlly: 1.7.3 + pkg-types: 1.2.1 + dev: true + + /lodash-es/4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash.clonedeep/4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + dev: false + + /lodash.get/4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: false + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /loupe/3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + dev: true + + /lru-cache/10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: false + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /lz-string/1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true + + /magic-string/0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + dev: true + + /make-dir/2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + pify: 4.0.1 + semver: 5.7.2 + dev: true + optional: true + + /material-colors/1.2.6: + resolution: {integrity: sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==} + dev: false + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch/4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: true + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime/1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /minimatch/3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch/9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimatch/9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + + /minimist/1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass/7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /mlly/1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} + dependencies: + acorn: 8.14.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + dev: true + + /mobx-react-lite/4.1.0_4du6hmh5obecsnitoasjoyfjkq: + resolution: {integrity: sha512-QEP10dpHHBeQNv1pks3WnHRCem2Zp636lq54M2nKO2Sarr13pL4u6diQXf65yzXUn0mkk18SyIDCm9UOJYTi1w==} + peerDependencies: + mobx: ^6.9.0 + react: ^16.8.0 || ^17 || ^18 || ^19 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + mobx: 6.13.5 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + use-sync-external-store: 1.4.0_react@18.3.1 + dev: false + + /mobx-react/9.2.0_4du6hmh5obecsnitoasjoyfjkq: + resolution: {integrity: sha512-dkGWCx+S0/1mfiuFfHRH8D9cplmwhxOV5CkXMp38u6rQGG2Pv3FWYztS0M7ncR6TyPRQKaTG/pnitInoYE9Vrw==} + peerDependencies: + mobx: ^6.9.0 + react: ^16.8.0 || ^17 || ^18 || ^19 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + mobx: 6.13.5 + mobx-react-lite: 4.1.0_4du6hmh5obecsnitoasjoyfjkq + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + dev: false + + /mobx/6.13.5: + resolution: {integrity: sha512-/HTWzW2s8J1Gqt+WmUj5Y0mddZk+LInejADc79NJadrWla3rHzmRHki/mnEUH1AvOmbNTZ1BRbKxr8DSgfdjMA==} + dev: false + + /moment/2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} + dev: false + + /monaco-editor/0.31.1: + resolution: {integrity: sha512-FYPwxGZAeP6mRRyrr5XTGHD9gRXVjy7GUzF4IPChnyt3fS5WrNxIkS8DNujWf6EQy0Zlzpxw8oTVE+mWI2/D1Q==} + dev: false + + /mrmime/2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /muggle-string/0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + dev: true + + /nanoid/3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /needle/3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + dev: true + optional: true + + /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 + dependencies: + abbrev: 2.0.0 + dev: false + + /nwsapi/2.2.16: + resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} + dev: true + + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + + /omit.js/2.0.2: + resolution: {integrity: sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==} + dev: false + + /package-json-from-dist/1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + dev: false + + /package-json-from-git/1.2.2: + resolution: {integrity: sha512-hzIA7xYkaRWAUUxWv8C5xmwFOQahoHsGccJ+/RWgq/ZTkcIi13U7j2Tz43fwFKggohElnwbqNHSsIBs/m0dZcw==} + dependencies: + git-url-parse: 13.1.1 + simple-git: 3.27.0 + transitivePeerDependencies: + - supports-color + dev: true + + /package-json/10.0.1: + resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==} + engines: {node: '>=18'} + dependencies: + ky: 1.7.3 + registry-auth-token: 5.0.3 + registry-url: 6.0.1 + semver: 7.6.3 + dev: true + + /parse-node-version/1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + dev: true + + /parse-path/7.0.0: + resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} + dependencies: + protocols: 2.0.1 + dev: true + + /parse-url/8.1.0: + resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} + dependencies: + parse-path: 7.0.0 + dev: true + + /parse5/7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + dependencies: + entities: 4.5.0 + dev: true + + /path-browserify/1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + dev: true + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: false + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry/1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + dev: false + + /pathe/1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /pathval/2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + dev: true + + /picocolors/1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + dev: true + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /picomatch/4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + dev: true + + /pify/4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + optional: true + + /pkg-types/1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + dependencies: + confbox: 0.1.8 + mlly: 1.7.3 + pathe: 1.1.2 + dev: true + + /postcss/8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.8 + picocolors: 1.1.1 + source-map-js: 1.2.1 + dev: true + + /power-di/2.4.41_reflect-metadata@0.2.2: + resolution: {integrity: sha512-66gqN3Iler86Fy5bBRD1MC37YzabaC/s3zR1fuOqsUgnO7mmR+RvRF04bcGoEV2TwWD0I/GOuUXEu7AR/khUUA==} + peerDependencies: + reflect-metadata: '>=0.1.12' + dependencies: + reflect-metadata: 0.2.2 + dev: false + + /prettier-config-ali/1.3.2: + resolution: {integrity: sha512-/doftjrRTZBBIByZKNAO265ckL05KJm2BzsBCZRpUNjQOrRT+O0h/IZfRzqZ5R8aeQJdVGElJn28GWqzLys6Ag==} + dependencies: + prettier-plugin-packagejson: 2.5.6 + transitivePeerDependencies: + - prettier + dev: true + + /prettier-plugin-packagejson/2.5.6: + resolution: {integrity: sha512-TY7KiLtyt6Tlf53BEbXUWkN0+TRdHKgIMmtXtDCyHH6yWnZ50Lwq6Vb6lyjapZrhDTXooC4EtlY5iLe1sCgi5w==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + dependencies: + sort-package-json: 2.12.0 + synckit: 0.9.2 + dev: true + + /prettier/3.4.2: + resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /pretty-format/27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + + /prop-types/15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false + + /proto-list/1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + /protocols/2.0.1: + resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + dev: true + + /prr/1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + dev: true + optional: true + + /punycode/2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /rax-children/1.0.0_rax@1.2.3: + resolution: {integrity: sha512-sBKEXAMj9ik6SsPfPGgcQnqggmbWFyBdvAV/Cz/0f04bRA86BtWgbMri/9Dce0k8nkEC/BGWiiTdyA8Q49zIiw==} + engines: {npm: '>=3.0.0'} + peerDependencies: + rax: ^1.0.0 + dependencies: + rax: 1.2.3 + dev: false + + /rax-clone-element/1.0.0_rax@1.2.3: + resolution: {integrity: sha512-TaQMVuzoglvCTjbWATlvvwARmeWnG8kpENWNXrNDv0++x29GHNND/TBbx7sdtVs/QmYwYc8YmwRUhaBwKQi5eQ==} + engines: {npm: '>=3.0.0'} + peerDependencies: + rax: ^1.0.0 + dependencies: + rax: 1.2.3 + rax-is-valid-element: 1.0.1 + dev: false + + /rax-create-factory/1.0.0_rax@1.2.3: + resolution: {integrity: sha512-blBaVrurj/BOWelJhQWiuc0Kk8Ons1jsNsX78omaPBLkSOL7OkyJ3NC/0iKXHu425yWrGB6e5vho/qabROC7VQ==} + engines: {npm: '>=3.0.0'} + peerDependencies: + rax: ^1.0.0 + dependencies: + rax: 1.2.3 + dev: false + + /rax-is-valid-element/1.0.1: + resolution: {integrity: sha512-ajvQlLr7sr7UK4T9lyJyn1gcdu7NIrF3NUAj+SWWNwG2GZ5ygKdSCRFzuu7evuAwLxqrCCk2tQLV6uxw0zYUXQ==} + engines: {npm: '>=3.0.0'} + dev: false + + /rax/1.2.3: + resolution: {integrity: sha512-/lkZ7Yb3be06e68y4wn5WIyudzvrnHiTEjeAznJ7nPrfmjoCan2hcKPXmTYXdHU+IqkvGbzDlLZRWbVtmRTAcw==} + engines: {npm: '>=3.0.0'} + dependencies: + '@babel/runtime': 7.26.0 + prop-types: 15.8.1 + rax-children: 1.0.0_rax@1.2.3 + rax-clone-element: 1.0.0_rax@1.2.3 + rax-create-factory: 1.0.0_rax@1.2.3 + rax-is-valid-element: 1.0.1 + dev: false + + /rc/1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: true + + /react-color/2.19.3_react@18.3.1: + resolution: {integrity: sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==} + peerDependencies: + react: '*' + dependencies: + '@icons/material': 0.2.4_react@18.3.1 + lodash: 4.17.21 + lodash-es: 4.17.21 + material-colors: 1.2.6 + prop-types: 15.8.1 + react: 18.3.1 + reactcss: 1.2.3_react@18.3.1 + tinycolor2: 1.6.0 + dev: false + + /react-dom/18.3.1_react@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + /react-is/16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: false + + /react-is/17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true + + /react-lifecycles-compat/3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + dev: false + + /react-transition-group/2.9.0_nnrd3gsncyragczmpvfhocinkq: + resolution: {integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==} + peerDependencies: + react: '>=15.0.0' + react-dom: '>=15.0.0' + dependencies: + dom-helpers: 3.4.0 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.3.1 + react-dom: 18.3.1_react@18.3.1 + react-lifecycles-compat: 3.0.4 + dev: false + + /react/18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /reactcss/1.2.3_react@18.3.1: + resolution: {integrity: sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==} + peerDependencies: + react: '*' + dependencies: + lodash: 4.17.21 + react: 18.3.1 + dev: false + + /reflect-metadata/0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + dev: false + + /regenerator-runtime/0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + dev: false + + /regenerator-runtime/0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + /registry-auth-token/5.0.3: + resolution: {integrity: sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==} + engines: {node: '>=14'} + dependencies: + '@pnpm/npm-conf': 2.3.1 + dev: true + + /registry-url/6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} + dependencies: + rc: 1.2.8 + dev: true + + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /resize-observer-polyfill/1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + dev: false + + /resolve/1.22.9: + resolution: {integrity: sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A==} + hasBin: true + dependencies: + is-core-module: 2.16.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /ric-shim/1.0.1: + resolution: {integrity: sha512-0OXRLoGE+vy5V+Fota4dqPgZ6J/tR0PbxjyGYauDSxkq8uT9fxc//bfhrsG0N6pb5OdCBv/AmD+58FJBg4tPqA==} + dev: false + + /rollup/4.28.1: + resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.28.1 + '@rollup/rollup-android-arm64': 4.28.1 + '@rollup/rollup-darwin-arm64': 4.28.1 + '@rollup/rollup-darwin-x64': 4.28.1 + '@rollup/rollup-freebsd-arm64': 4.28.1 + '@rollup/rollup-freebsd-x64': 4.28.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.28.1 + '@rollup/rollup-linux-arm-musleabihf': 4.28.1 + '@rollup/rollup-linux-arm64-gnu': 4.28.1 + '@rollup/rollup-linux-arm64-musl': 4.28.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.28.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.28.1 + '@rollup/rollup-linux-riscv64-gnu': 4.28.1 + '@rollup/rollup-linux-s390x-gnu': 4.28.1 + '@rollup/rollup-linux-x64-gnu': 4.28.1 + '@rollup/rollup-linux-x64-musl': 4.28.1 + '@rollup/rollup-win32-arm64-msvc': 4.28.1 + '@rollup/rollup-win32-ia32-msvc': 4.28.1 + '@rollup/rollup-win32-x64-msvc': 4.28.1 + fsevents: 2.3.3 + dev: true + + /rrweb-cssom/0.7.1: + resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rxjs/7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.8.1 + dev: true + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sass-embedded-android-arm/1.83.0: + resolution: {integrity: sha512-uwFSXzJlfbd4Px189xE5l+cxN8+TQpXdQgJec7TIrb4HEY7imabtpYufpVdqUVwT1/uiis5V4+qIEC4Vl5XObQ==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-android-arm64/1.83.0: + resolution: {integrity: sha512-GBiCvM4a2rkWBLdYDxI6XYnprfk5U5c81g69RC2X6kqPuzxzx8qTArQ9M6keFK4+iDQ5N9QTwFCr0KbZTn+ZNQ==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-android-ia32/1.83.0: + resolution: {integrity: sha512-5ATPdGo2SICqAhiJl/Z8KQ23zH4sGgobGgux0TnrNtt83uHZ+r+To/ubVJ7xTkZxed+KJZnIpolGD8dQyQqoTg==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [android] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-android-riscv64/1.83.0: + resolution: {integrity: sha512-aveknUOB8GZewOzVn2Uwk+DKcncTR50Q6vtzslNMGbYnxtgQNHzy8A1qVEviNUruex+pHofppeMK4iMPFAbiEQ==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-android-x64/1.83.0: + resolution: {integrity: sha512-WqIay/72ncyf9Ph4vS742J3a73wZihWmzFUwpn1OD6lme1Aj4eWzWIve5IVnlTEJgcZcDHu6ECID9IZgehJKoA==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-darwin-arm64/1.83.0: + resolution: {integrity: sha512-XQl9QqgxFFIPm/CzHhmppse5o9ocxrbaAdC2/DAnlAqvYWBBtgFqPjGoYlej13h9SzfvNoogx+y9r+Ap+e+hYg==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-darwin-x64/1.83.0: + resolution: {integrity: sha512-ERQ7Tvp1kFOW3ux4VDFIxb7tkYXHYc+zJpcrbs0hzcIO5ilIRU2tIOK1OrNwrFO6Qxyf7AUuBwYKLAtIU/Nz7g==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-linux-arm/1.83.0: + resolution: {integrity: sha512-baG9RYBJxUFmqwDNC9h9ZFElgJoyO3jgHGjzEZ1wHhIS9anpG+zZQvO8bHx3dBpKEImX+DBeLX+CxsFR9n81gQ==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-linux-arm64/1.83.0: + resolution: {integrity: sha512-syEAVTJt4qhaMLxrSwOWa46zdqHJdnqJkLUK+t9aCr8xqBZLPxSUeIGji76uOehQZ1C+KGFj6n9xstHN6wzOJw==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-linux-ia32/1.83.0: + resolution: {integrity: sha512-RRBxQxMpoxu5+XcSSc6QR/o9asEwUzR8AbCS83RaXcdTIHTa/CccQsiAoDDoPlRsMTLqnzs0LKL4CfOsf7zBbA==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-linux-musl-arm/1.83.0: + resolution: {integrity: sha512-Yc7u2TelCfBab+PRob9/MNJFh3EooMiz4urvhejXkihTiKSHGCv5YqDdtWzvyb9tY2Jb7YtYREVuHwfdVn3dTQ==} + engines: {node: '>=14.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-linux-musl-arm64/1.83.0: + resolution: {integrity: sha512-Y7juhPHClUO2H5O+u+StRy6SEAcwZ+hTEk5WJdEmo1Bb1gDtfHvJaWB/iFZJ2tW0W1e865AZeUrC4OcOFjyAQA==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-linux-musl-ia32/1.83.0: + resolution: {integrity: sha512-arQeYwGmwXV8byx5G1PtSzZWW1jbkfR5qrIHMEbTFSAvAxpqjgSvCvrHMOFd73FcMxVaYh4BX9LQNbKinkbEdg==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-linux-musl-riscv64/1.83.0: + resolution: {integrity: sha512-E6uzlIWz59rut+Z3XR6mLG915zNzv07ISvj3GUNZENdHM7dF8GQ//ANoIpl5PljMQKp89GnYdvo6kj2gnaBf/g==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-linux-musl-x64/1.83.0: + resolution: {integrity: sha512-eAMK6tyGqvqr21r9g8BnR3fQc1rYFj85RGduSQ3xkITZ6jOAnOhuU94N5fwRS852Hpws0lXhET+7JHXgg3U18w==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-linux-riscv64/1.83.0: + resolution: {integrity: sha512-Ojpi78pTv02sy2fUYirRGXHLY3fPnV/bvwuC2i5LwPQw2LpCcFyFTtN0c5h4LJDk9P6wr+/ZB/JXU8tHIOlK+Q==} + engines: {node: '>=14.0.0'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-linux-x64/1.83.0: + resolution: {integrity: sha512-3iLjlXdoPfgZRtX4odhRvka1BQs5mAXqfCtDIQBgh/o0JnGPzJIWWl9bYLpHxK8qb+uyVBxXYgXpI0sCzArBOw==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-win32-arm64/1.83.0: + resolution: {integrity: sha512-iOHw/8/t2dlTW3lOFwG5eUbiwhEyGWawivlKWJ8lkXH7fjMpVx2VO9zCFAm8RvY9xOHJ9sf1L7g5bx3EnNP9BQ==} + engines: {node: '>=14.0.0'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-win32-ia32/1.83.0: + resolution: {integrity: sha512-2PxNXJ8Pad4geVcTXY4rkyTr5AwbF8nfrCTDv0ulbTvPhzX2mMKEGcBZUXWn5BeHZTBc6whNMfS7d5fQXR9dDQ==} + engines: {node: '>=14.0.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /sass-embedded-win32-x64/1.83.0: + resolution: {integrity: sha512-muBXkFngM6eLTNqOV0FQi7Dv9s+YRQ42Yem26mosdan/GmJQc81deto6uDTgrYn+bzFNmiXcOdfm+0MkTWK3OQ==} + engines: {node: '>=14.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /sass-embedded/1.83.0: + resolution: {integrity: sha512-/8cYZeL39evUqe0o//193na51Q1VWZ61qhxioQvLJwOtWIrX+PgNhCyD8RSuTtmzc4+6+waFZf899bfp/MCUwA==} + engines: {node: '>=16.0.0'} + hasBin: true + dependencies: + '@bufbuild/protobuf': 2.2.3 + buffer-builder: 0.2.0 + colorjs.io: 0.5.2 + immutable: 5.0.3 + rxjs: 7.8.1 + supports-color: 8.1.1 + sync-child-process: 1.0.2 + varint: 6.0.0 + optionalDependencies: + sass-embedded-android-arm: 1.83.0 + sass-embedded-android-arm64: 1.83.0 + sass-embedded-android-ia32: 1.83.0 + sass-embedded-android-riscv64: 1.83.0 + sass-embedded-android-x64: 1.83.0 + sass-embedded-darwin-arm64: 1.83.0 + sass-embedded-darwin-x64: 1.83.0 + sass-embedded-linux-arm: 1.83.0 + sass-embedded-linux-arm64: 1.83.0 + sass-embedded-linux-ia32: 1.83.0 + sass-embedded-linux-musl-arm: 1.83.0 + sass-embedded-linux-musl-arm64: 1.83.0 + sass-embedded-linux-musl-ia32: 1.83.0 + sass-embedded-linux-musl-riscv64: 1.83.0 + sass-embedded-linux-musl-x64: 1.83.0 + sass-embedded-linux-riscv64: 1.83.0 + sass-embedded-linux-x64: 1.83.0 + sass-embedded-win32-arm64: 1.83.0 + sass-embedded-win32-ia32: 1.83.0 + sass-embedded-win32-x64: 1.83.0 + dev: true + + /sax/1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + dev: true + optional: true + + /saxes/6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /scheduler/0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + dependencies: + loose-envify: 1.4.0 + + /semver/5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + optional: true + + /semver/7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /semver/7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + /shallow-element-equals/1.0.1: + resolution: {integrity: sha512-TwyvU5ZIISuZAmX7juTupVggTW9avkp+Swz0amKicADbQrnhP5kAPkPbL8gKSFv9QkkzhTg2u3Se6TjGhn1xlQ==} + dependencies: + style-equal: 1.0.0 + dev: false + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: false + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: false + + /siginfo/2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /signal-exit/4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + + /simple-git/3.27.0: + resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + debug: 4.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /sirv/3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + + /sisteransi/1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /sort-object-keys/1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + dev: true + + /sort-package-json/2.12.0: + resolution: {integrity: sha512-/HrPQAeeLaa+vbAH/znjuhwUluuiM/zL5XX9kop8UpDgjtyWKt43hGDk2vd/TBdDpzIyzIHVUgmYofzYrAQjew==} + hasBin: true + dependencies: + detect-indent: 7.0.1 + detect-newline: 4.0.1 + get-stdin: 9.0.0 + git-hooks-list: 3.1.0 + is-plain-obj: 4.1.0 + semver: 7.6.3 + sort-object-keys: 1.1.3 + tinyglobby: 0.2.10 + dev: true + + /source-map-js/1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js/1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /ssr-window/3.0.0: + resolution: {integrity: sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==} + dev: false + + /stackback/0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /state-local/1.0.7: + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} + dev: false + + /std-env/3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + dev: true + + /store/2.0.12: + resolution: {integrity: sha512-eO9xlzDpXLiMr9W1nQ3Nfp9EzZieIQc10zPPMP5jsVV7bLOziSFFBP0XoDXACEIFtdI+rIz0NwWVA/QVJ8zJtw==} + dev: false + + /strict-event-emitter-types/2.0.0: + resolution: {integrity: sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA==} + dev: false + + /string-argv/0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false + + /string-width/5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: false + + /strip-ansi/7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.1.0 + dev: false + + /strip-json-comments/2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /style-equal/1.0.0: + resolution: {integrity: sha512-gf20kfwh7eXsgPcwvYqViCBHr+GXIlpXOZR1wQftNH4/ee2P/yolWUVA/MdMdmMp+0BMfvaMKSIR1DQlY64Btw==} + dev: false + + /style-unit/2.0.1: + resolution: {integrity: sha512-1OHU+0lWHrK22W3DDfLKFl5cOIwTxghbVRgtzgue+/9m5dqsYQhVBObQupMdtN6FIhpM375l18h8nLqPKgHfPQ==} + dependencies: + universal-env: 2.0.0 + dev: false + + /style-unit/3.0.5: + resolution: {integrity: sha512-xL+kev1W1dPthdhpQqZs9Qk1zenQiHKyy9oy2/VasW4z6wi7m7qQvMe67foPsr99JSs0115X0TCN1ch1n0XqSw==} + dependencies: + '@babel/runtime': 7.26.0 + universal-env: 3.3.3 + dev: false + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color/8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /swiper/6.5.0: + resolution: {integrity: sha512-cSx1SpfgrHlgwku++3Ce3cjPBpXgB7P+bGik5S3+F+j6ID0NUeV6qtmedFdr3C8jXR/W+TJPVNIT9fH/cwVAiA==} + engines: {node: '>= 4.7.0'} + requiresBuild: true + dependencies: + dom7: 3.0.0 + ssr-window: 3.0.0 + dev: false + + /symbol-tree/3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /sync-child-process/1.0.2: + resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==} + engines: {node: '>=16.0.0'} + dependencies: + sync-message-port: 1.1.3 + dev: true + + /sync-message-port/1.1.3: + resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} + engines: {node: '>=16.0.0'} + dev: true + + /synckit/0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.1 + dev: true + + /tinybench/2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + dev: true + + /tinycolor2/1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + dev: false + + /tinyexec/0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + dev: true + + /tinyglobby/0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + engines: {node: '>=12.0.0'} + dependencies: + fdir: 6.4.2_picomatch@4.0.2 + picomatch: 4.0.2 + dev: true + + /tinypool/1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} + engines: {node: ^18.0.0 || >=20.0.0} + dev: true + + /tinyrainbow/1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy/3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + dev: true + + /tldts-core/6.1.68: + resolution: {integrity: sha512-85TdlS/DLW/gVdf2oyyzqp3ocS30WxjaL4la85EArl9cHUR/nizifKAJPziWewSZjDZS71U517/i6ciUeqtB5Q==} + dev: true + + /tldts/6.1.68: + resolution: {integrity: sha512-JKF17jROiYkjJPT73hUTEiTp2OBCf+kAlB+1novk8i6Q6dWjHsgEjw9VLiipV4KTJavazXhY1QUXyQFSem2T7w==} + hasBin: true + dependencies: + tldts-core: 6.1.68 + dev: true + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /totalist/3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + + /tough-cookie/5.0.0: + resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} + engines: {node: '>=16'} + dependencies: + tldts: 6.1.68 + dev: true + + /tr46/5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + dependencies: + punycode: 2.3.1 + dev: true + + /tslib/2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + /typescript/5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /typescript/5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /ufo/1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + dev: true + + /universal-canvas-context/1.0.0: + resolution: {integrity: sha512-ZjdoQyp7sDNB6o1xj93ulD2u1KYjEmMqZMGvIABREjREFlix70O4BTWFrADpMRI3uW6A2N7L45y4xksKqaIvwQ==} + engines: {npm: '>=3.0.0'} + dev: false + + /universal-choose-image/1.3.0_rax@1.2.3: + resolution: {integrity: sha512-j7L7Qk4X4rvBb8nsG5cqYPMahj1+/jkGsPUN1+1hvbX+H1aOs4gYcbnYCnQvmIZv1r4ghggvoS8Wgh95RcgfAA==} + engines: {npm: '>=3.0.0'} + peerDependencies: + rax: ^1.1.0 + dependencies: + rax: 1.2.3 + universal-env: 3.3.3 + dev: false + + /universal-device/1.0.3: + resolution: {integrity: sha512-27VnA0IXJ70JRLwxtmCYRxXJSe+r6KwgiPu0dx9e+WD3Y0Gn5nKbK083KG5FK1Nbtxjyl0kRgvfG6MpK3YKXrg==} + engines: {npm: '>=3.0.0'} + dependencies: + universal-env: 3.3.3 + dev: false + + /universal-device/2.3.1: + resolution: {integrity: sha512-Z7aMODPW3CdhU4IicZ41l1PUZJLxENtEBZsks6fOKD4pyRkip1Z5EFdaDv/NdC35ccs7uR9SbkVF6QL3qwPWsw==} + engines: {npm: '>=3.0.0'} + dependencies: + universal-env: 3.3.3 + dev: false + + /universal-element/0.0.6: + resolution: {integrity: sha512-J1olYldUlj35w4pBt1LljiRuRjohATGHCIiiOHOepXtELB8zESOdYDlrFtXfxGtb6TUZm8oAaOPbTwhb+6A4BA==} + engines: {npm: '>=3.0.0'} + dependencies: + universal-env: 3.3.3 + dev: false + + /universal-env/0.6.6: + resolution: {integrity: sha512-CqBdTKFStTEV7wETHjWm7CDIbSdUxIlN3zQ5xraTG6Wb1XEmBgyW1pu8lJW0buRXjACgjrD+pr97akumbQ0Y6A==} + dev: false + + /universal-env/2.0.0: + resolution: {integrity: sha512-jfPJvPXFdhJHsDhuCHj3Njc3nxF+dmj6LeqKE9R41EdKKOJ1d5GGpFu3DrT+Ff+pxS9jsnbtj7BZYFAcLlxdPg==} + engines: {npm: '>=3.0.0'} + dev: false + + /universal-env/3.3.3: + resolution: {integrity: sha512-4ZyITvWhtcurCEA66Cb7jcd4zpEiAAo91wSwbEscbiu033pIsC2yjgT8LYyasFgsst6jZHD1gtVoSyYcL8oH1Q==} + engines: {npm: '>=3.0.0'} + dependencies: + '@uni/env': 1.1.1 + dev: false + + /universal-panresponder/0.6.5: + resolution: {integrity: sha512-7N9xSPgILxBr12krtyTl2KjN7wWxirtdH2/NsQj234KHrHt8yQ8hIgi6sjW4eyP3/5QtAn2JWwPSYdFmgHvg4w==} + dependencies: + universal-env: 0.6.6 + dev: false + + /universal-transition/1.1.1: + resolution: {integrity: sha512-TeYwWDhoYSYeGwX2L80gAQx7wByGvQ1WsPxqp+c6yYzqrc6BUuqpohtWY5Gh4ZPo0nToSNeadhly9sjeGLlV6Q==} + engines: {npm: '>=3.0.0'} + dependencies: + style-unit: 2.0.1 + universal-device: 1.0.3 + universal-env: 3.3.3 + universal-unit-tool: 1.0.0 + dev: false + + /universal-unit-tool/1.0.0: + resolution: {integrity: sha512-YTKN4pUqgAQqP5duZQSTxv2zswkUdZ4z3KtRgpXOxlo3huJm7xbiwhxeX8RM675Tjfo4entn8yQHclFJy9iaQQ==} + dependencies: + universal-device: 2.3.1 + dev: false + + /universalify/0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify/2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /use-sync-external-store/1.4.0_react@18.3.1: + resolution: {integrity: sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + dependencies: + react: 18.3.1 + dev: false + + /varint/6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + dev: true + + /vite-node/2.1.8_ahjh2i6fbktk2q4a5frfh4rxa4: + resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.4.0 + es-module-lexer: 1.5.4 + pathe: 1.1.2 + vite: 5.4.11_ahjh2i6fbktk2q4a5frfh4rxa4 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-plugin-dts/4.3.0_76h7ayhxucz4r6hiysvdf3qf4a: + resolution: {integrity: sha512-LkBJh9IbLwL6/rxh0C1/bOurDrIEmRE7joC+jFdOEEciAFPbpEKOLSAr5nNh5R7CJ45cMbksTrFfy52szzC5eA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + '@microsoft/api-extractor': 7.48.1 + '@rollup/pluginutils': 5.1.4 + '@volar/typescript': 2.4.11 + '@vue/language-core': 2.1.6_typescript@5.7.2 + compare-versions: 6.1.1 + debug: 4.4.0 + kolorist: 1.8.0 + local-pkg: 0.5.1 + magic-string: 0.30.17 + typescript: 5.7.2 + vite: 6.0.3_ahjh2i6fbktk2q4a5frfh4rxa4 + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + dev: true + + /vite-plugin-external/4.3.1: + resolution: {integrity: sha512-aoukfac66QevFAbRF2ZD81WPSqeqhgEfbfhPYQP9RPWO1en+Lw4HyhWRdvSjYn56gcKUJCtHdFG2jEpYgleLng==} + engines: {node: '>=14.18.0', vite: '>=3.1.0'} + dependencies: + '@types/fs-extra': 11.0.4 + '@types/node': 14.18.63 + fs-extra: 11.2.0 + dev: true + + /vite/5.4.11_ahjh2i6fbktk2q4a5frfh4rxa4: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.21.5 + less: 4.2.1 + postcss: 8.4.49 + rollup: 4.28.1 + sass-embedded: 1.83.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vite/6.0.3_ahjh2i6fbktk2q4a5frfh4rxa4: + resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + dependencies: + esbuild: 0.24.0 + less: 4.2.1 + postcss: 8.4.49 + rollup: 4.28.1 + sass-embedded: 1.83.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitest/2.1.8_ur5au2lahz2oftporakumkt27q: + resolution: {integrity: sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.1.8 + '@vitest/ui': 2.1.8 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@vitest/expect': 2.1.8 + '@vitest/mocker': 2.1.8_vite@5.4.11 + '@vitest/pretty-format': 2.1.8 + '@vitest/runner': 2.1.8 + '@vitest/snapshot': 2.1.8 + '@vitest/spy': 2.1.8 + '@vitest/ui': 2.1.8_vitest@2.1.8 + '@vitest/utils': 2.1.8 + chai: 5.1.2 + debug: 4.4.0 + expect-type: 1.1.0 + jsdom: 25.0.1 + magic-string: 0.30.17 + pathe: 1.1.2 + std-env: 3.8.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.2 + tinyrainbow: 1.2.0 + vite: 5.4.11_ahjh2i6fbktk2q4a5frfh4rxa4 + vite-node: 2.1.8_ahjh2i6fbktk2q4a5frfh4rxa4 + why-is-node-running: 2.3.0 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vscode-uri/3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + dev: true + + /w3c-xmlserializer/5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + dependencies: + xml-name-validator: 5.0.0 + dev: true + + /webidl-conversions/7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /whatwg-encoding/3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype/4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + dev: true + + /whatwg-url/14.1.0: + resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==} + engines: {node: '>=18'} + dependencies: + tr46: 5.0.0 + webidl-conversions: 7.0.0 + dev: true + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /why-is-node-running/2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrap-ansi/8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false + + /ws/8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator/5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + dev: true + + /xmlchars/2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true diff --git a/scripts/sync-oss.js b/scripts/sync-oss.js deleted file mode 100644 index 407f113..0000000 --- a/scripts/sync-oss.js +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env node -const http = require('http'); -const package = require('../package.json'); -const { version, name } = package; -const options = { - method: 'PUT', - // 暂时使用 日常环境的 uipaas-node,上线后可切换成线上环境 https://uipaas-node.alibaba-inc.com - hostname: 'uipaas-node.alibaba.net', - path: '/staticAssets/cdn/packages', - headers: { - 'Content-Type': 'application/json', - Cookie: 'locale=en-us', - }, - maxRedirects: 20, -}; - -const onResponse = function (res) { - const chunks = []; - res.on('data', (chunk) => { - chunks.push(chunk); - }); - - res.on('end', (chunk) => { - const body = Buffer.concat(chunks); - console.table(JSON.stringify(JSON.parse(body.toString()), null, 2)); - }); - - res.on('error', (error) => { - console.error(error); - }); -}; - -const req = http.request(options, onResponse); - -const postData = JSON.stringify({ - packages: [ - { - packageName: name, - version, - }, - ], - // 可以发布指定源的 npm 包,默认公网 npm - useTnpm: false, -}); - -req.write(postData); - -req.end(); \ No newline at end of file diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..47b7bc1 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,128 @@ +import { IPublicModelPluginContext } from '@felce/lowcode-types'; +import packagesInfo from '../package.json'; +import './index.less'; +import EventBindDialog from './plugin/plugin-event-bind-dialog'; +import SimpleVariableBindPopup from './plugin/plugin-simple-bind-popup'; +import VariableBindDialog from './plugin/plugin-variable-bind-dialog'; +import { DataArraySetter } from './setter/array-setter'; +import BoolSetter from './setter/bool-setter'; +import ClassNameSetter from './setter/classname-setter'; +import ColorSetter from './setter/color-setter'; +import { + DateMonthSetter, + DateRangeSetter, + DateYearSetter, + StringDateSetter, + StringTimePicker, +} from './setter/date-setter'; +import EventsSetter from './setter/events-setter'; +import ExpressionSetter, { DataExpressionSetter } from './setter/expression-setter'; +import { DataFunctionSetter } from './setter/function-setter'; +import I18nSetter from './setter/i18n-setter'; +import IconSetter from './setter/icon-setter'; +import JsonSetter, { DataJsonSetter } from './setter/json-setter'; +import MixedSetter from './setter/mixed-setter'; +import NumberSetter from './setter/number-setter'; +import { DataObjectSetter } from './setter/object-setter'; +import RadioGroupSetter from './setter/radiogroup-setter'; +import SelectSetter from './setter/select-setter'; +import { DataSlotSetter } from './setter/slot-setter'; +import StringSetter from './setter/string-setter'; +import StyleSetter from './setter/style-setter'; +import TextAreaSetter from './setter/textarea-setter'; +import TitleSetter from './setter/title-setter'; +import { DataVariableSetter } from './setter/variable-setter'; + +export { EventsSetter, ExpressionSetter, IconSetter, JsonSetter }; + +// TODO 类型定义 +const engineExt: any = { + setters: { + StringSetter, + NumberSetter, + BoolSetter, + SelectSetter, + VariableSetter: DataVariableSetter, + ExpressionSetter: DataExpressionSetter, + RadioGroupSetter, + TextAreaSetter, + DateSetter: StringDateSetter, + TimePicker: StringTimePicker, + DateYearSetter, + DateMonthSetter, + DateRangeSetter, + EventsSetter, + ColorSetter, + JsonSetter: DataJsonSetter, + StyleSetter, + IconSetter, + ClassNameSetter, + I18nSetter, + FunctionSetter: DataFunctionSetter, + MixedSetter, + SlotSetter: DataSlotSetter, + ArraySetter: DataArraySetter, + ObjectSetter: DataObjectSetter, + TitleSetter, + }, + + setterMap: { + StringSetter, + NumberSetter, + BoolSetter, + SelectSetter, + VariableSetter: DataVariableSetter, + ExpressionSetter: DataExpressionSetter, + RadioGroupSetter, + TextAreaSetter, + DateSetter: StringDateSetter, + TimePicker: StringTimePicker, + DateYearSetter, + DateMonthSetter, + DateRangeSetter, + EventsSetter, + ColorSetter, + JsonSetter: DataJsonSetter, + StyleSetter, + IconSetter, + ClassNameSetter, + I18nSetter, + FunctionSetter: DataFunctionSetter, + MixedSetter, + SlotSetter: DataSlotSetter, + ArraySetter: DataArraySetter, + ObjectSetter: DataObjectSetter, + TitleSetter, + }, + + pluginMap: { + EventBindDialog, + VariableBindDialog, + SimpleVariableBindPopup, + }, +}; +engineExt.version = packagesInfo.version; +(window as any).AliLowCodeEngineExt = engineExt; +console.log( + '%c AliLowCodeExt %c v'.concat(engineExt.version, ' '), + 'padding: 2px 1px; border-radius: 3px 0 0 3px; color: #fff; background: #5584ff; font-weight: bold;', + 'padding: 2px 1px; border-radius: 0 3px 3px 0; color: #fff; background: #42c02e; font-weight: bold;', +); + +// 注册默认的 setters +export const setterRegistry = (ctx: IPublicModelPluginContext) => { + return { + async init() { + const { config } = ctx; + if (config.get('disableDefaultSetters')) return; + const builtinSetters = engineExt.setters; + if (builtinSetters) { + ctx.setters.registerSetter(builtinSetters); + } + }, + }; +}; + +setterRegistry.pluginName = '___setter_registry___'; + +export default engineExt; diff --git a/src/index.tsx b/src/index.tsx deleted file mode 100644 index 6b3685c..0000000 --- a/src/index.tsx +++ /dev/null @@ -1,243 +0,0 @@ -import React, { Component } from 'react'; -import { isJSExpression, isJSFunction, isJSSlot } from '@alilc/lowcode-types'; -import { isPlainObject } from './utils'; -import { DatePicker, TimePicker } from '@alifd/next'; -import moment from 'moment'; -import ExpressionSetter from './setter/expression-setter'; -import ColorSetter from './setter/color-setter'; -import JsonSetter from './setter/json-setter'; -import EventsSetter from './setter/events-setter'; -import StyleSetterV2 from './setter/style-setter'; -import IconSetter from './setter/icon-setter'; -import FunctionSetter from './setter/function-setter'; -import ClassNameSetter from './setter/classname-setter'; -import StringSetter from './setter/string-setter'; -import SelectSetter from './setter/select-setter'; -import RadioGroupSetter from './setter/radiogroup-setter'; -import BoolSetter from './setter/bool-setter'; -import NumberSetter from './setter/number-setter'; -import I18nSetter from './setter/i18n-setter'; -import MixedSetter from './setter/mixed-setter'; -import SlotSetter from './setter/slot-setter'; -import TextAreaSetter from './setter/textarea-setter'; -import ArraySetter from './setter/array-setter'; -import ObjectSetter from './setter/object-setter'; -import VariableSetter from './setter/variable-setter'; -import TitleSetter from './setter/title-setter'; -import EventBindDialog from './plugin/plugin-event-bind-dialog'; -import VariableBindDialog from './plugin/plugin-variable-bind-dialog'; -import SimpleVariableBindPopup from './plugin/plugin-simple-bind-popup' -import './index.less'; -import packagesInfo from '../package.json'; -// suggest: 做成 StringSetter 的一个参数, -// export const TextAreaSetter = { -// component: TextAreaSetter, -// title: 'TextareaSetter', -// recommend: true, -// condition: (field: any) => { -// const v = field.getValue(); -// return typeof v === 'string'; -// }, -// }; - -export const DateSetter = DatePicker; -export const DateYearSetter = DatePicker.YearPicker; -export const DateMonthSetter = DatePicker.MonthPicker; -export const DateRangeSetter = DatePicker.RangePicker; - -export { ExpressionSetter, EventsSetter, JsonSetter, IconSetter }; - -// eslint-disable-next-line react/no-multi-comp -class StringDateSetter extends Component { - render() { - const { onChange, value, showTime } = this.props; - return ( - { - onChange(val ? val.format() : val); - }} - /> - ); - } -} - -// eslint-disable-next-line react/no-multi-comp -class StringTimePicker extends Component { - render() { - const { onChange, value } = this.props; - return ( - { - onChange(val ? val.format('HH:mm:ss') : val); - }} - /> - ); - } -} - -const DataExpressionSetter = { - component: ExpressionSetter, - condition: (field: any) => { - const v = field.getValue(); - return isJSExpression(v); - }, - valueType: ['JSExpression'], - defaultProps: { placeholder: '请输入表达式' }, - title: '表达式输入', - recommend: true, -}; - -const DataVariableSetter = { - component: VariableSetter, - condition: (field: any) => { - const v = field.getValue(); - return isJSExpression(v); - }, - valueType: ['JSExpression'], - title: '变量输入', - recommend: true, -}; - -const FunctionBindSetter = { - component: FunctionSetter, - title: '函数绑定', - condition: (field: any) => { - const v = field.getValue(); - return isJSFunction(v); - }, - - valueType: ['JSFunction'], -}; - -const DataJsonSetter = { - component: JsonSetter, - valueType: ['object', 'array'], -}; - -const DataArraySetter = { - component: ArraySetter, - defaultProps: {}, - title: 'ArraySetter', - condition: (field: any) => { - const v = field.getValue(); - return v == null || Array.isArray(v); - }, - initialValue: [], - recommend: true, - valueType: ['array'], -}; - -const DataObjectSetter = { - component: ObjectSetter, - // todo: defaultProps - defaultProps: {}, - title: 'ObjectSetter', // TODO - condition: (field: any) => { - const v = field.getValue(); - return v == null || isPlainObject(v); - }, - initialValue: {}, - recommend: true, -}; - -const DataSlotSetter = { - component: SlotSetter, - title: { - type: 'i18n', - 'zh-CN': '插槽输入', - 'en-US': 'Slot Setter', - }, - condition: (field: any) => { - return isJSSlot(field.getValue()); - }, - initialValue: (field: any, value: any) => { - if (isJSSlot(value)) { - return value; - } - return { - type: 'JSSlot', - value, - }; - }, - recommend: true, - valueType: ['JSSlot'], -}; - -const engineExt = { - setters: { - StringSetter, - NumberSetter, - BoolSetter, - SelectSetter, - VariableSetter: DataVariableSetter, - ExpressionSetter: DataExpressionSetter, - RadioGroupSetter, - TextAreaSetter, - DateSetter: StringDateSetter, - TimePicker: StringTimePicker, - DateYearSetter, - DateMonthSetter, - DateRangeSetter, - EventsSetter, - ColorSetter, - JsonSetter: DataJsonSetter, - StyleSetter: StyleSetterV2, - IconSetter, - ClassNameSetter, - I18nSetter, - FunctionSetter: FunctionBindSetter, - MixedSetter, - SlotSetter: DataSlotSetter, - ArraySetter: DataArraySetter, - ObjectSetter: DataObjectSetter, - TitleSetter, - }, - - setterMap: { - StringSetter, - NumberSetter, - BoolSetter, - SelectSetter, - VariableSetter: DataVariableSetter, - ExpressionSetter: DataExpressionSetter, - RadioGroupSetter, - TextAreaSetter, - DateSetter: StringDateSetter, - TimePicker: StringTimePicker, - DateYearSetter, - DateMonthSetter, - DateRangeSetter, - EventsSetter, - ColorSetter, - JsonSetter: DataJsonSetter, - StyleSetter: StyleSetterV2, - IconSetter, - ClassNameSetter, - I18nSetter, - FunctionSetter: FunctionBindSetter, - MixedSetter, - SlotSetter: DataSlotSetter, - ArraySetter: DataArraySetter, - ObjectSetter: DataObjectSetter, - TitleSetter, - }, - - pluginMap: { - EventBindDialog, - VariableBindDialog, - SimpleVariableBindPopup, - }, -}; -engineExt.version = packagesInfo.version; -window.AliLowCodeEngineExt = engineExt; -console.log( - '%c AliLowCodeExt %c v'.concat(engineExt.version, ' '), - 'padding: 2px 1px; border-radius: 3px 0 0 3px; color: #fff; background: #5584ff; font-weight: bold;', - 'padding: 2px 1px; border-radius: 0 3px 3px 0; color: #fff; background: #42c02e; font-weight: bold;', -); -export default engineExt; - -// registerSetter(builtinSetters); diff --git a/src/other.tsx b/src/other.tsx new file mode 100644 index 0000000..e69de29 diff --git a/src/plugin/plugin-event-bind-dialog/index.tsx b/src/plugin/plugin-event-bind-dialog/index.tsx index e7c32f2..0a1016b 100644 --- a/src/plugin/plugin-event-bind-dialog/index.tsx +++ b/src/plugin/plugin-event-bind-dialog/index.tsx @@ -1,9 +1,9 @@ import { Component } from 'react'; import * as React from 'react'; -import { event, project, skeleton } from '@alilc/lowcode-engine'; +import { event, project, skeleton } from '@felce/lowcode-engine'; import { Dialog, Search, Input, Balloon, Icon, Switch, Message } from '@alifd/next'; -import { PluginProps } from '@alilc/lowcode-types'; -import MonacoEditor from '@alilc/lowcode-plugin-base-monaco-editor'; +import { PluginProps } from '@felce/lowcode-types'; +import MonacoEditor from '@felce/lowcode-plugin-base-monaco-editor'; import './index.less'; const defaultParams = '{\n \t "testKey":123 \n}'; @@ -14,8 +14,8 @@ const tempPlaceHolderReg = /\$\{extParams\}/g; const propEventsReg = /(this\.)?props\.[a-zA-Z0-9\-_]+/; const defaultEditorOption = { - height:'319px', - width:'100%', + height: '319px', + width: '100%', readOnly: false, automaticLayout: true, folding: true, // 默认开启折叠代码功能 @@ -214,10 +214,9 @@ export default class EventBindDialog extends Component { if (template) { const functionName = this.pickupFunctionName(template); - formatTemp = template.replace(new RegExp(`^s*${ functionName}`), eventName); + formatTemp = template.replace(new RegExp(`^s*${functionName}`), eventName); if (useParams) { formatTemp = formatTemp.replace(tempPlaceHolderReg, 'extParams'); - } else { const leftIndex = formatTemp.indexOf('('); const rightIndex = formatTemp.indexOf(')'); @@ -233,12 +232,10 @@ export default class EventBindDialog extends Component { // 重新join进去 - formatTemp = - `${formatTemp.substr(0, leftIndex) - }(${ - paramList.join(',') - })${ - formatTemp.substr(rightIndex + 1, formatTemp.length)}`; + formatTemp = `${formatTemp.substr(0, leftIndex)}(${paramList.join(',')})${formatTemp.substr( + rightIndex + 1, + formatTemp.length, + )}`; } } @@ -347,7 +344,7 @@ export default class EventBindDialog extends Component {
事件名称 {(window as any).lowcodeSetterSwitch?.enablePropsEvents && ( - + 如需绑定 props 属性,可通过 props.xxx 进行绑定 )} diff --git a/src/plugin/plugin-simple-bind-popup/index.tsx b/src/plugin/plugin-simple-bind-popup/index.tsx index d8491e2..c3e172a 100644 --- a/src/plugin/plugin-simple-bind-popup/index.tsx +++ b/src/plugin/plugin-simple-bind-popup/index.tsx @@ -1,18 +1,17 @@ import React, { Component } from 'react'; import { Button, Overlay } from '@alifd/next'; -import { PluginProps } from '@alilc/lowcode-types'; -import { event } from '@alilc/lowcode-engine'; -import MonacoEditor from '@alilc/lowcode-plugin-base-monaco-editor'; +import { PluginProps } from '@felce/lowcode-types'; +import { event } from '@felce/lowcode-engine'; +import MonacoEditor from '@felce/lowcode-plugin-base-monaco-editor'; import './index.less'; - const defaultEditorProps = { width: '100%', height: '200px', }; const defaultEditorOption = { - options:{ + options: { readOnly: false, automaticLayout: true, folding: false, // 默认开启折叠代码功能 @@ -30,21 +29,21 @@ const defaultEditorOption = { scrollbar: { vertical: 'auto', horizontal: 'auto', - verticalScrollbarSize:0 + verticalScrollbarSize: 0, }, - } + }, }; export default class SimpleVariableBindPopup extends Component { state = { visiable: false, - isOverFlowMaxSize:false, + isOverFlowMaxSize: false, jsCode: '', field: {}, // 编辑器全局变量 treeList: [], minimize: false, // 是否最小化 autoExpandParent: true, - maxTextSize:0, // 绑定变量最大字符数 + maxTextSize: 0, // 绑定变量最大字符数 node: null as any as HTMLElement, // 触发的节点 }; @@ -65,15 +64,15 @@ export default class SimpleVariableBindPopup extends Component { const fieldValue = field.getValue(); const jsCode = fieldValue?.value; - const {maxTextSize} = this.props.config?.props || {} + const { maxTextSize } = this.props.config?.props || {}; this.setState({ jsCode, // fullScreenStatus: false, minimize: false, // 是否最小化 - isOverFlowMaxSize:false, + isOverFlowMaxSize: false, // 配置的最大文本长度,默认为0,不控制 - maxTextSize:maxTextSize?maxTextSize:0 + maxTextSize: maxTextSize ? maxTextSize : 0, }); }; @@ -90,18 +89,18 @@ export default class SimpleVariableBindPopup extends Component { updateCode = (newCode) => { let isOverFlowMaxSize = false; - if (this.state.maxTextSize){ - isOverFlowMaxSize = newCode?.length>this.state.maxTextSize + if (this.state.maxTextSize) { + isOverFlowMaxSize = newCode?.length > this.state.maxTextSize; } this.setState( { jsCode: newCode, - isOverFlowMaxSize + isOverFlowMaxSize, }, this.autoSave, ); - console.log('size====',newCode?.length); + console.log('size====', newCode?.length); }; autoSave = () => { @@ -119,8 +118,8 @@ export default class SimpleVariableBindPopup extends Component { onOk = (autoSave) => { const { field, jsCode } = this.state; - if(jsCode === undefined || jsCode?.length == 0) { - return this.removeTheBinding() + if (jsCode === undefined || jsCode?.length == 0) { + return this.removeTheBinding(); } const fieldValue = field.getValue(); @@ -144,7 +143,7 @@ export default class SimpleVariableBindPopup extends Component { Object.prototype.toString.call(fieldValue) === '[object Object]' ? fieldValue.mock : fieldValue; - console.debug('value', value, 'fieldValue', fieldValue, field) + console.debug('value', value, 'fieldValue', fieldValue, field); field.setValue(value); this.closeDialog(); }; @@ -182,25 +181,19 @@ export default class SimpleVariableBindPopup extends Component { }; renderErrorMessage = () => { - const {isOverFlowMaxSize,maxTextSize} = this.state; - return ( - isOverFlowMaxSize ? 表达式文本不能超过{maxTextSize}个字符,请换成函数调用 :null - ) - } + const { isOverFlowMaxSize, maxTextSize } = this.state; + return isOverFlowMaxSize ? ( + 表达式文本不能超过{maxTextSize}个字符,请换成函数调用 + ) : null; + }; isBtnDisable = () => { const { isOverFlowMaxSize } = this.state; return isOverFlowMaxSize; - } - + }; render() { - const { - visiable, - jsCode, - minimize, - isOverFlowMaxSize, - } = this.state; + const { visiable, jsCode, minimize, isOverFlowMaxSize } = this.state; return (
@@ -221,21 +214,33 @@ export default class SimpleVariableBindPopup extends Component { ) : ( '' )} -
this.nodeRef = ref} /> - {this.state.node && +
(this.nodeRef = ref)} + /> + {this.state.node && ( this.state.node} offset={[-380, 10]} >
绑定 {this.renderErrorMessage()}
-
+
=
{
{this.renderBottom()} -
+
- } + )}
); } diff --git a/src/plugin/plugin-variable-bind-dialog/index.tsx b/src/plugin/plugin-variable-bind-dialog/index.tsx index 84aba0e..91df1e7 100644 --- a/src/plugin/plugin-variable-bind-dialog/index.tsx +++ b/src/plugin/plugin-variable-bind-dialog/index.tsx @@ -1,8 +1,8 @@ import React, { Component } from 'react'; import { Dialog, Input, Button, Icon, Tree } from '@alifd/next'; -import { PluginProps } from '@alilc/lowcode-types'; -import { event, project } from '@alilc/lowcode-engine'; -import MonacoEditor from '@alilc/lowcode-plugin-base-monaco-editor'; +import { PluginProps } from '@felce/lowcode-types'; +import { event, project } from '@felce/lowcode-engine'; +import MonacoEditor from '@felce/lowcode-plugin-base-monaco-editor'; import './index.less'; const HelpText = `你可以通过点击左侧区域绑定变量或处理函数,当然你也可以在上方输入复杂的表达式。 @@ -25,7 +25,7 @@ const defaultEditorProps = { }; const defaultEditorOption = { - options:{ + options: { readOnly: false, automaticLayout: true, folding: false, // 默认开启折叠代码功能 @@ -43,15 +43,15 @@ const defaultEditorOption = { scrollbar: { vertical: 'auto', horizontal: 'auto', - verticalScrollbarSize:0 + verticalScrollbarSize: 0, }, - } + }, }; export default class VariableBindDialog extends Component { state = { visiable: false, - isOverFlowMaxSize:false, + isOverFlowMaxSize: false, // stateVaroableList: [], helpText: HelpText, // contextKeys: [], @@ -65,7 +65,7 @@ export default class VariableBindDialog extends Component { minimize: false, // 是否最小化 autoExpandParent: true, expandedKeys: [], - maxTextSize:0, // 绑定变量最大字符数 + maxTextSize: 0, // 绑定变量最大字符数 }; private editorJsRef = React.createRef(); @@ -85,9 +85,6 @@ export default class VariableBindDialog extends Component { this.openDialog(); }); }); - - - } exportSchema = () => { @@ -100,7 +97,7 @@ export default class VariableBindDialog extends Component { const fieldValue = field.getValue(); const jsCode = fieldValue?.value; - const {maxTextSize} = this.props.config?.props || {} + const { maxTextSize } = this.props.config?.props || {}; this.setState({ jsCode, @@ -111,9 +108,9 @@ export default class VariableBindDialog extends Component { selParentVariable: null, // 选中的父级变量 childrenVariableList: [], // 子级变量列表 minimize: false, // 是否最小化 - isOverFlowMaxSize:false, + isOverFlowMaxSize: false, // 配置的最大文本长度,默认为0,不控制 - maxTextSize:maxTextSize?maxTextSize:0 + maxTextSize: maxTextSize ? maxTextSize : 0, }); }; @@ -322,24 +319,20 @@ export default class VariableBindDialog extends Component { }; updateCode = (newCode) => { - let isOverFlowMaxSize = false; - if (this.state.maxTextSize){ - isOverFlowMaxSize = newCode?.length>this.state.maxTextSize + if (this.state.maxTextSize) { + isOverFlowMaxSize = newCode?.length > this.state.maxTextSize; } - this.setState( { jsCode: newCode, - isOverFlowMaxSize + isOverFlowMaxSize, }, this.autoSave, ); - - - console.log('size====',newCode?.length); + console.log('size====', newCode?.length); }; autoSave = () => { @@ -528,19 +521,17 @@ export default class VariableBindDialog extends Component { }; renderErrorMessage = () => { - const {isOverFlowMaxSize,maxTextSize} = this.state; - return ( - isOverFlowMaxSize ? 表达式文本不能超过{maxTextSize}个字符,请换成函数调用 :null - - ) - } + const { isOverFlowMaxSize, maxTextSize } = this.state; + return isOverFlowMaxSize ? ( + 表达式文本不能超过{maxTextSize}个字符,请换成函数调用 + ) : null; + }; isBtnDisable = () => { - const {jsCode,isOverFlowMaxSize} = this.state; + const { jsCode, isOverFlowMaxSize } = this.state; return jsCode === undefined || jsCode?.length == 0 || isOverFlowMaxSize; - } - + }; render() { const { @@ -644,7 +635,13 @@ export default class VariableBindDialog extends Component {
绑定 {this.renderErrorMessage()}
-
+
=
= target?.path; if (!targetPath || targetPath.length < 2) { console.warn( @@ -46,7 +56,7 @@ function onItemChange (target: IPublicModelSettingField, index: number, item: IP } catch (e) { console.warn('[ArraySetter] extraProps.setValue failed :', e); } -}; +} interface ArraySetterProps { value: any[]; @@ -56,7 +66,7 @@ interface ArraySetterProps { multiValue?: boolean; hideDescription?: boolean; onChange?: Function; - extraProps: {renderFooter?: (options: ArraySetterProps & {onAdd: (val?: {}) => any}) => any} + extraProps: { renderFooter?: (options: ArraySetterProps & { onAdd: (val?: {}) => any }) => any }; } export class ListSetter extends Component { @@ -90,7 +100,6 @@ export class ListSetter extends Component { }, }, }); - item.setValue(value[i]); } items.push(item); } @@ -106,7 +115,7 @@ export class ListSetter extends Component { const values: any[] = []; const newItems: IPublicModelSettingField[] = []; sortedIds.map((id, index) => { - const itemIndex = items.findIndex(item => item.id === id); + const itemIndex = items.findIndex((item) => item.id === id); values[index] = oldValues[itemIndex]; newItems[index] = items[itemIndex]; return id; @@ -114,11 +123,15 @@ export class ListSetter extends Component { onChange?.(values); } - onAdd(newValue?: {[key: string]: any}) { + onAdd(newValue?: { [key: string]: any }) { const { itemSetter, field, onChange, value = [] } = this.props; const values = value || []; const initialValue = (itemSetter as any)?.initialValue; - const defaultValue = newValue ? newValue : (typeof initialValue === 'function' ? initialValue(field) : initialValue); + const defaultValue = newValue + ? newValue + : typeof initialValue === 'function' + ? initialValue(field) + : initialValue; values.push(defaultValue); this.scrollToLast = true; onChange?.(values); @@ -137,7 +150,9 @@ export class ListSetter extends Component { i++; } removed.remove(); - const pureValues = values.map((item: any) => typeof(item) === 'object' ? Object.assign({}, item):item); + const pureValues = values.map((item: any) => + typeof item === 'object' ? Object.assign({}, item) : item, + ); onChange?.(pureValues); } @@ -195,15 +210,19 @@ export class ListSetter extends Component { ) : null} {content}
- { - !renderFooter ? ( - - ) : renderFooter({...this.props, onAdd: this.onAdd.bind(this),}) - } + {!renderFooter ? ( + + ) : ( + renderFooter({ ...this.props, onAdd: this.onAdd.bind(this) }) + )}
); @@ -315,3 +334,16 @@ export default class ArraySetter extends Component<{ } } } + +export const DataArraySetter = { + component: ArraySetter, + defaultProps: {}, + title: 'ArraySetter', + condition: (field: any) => { + const v = field.getValue(); + return v == null || Array.isArray(v); + }, + initialValue: [], + recommend: true, + valueType: ['array'], +}; diff --git a/src/setter/behavior-setter/actions/dialog-action.tsx b/src/setter/behavior-setter/actions/dialog-action.tsx index b807164..f8322a1 100644 --- a/src/setter/behavior-setter/actions/dialog-action.tsx +++ b/src/setter/behavior-setter/actions/dialog-action.tsx @@ -1,6 +1,6 @@ import * as React from 'react'; import { useEffect, useState } from 'react'; -import { SettingTarget } from '@alilc/lowcode-types'; +import { SettingTarget } from '@felce/lowcode-types'; import { Select, Box } from '@alifd/next'; import { BehaviorActionProps, BehaviorAction } from '../types'; @@ -50,16 +50,18 @@ const DialogContent: React.FC = ({ value = {}, onChange, fi ); }; - export const dialogBehaviorAction: BehaviorAction = { name: 'dialog', title: '弹窗', render: (props) => , - toActionValue: (value) => (value.id ? { - type: 'JSExpression', - value: `function() { + toActionValue: (value) => + value.id + ? { + type: 'JSExpression', + value: `function() { const dialog = this.$('${value.id}'); dialog.show(); }`, - } : null), + } + : null, }; diff --git a/src/setter/behavior-setter/index.tsx b/src/setter/behavior-setter/index.tsx index bcc09db..56cc37b 100644 --- a/src/setter/behavior-setter/index.tsx +++ b/src/setter/behavior-setter/index.tsx @@ -1,7 +1,7 @@ import * as React from 'react'; import { useState, ErrorInfo, useMemo } from 'react'; import { Radio, Select, Box } from '@alifd/next'; -import { SettingTarget, CustomView } from '@alilc/lowcode-types'; +import { SettingTarget, CustomView } from '@felce/lowcode-types'; import './index.scss'; import { BehaviorAction } from './types'; @@ -61,10 +61,10 @@ const BehaviorSetter: CustomView = ({ if (enableTooltipAction) { defaultActions.push(defaultActionMap.tooltip); } - const behaviorActions = useMemo(() => [ - ...defaultActions, - ...propsBehaviorActions, - ], [propsBehaviorActions]); + const behaviorActions = useMemo( + () => [...defaultActions, ...propsBehaviorActions], + [propsBehaviorActions], + ); const updateCurrentEventBehavior = (type: string, newVal: any) => { onChange({ @@ -110,19 +110,26 @@ const BehaviorSetter: CustomView = ({ - {behaviorOption && behaviorOption.render({ - field, - value: currentBehavior[currentBehaviorType], - onChange: (behaviorValue: Record) => { - field.parent.setPropValue(currentEvent, behaviorOption.toActionValue(behaviorValue, extendedOptions[currentBehaviorType])); - updateCurrentEventBehavior(currentBehaviorType, behaviorValue); - }, - options: currentBehaviorType === 'link' ? { - ...extendedOptions[currentBehaviorType], - url, - responseFormatter, - } : extendedOptions[currentBehaviorType], - })} + {behaviorOption && + behaviorOption.render({ + field, + value: currentBehavior[currentBehaviorType], + onChange: (behaviorValue: Record) => { + field.parent.setPropValue( + currentEvent, + behaviorOption.toActionValue(behaviorValue, extendedOptions[currentBehaviorType]), + ); + updateCurrentEventBehavior(currentBehaviorType, behaviorValue); + }, + options: + currentBehaviorType === 'link' + ? { + ...extendedOptions[currentBehaviorType], + url, + responseFormatter, + } + : extendedOptions[currentBehaviorType], + })}
); @@ -130,7 +137,6 @@ const BehaviorSetter: CustomView = ({ export default BehaviorSetter; - // eslint-disable-next-line @iceworks/best-practices/recommend-functional-component class ErrorBoundary extends React.Component { // 更新 state 使下一次渲染能够显示降级后的 UI diff --git a/src/setter/behavior-setter/types.ts b/src/setter/behavior-setter/types.ts index d71faae..a3afd9d 100644 --- a/src/setter/behavior-setter/types.ts +++ b/src/setter/behavior-setter/types.ts @@ -1,4 +1,4 @@ -import { SettingTarget } from '@alilc/lowcode-types'; +import { SettingTarget } from '@felce/lowcode-types'; export interface BehaviorActionProps, Options = any> { value: Value; diff --git a/src/setter/bool-setter/index.tsx b/src/setter/bool-setter/index.tsx index 6810a98..c8b1e80 100644 --- a/src/setter/bool-setter/index.tsx +++ b/src/setter/bool-setter/index.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import { Switch } from '@alifd/next'; import './index.less'; + interface BoolSetterProps { value: boolean; disabled: boolean; @@ -15,11 +16,12 @@ export default class BoolSetter extends React.PureComponent onChange(val)} /> diff --git a/src/setter/classname-setter/index.tsx b/src/setter/classname-setter/index.tsx index 34ffaa1..cf77603 100644 --- a/src/setter/classname-setter/index.tsx +++ b/src/setter/classname-setter/index.tsx @@ -1,12 +1,18 @@ -import React, { PureComponent } from 'react'; -import PropTypes from 'prop-types'; import { Select } from '@alifd/next'; -import { project } from '@alilc/lowcode-engine'; +import { IPublicEnumTransformStage, IPublicModelSettingField } from '@felce/lowcode-types'; +import PropTypes from 'prop-types'; +import { PureComponent } from 'react'; import './index.less'; export interface PluginProps { value: string; onChange: any; + field: IPublicModelSettingField; +} + +interface IOption { + label: string; + value: string; } export default class ClassNameView extends PureComponent { @@ -22,10 +28,23 @@ export default class ClassNameView extends PureComponent { value: '', }; + state = { + dataSource: [], + selectValue: [], + }; + getClassNameList = () => { - const schema = project.exportSchema(); - const css = schema.componentsTree[0].css; - const classNameList = []; + const schema = this.props.field.node?.document?.project?.exportSchema( + IPublicEnumTransformStage.Save, + ); + if (!schema) { + return []; + } + if (schema.componentsTree.length === 0) { + return []; + } + const { css } = schema.componentsTree[0]; + const classNameList: string[] = []; if (css) { const re = /\.?\w+[^{]+\{[^}]*\}/g; const list = css.match(re); @@ -47,9 +66,9 @@ export default class ClassNameView extends PureComponent { return classNameList; }; - handleChange = (value) => { + handleChange = (value?: string[]) => { const { onChange } = this.props; - onChange(value.join(' ')); + onChange(value?.join(' ')); this.setState({ selectValue: value, }); @@ -59,7 +78,7 @@ export default class ClassNameView extends PureComponent { componentWillMount() { const { value } = this.props; const classnameList = this.getClassNameList(); - const dataSource = []; + const dataSource: IOption[] = []; classnameList.map((item) => { dataSource.push({ value: item, @@ -69,19 +88,19 @@ export default class ClassNameView extends PureComponent { return item; }); - let selectValue = []; + let selectValue: string[] = []; if (value && value !== '') { selectValue = value.split(' '); } - selectValue.forEach(current => { - if(!classnameList.some(cls => cls === current)) { + selectValue.forEach((current) => { + if (!classnameList.some((cls) => cls === current)) { dataSource.push({ value: current, label: current, }); } - }) + }); this.setState({ dataSource, @@ -98,7 +117,7 @@ export default class ClassNameView extends PureComponent { aria-label="tag mode" mode="tag" dataSource={dataSource} - onChange={this.handleChange} + onChange={(value) => this.handleChange(value as string[])} value={selectValue} /> ); diff --git a/src/setter/color-setter/index.tsx b/src/setter/color-setter/index.tsx index ef20168..30f5bef 100644 --- a/src/setter/color-setter/index.tsx +++ b/src/setter/color-setter/index.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import { Input, Balloon } from '@alifd/next'; import { SketchPicker } from 'react-color'; import './index.less'; + interface ColorSetterProps { value: string; onChange: (val: any) => void; @@ -9,7 +10,7 @@ interface ColorSetterProps { } interface ColorSetterState { width: number; - setterValue: string; + setterValue: string | null; } export default class ColorSetter extends React.Component { static displayName = 'ColorSetter'; @@ -66,13 +67,17 @@ export default class ColorSetter extends React.Component} - value={setterValue} + innerBefore={
} + value={(setterValue ?? '') as string} onChange={onChange} /> ); @@ -86,7 +91,7 @@ export default class ColorSetter extends React.Component - + ); } diff --git a/src/setter/date-setter/index.tsx b/src/setter/date-setter/index.tsx new file mode 100644 index 0000000..377ea37 --- /dev/null +++ b/src/setter/date-setter/index.tsx @@ -0,0 +1,39 @@ +import { DatePicker, TimePicker } from '@alifd/next'; +import moment from 'moment'; +import { Component } from 'react'; + +// eslint-disable-next-line react/no-multi-comp +export class StringDateSetter extends Component { + render() { + const { onChange, value, showTime } = this.props; + return ( + { + onChange(val ? val.format() : val); + }} + /> + ); + } +} + +// eslint-disable-next-line react/no-multi-comp +export class StringTimePicker extends Component { + render() { + const { onChange, value } = this.props; + return ( + { + onChange(val ? val.format('HH:mm:ss') : val); + }} + /> + ); + } +} + +export const DateSetter = DatePicker; +export const DateYearSetter = DatePicker.YearPicker; +export const DateMonthSetter = DatePicker.MonthPicker; +export const DateRangeSetter = DatePicker.RangePicker; diff --git a/src/setter/events-setter/index.tsx b/src/setter/events-setter/index.tsx index 4eac0f0..d41f7e6 100644 --- a/src/setter/events-setter/index.tsx +++ b/src/setter/events-setter/index.tsx @@ -1,10 +1,28 @@ import { Component } from 'react'; import { Radio, Menu, Table, Icon } from '@alifd/next'; -import { event, project, skeleton } from '@alilc/lowcode-engine'; +import { event, project, skeleton } from '@felce/lowcode-engine'; import nativeEvents from './native-events'; import './index.less'; +enum DEFINITION_EVENT_TYPE { + EVENTS = 'events', + NATIVE_EVENTS = 'nativeEvents', + LIFE_CYCLE_EVENT = 'lifeCycleEvent', +} +export interface IEventSetterProps { + value?: + | { + eventDataList: any[]; + } + | any[]; + definition: Array<{ + type: DEFINITION_EVENT_TYPE; + list: any[]; + }>; + onChange: (eventList: any[]) => void; +} + const { Item, Group } = Menu; const RadioGroup = Radio.Group; const EVENT_CONTENTS = { @@ -13,18 +31,9 @@ const EVENT_CONTENTS = { LIFE_CYCLE_EVENT: 'lifeCycleEvent', }; -const DEFINITION_EVENT_TYPE = { - EVENTS: 'events', - NATIVE_EVENTS: 'nativeEvents', - LIFE_CYCLE_EVENT: 'lifeCycleEvent', -}; - const SETTER_NAME = 'event-setter'; -export default class EventsSetter extends Component<{ - value: any[]; - onChange: (eventList: any[]) => void; -}> { +export default class EventsSetter extends Component { state = { eventBtns: [], eventList: [], @@ -33,33 +42,10 @@ export default class EventsSetter extends Component<{ lifeCycleEventList: [], isRoot: false, eventDataList: - (this.props?.value?.eventDataList ? this.props.value.eventDataList : this.props?.value) || [], + (Array.isArray(this.props?.value) ? this.props.value : this.props.value?.eventDataList) || [], }; - // constructor (){ - // super(); - // debugger; - // // if (!this.props || !this.props.value){ - // // this.setState({ - // // eventDataList:[] - // // }) - // // } - // } - - // static getDerivedStateFromProps(nextProps, prevState) { - // debugger; - // // const { value } = nextProps; - // // debugger; - // // if (value !== prevState.eventDataList) { - // // return { - // // value, - // // }; - // // } - // return null; - // } - componentDidMount() { - // console.log(this.state.eventDataList); this.initEventBtns(); this.initEventList(); @@ -75,15 +61,17 @@ export default class EventsSetter extends Component<{ if (isRoot && !this.props.value) { const schema = project.exportSchema(); - const lifeCycles = schema.componentsTree[0].lifeCycles; + const { lifeCycles } = schema.componentsTree[0]; const eventDataList = []; if (lifeCycles) { for (const key in lifeCycles) { - eventDataList.push({ - name: key, - relatedEventName: key, - type: EVENT_CONTENTS.LIFE_CYCLE_EVENT, - }); + if (Object.prototype.hasOwnProperty.call(lifeCycles, key)) { + eventDataList.push({ + name: key, + relatedEventName: key, + type: EVENT_CONTENTS.LIFE_CYCLE_EVENT, + }); + } } this.setState({ @@ -200,7 +188,7 @@ export default class EventsSetter extends Component<{ } else if (eventType === DEFINITION_EVENT_TYPE.NATIVE_EVENTS) { eventDataList.map((eventDataItem) => { eventList.map((item) => { - item.eventList.map((eventItem) => { + item.eventList.map((eventItem: any) => { if (eventItem.name === eventDataItem.name) { item.disabled = true; } else { diff --git a/src/setter/expression-setter/index.tsx b/src/setter/expression-setter/index.tsx index d655df3..1415d2f 100644 --- a/src/setter/expression-setter/index.tsx +++ b/src/setter/expression-setter/index.tsx @@ -1,13 +1,14 @@ import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import { Select, Balloon } from '@alifd/next'; -import { project } from '@alilc/lowcode-engine'; -import * as acorn from 'acorn'; +import { project } from '@felce/lowcode-engine'; +// import * as acorn from 'acorn'; -import { isJSExpression, generateI18n } from './locale/utils'; +import { generateI18n } from './locale/utils'; import zhCN from './locale/zh-CN'; import './index.less'; +import { isJSExpression } from '@felce/lowcode-utils'; const { Option, AutoComplete } = Select; const { Tooltip } = Balloon; @@ -24,7 +25,7 @@ const helpMap = { field: '表单Field对象', }; -export default class ExpressionView extends PureComponent { +export default class ExpressionSetter extends PureComponent { static displayName = 'Expression'; static propTypes = { @@ -74,13 +75,13 @@ export default class ExpressionView extends PureComponent { this.expression = React.createRef(); this.i18n = generateI18n(props.locale, props.messages); this.state = { - value: ExpressionView.getInitValue(props.value), + value: ExpressionSetter.getInitValue(props.value), dataSource: props.dataSource || [], }; } // static getDerivedStateFromProps(props: { value: any }, state: { preValue: any }) { - // const curValue = ExpressionView.getInitValue(props.value); + // const curValue = ExpressionSetter.getInitValue(props.value); // if (curValue !== state.preValue) { // return { // preValue: curValue, @@ -149,24 +150,25 @@ export default class ExpressionView extends PureComponent { } /** + * TODO 没见用过,后面再修复 * 获取光标前的对象字符串,语法解析获取对象字符串 * @param {String} str 模板字符串 * @return {String} 光标前的对象字符串 */ - getCurrentFiled(str: string | any[]) { - str += 'x'; // .后面加一个x字符,便于acorn解析 - try { - const astTree = acorn.parse(str); - const right = astTree.body[0].expression.right || astTree.body[0].expression; - if (right.type === 'MemberExpression') { - const { start, end } = right; - str = str.slice(start, end); - return { str, start, end }; - } - } catch (e) { - return null; - } - } + // getCurrentFiled(str: string | any[]) { + // str += 'x'; // .后面加一个x字符,便于acorn解析 + // try { + // const astTree = acorn.parse(str, {ecmaVersion : 6}); + // const right = astTree.body[0].expression.right || astTree.body[0].expression; + // if (right.type === 'MemberExpression') { + // const { start, end } = right; + // str = str.slice(start, end); + // return { str, start, end }; + // } + // } catch (e) { + // return null; + // } + // } /** * 获取输入的上下文信息 @@ -225,7 +227,7 @@ export default class ExpressionView extends PureComponent { */ filterOption(inputValue: string, item: { value: string | any[] }) { const cursorIndex = this.getInputCursorPosition(); - if (typeof(inputValue)!='string') return false; + if (typeof inputValue != 'string') return false; const preStr = inputValue.substr(0, cursorIndex); const lastKey: string[] = preStr.split('.').slice(-1); if (!lastKey) return true; @@ -358,3 +360,15 @@ export default class ExpressionView extends PureComponent { this.forceUpdate(); } } + +export const DataExpressionSetter = { + component: ExpressionSetter, + condition: (field: any) => { + const v = field.getValue(); + return isJSExpression(v); + }, + valueType: ['JSExpression'], + defaultProps: { placeholder: '请输入表达式' }, + title: '表达式输入', + recommend: true, +}; diff --git a/src/setter/expression-setter/locale/utils.ts b/src/setter/expression-setter/locale/utils.ts index d401ad5..09e8df3 100644 --- a/src/setter/expression-setter/locale/utils.ts +++ b/src/setter/expression-setter/locale/utils.ts @@ -1,12 +1,5 @@ import IntlMessageFormat from 'intl-messageformat'; -export const isJSExpression = (obj = '') => { - if (obj && typeof obj === 'object' && obj.type === 'JSExpression') { - return true; - } - return false; -}; - /** * 用于构造国际化字符串处理函数 * @param {*} locale 国际化标识,例如 zh-CN、en-US diff --git a/src/setter/function-setter/index.tsx b/src/setter/function-setter/index.tsx index be636f6..345805b 100644 --- a/src/setter/function-setter/index.tsx +++ b/src/setter/function-setter/index.tsx @@ -1,15 +1,16 @@ import React, { PureComponent } from 'react'; import { Button, Icon, Dialog } from '@alifd/next'; -import MonacoEditor from '@alilc/lowcode-plugin-base-monaco-editor'; -import { event, skeleton } from '@alilc/lowcode-engine'; +import MonacoEditor from '@felce/lowcode-plugin-base-monaco-editor'; +import { event, skeleton } from '@felce/lowcode-engine'; import { js_beautify } from 'js-beautify'; +import { isJSFunction } from '@felce/lowcode-utils'; import './index.less'; const SETTER_NAME = 'function-setter'; const defaultEditorOption = { - width:'100%', - height:'95%', + width: '100%', + height: '95%', options: { readOnly: false, automaticLayout: true, @@ -271,3 +272,14 @@ export default class FunctionSetter extends PureComponent { ); } } + +export const DataFunctionSetter = { + component: FunctionSetter, + title: '函数绑定', + condition: (field: any) => { + const v = field.getValue(); + return isJSFunction(v); + }, + + valueType: ['JSFunction'], +}; diff --git a/src/setter/i18n-setter/index.tsx b/src/setter/i18n-setter/index.tsx index 6f9cecd..1eff853 100644 --- a/src/setter/i18n-setter/index.tsx +++ b/src/setter/i18n-setter/index.tsx @@ -1,15 +1,39 @@ -import React, { Component } from 'react'; -import { Input, Search, Button, Icon } from '@alifd/next'; -import { project } from '@alilc/lowcode-engine'; +import { Button, Icon, Input, Search } from '@alifd/next'; +import { project } from '@felce/lowcode-engine'; +import { IPublicTypeI18nMap } from '@felce/lowcode-types'; +import { Component } from 'react'; import './index.less'; import lang from './lang.json'; -class I18nSetter extends Component { - state = { + +interface II18nSetterProps { + field: any; + value: any; + onChange: any; + onSearch?: (value: string, filterValue: string) => void; +} + +interface II18nSetterState { + isShowSearchPopUp: boolean; + isShowBindDataPopUp: boolean; + i18nValue: any; + i18nPageDataList?: any[]; + i18nSearchDataList?: any[]; + i18nSchema?: IPublicTypeI18nMap; +} + +class I18nSetter extends Component { + state: II18nSetterState = { isShowSearchPopUp: false, isShowBindDataPopUp: false, i18nValue: {}, }; + constructor(props: II18nSetterProps) { + super(props); + this.onChange = this.onChange.bind(this); + this.onSearch = this.onSearch.bind(this); + } + componentDidMount() { // 获取schema const { value } = this.props; @@ -23,7 +47,7 @@ class I18nSetter extends Component { } // 对原始的i18n数据结构进行转化,方便页面输出 this.setState({ - i18nPageDataList: i18nPageDataList, + i18nPageDataList, i18nValue, i18nSchema, }); @@ -65,6 +89,7 @@ class I18nSetter extends Component { }; onSearch(value, filterValue) { + this.props.onSearch(value, filterValue); // console.log('onSearch', value, filterValue); } @@ -96,7 +121,7 @@ class I18nSetter extends Component { onChange({}); }; - setI18nValue = (i18nkey, i18nPageDataList) => { + setI18nValue = (i18nkey, i18nPageDataList?: any[]) => { i18nPageDataList = i18nPageDataList || this.state.i18nPageDataList; let i18nDataList; i18nPageDataList.map((item) => { @@ -121,10 +146,9 @@ class I18nSetter extends Component { createNewI18nItemData = () => { const { onChange } = this.props; - const { editor } = this.props.field; const schema = project.exportSchema(); - let i18nSchema = schema.i18n; - let newI18nKey = this.uniqueId('i18n'); + const i18nSchema = schema.i18n!; + const newI18nKey = this.uniqueId('i18n'); // 将新的key添加到i18nSchema中 for (let langKey in i18nSchema) { i18nSchema[langKey][newI18nKey] = ''; @@ -139,7 +163,7 @@ class I18nSetter extends Component { } const i18nPageDataList = this.transfromI18nData(i18nSchema); - let i18nValue = this.setI18nValue(newI18nKey, i18nPageDataList); + const i18nValue = this.setI18nValue(newI18nKey, i18nPageDataList); onChange(this.parseI18nValue2PropsValue(i18nValue)); @@ -293,9 +317,9 @@ class I18nSetter extends Component { {isShowSearchPopUp && (
{ return zhCN[id]; - } + }, }; export { intl }; diff --git a/src/setter/json-setter/index.tsx b/src/setter/json-setter/index.tsx index 447c040..ed3e8fc 100644 --- a/src/setter/json-setter/index.tsx +++ b/src/setter/json-setter/index.tsx @@ -1,7 +1,7 @@ import React, { PureComponent } from 'react'; // import PropTypes from 'prop-types'; import { Button, Icon, Dialog } from '@alifd/next'; -import MonacoEditor from '@alilc/lowcode-plugin-base-monaco-editor'; +import MonacoEditor from '@felce/lowcode-plugin-base-monaco-editor'; import CustomIcon from '../../components/custom-icon'; import { js_beautify } from 'js-beautify'; import { intl } from './locale'; @@ -79,12 +79,12 @@ export default class JsonSetter extends PureComponent { renderButton = (value) => { return !value ? ( ) : ( ); }; @@ -119,7 +119,7 @@ export default class JsonSetter extends PureComponent {
); @@ -142,10 +142,10 @@ export default class JsonSetter extends PureComponent { this.closeDialog(); }} cancelProps={{ - children: intl('Cancel') + children: intl('Cancel'), }} okProps={{ - children: intl('Confirm') + children: intl('Confirm'), }} >
@@ -162,3 +162,8 @@ export default class JsonSetter extends PureComponent { ); } } + +export const DataJsonSetter = { + component: JsonSetter, + valueType: ['object', 'array'], +}; diff --git a/src/setter/json-setter/locale/index.ts b/src/setter/json-setter/locale/index.ts index 42dc9f1..85a80b4 100644 --- a/src/setter/json-setter/locale/index.ts +++ b/src/setter/json-setter/locale/index.ts @@ -1,4 +1,4 @@ -import { common } from '@alilc/lowcode-engine'; +import { common } from '@felce/lowcode-engine'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; @@ -8,7 +8,7 @@ const { intl } = common?.utils?.createIntl?.({ }) || { intl: (id) => { return zhCN[id]; - } + }, }; export { intl }; diff --git a/src/setter/mixed-setter/config.ts b/src/setter/mixed-setter/config.ts index 8662fbd..d44f28f 100644 --- a/src/setter/mixed-setter/config.ts +++ b/src/setter/mixed-setter/config.ts @@ -1,16 +1,16 @@ -import { ReactNode } from "react" -import { SettingField } from '@alilc/lowcode-engine'; +import { ReactNode } from 'react'; +import { SettingField } from '@felce/lowcode-engine'; class MixedSetterConfig { config: { - renderSlot?: (props: {bindCode?: string, field?: SettingField}) => ReactNode - } = {} + renderSlot?: (props: { bindCode?: string; field?: SettingField }) => ReactNode; + } = {}; setConfig(config: { - renderSlot?: (props: {bindCode?: string, field?: SettingField}) => ReactNode + renderSlot?: (props: { bindCode?: string; field?: SettingField }) => ReactNode; }) { this.config = config; } } -export const MixedSetterController = new MixedSetterConfig() \ No newline at end of file +export const MixedSetterController = new MixedSetterConfig(); diff --git a/src/setter/mixed-setter/icons/arrow.tsx b/src/setter/mixed-setter/icons/arrow.tsx index dd027c7..05e1055 100644 --- a/src/setter/mixed-setter/icons/arrow.tsx +++ b/src/setter/mixed-setter/icons/arrow.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@felce/lowcode-utils'; export function IconArrow(props: IconProps) { return ( diff --git a/src/setter/mixed-setter/icons/clear.tsx b/src/setter/mixed-setter/icons/clear.tsx index ff4287e..3b3ec90 100644 --- a/src/setter/mixed-setter/icons/clear.tsx +++ b/src/setter/mixed-setter/icons/clear.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@felce/lowcode-utils'; export function IconClear(props: IconProps) { return ( diff --git a/src/setter/mixed-setter/icons/convert.tsx b/src/setter/mixed-setter/icons/convert.tsx index 62a877d..ed6220c 100644 --- a/src/setter/mixed-setter/icons/convert.tsx +++ b/src/setter/mixed-setter/icons/convert.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@felce/lowcode-utils'; export function IconConvert(props: IconProps) { return ( diff --git a/src/setter/mixed-setter/icons/exit.tsx b/src/setter/mixed-setter/icons/exit.tsx index 909acf5..f121112 100644 --- a/src/setter/mixed-setter/icons/exit.tsx +++ b/src/setter/mixed-setter/icons/exit.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@felce/lowcode-utils'; export function IconExit(props: IconProps) { return ( diff --git a/src/setter/mixed-setter/icons/fix.tsx b/src/setter/mixed-setter/icons/fix.tsx index ad82560..f79099b 100644 --- a/src/setter/mixed-setter/icons/fix.tsx +++ b/src/setter/mixed-setter/icons/fix.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@felce/lowcode-utils'; export function IconFix(props: IconProps) { return ( diff --git a/src/setter/mixed-setter/icons/float.tsx b/src/setter/mixed-setter/icons/float.tsx index afc4203..a657beb 100644 --- a/src/setter/mixed-setter/icons/float.tsx +++ b/src/setter/mixed-setter/icons/float.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@felce/lowcode-utils'; export function IconFloat(props: IconProps) { return ( diff --git a/src/setter/mixed-setter/icons/slot.tsx b/src/setter/mixed-setter/icons/slot.tsx index ea1d219..4a70b94 100644 --- a/src/setter/mixed-setter/icons/slot.tsx +++ b/src/setter/mixed-setter/icons/slot.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@felce/lowcode-utils'; export function IconSlot(props: IconProps) { return ( diff --git a/src/setter/mixed-setter/icons/variable.tsx b/src/setter/mixed-setter/icons/variable.tsx index ce2e7a2..c53dd11 100644 --- a/src/setter/mixed-setter/icons/variable.tsx +++ b/src/setter/mixed-setter/icons/variable.tsx @@ -1,4 +1,4 @@ -import { SVGIcon, IconProps } from '@alilc/lowcode-utils'; +import { SVGIcon, IconProps } from '@felce/lowcode-utils'; export function IconVariable(props: IconProps) { return ( diff --git a/src/setter/mixed-setter/index.tsx b/src/setter/mixed-setter/index.tsx index e4fd5bc..3a54a7f 100644 --- a/src/setter/mixed-setter/index.tsx +++ b/src/setter/mixed-setter/index.tsx @@ -1,50 +1,55 @@ -import React, { Component, ComponentClass } from 'react'; -import classNames from 'classnames'; import { Dropdown, Menu } from '@alifd/next'; -import { common, setters, SettingField } from '@alilc/lowcode-engine'; +import { common, setters, SettingField } from '@felce/lowcode-engine'; import { - SetterConfig, - CustomView, - DynamicProps, - DynamicSetter, - TitleContent, - isSetterConfig, - isDynamicSetter, -} from '@alilc/lowcode-types'; + IPublicModelSettingField, + IPublicTypeCustomView, + IPublicTypeDynamicProps, + IPublicTypeDynamicSetter, + IPublicTypeRegisteredSetter, + IPublicTypeSetterConfig, + IPublicTypeTitleContent, +} from '@felce/lowcode-types'; +import { isDynamicSetter, isSetterConfig } from '@felce/lowcode-utils'; +import classNames from 'classnames'; +import { Component, ComponentClass, ReactNode } from 'react'; +import { MixedSetterController } from './config'; import { IconConvert } from './icons/convert'; import { intlNode } from './locale'; -import { MixedSetterController } from './config' -import './index.less'; import { IconVariable } from './icons/variable'; +import './index.less'; const { editorCabin } = common; const { computed, obx, Title, createSetterContent, observer, shallowIntl } = editorCabin; const { getSetter, getSettersMap } = setters; export interface SetterItem { name: string; - title: TitleContent; - setter: string | DynamicSetter | CustomView; - props?: object | DynamicProps; - condition?: (field: SettingField) => boolean; + title: IPublicTypeTitleContent; + setter: string | IPublicTypeDynamicSetter | IPublicTypeCustomView; + props?: object | IPublicTypeDynamicProps; + condition?: IPublicTypeRegisteredSetter['condition']; initialValue?: any | ((field: SettingField) => any); list: boolean; - valueType: string[]; + valueType: IPublicTypeRegisteredSetter['valueType']; } const dash = '_'; -function getMixedSelect(field) { +function getMixedSelect(field: IPublicModelSettingField) { const path = field.path || []; - if(path.length) { - const key = `_unsafe_MixedSetter${dash}${path[path.length-1]}${dash}select` + if (!field.node) { + console.warn('field.node is undefined'); + return undefined; + } + if (path.length) { + const key = `_unsafe_MixedSetter${dash}${path[path.length - 1]}${dash}select`; const newPath = [...path]; newPath.splice(path.length - 1, 1, key); - const newKey = field.node.getPropValue(newPath.join('.')) - if(newKey) return newKey; + const newKey = field.node.getPropValue(newPath.join('.')); + if (newKey) return newKey; // 兼容下以前的问题情况,如果捕获到,获取 oldUnsafeKey 取值并将其直接置空 const oldUnsafeKey = `_unsafe_MixedSetter${dash}${path.join(dash)}${dash}select`; const oldUsedSetter = field.node.getPropValue(oldUnsafeKey); - if(oldUsedSetter) { + if (oldUsedSetter) { field.node.setPropValue(newPath.join('.'), oldUsedSetter); field.node.setPropValue(oldUnsafeKey, undefined); } @@ -52,21 +57,27 @@ function getMixedSelect(field) { } return undefined; } -function setMixedSelect(field, usedSetter) { +function setMixedSelect(field: IPublicModelSettingField, usedSetter: string) { const path = field.path || []; - if(path.length) { - const key = `_unsafe_MixedSetter${dash}${path[path.length-1]}${dash}select` + if (!field.node) { + console.warn('field.node is undefined'); + return; + } + if (path.length) { + const key = `_unsafe_MixedSetter${dash}${path[path.length - 1]}${dash}select`; path.splice(path.length - 1, 1, key); - field.node.setPropValue(path.join('.'), usedSetter) + field.node.setPropValue(path.join('.'), usedSetter); } } function nomalizeSetters( - setters?: Array, + setters?: Array< + string | IPublicTypeSetterConfig | IPublicTypeCustomView | IPublicTypeDynamicSetter + >, ): SetterItem[] { if (!setters) { const normalized: SetterItem[] = []; - getSettersMap().forEach((setter, name) => { + getSettersMap().forEach((setter: IPublicTypeRegisteredSetter, name: string) => { if (name === 'MixedSetter') { return; } @@ -135,7 +146,7 @@ function nomalizeSetters( const uniqSetters = formattedSetters.reduce((map, s) => { map.set(s.name, s); return map; - }, new Map()) + }, new Map()); const hasComplexSetter = formattedSetters.filter((item) => ['ArraySetter', 'ObjectSetter'].includes(item.setter), @@ -156,7 +167,9 @@ interface VariableSetter extends ComponentClass { @observer class MixedSetter extends Component<{ field: SettingField; - setters?: Array; + setters?: Array< + string | IPublicTypeSetterConfig | IPublicTypeCustomView | IPublicTypeDynamicSetter + >; onSetterChange?: (field: SettingField, name: string) => void; onChange?: (val: any) => void; value?: any; @@ -217,7 +230,7 @@ class MixedSetter extends Component<{ } } else { // 变量类型直接设undefined会引起初始值变化 - if (name !== this.used ) { + if (name !== this.used) { // reset value field.setValue(undefined); } @@ -252,14 +265,14 @@ class MixedSetter extends Component<{ } }; - private syncSelectSetter(name) { + private syncSelectSetter(name: string) { // TODO: sync into engine ext.props const { field } = this.props; this.used = name; setMixedSelect(field, name); } - private handleInitial({ initialValue }: SetterItem, fieldValue: string) { + private handleInitial({ initialValue }: SetterItem, fieldValue?: string) { const { field, onChange } = this.props; let newValue: any = initialValue; if (newValue && typeof newValue === 'function') { @@ -410,7 +423,7 @@ class MixedSetter extends Component<{ private renderSwitchAction(currentSetter?: SetterItem) { const usedName = currentSetter?.name || this.used; const triggerNode = ( -
this.triggerNodeRef = ref}> +
(this.triggerNodeRef = ref)}> {contents.setterContent} <div className="lc-setter-actions">{contents.actions}</div> - {!!MixedSetterController.config.renderSlot && + {!!MixedSetterController.config.renderSlot && ( <div className="lc-action-slot"> {MixedSetterController.config.renderSlot?.({ field, bindCode: field.getValue()?.value, })} </div> - } + )} </div> ); } @@ -491,5 +504,5 @@ class MixedSetter extends Component<{ interface MixedSetterType extends ComponentClass { controller: typeof MixedSetterController; } -export default MixedSetter as unknown as MixedSetterType +export default MixedSetter as unknown as MixedSetterType; (MixedSetter as unknown as MixedSetterType).controller = MixedSetterController; diff --git a/src/setter/mixed-setter/locale/index.ts b/src/setter/mixed-setter/locale/index.ts index 3589189..fd7ec80 100644 --- a/src/setter/mixed-setter/locale/index.ts +++ b/src/setter/mixed-setter/locale/index.ts @@ -1,4 +1,4 @@ -import { common } from '@alilc/lowcode-engine'; +import { common } from '@felce/lowcode-engine'; import en_US from './en-US.json'; import zh_CN from './zh-CN.json'; const { editorCabin } = common; diff --git a/src/setter/number-setter/index.tsx b/src/setter/number-setter/index.tsx index 0381101..28965d5 100644 --- a/src/setter/number-setter/index.tsx +++ b/src/setter/number-setter/index.tsx @@ -5,7 +5,7 @@ interface NumberSetterProps { value: number; min: number; max: number; - defaultValue: number; + defaultValue?: number; step: number | string; units: string; onChange: (val: number | null) => void; @@ -31,6 +31,7 @@ export default class NumberSetter extends React.PureComponent< units = '', precision = 0, value, + defaultValue, } = this.props; return ( @@ -38,14 +39,14 @@ export default class NumberSetter extends React.PureComponent< size="small" style={{ width: '100%' }} className="lowcode-setter-number" - value={value} + value={value ?? defaultValue} min={min} max={max} precision={precision} step={step} innerAfter={units} - onChange={(val: number) => { - onChange(!val ? 0 : val); + onChange={(val) => { + onChange(!val ? 0 : (val as number)); }} /> ); diff --git a/src/setter/object-setter/index.tsx b/src/setter/object-setter/index.tsx index 12e1b1f..27cee52 100644 --- a/src/setter/object-setter/index.tsx +++ b/src/setter/object-setter/index.tsx @@ -1,10 +1,17 @@ import * as React from 'react'; import { Component, Fragment } from 'react'; import { Button } from '@alifd/next'; -import { common } from '@alilc/lowcode-engine'; -import { IPublicTypeSetterType, IPublicModelSettingField, IPublicTypeFieldConfig, IPublicTypeCustomView, IPublicTypeTitleContent } from '@alilc/lowcode-types'; +import { common } from '@felce/lowcode-engine'; +import { + IPublicTypeSetterType, + IPublicModelSettingField, + IPublicTypeFieldConfig, + IPublicTypeCustomView, + IPublicTypeTitleContent, +} from '@felce/lowcode-types'; import CustomIcon from '../../components/custom-icon'; import './index.less'; +import { isPlainObject } from '@felce/lowcode-utils'; const { editorCabin, skeletonCabin, designerCabin } = common; const { Title } = editorCabin; @@ -64,11 +71,13 @@ function getItemsFromProps(props: RowSetterProps, state?: RowSetterState) { for (let i = 0; i < config.items.length; i++) { const conf = config.items[i]; if (conf.isRequired || conf.important || (conf.setter as any)?.isRequired) { - const item = state?.items?.filter(d => d.name === conf.name)?.[0] || field.createField({ - ...conf, - // in column-cell - forceInline: 3, - }); + const item = + state?.items?.filter((d) => d.name === conf.name)?.[0] || + field.createField({ + ...conf, + // in column-cell + forceInline: 3, + }); const originalSetValue = item.extraProps.setValue; item.extraProps.setValue = (...args) => { // 调用子字段本身的 setValue @@ -147,7 +156,7 @@ class RowSetter extends Component<RowSetterProps, RowSetterState> { if (!this.pipe) { this.pipe = (this.context as PopupPipe).create({ width: 320, - canCloseByOutSideClick: config.canCloseByOutSideClick + canCloseByOutSideClick: config.canCloseByOutSideClick, }); } @@ -242,3 +251,16 @@ class FormSetter extends Component<FormSetterProps> { ); } } + +export const DataObjectSetter = { + component: ObjectSetter, + // todo: defaultProps + defaultProps: {}, + title: 'ObjectSetter', // TODO + condition: (field: any) => { + const v = field.getValue(); + return v == null || isPlainObject(v); + }, + initialValue: {}, + recommend: true, +}; diff --git a/src/setter/radiogroup-setter/index.tsx b/src/setter/radiogroup-setter/index.tsx index dd79e9d..2da48e7 100644 --- a/src/setter/radiogroup-setter/index.tsx +++ b/src/setter/radiogroup-setter/index.tsx @@ -6,7 +6,7 @@ interface RadioGroupSetterProps { value: boolean; disabled: boolean; options: any; - defaultValue: any; + defaultValue?: any; onChange: (val: number) => void; } interface RadioGroupSetterState { @@ -58,7 +58,7 @@ export default class RadioGroupSetter extends React.PureComponent< return labelList || []; }; render() { - const { onChange, disabled = false, options, value } = this.props; + const { onChange, disabled = false, options = [], value, defaultValue } = this.props; let hasImg = false; const dataSource = options.map((item: any) => { if (typeof item == 'string') { @@ -84,7 +84,7 @@ export default class RadioGroupSetter extends React.PureComponent< size="small" dataSource={dataSource} shape="button" - value={value} + value={value ?? defaultValue} disabled={disabled} onChange={(val: any) => onChange(val)} {...otherProps} diff --git a/src/setter/select-setter/index.tsx b/src/setter/select-setter/index.tsx index a7b266e..9fa3a91 100644 --- a/src/setter/select-setter/index.tsx +++ b/src/setter/select-setter/index.tsx @@ -12,7 +12,7 @@ interface SelectSetterProps { */ showSearch?: boolean; // 是否可以清除 - hasClear?:boolean + hasClear?: boolean; } interface SelectSetterState { @@ -58,15 +58,15 @@ export default class SelectSetter extends PureComponent<SelectSetterProps, Selec }; render() { - const { options, onChange, mode, value, showSearch, hasClear } = this.props; + const { options, onChange, mode, value, showSearch, hasClear, defaultValue } = this.props; return ( <Select autoWidth={false} size="small" - value={value} + value={value ?? defaultValue} dataSource={formateOptions(options)} mode={mode} - onChange={(val) => { + onChange={(val: any) => { onChange && onChange(val); }} style={{ width: '100%' }} diff --git a/src/setter/slot-setter/index.tsx b/src/setter/slot-setter/index.tsx index 3a37a20..76476f8 100644 --- a/src/setter/slot-setter/index.tsx +++ b/src/setter/slot-setter/index.tsx @@ -1,6 +1,7 @@ import { Component } from 'react'; import { Button, Input, Icon, Switch, Select } from '@alifd/next'; import './index.less'; +import { isJSSlot } from '@felce/lowcode-utils'; interface Template { // 模板标签 @@ -179,3 +180,26 @@ export default class SlotSetter extends Component<{ ); } } + +export const DataSlotSetter = { + component: SlotSetter, + title: { + type: 'i18n', + 'zh-CN': '插槽输入', + 'en-US': 'Slot Setter', + }, + condition: (field: any) => { + return isJSSlot(field.getValue()); + }, + initialValue: (field: any, value: any) => { + if (isJSSlot(value)) { + return value; + } + return { + type: 'JSSlot', + value, + }; + }, + recommend: true, + valueType: ['JSSlot'], +}; diff --git a/src/setter/string-setter/index.tsx b/src/setter/string-setter/index.tsx index 349bebc..4bdde8f 100644 --- a/src/setter/string-setter/index.tsx +++ b/src/setter/string-setter/index.tsx @@ -4,7 +4,7 @@ import './index.less'; interface StringSetterProps { value: string; - defaultValue: string; + defaultValue?: string; placeholder: string; onChange: (val: string) => void; } @@ -13,11 +13,11 @@ export default class StringSetter extends React.PureComponent<StringSetterProps, static displayName = 'StringSetter'; render() { - const { onChange, placeholder, value } = this.props; + const { onChange, placeholder, value, defaultValue } = this.props; return ( <Input size="small" - value={value} + value={value ?? defaultValue} placeholder={placeholder || ''} onChange={(val: any) => onChange(val)} style={{ width: '100%' }} diff --git a/src/setter/style-setter/components/css-code/index.tsx b/src/setter/style-setter/components/css-code/index.tsx index 88af18d..ab361f1 100644 --- a/src/setter/style-setter/components/css-code/index.tsx +++ b/src/setter/style-setter/components/css-code/index.tsx @@ -2,7 +2,7 @@ import * as React from 'react'; import { Button } from '@alifd/next'; import { StyleData } from '../../utils/types'; import { parseToCssCode, parseToStyleData } from '../../utils'; -import MonacoEditor from '@alilc/lowcode-plugin-base-monaco-editor'; +import MonacoEditor from '@felce/lowcode-plugin-base-monaco-editor'; import Icon from '../../components/icon'; import { intlLocal } from './locale'; @@ -120,12 +120,12 @@ export default class CssCode extends React.Component<CodeProps> { const height = lineCount * lineHeight + padding; if (this.prevHeight !== height) { this.prevHeight = height; - this.setState({height: `${height}px`}) + this.setState({ height: `${height}px` }); editor.layout(); } }; // 挂载时先适配高度 - updateEditorHeight() + updateEditorHeight(); }; return ( diff --git a/src/setter/style-setter/components/css-code/locale/index.ts b/src/setter/style-setter/components/css-code/locale/index.ts index 2c5b1d0..d226e0f 100644 --- a/src/setter/style-setter/components/css-code/locale/index.ts +++ b/src/setter/style-setter/components/css-code/locale/index.ts @@ -1,4 +1,4 @@ -import { common } from '@alilc/lowcode-engine'; +import { common } from '@felce/lowcode-engine'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; @@ -10,7 +10,6 @@ const intlLocal = () => { 'zh-CN': zhCN, }; return localeSource[locale]; -} - +}; export { intlLocal }; diff --git a/src/setter/style-setter/index.tsx b/src/setter/style-setter/index.tsx index 40135db..5b16d9b 100644 --- a/src/setter/style-setter/index.tsx +++ b/src/setter/style-setter/index.tsx @@ -9,7 +9,7 @@ import { StyleData } from './utils/types'; import { ConfigProvider } from '@alifd/next'; import enUS from '@alifd/next/lib/locale/en-us'; import zhCN from '@alifd/next/lib/locale/zh-cn'; -import { common } from '@alilc/lowcode-engine'; +import { common } from '@felce/lowcode-engine'; import './index.less'; const { getLocale } = common.utils.createIntl?.() || {}; @@ -140,11 +140,7 @@ export default class StyleSetterV2 extends React.PureComponent<StyleSetterProps> )} {showModuleList.filter((item) => item == 'layout').length > 0 && ( - <Layout - onStyleChange={this.onStyleChange} - styleData={styleData} - {...this.props} - /> + <Layout onStyleChange={this.onStyleChange} styleData={styleData} {...this.props} /> )} {showModuleList.filter((item) => item == 'font').length > 0 && ( @@ -152,27 +148,15 @@ export default class StyleSetterV2 extends React.PureComponent<StyleSetterProps> )} {showModuleList.filter((item) => item == 'background').length > 0 && ( - <Background - onStyleChange={this.onStyleChange} - styleData={styleData} - {...this.props} - /> + <Background onStyleChange={this.onStyleChange} styleData={styleData} {...this.props} /> )} {showModuleList.filter((item) => item == 'position').length > 0 && ( - <Position - onStyleChange={this.onStyleChange} - styleData={styleData} - {...this.props} - /> + <Position onStyleChange={this.onStyleChange} styleData={styleData} {...this.props} /> )} {showModuleList.filter((item) => item == 'border').length > 0 && ( - <Border - onStyleChange={this.onStyleChange} - styleData={styleData} - {...this.props} - /> + <Border onStyleChange={this.onStyleChange} styleData={styleData} {...this.props} /> )} {/* {initFlag && ( diff --git a/src/setter/style-setter/pro/background/locale/index.ts b/src/setter/style-setter/pro/background/locale/index.ts index 2c5b1d0..d226e0f 100644 --- a/src/setter/style-setter/pro/background/locale/index.ts +++ b/src/setter/style-setter/pro/background/locale/index.ts @@ -1,4 +1,4 @@ -import { common } from '@alilc/lowcode-engine'; +import { common } from '@felce/lowcode-engine'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; @@ -10,7 +10,6 @@ const intlLocal = () => { 'zh-CN': zhCN, }; return localeSource[locale]; -} - +}; export { intlLocal }; diff --git a/src/setter/style-setter/pro/border/locale/index.ts b/src/setter/style-setter/pro/border/locale/index.ts index 2c5b1d0..d226e0f 100644 --- a/src/setter/style-setter/pro/border/locale/index.ts +++ b/src/setter/style-setter/pro/border/locale/index.ts @@ -1,4 +1,4 @@ -import { common } from '@alilc/lowcode-engine'; +import { common } from '@felce/lowcode-engine'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; @@ -10,7 +10,6 @@ const intlLocal = () => { 'zh-CN': zhCN, }; return localeSource[locale]; -} - +}; export { intlLocal }; diff --git a/src/setter/style-setter/pro/font/locale/index.ts b/src/setter/style-setter/pro/font/locale/index.ts index 2c5b1d0..d226e0f 100644 --- a/src/setter/style-setter/pro/font/locale/index.ts +++ b/src/setter/style-setter/pro/font/locale/index.ts @@ -1,4 +1,4 @@ -import { common } from '@alilc/lowcode-engine'; +import { common } from '@felce/lowcode-engine'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; @@ -10,7 +10,6 @@ const intlLocal = () => { 'zh-CN': zhCN, }; return localeSource[locale]; -} - +}; export { intlLocal }; diff --git a/src/setter/style-setter/pro/layout/locale/index.ts b/src/setter/style-setter/pro/layout/locale/index.ts index 2c5b1d0..d226e0f 100644 --- a/src/setter/style-setter/pro/layout/locale/index.ts +++ b/src/setter/style-setter/pro/layout/locale/index.ts @@ -1,4 +1,4 @@ -import { common } from '@alilc/lowcode-engine'; +import { common } from '@felce/lowcode-engine'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; @@ -10,7 +10,6 @@ const intlLocal = () => { 'zh-CN': zhCN, }; return localeSource[locale]; -} - +}; export { intlLocal }; diff --git a/src/setter/style-setter/pro/position/locale/index.ts b/src/setter/style-setter/pro/position/locale/index.ts index 2c5b1d0..d226e0f 100644 --- a/src/setter/style-setter/pro/position/locale/index.ts +++ b/src/setter/style-setter/pro/position/locale/index.ts @@ -1,4 +1,4 @@ -import { common } from '@alilc/lowcode-engine'; +import { common } from '@felce/lowcode-engine'; import enUS from './en-US.json'; import zhCN from './zh-CN.json'; @@ -10,7 +10,6 @@ const intlLocal = () => { 'zh-CN': zhCN, }; return localeSource[locale]; -} - +}; export { intlLocal }; diff --git a/src/setter/style-setter/utils/index.tsx b/src/setter/style-setter/utils/index.tsx index bb35d5e..af84321 100644 --- a/src/setter/style-setter/utils/index.tsx +++ b/src/setter/style-setter/utils/index.tsx @@ -83,12 +83,9 @@ export function hexify(color: string) { const r = Math.floor(a * parseInt(values[0]) + (1 - a) * 255); const g = Math.floor(a * parseInt(values[1]) + (1 - a) * 255); const b = Math.floor(a * parseInt(values[2]) + (1 - a) * 255); - return ( - `#${ - (`0${ r.toString(16)}`).slice(-2) - }${(`0${ g.toString(16)}`).slice(-2) - }${(`0${ b.toString(16)}`).slice(-2)}` - ); + return `#${`0${r.toString(16)}`.slice(-2)}${`0${g.toString(16)}`.slice( + -2, + )}${`0${b.toString(16)}`.slice(-2)}`; } export function parseToCssCode(styleData: StyleData) { @@ -104,6 +101,7 @@ export function parseToCssCode(styleData: StyleData) { attributes: parseStyleData, }, }, + attributes: {}, }; return toCSS(cssJson); @@ -154,11 +152,11 @@ export const unifyStyle = (value: string) => { }; export const getUnit = (value: string) => { - if(typeof value !== 'string') return '' - if (value != undefined && value != null){ - return value.replace(/^-?[0-9]\d*/g, '') + if (typeof value !== 'string') return ''; + if (value != undefined && value != null) { + return value.replace(/^-?[0-9]\d*/g, ''); } -} +}; export function isCssVarBind(value: any) { if (typeof value === 'string') { diff --git a/src/setter/textarea-setter/index.tsx b/src/setter/textarea-setter/index.tsx index d7bca3c..917e810 100644 --- a/src/setter/textarea-setter/index.tsx +++ b/src/setter/textarea-setter/index.tsx @@ -5,7 +5,7 @@ import './index.less'; interface TextAreaSetterProps { onChange: (value: string) => undefined; value: string; - defaultValue: string; + defaultValue?: string; placeholder: string; } interface TextAreaSetterState { @@ -29,10 +29,10 @@ export default class TextAreaSetter extends PureComponent< }; render() { - const { onChange, placeholder, value } = this.props; + const { onChange, placeholder, value, defaultValue } = this.props; return ( <Input.TextArea - value={value || ''} + value={value || defaultValue || ''} onChange={(val) => onChange(val)} placeholder={placeholder} style={{ width: '100%' }} diff --git a/src/setter/title-setter/index.tsx b/src/setter/title-setter/index.tsx index caab6b2..89a6f23 100644 --- a/src/setter/title-setter/index.tsx +++ b/src/setter/title-setter/index.tsx @@ -1,14 +1,14 @@ import React, { useState } from 'react'; import { Switch, Input, Box } from '@alifd/next'; -import { SettingTarget } from '@alilc/lowcode-types'; +import { IPublicModelSettingField } from '@felce/lowcode-types'; import './index.scss'; interface TitleSetterProps { - field?: SettingTarget; + field?: IPublicModelSettingField; prop?: SettingTarget; value: string; - defaultValue: string; + defaultValue?: string; defaultChecked?: boolean; onChange: Function; } diff --git a/src/setter/variable-setter/index.tsx b/src/setter/variable-setter/index.tsx index 84823f3..e132f52 100644 --- a/src/setter/variable-setter/index.tsx +++ b/src/setter/variable-setter/index.tsx @@ -1,8 +1,9 @@ -import React, { PureComponent } from 'react'; -import { event } from '@alilc/lowcode-engine'; +import { event } from '@felce/lowcode-engine'; +import { isJSExpression } from '@felce/lowcode-utils'; +import { PureComponent } from 'react'; import './index.less'; -export default class SetterVariable extends PureComponent { +export default class VariableSetter extends PureComponent { static displayName = 'SetterVariable'; static isPopup = true; @@ -15,3 +16,14 @@ export default class SetterVariable extends PureComponent { return <div className="lowcode-setter-variable">Hello LowcodeSetterVariable</div>; } } + +export const DataVariableSetter = { + component: VariableSetter, + condition: (field: any) => { + const v = field.getValue(); + return isJSExpression(v); + }, + valueType: ['JSExpression'], + title: '变量输入', + recommend: true, +}; diff --git a/test/setupTests.js b/test/setupTests.js deleted file mode 100644 index 82edfc9..0000000 --- a/test/setupTests.js +++ /dev/null @@ -1,4 +0,0 @@ -import { configure } from 'enzyme'; -import Adapter from 'enzyme-adapter-react-16'; - -configure({ adapter: new Adapter() }); diff --git a/tsconfig.json b/tsconfig.json index 556a1fe..7d66413 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,7 @@ "esModuleInterop": true, // Specify JSX code generation: 'preserve', 'react-native', or 'react'. "jsx": "preserve", + "jsxImportSource": "react", // Import emit helpers (e.g. __extends, __rest, etc..) from tslib "importHelpers": true, // Enables experimental support for ES7 decorators. @@ -30,12 +31,8 @@ "resolveJsonModule": true, // skip type checking of declaration files "skipLibCheck": true, - "baseUrl": "./packages", - "paths": { - "@ali/lowcode-*": ["./*/src"], - "@ali/visualengine": ["./vision-preset/src"] - }, - "outDir": "lib" + "types": ["vitest/globals", "vitest/jsdom"], + "outDir": "dist" }, "exclude": ["**/test", "**/lib", "**/es", "node_modules"] } diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..ded4d46 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,81 @@ +/// <reference types="vitest/config" /> +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react-swc'; +import dts from 'vite-plugin-dts'; +import external from 'vite-plugin-external'; + +export default defineConfig(({ mode }) => { + return { + plugins: [ + external({ + development: { + externals: { + react: 'window.React', + }, + }, + }), + react({ + tsDecorators: true, + }), + dts({ + entryRoot: 'src/', + }), + ], + define: { + 'process.env': { + NODE_ENV: mode, + }, + }, + test: { + globals: true, + environment: 'jsdom', + setupFiles: 'vitest.setup.ts', + }, + server: { + port: 4008, + }, + build: { + lib: { + entry: './src/index.ts', + fileName: (format: string) => `engine-ext.${format}.js`, + name: '___AliLowCodeEngineExt___', + cssFileName: 'engine-ext', + }, + rollupOptions: { + output: { + exports: 'named', + globals: { + react: 'React', + '@alifd/next': 'Next', + '@felce/lowcode-engine': 'AliLowCodeEngine', + lodash: '_', + moment: 'moment', + 'prop-types': 'PropTypes', + }, + }, + external: [ + 'react', + 'prop-types', + 'moment', + 'lodash', + '@alifd/next', + '@felce/lowcode-engine', + '@felce/lowcode-editor-core', + '@felce/lowcode-editor-skeleton', + '@felce/lowcode-designer', + '@felce/lowcode-utils', + '@felce/lowcode-types', + '@felce/lowcode-plugin-base-monaco-editor', + ], + }, + }, + css: { + preprocessorOptions: { + scss: { + // https://cn.vitejs.dev/config/shared-options.html#css-preprocessoroptions + api: 'legacy', + }, + }, + }, + }; +}); diff --git a/vitest.setup.ts b/vitest.setup.ts new file mode 100644 index 0000000..2be4857 --- /dev/null +++ b/vitest.setup.ts @@ -0,0 +1 @@ +import '@testing-library/dom';