diff --git a/apps/admin/src/pages/demo/charts/map/Baidu.vue b/apps/admin/src/pages/demo/charts/map/Baidu.vue index d7937914..759d2177 100644 --- a/apps/admin/src/pages/demo/charts/map/Baidu.vue +++ b/apps/admin/src/pages/demo/charts/map/Baidu.vue @@ -1,6 +1,7 @@ + \ No newline at end of file diff --git a/packages/demo/index.ts b/packages/demo/index.ts index f1a58c85..2b84013b 100644 --- a/packages/demo/index.ts +++ b/packages/demo/index.ts @@ -7,3 +7,4 @@ export { default as TreeTable } from './src/Table/TreeTable.vue' export { default as Modal } from './src/Modal/index.vue' export { default as Basic } from './src/Basic/index.vue' export { default as Gaode } from './src/Charts/Gaode.vue' +export { default as Baidu } from './src/Charts/Baidu.vue' \ No newline at end of file diff --git a/packages/demo/package.json b/packages/demo/package.json index 470b0f64..ff521c25 100644 --- a/packages/demo/package.json +++ b/packages/demo/package.json @@ -14,6 +14,7 @@ "@vben/request": "workspace:*", "@vben/utils": "workspace:*", "@vben/vbencomponents": "workspace:*", + "@vben/hooks": "workspace:*", "vue": "^3.3.6" }, "devDependencies": { diff --git a/packages/demo/src/Charts/Baidu.vue b/packages/demo/src/Charts/Baidu.vue new file mode 100644 index 00000000..944c0f78 --- /dev/null +++ b/packages/demo/src/Charts/Baidu.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/packages/hooks/src/web/index.ts b/packages/hooks/src/web/index.ts index c66c1db1..c4bbc44b 100644 --- a/packages/hooks/src/web/index.ts +++ b/packages/hooks/src/web/index.ts @@ -5,3 +5,4 @@ export * from './useAppInject' export * from './useAppContext' export * from './useFullContent' export * from './useDesign' +export * from './useScript' \ No newline at end of file diff --git a/packages/hooks/src/web/useScript.ts b/packages/hooks/src/web/useScript.ts new file mode 100644 index 00000000..f01b414e --- /dev/null +++ b/packages/hooks/src/web/useScript.ts @@ -0,0 +1,46 @@ +import { onMounted, onUnmounted, ref } from 'vue' + +interface ScriptOptions { + src: string +} + +export function useScript(opts: ScriptOptions) { + const isLoading = ref(false) + const error = ref(false) + const success = ref(false) + let script: HTMLScriptElement + + const promise = new Promise((resolve, reject) => { + onMounted(() => { + script = document.createElement('script') + script.type = 'text/javascript' + script.onload = function () { + isLoading.value = false + success.value = true + error.value = false + resolve() + } + + script.onerror = function (err) { + isLoading.value = false + success.value = false + error.value = true + reject(err) + } + + script.src = opts.src + document.head.appendChild(script) + }) + }) + + onUnmounted(() => { + script && script.remove() + }) + + return { + isLoading, + error, + success, + load: () => promise, + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2defa022..88566dd2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -391,6 +391,9 @@ importers: '@amap/amap-jsapi-loader': specifier: ^1.0.1 version: 1.0.1 + '@vben/hooks': + specifier: workspace:* + version: link:../hooks '@vben/request': specifier: workspace:* version: link:../request @@ -683,7 +686,7 @@ importers: packages/vbenComponents: dependencies: '@iconify/iconify': - specifier: ^3.1.1 + specifier: ^3.0.0 version: 3.1.1 '@vben/constants': specifier: workspace:* @@ -695,21 +698,21 @@ importers: specifier: workspace:* version: link:../utils sass: - specifier: ^1.69.4 - version: 1.69.4 + specifier: ^1.55.0 + version: 1.55.0 vue: - specifier: ^3.3.6 - version: 3.3.6(typescript@5.2.2) + specifier: ^3.2.47 + version: 3.3.4 vxe-table-demonic: - specifier: ^4.5.4 - version: 4.5.4(vue@3.3.6)(xe-utils@3.5.13) + specifier: ^4.5.0-beta.3 + version: 4.5.4(vue@3.3.4)(xe-utils@3.5.7) xe-utils: - specifier: ^3.5.13 - version: 3.5.13 + specifier: ^3.5.7 + version: 3.5.7 devDependencies: '@iconify/json': - specifier: ^2.2.132 - version: 2.2.132 + specifier: ^2.2.15 + version: 2.2.15 '@purge-icons/generated': specifier: ^0.9.0 version: 0.9.0 @@ -843,7 +846,7 @@ packages: '@babel/helper-compilation-targets': 7.22.10 '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.10) '@babel/helpers': 7.22.10 - '@babel/parser': 7.22.10 + '@babel/parser': 7.23.0 '@babel/template': 7.22.5 '@babel/traverse': 7.22.10 '@babel/types': 7.22.10 @@ -974,7 +977,7 @@ packages: '@babel/helper-module-imports': 7.22.5 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} @@ -1085,13 +1088,6 @@ packages: dev: true optional: true - /@babel/parser@7.22.10: - resolution: {integrity: sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.22.10 - /@babel/parser@7.23.0: resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} engines: {node: '>=6.0.0'} @@ -1587,7 +1583,7 @@ packages: '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.10) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 dev: false /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.10): @@ -1986,7 +1982,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.10 - '@babel/parser': 7.22.10 + '@babel/parser': 7.23.0 '@babel/types': 7.22.10 /@babel/traverse@7.22.10: @@ -1999,7 +1995,7 @@ packages: '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.22.10 + '@babel/parser': 7.23.0 '@babel/types': 7.22.10 debug: 4.3.4 globals: 11.12.0 @@ -3466,8 +3462,8 @@ packages: pathe: 1.1.1 dev: true - /@iconify/json@2.2.132: - resolution: {integrity: sha512-iRhfaUp7yQvez1lubMgjtBflpPXl2/2ItOoEybbA+u4Xv9sOJ3n7131DavvzhXqWiRu2NOhGpiGoqcU4RlOLnA==} + /@iconify/json@2.2.15: + resolution: {integrity: sha512-+BVLIjTJpBiEOGD3xhCY7/ajH+7QTl/jzF59gf9Hf5y/HyU8D+HUmOsXEGLIsCZErEQB66wZ36AziOlYf3wuPA==} dependencies: '@iconify/types': 2.0.0 pathe: 1.1.1 @@ -5081,7 +5077,7 @@ packages: dev: false /archive-type@4.0.0: - resolution: {integrity: sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=} + resolution: {integrity: sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==} engines: {node: '>=4'} dependencies: file-type: 4.4.0 @@ -5564,7 +5560,7 @@ packages: dev: false /cacheable-request@2.1.4: - resolution: {integrity: sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=} + resolution: {integrity: sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==} dependencies: clone-response: 1.0.2 get-stream: 3.0.0 @@ -5808,7 +5804,7 @@ packages: wrap-ansi: 7.0.0 /clone-response@1.0.2: - resolution: {integrity: sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=} + resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} dependencies: mimic-response: 1.0.1 dev: false @@ -7665,7 +7661,7 @@ packages: dev: false /file-type@4.4.0: - resolution: {integrity: sha1-G2AOX8ofvcboDApwxxyNul95BsU=} + resolution: {integrity: sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==} engines: {node: '>=4'} dev: false @@ -7867,7 +7863,7 @@ packages: dev: false /from2@2.3.0: - resolution: {integrity: sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=} + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} dependencies: inherits: 2.0.4 readable-stream: 2.3.8 @@ -8525,7 +8521,7 @@ packages: engines: {node: '>= 4'} /image-size@0.5.5: - resolution: {integrity: sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=} + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} hasBin: true requiresBuild: true @@ -8709,7 +8705,7 @@ packages: dev: true /into-stream@3.1.0: - resolution: {integrity: sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=} + resolution: {integrity: sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==} engines: {node: '>=4'} dependencies: from2: 2.3.0 @@ -9254,7 +9250,7 @@ packages: hasBin: true /json-buffer@3.0.0: - resolution: {integrity: sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=} + resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} dev: false /json-buffer@3.0.1: @@ -9607,7 +9603,7 @@ packages: dev: false /lowercase-keys@1.0.0: - resolution: {integrity: sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=} + resolution: {integrity: sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==} engines: {node: '>=0.10.0'} dev: false @@ -10444,7 +10440,7 @@ packages: dev: false /p-is-promise@1.1.0: - resolution: {integrity: sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=} + resolution: {integrity: sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==} engines: {node: '>=4'} dev: false @@ -11233,7 +11229,7 @@ packages: dev: false /prepend-http@2.0.0: - resolution: {integrity: sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=} + resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} engines: {node: '>=4'} dev: false @@ -11644,7 +11640,7 @@ packages: supports-preserve-symlinks-flag: 1.0.0 /responselike@1.0.2: - resolution: {integrity: sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=} + resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} dependencies: lowercase-keys: 1.0.1 dev: false @@ -11831,9 +11827,9 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /sass@1.69.4: - resolution: {integrity: sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==} - engines: {node: '>=14.0.0'} + /sass@1.55.0: + resolution: {integrity: sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==} + engines: {node: '>=12.0.0'} hasBin: true dependencies: chokidar: 3.5.3 @@ -11874,7 +11870,7 @@ packages: dev: false /semver-truncate@1.1.2: - resolution: {integrity: sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=} + resolution: {integrity: sha512-V1fGg9i4CL3qesB6U0L6XAm4xOJiHmt4QAacazumuasc03BvtFGIMCduv01JWQ69Nv+JST9TqhSCiJoxoY031w==} engines: {node: '>=0.10.0'} dependencies: semver: 5.7.2 @@ -12045,7 +12041,7 @@ packages: dev: false /sort-keys@2.0.0: - resolution: {integrity: sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=} + resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==} engines: {node: '>=4'} dependencies: is-plain-obj: 1.1.0 @@ -13244,7 +13240,7 @@ packages: dev: false /url-parse-lax@3.0.0: - resolution: {integrity: sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=} + resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} engines: {node: '>=4'} dependencies: prepend-http: 2.0.0 @@ -13766,15 +13762,15 @@ packages: vue: 3.3.6(typescript@5.2.2) dev: true - /vxe-table-demonic@4.5.4(vue@3.3.6)(xe-utils@3.5.13): + /vxe-table-demonic@4.5.4(vue@3.3.4)(xe-utils@3.5.7): resolution: {integrity: sha512-L+y1rXt3F/uizH7xlurlu114cfzdE3C2RaaVeTTe5aepoJHBVpE6RHOAE7gQFAlDLUu/HeJkJVUF/DSQ5xpuww==} peerDependencies: vue: ^3.2.28 xe-utils: ^3.5.0 dependencies: dom-zindex: 1.0.1 - vue: 3.3.6(typescript@5.2.2) - xe-utils: 3.5.13 + vue: 3.3.4 + xe-utils: 3.5.7 dev: false /w3c-xmlserializer@4.0.0: @@ -13930,8 +13926,8 @@ packages: optional: true dev: true - /xe-utils@3.5.13: - resolution: {integrity: sha512-ORT6ghCRk0mUVavMBxetcPzUPskS6NGfntzpWazJ86e+XU0uK4HwHfDhN/jKATiyInrOH5RwQo9SO/+DB8XeBw==} + /xe-utils@3.5.7: + resolution: {integrity: sha512-3H+fDBKBR2wLJgyA7k9C/w1Xljx6Maml5ukV0WDY06HjYyGs2FEz6XhcwRCLIDXX4pBP3Gu0nX9DbCeuuRA2Ew==} dev: false /xml-name-validator@4.0.0: