├── .python-version ├── demo-app ├── .vscode │ └── extensions.json ├── public │ └── favicon.ico ├── jsconfig.json ├── src │ ├── assets │ │ ├── logo.svg │ │ ├── main.css │ │ └── base.css │ ├── components │ │ ├── icons │ │ │ ├── IconSupport.vue │ │ │ ├── IconTooling.vue │ │ │ ├── IconCommunity.vue │ │ │ ├── IconDocumentation.vue │ │ │ └── IconEcosystem.vue │ │ ├── HelloWorld.vue │ │ ├── WelcomeItem.vue │ │ └── TheWelcome.vue │ ├── App.vue │ └── main.js ├── vite.config.js ├── .gitignore ├── package.json ├── README.md ├── index.html └── pnpm-lock.yaml ├── .babelrc ├── .npmignore ├── src ├── index.js ├── utils.js ├── vue-fusioncharts-component.js └── config.js ├── .eslintrc.js ├── .gitignore ├── component └── index.min.js.LICENSE.txt ├── dist └── vue-fusioncharts.min.js.LICENSE.txt ├── rollup.config.mjs ├── LICENSE.md ├── package.json ├── webpack.config.babel.js └── README.md /.python-version: -------------------------------------------------------------------------------- 1 | 2.7.18 2 | -------------------------------------------------------------------------------- /demo-app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar"] 3 | } 4 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "add-module-exports" 4 | ], 5 | "presets": ["env"] 6 | } 7 | -------------------------------------------------------------------------------- /demo-app/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fusioncharts/vue-fusioncharts/HEAD/demo-app/public/favicon.ico -------------------------------------------------------------------------------- /demo-app/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "paths": { 4 | "@/*": ["./src/*"] 5 | } 6 | }, 7 | "exclude": ["node_modules", "dist"] 8 | } 9 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # Node 2 | node_modules/* 3 | npm-debug.log 4 | 5 | # Windows 6 | Thumbs.db 7 | Desktop.ini 8 | 9 | # Mac 10 | .DS_Store 11 | **/.DS_Store 12 | 13 | # Example files 14 | example/ 15 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import _FCComponent from './vue-fusioncharts-component'; 2 | 3 | const install = (app, FC, ...options) => { 4 | let component = _FCComponent(FC, ...options); 5 | app.component(component.name, component); 6 | }; 7 | 8 | export default install; 9 | -------------------------------------------------------------------------------- /demo-app/src/assets/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /demo-app/src/components/icons/IconSupport.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es6: true, 5 | node: true 6 | }, 7 | extends: 'eslint:recommended', 8 | parserOptions: { 9 | sourceType: 'module' 10 | }, 11 | rules: { 12 | indent: ['error', 2], 13 | 'linebreak-style': ['error', 'unix'], 14 | quotes: ['error', 'single'], 15 | semi: ['error', 'always'] 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /demo-app/vite.config.js: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | 3 | import { defineConfig } from 'vite' 4 | import vue from '@vitejs/plugin-vue' 5 | 6 | // https://vitejs.dev/config/ 7 | export default defineConfig({ 8 | plugins: [ 9 | vue(), 10 | ], 11 | resolve: { 12 | alias: { 13 | '@': fileURLToPath(new URL('./src', import.meta.url)) 14 | } 15 | } 16 | }) 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Coverage tools 11 | lib-cov 12 | coverage 13 | coverage.html 14 | .cover* 15 | 16 | # Dependency directory 17 | node_modules 18 | bower_components 19 | 20 | # Example build directory 21 | # example/dist 22 | .publish 23 | 24 | # Editor and other tmp files 25 | *.swp 26 | *.un~ 27 | *.iml 28 | *.ipr 29 | *.iws 30 | *.sublime-* 31 | .idea/ 32 | *.DS_Store -------------------------------------------------------------------------------- /demo-app/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | .DS_Store 12 | dist 13 | dist-ssr 14 | coverage 15 | *.local 16 | 17 | /cypress/videos/ 18 | /cypress/screenshots/ 19 | 20 | # Editor directories and files 21 | .vscode/* 22 | !.vscode/extensions.json 23 | .idea 24 | *.suo 25 | *.ntvs* 26 | *.njsproj 27 | *.sln 28 | *.sw? 29 | 30 | *.tsbuildinfo 31 | -------------------------------------------------------------------------------- /demo-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo-app", 3 | "version": "0.0.0", 4 | "private": true, 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "fusioncharts": "^3.23.0", 13 | "vue": "^3.4.21", 14 | "vue-fusioncharts": "^3.2.0" 15 | }, 16 | "devDependencies": { 17 | "@vitejs/plugin-vue": "^5.0.4", 18 | "vite": "^5.2.8" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /demo-app/README.md: -------------------------------------------------------------------------------- 1 | # demo-app 2 | 3 | This template should help get you started developing with Vue 3 in Vite. 4 | 5 | ## Recommended IDE Setup 6 | 7 | [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). 8 | 9 | ## Customize configuration 10 | 11 | See [Vite Configuration Reference](https://vitejs.dev/config/). 12 | 13 | ## Project Setup 14 | 15 | ```sh 16 | pnpm install 17 | ``` 18 | 19 | ### Compile and Hot-Reload for Development 20 | 21 | ```sh 22 | pnpm dev 23 | ``` 24 | 25 | ### Compile and Minify for Production 26 | 27 | ```sh 28 | pnpm build 29 | ``` 30 | -------------------------------------------------------------------------------- /demo-app/src/assets/main.css: -------------------------------------------------------------------------------- 1 | @import './base.css'; 2 | 3 | #app { 4 | max-width: 1280px; 5 | margin: 0 auto; 6 | padding: 2rem; 7 | font-weight: normal; 8 | } 9 | 10 | a, 11 | .green { 12 | text-decoration: none; 13 | color: hsla(160, 100%, 37%, 1); 14 | transition: 0.4s; 15 | padding: 3px; 16 | } 17 | 18 | @media (hover: hover) { 19 | a:hover { 20 | background-color: hsla(160, 100%, 37%, 0.2); 21 | } 22 | } 23 | 24 | @media (min-width: 1024px) { 25 | body { 26 | display: flex; 27 | place-items: center; 28 | } 29 | 30 | #app { 31 | display: grid; 32 | grid-template-columns: 1fr 1fr; 33 | padding: 0 2rem; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /demo-app/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 | 11 |
12 | 19 | FusionCharts will render here... 20 | 21 |
22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /component/index.min.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! #__NO_SIDE_EFFECTS__ */ 2 | 3 | /** 4 | * @vue/compiler-core v3.5.17 5 | * (c) 2018-present Yuxi (Evan) You and Vue contributors 6 | * @license MIT 7 | **/ 8 | 9 | /** 10 | * @vue/runtime-core v3.5.17 11 | * (c) 2018-present Yuxi (Evan) You and Vue contributors 12 | * @license MIT 13 | **/ 14 | 15 | /** 16 | * @vue/runtime-dom v3.5.17 17 | * (c) 2018-present Yuxi (Evan) You and Vue contributors 18 | * @license MIT 19 | **/ 20 | 21 | /** 22 | * @vue/shared v3.5.17 23 | * (c) 2018-present Yuxi (Evan) You and Vue contributors 24 | * @license MIT 25 | **/ 26 | 27 | /** 28 | * vue v3.5.17 29 | * (c) 2018-present Yuxi (Evan) You and Vue contributors 30 | * @license MIT 31 | **/ 32 | -------------------------------------------------------------------------------- /dist/vue-fusioncharts.min.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! #__NO_SIDE_EFFECTS__ */ 2 | 3 | /** 4 | * @vue/compiler-core v3.5.17 5 | * (c) 2018-present Yuxi (Evan) You and Vue contributors 6 | * @license MIT 7 | **/ 8 | 9 | /** 10 | * @vue/runtime-core v3.5.17 11 | * (c) 2018-present Yuxi (Evan) You and Vue contributors 12 | * @license MIT 13 | **/ 14 | 15 | /** 16 | * @vue/runtime-dom v3.5.17 17 | * (c) 2018-present Yuxi (Evan) You and Vue contributors 18 | * @license MIT 19 | **/ 20 | 21 | /** 22 | * @vue/shared v3.5.17 23 | * (c) 2018-present Yuxi (Evan) You and Vue contributors 24 | * @license MIT 25 | **/ 26 | 27 | /** 28 | * vue v3.5.17 29 | * (c) 2018-present Yuxi (Evan) You and Vue contributors 30 | * @license MIT 31 | **/ 32 | -------------------------------------------------------------------------------- /rollup.config.mjs: -------------------------------------------------------------------------------- 1 | import commonjs from '@rollup/plugin-commonjs'; 2 | import { nodeResolve } from '@rollup/plugin-node-resolve'; 3 | 4 | export default { 5 | input: 'src/index.js', // replaces "entry" 6 | output: { 7 | file: 'dist/vue-fusioncharts.js', // replaces "dest" 8 | format: 'umd', 9 | name: 'VueFusionCharts', // replaces "moduleName" 10 | globals: { 11 | fusioncharts: 'FusionCharts', 12 | vue: 'Vue', 13 | 'lodash/cloneDeep': 'cloneDeep', 14 | 'lodash/uniqueId': 'uniqueId', 15 | }, 16 | }, 17 | external: ['fusioncharts', 'vue', 'lodash/cloneDeep', 'lodash/uniqueId'], 18 | plugins: [ 19 | nodeResolve(), // allow Rollup to resolve imports from node_modules 20 | commonjs(), // convert CommonJS modules to ES6 21 | ], 22 | }; 23 | -------------------------------------------------------------------------------- /demo-app/src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 20 | 21 | 45 | -------------------------------------------------------------------------------- /demo-app/src/App.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 19 | 20 | 48 | -------------------------------------------------------------------------------- /demo-app/src/components/icons/IconTooling.vue: -------------------------------------------------------------------------------- 1 | 2 | 20 | -------------------------------------------------------------------------------- /demo-app/src/components/icons/IconCommunity.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 FusionCharts, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /demo-app/src/components/icons/IconDocumentation.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /demo-app/src/components/WelcomeItem.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 88 | -------------------------------------------------------------------------------- /src/utils.js: -------------------------------------------------------------------------------- 1 | export const addDep = (FC, modules) => { 2 | if (FC) { 3 | if ( 4 | (modules.getName && modules.getType) || 5 | (modules.name && modules.type) 6 | ) { 7 | FC.addDep(modules); 8 | } else { 9 | modules(FC); 10 | } 11 | } 12 | }; 13 | 14 | export function checkIfDataTableExists(dataSource) { 15 | // eslint-disable-next-line no-underscore-dangle 16 | if (dataSource && dataSource.data && dataSource.data._dataStore) { 17 | return true; 18 | } 19 | return false; 20 | } 21 | 22 | export function cloneDataSource(obj, purpose = 'clone') { 23 | const type = typeof obj; 24 | if ( 25 | type === 'string' || 26 | type === 'number' || 27 | type === 'function' || 28 | type === 'boolean' 29 | ) { 30 | return obj; 31 | } 32 | if (obj === null || obj === undefined) { 33 | return obj; 34 | } 35 | if (Array.isArray(obj)) { 36 | const arr = []; 37 | for (let i = 0; i < obj.length; i++) { 38 | arr.push(cloneDataSource(obj[i])); 39 | } 40 | return arr; 41 | } 42 | if (typeof obj === 'object') { 43 | const clonedObj = {}; 44 | // eslint-disable-next-line guard-for-in 45 | // eslint-disable-next-line no-restricted-syntax 46 | for (const prop in obj) { 47 | // Edge case handling for DataTable 48 | if (prop === 'data') { 49 | // eslint-disable-next-line no-underscore-dangle 50 | if (obj[prop] && obj[prop]._dataStore && purpose === 'clone') { 51 | clonedObj[prop] = obj[prop]; 52 | // eslint-disable-next-line no-underscore-dangle 53 | } else if (obj[prop] && obj[prop]._dataStore && purpose === 'diff') { 54 | clonedObj[prop] = '-'; 55 | } else { 56 | clonedObj[prop] = cloneDataSource(obj[prop]); 57 | } 58 | continue; 59 | } 60 | clonedObj[prop] = cloneDataSource(obj[prop]); 61 | } 62 | return clonedObj; 63 | } 64 | return undefined; 65 | } 66 | -------------------------------------------------------------------------------- /demo-app/src/components/icons/IconEcosystem.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-fusioncharts", 3 | "version": "3.4.0", 4 | "description": "A simple and lightweight VueJS component for FusionCharts JavaScript Charting Library", 5 | "main": "dist/vue-fusioncharts.js", 6 | "author": "FusionCharts", 7 | "homepage": "http://www.fusioncharts.com", 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/fusioncharts/vue-fusioncharts.git" 11 | }, 12 | "bugs": { 13 | "url": "https://github.com/fusioncharts/vue-fusioncharts/issues" 14 | }, 15 | "keywords": [ 16 | "Vue", 17 | "Vue.js", 18 | "vue-fusioncharts-component", 19 | "vue-fusioncharts", 20 | "fusioncharts", 21 | "javascript-charts", 22 | "interactive-charts", 23 | "charts", 24 | "graphs", 25 | "visualization", 26 | "data-visualization", 27 | "dataviz", 28 | "browserify", 29 | "webpack" 30 | ], 31 | "scripts": { 32 | "test": "npm run lint", 33 | "lint": "eslint ./src/**/*.js webpack.config.babel.js", 34 | "build": "webpack --config webpack.config.babel.js", 35 | "rollup-old": "rollup src/index.js -f umd -n VueFusionCharts -g fusioncharts:FusionCharts -o dist/vue-fusioncharts.js", 36 | "rollup": "rollup -c", 37 | "watch": "webpack --config webpack.config.babel.js -w", 38 | "dev": "webpack serve --config example/webpack.config.js", 39 | "start": "webpack serve --config example/webpack.config.js" 40 | }, 41 | "license": "MIT", 42 | "devDependencies": { 43 | "@rollup/plugin-commonjs": "^28.0.6", 44 | "@rollup/plugin-node-resolve": "^16.0.1", 45 | "babel": "^6.23.0", 46 | "babel-core": "^6.24.1", 47 | "babel-eslint": "^7.2.3", 48 | "babel-loader": "^7.0.0", 49 | "babel-plugin-add-module-exports": "^0.2.1", 50 | "babel-preset-env": "^1.7.0", 51 | "babel-preset-es2015": "^6.24.1", 52 | "chai": "^3.5.0", 53 | "eslint": "^3.19.0", 54 | "eslint-loader": "^2.0.0", 55 | "lodash": "^4.17.21", 56 | "mocha": "^5.2.0", 57 | "rollup-plugin-commonjs": "^8.0.2", 58 | "rollup-plugin-node-resolve": "^3.0.0", 59 | "terser-webpack-plugin": "^5.1.3", 60 | "vue": "^3.5.17", 61 | "webpack": "^5.39.0", 62 | "webpack-cli": "^4.7.2", 63 | "webpack-dev-server": "^3.11.2", 64 | "yards": "^0.1.4" 65 | }, 66 | "dependencies": { 67 | "mixin-deep": "^1.3.2", 68 | "underscore": "^1.13.6", 69 | "websocket-extensions": "^0.1.4" 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /demo-app/src/assets/base.css: -------------------------------------------------------------------------------- 1 | /* color palette from */ 2 | :root { 3 | --vt-c-white: #ffffff; 4 | --vt-c-white-soft: #f8f8f8; 5 | --vt-c-white-mute: #f2f2f2; 6 | 7 | --vt-c-black: #181818; 8 | --vt-c-black-soft: #222222; 9 | --vt-c-black-mute: #282828; 10 | 11 | --vt-c-indigo: #2c3e50; 12 | 13 | --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); 14 | --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); 15 | --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); 16 | --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); 17 | 18 | --vt-c-text-light-1: var(--vt-c-indigo); 19 | --vt-c-text-light-2: rgba(60, 60, 60, 0.66); 20 | --vt-c-text-dark-1: var(--vt-c-white); 21 | --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); 22 | } 23 | 24 | /* semantic color variables for this project */ 25 | :root { 26 | --color-background: var(--vt-c-white); 27 | --color-background-soft: var(--vt-c-white-soft); 28 | --color-background-mute: var(--vt-c-white-mute); 29 | 30 | --color-border: var(--vt-c-divider-light-2); 31 | --color-border-hover: var(--vt-c-divider-light-1); 32 | 33 | --color-heading: var(--vt-c-text-light-1); 34 | --color-text: var(--vt-c-text-light-1); 35 | 36 | --section-gap: 160px; 37 | } 38 | 39 | @media (prefers-color-scheme: dark) { 40 | :root { 41 | --color-background: var(--vt-c-black); 42 | --color-background-soft: var(--vt-c-black-soft); 43 | --color-background-mute: var(--vt-c-black-mute); 44 | 45 | --color-border: var(--vt-c-divider-dark-2); 46 | --color-border-hover: var(--vt-c-divider-dark-1); 47 | 48 | --color-heading: var(--vt-c-text-dark-1); 49 | --color-text: var(--vt-c-text-dark-2); 50 | } 51 | } 52 | 53 | *, 54 | *::before, 55 | *::after { 56 | box-sizing: border-box; 57 | margin: 0; 58 | font-weight: normal; 59 | } 60 | 61 | body { 62 | min-height: 100vh; 63 | color: var(--color-text); 64 | background: var(--color-background); 65 | transition: 66 | color 0.5s, 67 | background-color 0.5s; 68 | line-height: 1.6; 69 | font-family: 70 | Inter, 71 | -apple-system, 72 | BlinkMacSystemFont, 73 | 'Segoe UI', 74 | Roboto, 75 | Oxygen, 76 | Ubuntu, 77 | Cantarell, 78 | 'Fira Sans', 79 | 'Droid Sans', 80 | 'Helvetica Neue', 81 | sans-serif; 82 | font-size: 15px; 83 | text-rendering: optimizeLegibility; 84 | -webkit-font-smoothing: antialiased; 85 | -moz-osx-font-smoothing: grayscale; 86 | } 87 | -------------------------------------------------------------------------------- /webpack.config.babel.js: -------------------------------------------------------------------------------- 1 | 2 | const TerserPlugin = require('terser-webpack-plugin'); 3 | const libraryNamePlugin = 'VueFusionCharts'; 4 | const libraryNameComponent = 'VueFusionChartsComponent'; 5 | 6 | const vueFCPluginConfig = { 7 | entry: { 8 | 'vue-fusioncharts': __dirname + '/src/index.js', 9 | 'vue-fusioncharts.min': __dirname + '/src/index.js' 10 | }, 11 | devtool: 'source-map', 12 | output: { 13 | path: __dirname + '/dist', 14 | filename: '[name].js', 15 | library: libraryNamePlugin, 16 | libraryTarget: 'umd' 17 | }, 18 | module: { 19 | rules: [ 20 | { 21 | test: /(\.jsx|\.js)$/, 22 | loader: 'babel-loader', 23 | exclude: /(node_modules|bower_components)/ 24 | }, 25 | { 26 | test: /(\.jsx|\.js)$/, 27 | loader: 'eslint-loader', 28 | exclude: /node_modules/ 29 | } 30 | ] 31 | }, 32 | externals: { 33 | fusioncharts: { 34 | commonjs2: 'fusioncharts', 35 | commonjs: 'fusioncharts', 36 | amd: 'fusioncharts', 37 | root: 'FusionCharts' 38 | } 39 | }, 40 | optimization: { 41 | minimize: true, 42 | minimizer: [ 43 | new TerserPlugin({ 44 | parallel: true, 45 | include: 'vue-fusioncharts.min.js', 46 | }), 47 | ], 48 | }, 49 | mode: 'production' 50 | }; 51 | 52 | const vueFCComponentConfig = { 53 | entry: { 54 | index: __dirname + '/src/vue-fusioncharts-component.js', 55 | 'index.min': __dirname + '/src/vue-fusioncharts-component.js' 56 | }, 57 | devtool: 'source-map', 58 | output: { 59 | path: __dirname + '/component', 60 | filename: '[name].js', 61 | library: libraryNameComponent, 62 | libraryTarget: 'umd' 63 | }, 64 | module: { 65 | rules: [ 66 | { 67 | test: /(\.jsx|\.js)$/, 68 | loader: 'babel-loader', 69 | exclude: /(node_modules|bower_components)/ 70 | }, 71 | { 72 | test: /(\.jsx|\.js)$/, 73 | loader: 'eslint-loader', 74 | exclude: /node_modules/ 75 | } 76 | ] 77 | }, 78 | externals: { 79 | fusioncharts: { 80 | commonjs2: 'fusioncharts', 81 | commonjs: 'fusioncharts', 82 | amd: 'fusioncharts', 83 | root: 'FusionCharts' 84 | } 85 | }, 86 | optimization: { 87 | minimize: true, 88 | minimizer: [ 89 | new TerserPlugin({ 90 | parallel: true, 91 | include: 'index.min.js', 92 | }), 93 | ], 94 | }, 95 | mode: 'production' 96 | }; 97 | 98 | module.exports = [vueFCPluginConfig, vueFCComponentConfig]; 99 | -------------------------------------------------------------------------------- /demo-app/src/components/TheWelcome.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 89 | -------------------------------------------------------------------------------- /demo-app/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue/dist/vue.esm-bundler'; 2 | 3 | import VueFusionCharts from 'vue-fusioncharts'; 4 | import FusionCharts from 'fusioncharts'; 5 | import Charts from 'fusioncharts/fusioncharts.charts'; 6 | 7 | // Additional data 8 | const jsonify = (res) => res.json(); 9 | const dataFetch = fetch( 10 | 'https://s3.eu-central-1.amazonaws.com/fusion.store/ft/data/plotting-multiple-series-on-time-axis-data.json' 11 | ).then(jsonify); 12 | const schemaFetch = fetch( 13 | 'https://s3.eu-central-1.amazonaws.com/fusion.store/ft/schema/plotting-multiple-series-on-time-axis-schema.json' 14 | ).then(jsonify); 15 | 16 | const App = { 17 | data() { 18 | return { 19 | component: true, 20 | show: false, 21 | counter: 0, 22 | chartType: 'Pie2D', 23 | pieDataSource: { 24 | chart: { 25 | caption: 'Vue FusionCharts Sample', 26 | theme: 'fint', 27 | }, 28 | data: [{ value: 1.9 }, { value: 2.3 }, { value: 2.1 }], 29 | }, 30 | displayValue: 'nothing', 31 | events: { 32 | dataplotRollover: function (ev, props) { 33 | this.displayValue = props.value; 34 | }, 35 | }, 36 | width: '600', 37 | height: '400', 38 | type: 'timeseries', 39 | dataFormat: 'json', 40 | dataSource: { 41 | data: null, 42 | caption: { 43 | text: 'Sales Analysis', 44 | }, 45 | subcaption: { 46 | text: 'Grocery & Footwear', 47 | }, 48 | series: 'Type', 49 | yAxis: [ 50 | { 51 | plot: 'Sales Value', 52 | title: 'Sale Value', 53 | format: { 54 | prefix: '$', 55 | }, 56 | }, 57 | ], 58 | }, 59 | chartDs: { 60 | chart: { 61 | caption: 'Vue FusionCharts Sample', 62 | theme: 'fint', 63 | animation: '1', 64 | updateanimduration: '100', 65 | }, 66 | data: [{ value: 1.9 }, { value: 2.3 }, { value: 2.1 }], 67 | }, 68 | options: { 69 | width: '600', 70 | height: '400', 71 | type: 'Pie2D', 72 | dataFormat: 'json', 73 | dataSource: { 74 | chart: { 75 | caption: 'Vue FusionCharts Sample', 76 | theme: 'fint', 77 | }, 78 | data: [{ value: 1.9 }, { value: 2.3 }, { value: 2.1 }], 79 | }, 80 | }, 81 | timeseriesOptions: { 82 | width: '600', 83 | height: '400', 84 | type: 'timeseries', 85 | dataFormat: 'json', 86 | dataSource: { 87 | caption: { text: 'Online Sales of a SuperStore in the US' }, 88 | data: null, 89 | yAxis: [ 90 | { 91 | plot: [ 92 | { 93 | value: 'Sales ($)', 94 | }, 95 | ], 96 | }, 97 | ], 98 | }, 99 | }, 100 | }; 101 | }, 102 | methods: { 103 | changeFirstChartAttr: function () { 104 | // let dataSource = Object.assign({}, this.pieDataSource); 105 | this.chartDs.chart.caption = 'Changed to something else'; 106 | // this.chartDs.data[2].value = this.getRandomNumber(); 107 | // this.chartDs.data[1].value = this.getRandomNumber(); 108 | // this.pieDataSource = dataSource; 109 | }, 110 | changeSecondChartAttr: function () { 111 | let dataSource = Object.assign({}, this.dataSource); 112 | dataSource.caption.text = 'Changed to something else'; 113 | this.dataSource = dataSource; 114 | }, 115 | getRandomNumber: function () { 116 | var max = 5, 117 | min = 2; 118 | return Math.round((max - min) * Math.random() + min); 119 | }, 120 | changeChartAttr: function () { 121 | let dataSource = Object.assign({}, this.dataSource); 122 | dataSource.caption.text = 'Changed to something else'; 123 | this.dataSource = dataSource; 124 | }, 125 | }, 126 | mounted: function () { 127 | Promise.all([dataFetch, schemaFetch]).then((res) => { 128 | const data = res[0]; 129 | const schema = res[1]; 130 | const fusionTable = new FusionCharts.DataStore().createDataTable(data, schema); 131 | this.dataSource.data = fusionTable; 132 | }); 133 | }, 134 | }; 135 | const app = createApp(App); 136 | app.use(VueFusionCharts, FusionCharts, Charts); 137 | app.mount('#chart1'); 138 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue FusionCharts Component 2 | 3 | The `vue-fusioncharts` component provides a straightforward and efficient way to integrate the powerful `FusionCharts` JavaScript Charting Library with your Vue.js (Vue 3) applications. 4 | 5 | ## Quick Links 6 | 7 | - [Demo](https://fusioncharts.github.io/vue-fusioncharts/) 8 | - [Documentation](https://www.fusioncharts.com/dev/getting-started/vue/your-first-chart-using-vuejs) 9 | - [FusionCharts NPM Package](https://www.npmjs.com/package/fusioncharts) 10 | - [Support](https://www.fusioncharts.com/contact-support) 11 | - [Official Website](https://www.fusioncharts.com/) 12 | 13 | ## Table of Contents 14 | 15 | 1. [Getting Started](#getting-started) 16 | - [Requirements](#requirements) 17 | - [Installation](#installation) 18 | - [Usage](#usage) 19 | 2. [Quick Start](#quick-start) 20 | 3. [Working with Events](#working-with-events) 21 | 4. [Working with APIs](#working-with-apis) 22 | 5. [Advanced Usage and FusionTime](#advanced-usage-and-fusiontime) 23 | 6. [Contributing](#contributing) 24 | 7. [Licensing](#licensing) 25 | 26 | ## Getting Started 27 | 28 | ### Requirements 29 | 30 | Ensure you have **Node.js**, **NPM/Yarn** installed globally. Additionally, you need **FusionCharts** and **Vue** installed in your project. 31 | 32 | ### Installation 33 | 34 | You can install `vue-fusioncharts` directly via NPM or Yarn, or by downloading the binaries from our GitHub repository. 35 | 36 | #### NPM 37 | 38 | ```bash 39 | npm install vue-fusioncharts --save 40 | ``` 41 | 42 | #### Yarn 43 | 44 | ```bash 45 | yarn add vue-fusioncharts 46 | ``` 47 | 48 | #### Direct Download 49 | 50 | Download the [`vue-fusioncharts.js`](https://github.com/fusioncharts/vue-fusioncharts/blob/master/dist/vue-fusioncharts.js) file and include it in your project using a ` 54 | ``` 55 | 56 | ### Usage 57 | 58 | `vue-fusioncharts` can be integrated into your Vue application either globally as a plugin or locally within a component. 59 | 60 | #### Global Registration 61 | 62 | ```javascript 63 | import { createApp } from 'vue'; 64 | import VueFusionCharts from 'vue-fusioncharts'; 65 | import FusionCharts from 'fusioncharts'; 66 | import Charts from 'fusioncharts/fusioncharts.charts'; 67 | 68 | const app = createApp(App); 69 | app.use(VueFusionCharts, FusionCharts, Charts); 70 | ``` 71 | 72 | #### Local Registration 73 | 74 | ```javascript 75 | import { createApp } from 'vue'; 76 | import VueFusionChartsComponent from 'vue-fusioncharts/component'; 77 | import FusionCharts from 'fusioncharts'; 78 | import Charts from 'fusioncharts/fusioncharts.charts'; 79 | 80 | const app = createApp(App); 81 | const VueFusionCharts = VueFusionChartsComponent(FusionCharts, Charts); 82 | app.component('fusioncharts', VueFusionCharts); 83 | ``` 84 | 85 | ## Quick Start 86 | 87 | Here is an example to quickly set up a chart using `vue-fusioncharts`: 88 | 89 | ```javascript 90 | import { createApp } from 'vue'; 91 | import VueFusionCharts from 'vue-fusioncharts'; 92 | import FusionCharts from 'fusioncharts'; 93 | import Charts from 'fusioncharts/fusioncharts.charts'; 94 | 95 | const myDataSource = { 96 | chart: { 97 | caption: 'Recommended Portfolio Split', 98 | subCaption: 'For a net-worth of $1M', 99 | showValues: '1', 100 | showPercentInTooltip: '0', 101 | numberPrefix: '$', 102 | enableMultiSlicing: '1', 103 | theme: 'fusion' 104 | }, 105 | data: [ 106 | { label: 'Equity', value: '300000' }, 107 | { label: 'Debt', value: '230000' }, 108 | // more data 109 | ] 110 | }; 111 | 112 | const App = { 113 | data() { 114 | return { 115 | type: 'column2d', 116 | width: '500', 117 | height: '300', 118 | dataFormat: 'json', 119 | dataSource: myDataSource 120 | }; 121 | } 122 | }; 123 | 124 | const app = createApp(App); 125 | app.use(VueFusionCharts, FusionCharts, Charts); 126 | app.mount('#app'); 127 | ``` 128 | 129 | ```html 130 |
131 | 137 | 138 |
139 | ``` 140 | 141 | ## Working with Events 142 | 143 | To handle events within `vue-fusioncharts`, use Vue event handling syntax: 144 | 145 | ```html 146 | 147 | 148 | 156 | 157 | ``` 158 | 159 | ## Advanced Usage and FusionTime 160 | 161 | From `fusioncharts@3.13.3-sr.1` and `vue-fusioncharts@3.0.0`, FusionTime allows easy visualization of time series data. 162 | 163 | ```javascript 164 | import { createApp } from 'vue'; 165 | import VueFusionCharts from 'vue-fusioncharts'; 166 | import FusionCharts from 'fusioncharts'; 167 | import TimeSeries from 'fusioncharts/fusioncharts.timeseries'; 168 | 169 | const app = createApp(App); 170 | app.use(VueFusionCharts, FusionCharts, TimeSeries); 171 | app.mount('#app'); 172 | ``` 173 | 174 | ## Contributing 175 | 176 | Contributions are welcome! Please refer to the repository's [issue tracker](https://github.com/fusioncharts/vue-fusioncharts/issues) to report bugs or submit feature requests. 177 | 178 | ## Licensing 179 | 180 | `vue-fusioncharts` is open-source under the MIT/X11 License. Note that FusionCharts itself is separately licensed, and you need to purchase a commercial license for production use. 181 | -------------------------------------------------------------------------------- /src/vue-fusioncharts-component.js: -------------------------------------------------------------------------------- 1 | import { optionsMap, props } from './config.js'; 2 | import cloneDeep from 'lodash/cloneDeep'; 3 | import uniqueId from 'lodash/uniqueId'; 4 | import { addDep, checkIfDataTableExists, cloneDataSource } from './utils'; 5 | import { h } from 'vue'; 6 | 7 | export default (FC, ...options) => { 8 | options && 9 | options.forEach && 10 | options.forEach((modules) => { 11 | addDep(FC, modules); 12 | }); 13 | return { 14 | name: 'fusioncharts', 15 | render: function () { 16 | this.containerID = 'fc-' + uniqueId(); 17 | return h('div', { 18 | id: this.containerID, 19 | }); 20 | }, 21 | props, 22 | methods: { 23 | createEvents: function () { 24 | const myattrs = this.$attrs; 25 | const ret = { 26 | events: {}, 27 | }; 28 | 29 | if (myattrs && typeof myattrs === 'object') { 30 | Object.keys(myattrs).forEach((event) => { 31 | if (event.startsWith('on') && typeof myattrs[event] === 'function') { 32 | const myEvent = event.replace('on', ''); 33 | ret.events[myEvent] = e => { 34 | this.$emit(myEvent, e); 35 | }; 36 | } 37 | }); 38 | } 39 | return ret; 40 | }, 41 | setLastOptions: function (config) { 42 | this._oldOptions = Object.assign({}, config); 43 | }, 44 | getLastOptions: function () { 45 | return this._oldOptions; 46 | }, 47 | getOptions: function () { 48 | let config = {}, 49 | THIS = this; 50 | for (let i in optionsMap) { 51 | if (THIS[i] !== undefined && THIS[i] !== null) { 52 | config[optionsMap[i]] = THIS[i]; 53 | } 54 | } 55 | 56 | let options = Object.assign(Object.assign({}, THIS.options), config); 57 | 58 | return options; 59 | }, 60 | renderChart: function () { 61 | let THIS = this, 62 | config = THIS.getOptions(), 63 | chartObj = THIS.chartObj; 64 | 65 | config.renderAt = this.containerID; 66 | THIS.setLastOptions(config); 67 | 68 | if (chartObj && chartObj.dispose) { 69 | chartObj.dispose(); 70 | } 71 | const events = this.createEvents(); 72 | config.events = Object.assign({}, config.events, events.events); 73 | 74 | let ds = config.dataSource || config.datasource; 75 | 76 | if (checkIfDataTableExists(ds)) 77 | this.prevDataSource = cloneDataSource(ds, 'diff'); 78 | else this.prevDataSource = cloneDataSource(ds, 'clone'); 79 | 80 | THIS.chartObj = chartObj = new FC(config); 81 | chartObj.render(); 82 | }, 83 | updateChart: function () { 84 | let THIS = this, 85 | config = THIS.getOptions(), 86 | prevConfig = THIS.getLastOptions(), 87 | chartObj = THIS.chartObj; 88 | 89 | if ( 90 | config.width !== prevConfig.width || 91 | config.height !== prevConfig.height 92 | ) { 93 | chartObj && chartObj.resizeTo(config.width, config.height); 94 | } else if (config.type !== prevConfig.type) { 95 | chartObj.chartType(config.type); 96 | } else { 97 | if (!checkIfDataTableExists(config.dataSource)) 98 | chartObj.setChartData(config.dataSource, config.dataFormat); 99 | } 100 | 101 | THIS.setLastOptions(config); 102 | }, 103 | }, 104 | watch: { 105 | type: function () { 106 | this.chartObj.chartType(this.type); 107 | }, 108 | width: function () { 109 | this.chartObj.resizeTo(this.width, this.height); 110 | }, 111 | height: function () { 112 | this.chartObj.resizeTo(this.width, this.height); 113 | }, 114 | options: { 115 | handler: function () { 116 | this.updateChart(); 117 | }, 118 | deep: true, 119 | }, 120 | dataSource: { 121 | handler: function () { 122 | if (!checkIfDataTableExists(this.dataSource)) { 123 | this.chartObj.setChartData( 124 | this.datasource || this.dataSource, 125 | this.dataFormat || this.dataformat 126 | ); 127 | } 128 | }, 129 | deep: true, 130 | }, 131 | datasource: { 132 | handler: function () { 133 | if (!checkIfDataTableExists(this.datasource)) { 134 | this.chartObj.setChartData( 135 | this.datasource || this.dataSource, 136 | this.dataFormat || this.dataformat 137 | ); 138 | } 139 | }, 140 | deep: true, 141 | }, 142 | 'datasource.data': { 143 | handler: function (newVal, prevVal) { 144 | if (newVal !== prevVal) { 145 | let clonedDataSource; 146 | if (this.datasource.series) { 147 | clonedDataSource = cloneDeep(this.datasource); 148 | } else clonedDataSource = this.datasource; 149 | this.chartObj.setChartData( 150 | clonedDataSource, 151 | this.dataFormat || this.dataformat 152 | ); 153 | } 154 | }, 155 | deep: false, 156 | }, 157 | 'dataSource.data': { 158 | handler: function (newVal, prevVal) { 159 | if (newVal !== prevVal) { 160 | let clonedDataSource; 161 | if (this.dataSource.series) { 162 | clonedDataSource = cloneDeep(this.dataSource); 163 | } else clonedDataSource = this.dataSource; 164 | this.chartObj.setChartData( 165 | clonedDataSource, 166 | this.dataFormat || this.dataformat 167 | ); 168 | } 169 | }, 170 | deep: false, 171 | }, 172 | }, 173 | deactivated: function () { 174 | this.chartObj && this.chartObj.dispose(); 175 | }, 176 | beforeUnmount: function () { 177 | this.chartObj && this.chartObj.dispose(); 178 | }, 179 | mounted: function () { 180 | this.renderChart(); 181 | }, 182 | ready: function () { 183 | this.renderChart(); 184 | }, 185 | beforeUpdate: function () { 186 | const strPrevClonedDataSource = JSON.stringify(this.prevDataSource); 187 | let ds = this.datasource || this.dataSource || this.options.dataSource; 188 | const strCurrClonedDataSource = JSON.stringify( 189 | cloneDataSource(ds, 'diff') 190 | ); 191 | if (strPrevClonedDataSource !== strCurrClonedDataSource) { 192 | this.prevDataSource = cloneDataSource(ds, 'diff'); 193 | if (ds.series) { 194 | ds = cloneDeep(ds); 195 | } 196 | this.chartObj.setChartData(ds, this.dataFormat || this.dataformat); 197 | } 198 | }, 199 | }; 200 | }; 201 | -------------------------------------------------------------------------------- /src/config.js: -------------------------------------------------------------------------------- 1 | export const optionsMap = { 2 | type: 'type', 3 | id: 'id', 4 | width: 'width', 5 | height: 'height', 6 | dataFormat: 'dataFormat', 7 | dataSource: 'dataSource', 8 | events: 'events', 9 | link: 'link', 10 | showDataLoadingMessage: 'showDataLoadingMessage', 11 | showChartLoadingMessage: 'showChartLoadingMessage', 12 | baseChartMessageFont: 'baseChartMessageFont', 13 | baseChartMessageFontSize: 'baseChartMessageFontSize', 14 | baseChartMessageColor: 'baseChartMessageColor', 15 | dataLoadStartMessage: 'dataLoadStartMessage', 16 | dataLoadErrorMessage: 'dataLoadErrorMessage', 17 | dataInvalidMessage: 'dataInvalidMessage', 18 | dataEmptyMessage: 'dataEmptyMessage', 19 | typeNotSupportedMessage: 'typeNotSupportedMessage', 20 | loadMessage: 'loadMessage', 21 | renderErrorMessage: 'renderErrorMessage', 22 | containerBackgroundColor: 'containerBackgroundColor', 23 | containerBackgroundOpacity: 'containerBackgroundOpacity', 24 | containerClassName: 'containerClassName', 25 | baseChartMessageImageHAlign: 'baseChartMessageImageHAlign', 26 | baseChartMessageImageVAlign: 'baseChartMessageImageVAlign', 27 | baseChartMessageImageAlpha: 'baseChartMessageImageAlpha', 28 | baseChartMessageImageScale: 'baseChartMessageImageScale', 29 | typeNotSupportedMessageImageHAlign: 'typeNotSupportedMessageImageHAlign', 30 | typeNotSupportedMessageImageVAlign: 'typeNotSupportedMessageImageVAlign', 31 | typeNotSupportedMessageImageAlpha: 'typeNotSupportedMessageImageAlpha', 32 | typeNotSupportedMessageImageScale: 'typeNotSupportedMessageImageScale', 33 | dataLoadErrorMessageImageHAlign: 'dataLoadErrorMessageImageHAlign', 34 | dataLoadErrorMessageImageVAlign: 'dataLoadErrorMessageImageVAlign', 35 | dataLoadErrorMessageImageAlpha: 'dataLoadErrorMessageImageAlpha', 36 | dataLoadErrorMessageImageScale: 'dataLoadErrorMessageImageScale', 37 | dataLoadStartMessageImageHAlign: 'dataLoadStartMessageImageHAlign', 38 | dataLoadStartMessageImageVAlign: 'dataLoadStartMessageImageVAlign', 39 | dataLoadStartMessageImageAlpha: 'dataLoadStartMessageImageAlpha', 40 | dataLoadStartMessageImageScale: 'dataLoadStartMessageImageScale', 41 | dataInvalidMessageImageHAlign: 'dataInvalidMessageImageHAlign', 42 | dataInvalidMessageImageVAlign: 'dataInvalidMessageImageVAlign', 43 | dataInvalidMessageImageAlpha: 'dataInvalidMessageImageAlpha', 44 | dataInvalidMessageImageScale: 'dataInvalidMessageImageScale', 45 | dataEmptyMessageImageHAlign: 'dataEmptyMessageImageHAlign', 46 | dataEmptyMessageImageVAlign: 'dataEmptyMessageImageVAlign', 47 | dataEmptyMessageImageAlpha: 'dataEmptyMessageImageAlpha', 48 | dataEmptyMessageImageScale: 'dataEmptyMessageImageScale', 49 | renderErrorMessageImageHAlign: 'renderErrorMessageImageHAlign', 50 | renderErrorMessageImageVAlign: 'renderErrorMessageImageVAlign', 51 | renderErrorMessageImageAlpha: 'renderErrorMessageImageAlpha', 52 | renderErrorMessageImageScale: 'renderErrorMessageImageScale', 53 | loadMessageImageHAlign: 'loadMessageImageHAlign', 54 | loadMessageImageVAlign: 'loadMessageImageVAlign', 55 | loadMessageImageAlpha: 'loadMessageImageAlpha', 56 | loadMessageImageScale: 'loadMessageImageScale', 57 | /////////////////////////////////////////////////////// 58 | dataformat: 'dataFormat', 59 | datasource: 'dataSource', 60 | showdataloadingmessage: 'showDataLoadingMessage', 61 | showchartloadingmessage: 'showChartLoadingMessage', 62 | basechartmessagefont: 'baseChartMessageFont', 63 | basechartmessagefontsize: 'baseChartMessageFontSize', 64 | basechartmessagecolor: 'baseChartMessageColor', 65 | dataloadstartmessage: 'dataLoadStartMessage', 66 | dataloaderrormessage: 'dataLoadErrorMessage', 67 | datainvalidmessage: 'dataInvalidMessage', 68 | dataemptymessage: 'dataEmptyMessage', 69 | typenotsupportedmessage: 'typeNotSupportedMessage', 70 | loadmessage: 'loadMessage', 71 | rendererrormessage: 'renderErrorMessage', 72 | containerbackgroundcolor: 'containerBackgroundColor', 73 | containerbackgroundopacity: 'containerBackgroundOpacity', 74 | containerclassname: 'containerClassName', 75 | basechartmessageimagehalign: 'baseChartMessageImageHAlign', 76 | basechartmessageimagevalign: 'baseChartMessageImageVAlign', 77 | basechartmessageimagealpha: 'baseChartMessageImageAlpha', 78 | basechartmessageimagescale: 'baseChartMessageImageScale', 79 | typenotsupportedmessageimagehalign: 'typeNotSupportedMessageImageHAlign', 80 | typenotsupportedmessageimagevalign: 'typeNotSupportedMessageImageVAlign', 81 | typenotsupportedmessageimagealpha: 'typeNotSupportedMessageImageAlpha', 82 | typenotsupportedmessageimagescale: 'typeNotSupportedMessageImageScale', 83 | dataloaderrormessageimagehalign: 'dataLoadErrorMessageImageHAlign', 84 | dataloaderrormessageimagevalign: 'dataLoadErrorMessageImageVAlign', 85 | dataloaderrormessageimagealpha: 'dataLoadErrorMessageImageAlpha', 86 | dataloaderrormessageimagescale: 'dataLoadErrorMessageImageScale', 87 | dataloadstartmessageimagehalign: 'dataLoadStartMessageImageHAlign', 88 | dataloadstartmessageimagevalign: 'dataLoadStartMessageImageVAlign', 89 | dataloadstartmessageimagealpha: 'dataLoadStartMessageImageAlpha', 90 | dataloadstartmessageimagescale: 'dataLoadStartMessageImageScale', 91 | datainvalidmessageimagehalign: 'dataInvalidMessageImageHAlign', 92 | datainvalidmessageimagevalign: 'dataInvalidMessageImageVAlign', 93 | datainvalidmessageimagealpha: 'dataInvalidMessageImageAlpha', 94 | datainvalidmessageimagescale: 'dataInvalidMessageImageScale', 95 | dataemptymessageimagehalign: 'dataEmptyMessageImageHAlign', 96 | dataemptymessageimagevalign: 'dataEmptyMessageImageVAlign', 97 | dataemptymessageimagealpha: 'dataEmptyMessageImageAlpha', 98 | dataemptymessageimagescale: 'dataEmptyMessageImageScale', 99 | rendererrormessageimagehalign: 'renderErrorMessageImageHAlign', 100 | rendererrormessageimagevalign: 'renderErrorMessageImageVAlign', 101 | rendererrormessageimagealpha: 'renderErrorMessageImageAlpha', 102 | rendererrormessageimagescale: 'renderErrorMessageImageScale', 103 | loadmessageimagehalign: 'loadMessageImageHAlign', 104 | loadmessageimagevalign: 'loadMessageImageVAlign', 105 | loadmessageimagealpha: 'loadMessageImageAlpha', 106 | loadmessageimagescale: 'loadMessageImageScale', 107 | }; 108 | 109 | export const props = { 110 | options: Object, 111 | type: String, 112 | id: String, 113 | width: '', 114 | height: '', 115 | dataFormat: String, 116 | dataSource: '', 117 | events: Object, 118 | link: Object, 119 | showDataLoadingMessage: Boolean, 120 | showChartLoadingMessage: Boolean, 121 | baseChartMessageFont: String, 122 | baseChartMessageFontSize: String, 123 | baseChartMessageColor: String, 124 | dataLoadStartMessage: String, 125 | dataLoadErrorMessage: String, 126 | dataInvalidMessage: String, 127 | dataEmptyMessage: String, 128 | typeNotSupportedMessage: String, 129 | loadMessage: String, 130 | renderErrorMessage: String, 131 | containerBackgroundColor: String, 132 | containerBackgroundOpacity: Number, 133 | containerClassName: String, 134 | baseChartMessageImageHAlign: String, 135 | baseChartMessageImageVAlign: String, 136 | baseChartMessageImageAlpha: Number, 137 | baseChartMessageImageScale: Number, 138 | typeNotSupportedMessageImageHAlign: String, 139 | typeNotSupportedMessageImageVAlign: String, 140 | typeNotSupportedMessageImageAlpha: Number, 141 | typeNotSupportedMessageImageScale: Number, 142 | dataLoadErrorMessageImageHAlign: String, 143 | dataLoadErrorMessageImageVAlign: String, 144 | dataLoadErrorMessageImageAlpha: Number, 145 | dataLoadErrorMessageImageScale: Number, 146 | dataLoadStartMessageImageHAlign: String, 147 | dataLoadStartMessageImageVAlign: String, 148 | dataLoadStartMessageImageAlpha: Number, 149 | dataLoadStartMessageImageScale: Number, 150 | dataInvalidMessageImageHAlign: String, 151 | dataInvalidMessageImageVAlign: String, 152 | dataInvalidMessageImageAlpha: Number, 153 | dataInvalidMessageImageScale: Number, 154 | dataEmptyMessageImageHAlign: String, 155 | dataEmptyMessageImageVAlign: String, 156 | dataEmptyMessageImageAlpha: Number, 157 | dataEmptyMessageImageScale: Number, 158 | renderErrorMessageImageHAlign: String, 159 | renderErrorMessageImageVAlign: String, 160 | renderErrorMessageImageAlpha: Number, 161 | renderErrorMessageImageScale: Number, 162 | loadMessageImageHAlign: String, 163 | loadMessageImageVAlign: String, 164 | loadMessageImageAlpha: Number, 165 | loadMessageImageScale: Number, 166 | /////////////////////////////////////////////// 167 | dataformat: String, 168 | datasource: '', 169 | showdataloadingmessage: Boolean, 170 | showchartloadingmessage: Boolean, 171 | basechartmessagefont: String, 172 | basechartmessagefontsize: String, 173 | basechartmessagecolor: String, 174 | dataloadstartmessage: String, 175 | dataloaderrormessage: String, 176 | datainvalidmessage: String, 177 | dataemptymessage: String, 178 | typenotsupportedmessage: String, 179 | loadmessage: String, 180 | rendererrormessage: String, 181 | containerbackgroundcolor: String, 182 | containerbackgroundopacity: Number, 183 | containerclassname: String, 184 | basechartmessageimagehalign: String, 185 | basechartmessageimagevalign: String, 186 | basechartmessageimagealpha: Number, 187 | basechartmessageimagescale: Number, 188 | typenotsupportedmessageimagehalign: String, 189 | typenotsupportedmessageimagevalign: String, 190 | typenotsupportedmessageimagealpha: Number, 191 | typenotsupportedmessageimagescale: Number, 192 | dataloaderrormessageimagehalign: String, 193 | dataloaderrormessageimagevalign: String, 194 | dataloaderrormessageimagealpha: Number, 195 | dataloaderrormessageimagescale: Number, 196 | dataloadstartmessageimagehalign: String, 197 | dataloadstartmessageimagevalign: String, 198 | dataloadstartmessageimagealpha: Number, 199 | dataloadstartmessageimagescale: Number, 200 | datainvalidmessageimagehalign: String, 201 | datainvalidmessageimagevalign: String, 202 | datainvalidmessageimagealpha: Number, 203 | datainvalidmessageimagescale: Number, 204 | dataemptymessageimagehalign: String, 205 | dataemptymessageimagevalign: String, 206 | dataemptymessageimagealpha: Number, 207 | dataemptymessageimagescale: Number, 208 | rendererrormessageimagehalign: String, 209 | rendererrormessageimagevalign: String, 210 | rendererrormessageimagealpha: Number, 211 | rendererrormessageimagescale: Number, 212 | loadmessageimagehalign: String, 213 | loadmessageimagevalign: String, 214 | loadmessageimagealpha: Number, 215 | loadmessageimagescale: Number, 216 | }; 217 | -------------------------------------------------------------------------------- /demo-app/pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | fusioncharts: 12 | specifier: ^3.23.0 13 | version: 3.23.0 14 | vue: 15 | specifier: ^3.4.21 16 | version: 3.4.29 17 | vue-fusioncharts: 18 | specifier: ^3.2.0 19 | version: 3.2.0 20 | devDependencies: 21 | '@vitejs/plugin-vue': 22 | specifier: ^5.0.4 23 | version: 5.0.5(vite@5.3.1)(vue@3.4.29) 24 | vite: 25 | specifier: ^5.2.8 26 | version: 5.3.1 27 | 28 | packages: 29 | 30 | '@babel/helper-string-parser@7.24.7': 31 | resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} 32 | engines: {node: '>=6.9.0'} 33 | 34 | '@babel/helper-validator-identifier@7.24.7': 35 | resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} 36 | engines: {node: '>=6.9.0'} 37 | 38 | '@babel/parser@7.24.7': 39 | resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} 40 | engines: {node: '>=6.0.0'} 41 | hasBin: true 42 | 43 | '@babel/runtime@7.24.7': 44 | resolution: {integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==} 45 | engines: {node: '>=6.9.0'} 46 | 47 | '@babel/types@7.24.7': 48 | resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} 49 | engines: {node: '>=6.9.0'} 50 | 51 | '@esbuild/aix-ppc64@0.21.5': 52 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 53 | engines: {node: '>=12'} 54 | cpu: [ppc64] 55 | os: [aix] 56 | 57 | '@esbuild/android-arm64@0.21.5': 58 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 59 | engines: {node: '>=12'} 60 | cpu: [arm64] 61 | os: [android] 62 | 63 | '@esbuild/android-arm@0.21.5': 64 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 65 | engines: {node: '>=12'} 66 | cpu: [arm] 67 | os: [android] 68 | 69 | '@esbuild/android-x64@0.21.5': 70 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 71 | engines: {node: '>=12'} 72 | cpu: [x64] 73 | os: [android] 74 | 75 | '@esbuild/darwin-arm64@0.21.5': 76 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 77 | engines: {node: '>=12'} 78 | cpu: [arm64] 79 | os: [darwin] 80 | 81 | '@esbuild/darwin-x64@0.21.5': 82 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 83 | engines: {node: '>=12'} 84 | cpu: [x64] 85 | os: [darwin] 86 | 87 | '@esbuild/freebsd-arm64@0.21.5': 88 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 89 | engines: {node: '>=12'} 90 | cpu: [arm64] 91 | os: [freebsd] 92 | 93 | '@esbuild/freebsd-x64@0.21.5': 94 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 95 | engines: {node: '>=12'} 96 | cpu: [x64] 97 | os: [freebsd] 98 | 99 | '@esbuild/linux-arm64@0.21.5': 100 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 101 | engines: {node: '>=12'} 102 | cpu: [arm64] 103 | os: [linux] 104 | 105 | '@esbuild/linux-arm@0.21.5': 106 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 107 | engines: {node: '>=12'} 108 | cpu: [arm] 109 | os: [linux] 110 | 111 | '@esbuild/linux-ia32@0.21.5': 112 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 113 | engines: {node: '>=12'} 114 | cpu: [ia32] 115 | os: [linux] 116 | 117 | '@esbuild/linux-loong64@0.21.5': 118 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 119 | engines: {node: '>=12'} 120 | cpu: [loong64] 121 | os: [linux] 122 | 123 | '@esbuild/linux-mips64el@0.21.5': 124 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 125 | engines: {node: '>=12'} 126 | cpu: [mips64el] 127 | os: [linux] 128 | 129 | '@esbuild/linux-ppc64@0.21.5': 130 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 131 | engines: {node: '>=12'} 132 | cpu: [ppc64] 133 | os: [linux] 134 | 135 | '@esbuild/linux-riscv64@0.21.5': 136 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 137 | engines: {node: '>=12'} 138 | cpu: [riscv64] 139 | os: [linux] 140 | 141 | '@esbuild/linux-s390x@0.21.5': 142 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 143 | engines: {node: '>=12'} 144 | cpu: [s390x] 145 | os: [linux] 146 | 147 | '@esbuild/linux-x64@0.21.5': 148 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 149 | engines: {node: '>=12'} 150 | cpu: [x64] 151 | os: [linux] 152 | 153 | '@esbuild/netbsd-x64@0.21.5': 154 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 155 | engines: {node: '>=12'} 156 | cpu: [x64] 157 | os: [netbsd] 158 | 159 | '@esbuild/openbsd-x64@0.21.5': 160 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 161 | engines: {node: '>=12'} 162 | cpu: [x64] 163 | os: [openbsd] 164 | 165 | '@esbuild/sunos-x64@0.21.5': 166 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 167 | engines: {node: '>=12'} 168 | cpu: [x64] 169 | os: [sunos] 170 | 171 | '@esbuild/win32-arm64@0.21.5': 172 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 173 | engines: {node: '>=12'} 174 | cpu: [arm64] 175 | os: [win32] 176 | 177 | '@esbuild/win32-ia32@0.21.5': 178 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 179 | engines: {node: '>=12'} 180 | cpu: [ia32] 181 | os: [win32] 182 | 183 | '@esbuild/win32-x64@0.21.5': 184 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 185 | engines: {node: '>=12'} 186 | cpu: [x64] 187 | os: [win32] 188 | 189 | '@fusioncharts/accessibility@1.9.0': 190 | resolution: {integrity: sha512-UCRqIR5Y2q2QN6aWkY9u6CdsmVC0pvXy/PMTnMszD5fF/u0lKRWfbraybk33W+oMKjSDUZTBAt5Sc2WqkJyWIQ==} 191 | 192 | '@fusioncharts/charts@3.23.0': 193 | resolution: {integrity: sha512-tB4xkAt4vDvXWyJTr/G60pbMkWw0O1l//j+e5JHTe6pBRga46OpVTfgaGbx/J7DbsQH0fBi0HvLCRvDrXxsm8Q==} 194 | 195 | '@fusioncharts/constructor@1.9.0': 196 | resolution: {integrity: sha512-X+CsovE9yKzlEBeq1mWtYsM6G3/a0HGzxGyJO56C/MnOaeiI/sgfcj+HsSOTd+Efej1N4M2jG+yZmdIRlyt+qQ==} 197 | 198 | '@fusioncharts/core@1.9.0': 199 | resolution: {integrity: sha512-KWE2ep8CQxwfhEg9YPh2+2kmW97+AGnl+r1DWier0YRQSQ5Xwbxg0+LStkexhtI/QOTRksLdAZVY5SY7jHh+PA==} 200 | 201 | '@fusioncharts/datatable@1.9.0': 202 | resolution: {integrity: sha512-phm07EAr/7DXJaIsy7MIyHuFEzf3XMA9miCU/UbHidride8HjEPQ+wP3KjND3HtPiryHcfEJgeOyoGxwsayt7A==} 203 | 204 | '@fusioncharts/features@1.9.0': 205 | resolution: {integrity: sha512-WSTUtdBvqq9ehC/Vfa/B6q6XLhaK/bbEfimrZRhuS4sHB3YhTx6hEab0yhNjoXIZLIgNHCEsKiKQRw0DIL45Yw==} 206 | 207 | '@fusioncharts/fusiontime@2.9.0': 208 | resolution: {integrity: sha512-/NeLtto9Tu89iO7aj+AhZi3PFuseBqzK0olM0wyBTKtlE0s4m9S5jSTXYYeNG6peO3i8IRM4eIiTsexl5IuKfA==} 209 | 210 | '@fusioncharts/maps@3.23.0': 211 | resolution: {integrity: sha512-9GmNsclWEPrbgd0OPwkQdmthClZgMvnAmhH2vZNbFeOfoRvRESWU+3WxIHBQDd1wXTE0ivaVc8wunDjlGsR56Q==} 212 | 213 | '@fusioncharts/powercharts@3.23.0': 214 | resolution: {integrity: sha512-6LJC2LfdKx7yN2m0e7Bk51o7EmPVzDH8W6QTL8olT7p00HdZwNnmaK3VTScp4m/yd6p7oUxQKYqW4YjmnLoAgQ==} 215 | 216 | '@fusioncharts/utils@1.9.0': 217 | resolution: {integrity: sha512-Vukhc83zvI3R5bevwRTx3UvzzjP3+3j0cjHVqD0hhVQDgKaFRLcIhw1c4y9qkBDzjDeJ+IbNBfp0cm1uMbbx/w==} 218 | 219 | '@fusioncharts/widgets@3.23.0': 220 | resolution: {integrity: sha512-GB5ePnk7UJBmMU4AlTmcw2az+kGFguQKCBt8sXwaetzEGL+bKr3DNGvLnqXg8fOQx92gY6CHed97zgdwdnR+zg==} 221 | 222 | '@jridgewell/sourcemap-codec@1.4.15': 223 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 224 | 225 | '@rollup/rollup-android-arm-eabi@4.18.0': 226 | resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} 227 | cpu: [arm] 228 | os: [android] 229 | 230 | '@rollup/rollup-android-arm64@4.18.0': 231 | resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} 232 | cpu: [arm64] 233 | os: [android] 234 | 235 | '@rollup/rollup-darwin-arm64@4.18.0': 236 | resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} 237 | cpu: [arm64] 238 | os: [darwin] 239 | 240 | '@rollup/rollup-darwin-x64@4.18.0': 241 | resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} 242 | cpu: [x64] 243 | os: [darwin] 244 | 245 | '@rollup/rollup-linux-arm-gnueabihf@4.18.0': 246 | resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} 247 | cpu: [arm] 248 | os: [linux] 249 | 250 | '@rollup/rollup-linux-arm-musleabihf@4.18.0': 251 | resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} 252 | cpu: [arm] 253 | os: [linux] 254 | 255 | '@rollup/rollup-linux-arm64-gnu@4.18.0': 256 | resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} 257 | cpu: [arm64] 258 | os: [linux] 259 | 260 | '@rollup/rollup-linux-arm64-musl@4.18.0': 261 | resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} 262 | cpu: [arm64] 263 | os: [linux] 264 | 265 | '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': 266 | resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} 267 | cpu: [ppc64] 268 | os: [linux] 269 | 270 | '@rollup/rollup-linux-riscv64-gnu@4.18.0': 271 | resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} 272 | cpu: [riscv64] 273 | os: [linux] 274 | 275 | '@rollup/rollup-linux-s390x-gnu@4.18.0': 276 | resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} 277 | cpu: [s390x] 278 | os: [linux] 279 | 280 | '@rollup/rollup-linux-x64-gnu@4.18.0': 281 | resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} 282 | cpu: [x64] 283 | os: [linux] 284 | 285 | '@rollup/rollup-linux-x64-musl@4.18.0': 286 | resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} 287 | cpu: [x64] 288 | os: [linux] 289 | 290 | '@rollup/rollup-win32-arm64-msvc@4.18.0': 291 | resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} 292 | cpu: [arm64] 293 | os: [win32] 294 | 295 | '@rollup/rollup-win32-ia32-msvc@4.18.0': 296 | resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} 297 | cpu: [ia32] 298 | os: [win32] 299 | 300 | '@rollup/rollup-win32-x64-msvc@4.18.0': 301 | resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} 302 | cpu: [x64] 303 | os: [win32] 304 | 305 | '@types/estree@1.0.5': 306 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 307 | 308 | '@types/raf@3.4.3': 309 | resolution: {integrity: sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==} 310 | 311 | '@vitejs/plugin-vue@5.0.5': 312 | resolution: {integrity: sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ==} 313 | engines: {node: ^18.0.0 || >=20.0.0} 314 | peerDependencies: 315 | vite: ^5.0.0 316 | vue: ^3.2.25 317 | 318 | '@vue/compiler-core@3.4.29': 319 | resolution: {integrity: sha512-TFKiRkKKsRCKvg/jTSSKK7mYLJEQdUiUfykbG49rubC9SfDyvT2JrzTReopWlz2MxqeLyxh9UZhvxEIBgAhtrg==} 320 | 321 | '@vue/compiler-dom@3.4.29': 322 | resolution: {integrity: sha512-A6+iZ2fKIEGnfPJejdB7b1FlJzgiD+Y/sxxKwJWg1EbJu6ZPgzaPQQ51ESGNv0CP6jm6Z7/pO6Ia8Ze6IKrX7w==} 323 | 324 | '@vue/compiler-sfc@3.4.29': 325 | resolution: {integrity: sha512-zygDcEtn8ZimDlrEQyLUovoWgKQic6aEQqRXce2WXBvSeHbEbcAsXyCk9oG33ZkyWH4sl9D3tkYc1idoOkdqZQ==} 326 | 327 | '@vue/compiler-ssr@3.4.29': 328 | resolution: {integrity: sha512-rFbwCmxJ16tDp3N8XCx5xSQzjhidYjXllvEcqX/lopkoznlNPz3jyy0WGJCyhAaVQK677WWFt3YO/WUEkMMUFQ==} 329 | 330 | '@vue/reactivity@3.4.29': 331 | resolution: {integrity: sha512-w8+KV+mb1a8ornnGQitnMdLfE0kXmteaxLdccm2XwdFxXst4q/Z7SEboCV5SqJNpZbKFeaRBBJBhW24aJyGINg==} 332 | 333 | '@vue/runtime-core@3.4.29': 334 | resolution: {integrity: sha512-s8fmX3YVR/Rk5ig0ic0NuzTNjK2M7iLuVSZyMmCzN/+Mjuqqif1JasCtEtmtoJWF32pAtUjyuT2ljNKNLeOmnQ==} 335 | 336 | '@vue/runtime-dom@3.4.29': 337 | resolution: {integrity: sha512-gI10atCrtOLf/2MPPMM+dpz3NGulo9ZZR9d1dWo4fYvm+xkfvRrw1ZmJ7mkWtiJVXSsdmPbcK1p5dZzOCKDN0g==} 338 | 339 | '@vue/server-renderer@3.4.29': 340 | resolution: {integrity: sha512-HMLCmPI2j/k8PVkSBysrA2RxcxC5DgBiCdj7n7H2QtR8bQQPqKAe8qoaxLcInzouBmzwJ+J0x20ygN/B5mYBng==} 341 | peerDependencies: 342 | vue: 3.4.29 343 | 344 | '@vue/shared@3.4.29': 345 | resolution: {integrity: sha512-hQ2gAQcBO/CDpC82DCrinJNgOHI2v+FA7BDW4lMSPeBpQ7sRe2OLHWe5cph1s7D8DUQAwRt18dBDfJJ220APEA==} 346 | 347 | atob@2.1.2: 348 | resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} 349 | engines: {node: '>= 4.5.0'} 350 | hasBin: true 351 | 352 | base64-arraybuffer@1.0.2: 353 | resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} 354 | engines: {node: '>= 0.6.0'} 355 | 356 | btoa@1.2.1: 357 | resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} 358 | engines: {node: '>= 0.4.0'} 359 | hasBin: true 360 | 361 | canvg@3.0.10: 362 | resolution: {integrity: sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==} 363 | engines: {node: '>=10.0.0'} 364 | 365 | core-js@3.37.1: 366 | resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} 367 | 368 | css-line-break@2.1.0: 369 | resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} 370 | 371 | csstype@3.1.3: 372 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 373 | 374 | dompurify@2.5.5: 375 | resolution: {integrity: sha512-FgbqnEPiv5Vdtwt6Mxl7XSylttCC03cqP5ldNT2z+Kj0nLxPHJH4+1Cyf5Jasxhw93Rl4Oo11qRoUV72fmya2Q==} 376 | 377 | entities@4.5.0: 378 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 379 | engines: {node: '>=0.12'} 380 | 381 | esbuild@0.21.5: 382 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 383 | engines: {node: '>=12'} 384 | hasBin: true 385 | 386 | estree-walker@2.0.2: 387 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 388 | 389 | fflate@0.4.8: 390 | resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} 391 | 392 | for-in@1.0.2: 393 | resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} 394 | engines: {node: '>=0.10.0'} 395 | 396 | fsevents@2.3.3: 397 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 398 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 399 | os: [darwin] 400 | 401 | fusioncharts@3.23.0: 402 | resolution: {integrity: sha512-Y+S9OeVqQnypZkroY2ABy6ixImVmpDvFe+n0biMXO1AGndEXCXuCPXpQtjOLvmVEmQv8s/XTDGqnq4NjaM+Xtw==} 403 | 404 | html2canvas@1.4.1: 405 | resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} 406 | engines: {node: '>=8.0.0'} 407 | 408 | is-extendable@1.0.1: 409 | resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} 410 | engines: {node: '>=0.10.0'} 411 | 412 | is-plain-object@2.0.4: 413 | resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} 414 | engines: {node: '>=0.10.0'} 415 | 416 | isobject@3.0.1: 417 | resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} 418 | engines: {node: '>=0.10.0'} 419 | 420 | jspdf@2.5.1: 421 | resolution: {integrity: sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==} 422 | 423 | magic-string@0.30.10: 424 | resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} 425 | 426 | mixin-deep@1.3.2: 427 | resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} 428 | engines: {node: '>=0.10.0'} 429 | 430 | mutationobserver-shim@0.3.7: 431 | resolution: {integrity: sha512-oRIDTyZQU96nAiz2AQyngwx1e89iApl2hN5AOYwyxLUB47UYsU3Wv9lJWqH5y/QdiYkc5HQLi23ZNB3fELdHcQ==} 432 | 433 | nanoid@3.3.7: 434 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 435 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 436 | hasBin: true 437 | 438 | performance-now@2.1.0: 439 | resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} 440 | 441 | picocolors@1.0.1: 442 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 443 | 444 | postcss@8.4.38: 445 | resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} 446 | engines: {node: ^10 || ^12 || >=14} 447 | 448 | promise-polyfill@8.3.0: 449 | resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==} 450 | 451 | raf@3.4.1: 452 | resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} 453 | 454 | ramda@0.29.1: 455 | resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==} 456 | 457 | regenerator-runtime@0.13.11: 458 | resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} 459 | 460 | regenerator-runtime@0.14.1: 461 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 462 | 463 | rgbcolor@1.0.1: 464 | resolution: {integrity: sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==} 465 | engines: {node: '>= 0.8.15'} 466 | 467 | rollup@4.18.0: 468 | resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} 469 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 470 | hasBin: true 471 | 472 | source-map-js@1.2.0: 473 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 474 | engines: {node: '>=0.10.0'} 475 | 476 | stackblur-canvas@2.7.0: 477 | resolution: {integrity: sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==} 478 | engines: {node: '>=0.1.14'} 479 | 480 | svg-pathdata@6.0.3: 481 | resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==} 482 | engines: {node: '>=12.0.0'} 483 | 484 | text-segmentation@1.0.3: 485 | resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} 486 | 487 | to-fast-properties@2.0.0: 488 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 489 | engines: {node: '>=4'} 490 | 491 | underscore@1.13.6: 492 | resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} 493 | 494 | utrie@1.0.2: 495 | resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} 496 | 497 | vite@5.3.1: 498 | resolution: {integrity: sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==} 499 | engines: {node: ^18.0.0 || >=20.0.0} 500 | hasBin: true 501 | peerDependencies: 502 | '@types/node': ^18.0.0 || >=20.0.0 503 | less: '*' 504 | lightningcss: ^1.21.0 505 | sass: '*' 506 | stylus: '*' 507 | sugarss: '*' 508 | terser: ^5.4.0 509 | peerDependenciesMeta: 510 | '@types/node': 511 | optional: true 512 | less: 513 | optional: true 514 | lightningcss: 515 | optional: true 516 | sass: 517 | optional: true 518 | stylus: 519 | optional: true 520 | sugarss: 521 | optional: true 522 | terser: 523 | optional: true 524 | 525 | vue-fusioncharts@3.2.0: 526 | resolution: {integrity: sha512-zQYBN7W5VuoDDynOANNk5nIQ00sa3OqkWlQ1W8A5Sl9cfxWWgdZmE5+WfOIMG5xNVXQsmBYjxoYR10fDKZARbw==} 527 | 528 | vue@3.4.29: 529 | resolution: {integrity: sha512-8QUYfRcYzNlYuzKPfge1UWC6nF9ym0lx7mpGVPJYNhddxEf3DD0+kU07NTL0sXuiT2HuJuKr/iEO8WvXvT0RSQ==} 530 | peerDependencies: 531 | typescript: '*' 532 | peerDependenciesMeta: 533 | typescript: 534 | optional: true 535 | 536 | websocket-extensions@0.1.4: 537 | resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} 538 | engines: {node: '>=0.8.0'} 539 | 540 | snapshots: 541 | 542 | '@babel/helper-string-parser@7.24.7': {} 543 | 544 | '@babel/helper-validator-identifier@7.24.7': {} 545 | 546 | '@babel/parser@7.24.7': 547 | dependencies: 548 | '@babel/types': 7.24.7 549 | 550 | '@babel/runtime@7.24.7': 551 | dependencies: 552 | regenerator-runtime: 0.14.1 553 | 554 | '@babel/types@7.24.7': 555 | dependencies: 556 | '@babel/helper-string-parser': 7.24.7 557 | '@babel/helper-validator-identifier': 7.24.7 558 | to-fast-properties: 2.0.0 559 | 560 | '@esbuild/aix-ppc64@0.21.5': 561 | optional: true 562 | 563 | '@esbuild/android-arm64@0.21.5': 564 | optional: true 565 | 566 | '@esbuild/android-arm@0.21.5': 567 | optional: true 568 | 569 | '@esbuild/android-x64@0.21.5': 570 | optional: true 571 | 572 | '@esbuild/darwin-arm64@0.21.5': 573 | optional: true 574 | 575 | '@esbuild/darwin-x64@0.21.5': 576 | optional: true 577 | 578 | '@esbuild/freebsd-arm64@0.21.5': 579 | optional: true 580 | 581 | '@esbuild/freebsd-x64@0.21.5': 582 | optional: true 583 | 584 | '@esbuild/linux-arm64@0.21.5': 585 | optional: true 586 | 587 | '@esbuild/linux-arm@0.21.5': 588 | optional: true 589 | 590 | '@esbuild/linux-ia32@0.21.5': 591 | optional: true 592 | 593 | '@esbuild/linux-loong64@0.21.5': 594 | optional: true 595 | 596 | '@esbuild/linux-mips64el@0.21.5': 597 | optional: true 598 | 599 | '@esbuild/linux-ppc64@0.21.5': 600 | optional: true 601 | 602 | '@esbuild/linux-riscv64@0.21.5': 603 | optional: true 604 | 605 | '@esbuild/linux-s390x@0.21.5': 606 | optional: true 607 | 608 | '@esbuild/linux-x64@0.21.5': 609 | optional: true 610 | 611 | '@esbuild/netbsd-x64@0.21.5': 612 | optional: true 613 | 614 | '@esbuild/openbsd-x64@0.21.5': 615 | optional: true 616 | 617 | '@esbuild/sunos-x64@0.21.5': 618 | optional: true 619 | 620 | '@esbuild/win32-arm64@0.21.5': 621 | optional: true 622 | 623 | '@esbuild/win32-ia32@0.21.5': 624 | optional: true 625 | 626 | '@esbuild/win32-x64@0.21.5': 627 | optional: true 628 | 629 | '@fusioncharts/accessibility@1.9.0': {} 630 | 631 | '@fusioncharts/charts@3.23.0': 632 | dependencies: 633 | '@babel/runtime': 7.24.7 634 | '@fusioncharts/core': 1.9.0 635 | '@fusioncharts/features': 1.9.0 636 | '@fusioncharts/utils': 1.9.0 637 | 638 | '@fusioncharts/constructor@1.9.0': 639 | dependencies: 640 | '@babel/runtime': 7.24.7 641 | '@fusioncharts/core': 1.9.0 642 | '@fusioncharts/maps': 3.23.0 643 | 644 | '@fusioncharts/core@1.9.0': 645 | dependencies: 646 | '@babel/runtime': 7.24.7 647 | '@fusioncharts/utils': 1.9.0 648 | core-js: 3.37.1 649 | ramda: 0.29.1 650 | 651 | '@fusioncharts/datatable@1.9.0': 652 | dependencies: 653 | '@babel/runtime': 7.24.7 654 | '@fusioncharts/utils': 1.9.0 655 | 656 | '@fusioncharts/features@1.9.0': 657 | dependencies: 658 | '@babel/runtime': 7.24.7 659 | '@fusioncharts/core': 1.9.0 660 | '@fusioncharts/utils': 1.9.0 661 | jspdf: 2.5.1 662 | 663 | '@fusioncharts/fusiontime@2.9.0': 664 | dependencies: 665 | '@babel/runtime': 7.24.7 666 | '@fusioncharts/charts': 3.23.0 667 | '@fusioncharts/core': 1.9.0 668 | '@fusioncharts/datatable': 1.9.0 669 | '@fusioncharts/utils': 1.9.0 670 | ramda: 0.29.1 671 | 672 | '@fusioncharts/maps@3.23.0': 673 | dependencies: 674 | '@babel/runtime': 7.24.7 675 | '@fusioncharts/charts': 3.23.0 676 | '@fusioncharts/core': 1.9.0 677 | '@fusioncharts/features': 1.9.0 678 | 679 | '@fusioncharts/powercharts@3.23.0': 680 | dependencies: 681 | '@babel/runtime': 7.24.7 682 | '@fusioncharts/charts': 3.23.0 683 | '@fusioncharts/core': 1.9.0 684 | '@fusioncharts/utils': 1.9.0 685 | 686 | '@fusioncharts/utils@1.9.0': 687 | dependencies: 688 | '@babel/runtime': 7.24.7 689 | ramda: 0.29.1 690 | 691 | '@fusioncharts/widgets@3.23.0': 692 | dependencies: 693 | '@babel/runtime': 7.24.7 694 | '@fusioncharts/charts': 3.23.0 695 | '@fusioncharts/constructor': 1.9.0 696 | '@fusioncharts/core': 1.9.0 697 | '@fusioncharts/features': 1.9.0 698 | '@fusioncharts/utils': 1.9.0 699 | 700 | '@jridgewell/sourcemap-codec@1.4.15': {} 701 | 702 | '@rollup/rollup-android-arm-eabi@4.18.0': 703 | optional: true 704 | 705 | '@rollup/rollup-android-arm64@4.18.0': 706 | optional: true 707 | 708 | '@rollup/rollup-darwin-arm64@4.18.0': 709 | optional: true 710 | 711 | '@rollup/rollup-darwin-x64@4.18.0': 712 | optional: true 713 | 714 | '@rollup/rollup-linux-arm-gnueabihf@4.18.0': 715 | optional: true 716 | 717 | '@rollup/rollup-linux-arm-musleabihf@4.18.0': 718 | optional: true 719 | 720 | '@rollup/rollup-linux-arm64-gnu@4.18.0': 721 | optional: true 722 | 723 | '@rollup/rollup-linux-arm64-musl@4.18.0': 724 | optional: true 725 | 726 | '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': 727 | optional: true 728 | 729 | '@rollup/rollup-linux-riscv64-gnu@4.18.0': 730 | optional: true 731 | 732 | '@rollup/rollup-linux-s390x-gnu@4.18.0': 733 | optional: true 734 | 735 | '@rollup/rollup-linux-x64-gnu@4.18.0': 736 | optional: true 737 | 738 | '@rollup/rollup-linux-x64-musl@4.18.0': 739 | optional: true 740 | 741 | '@rollup/rollup-win32-arm64-msvc@4.18.0': 742 | optional: true 743 | 744 | '@rollup/rollup-win32-ia32-msvc@4.18.0': 745 | optional: true 746 | 747 | '@rollup/rollup-win32-x64-msvc@4.18.0': 748 | optional: true 749 | 750 | '@types/estree@1.0.5': {} 751 | 752 | '@types/raf@3.4.3': 753 | optional: true 754 | 755 | '@vitejs/plugin-vue@5.0.5(vite@5.3.1)(vue@3.4.29)': 756 | dependencies: 757 | vite: 5.3.1 758 | vue: 3.4.29 759 | 760 | '@vue/compiler-core@3.4.29': 761 | dependencies: 762 | '@babel/parser': 7.24.7 763 | '@vue/shared': 3.4.29 764 | entities: 4.5.0 765 | estree-walker: 2.0.2 766 | source-map-js: 1.2.0 767 | 768 | '@vue/compiler-dom@3.4.29': 769 | dependencies: 770 | '@vue/compiler-core': 3.4.29 771 | '@vue/shared': 3.4.29 772 | 773 | '@vue/compiler-sfc@3.4.29': 774 | dependencies: 775 | '@babel/parser': 7.24.7 776 | '@vue/compiler-core': 3.4.29 777 | '@vue/compiler-dom': 3.4.29 778 | '@vue/compiler-ssr': 3.4.29 779 | '@vue/shared': 3.4.29 780 | estree-walker: 2.0.2 781 | magic-string: 0.30.10 782 | postcss: 8.4.38 783 | source-map-js: 1.2.0 784 | 785 | '@vue/compiler-ssr@3.4.29': 786 | dependencies: 787 | '@vue/compiler-dom': 3.4.29 788 | '@vue/shared': 3.4.29 789 | 790 | '@vue/reactivity@3.4.29': 791 | dependencies: 792 | '@vue/shared': 3.4.29 793 | 794 | '@vue/runtime-core@3.4.29': 795 | dependencies: 796 | '@vue/reactivity': 3.4.29 797 | '@vue/shared': 3.4.29 798 | 799 | '@vue/runtime-dom@3.4.29': 800 | dependencies: 801 | '@vue/reactivity': 3.4.29 802 | '@vue/runtime-core': 3.4.29 803 | '@vue/shared': 3.4.29 804 | csstype: 3.1.3 805 | 806 | '@vue/server-renderer@3.4.29(vue@3.4.29)': 807 | dependencies: 808 | '@vue/compiler-ssr': 3.4.29 809 | '@vue/shared': 3.4.29 810 | vue: 3.4.29 811 | 812 | '@vue/shared@3.4.29': {} 813 | 814 | atob@2.1.2: {} 815 | 816 | base64-arraybuffer@1.0.2: 817 | optional: true 818 | 819 | btoa@1.2.1: {} 820 | 821 | canvg@3.0.10: 822 | dependencies: 823 | '@babel/runtime': 7.24.7 824 | '@types/raf': 3.4.3 825 | core-js: 3.37.1 826 | raf: 3.4.1 827 | regenerator-runtime: 0.13.11 828 | rgbcolor: 1.0.1 829 | stackblur-canvas: 2.7.0 830 | svg-pathdata: 6.0.3 831 | optional: true 832 | 833 | core-js@3.37.1: {} 834 | 835 | css-line-break@2.1.0: 836 | dependencies: 837 | utrie: 1.0.2 838 | optional: true 839 | 840 | csstype@3.1.3: {} 841 | 842 | dompurify@2.5.5: 843 | optional: true 844 | 845 | entities@4.5.0: {} 846 | 847 | esbuild@0.21.5: 848 | optionalDependencies: 849 | '@esbuild/aix-ppc64': 0.21.5 850 | '@esbuild/android-arm': 0.21.5 851 | '@esbuild/android-arm64': 0.21.5 852 | '@esbuild/android-x64': 0.21.5 853 | '@esbuild/darwin-arm64': 0.21.5 854 | '@esbuild/darwin-x64': 0.21.5 855 | '@esbuild/freebsd-arm64': 0.21.5 856 | '@esbuild/freebsd-x64': 0.21.5 857 | '@esbuild/linux-arm': 0.21.5 858 | '@esbuild/linux-arm64': 0.21.5 859 | '@esbuild/linux-ia32': 0.21.5 860 | '@esbuild/linux-loong64': 0.21.5 861 | '@esbuild/linux-mips64el': 0.21.5 862 | '@esbuild/linux-ppc64': 0.21.5 863 | '@esbuild/linux-riscv64': 0.21.5 864 | '@esbuild/linux-s390x': 0.21.5 865 | '@esbuild/linux-x64': 0.21.5 866 | '@esbuild/netbsd-x64': 0.21.5 867 | '@esbuild/openbsd-x64': 0.21.5 868 | '@esbuild/sunos-x64': 0.21.5 869 | '@esbuild/win32-arm64': 0.21.5 870 | '@esbuild/win32-ia32': 0.21.5 871 | '@esbuild/win32-x64': 0.21.5 872 | 873 | estree-walker@2.0.2: {} 874 | 875 | fflate@0.4.8: {} 876 | 877 | for-in@1.0.2: {} 878 | 879 | fsevents@2.3.3: 880 | optional: true 881 | 882 | fusioncharts@3.23.0: 883 | dependencies: 884 | '@babel/runtime': 7.24.7 885 | '@fusioncharts/accessibility': 1.9.0 886 | '@fusioncharts/charts': 3.23.0 887 | '@fusioncharts/constructor': 1.9.0 888 | '@fusioncharts/core': 1.9.0 889 | '@fusioncharts/datatable': 1.9.0 890 | '@fusioncharts/features': 1.9.0 891 | '@fusioncharts/fusiontime': 2.9.0 892 | '@fusioncharts/maps': 3.23.0 893 | '@fusioncharts/powercharts': 3.23.0 894 | '@fusioncharts/utils': 1.9.0 895 | '@fusioncharts/widgets': 3.23.0 896 | mutationobserver-shim: 0.3.7 897 | promise-polyfill: 8.3.0 898 | 899 | html2canvas@1.4.1: 900 | dependencies: 901 | css-line-break: 2.1.0 902 | text-segmentation: 1.0.3 903 | optional: true 904 | 905 | is-extendable@1.0.1: 906 | dependencies: 907 | is-plain-object: 2.0.4 908 | 909 | is-plain-object@2.0.4: 910 | dependencies: 911 | isobject: 3.0.1 912 | 913 | isobject@3.0.1: {} 914 | 915 | jspdf@2.5.1: 916 | dependencies: 917 | '@babel/runtime': 7.24.7 918 | atob: 2.1.2 919 | btoa: 1.2.1 920 | fflate: 0.4.8 921 | optionalDependencies: 922 | canvg: 3.0.10 923 | core-js: 3.37.1 924 | dompurify: 2.5.5 925 | html2canvas: 1.4.1 926 | 927 | magic-string@0.30.10: 928 | dependencies: 929 | '@jridgewell/sourcemap-codec': 1.4.15 930 | 931 | mixin-deep@1.3.2: 932 | dependencies: 933 | for-in: 1.0.2 934 | is-extendable: 1.0.1 935 | 936 | mutationobserver-shim@0.3.7: {} 937 | 938 | nanoid@3.3.7: {} 939 | 940 | performance-now@2.1.0: 941 | optional: true 942 | 943 | picocolors@1.0.1: {} 944 | 945 | postcss@8.4.38: 946 | dependencies: 947 | nanoid: 3.3.7 948 | picocolors: 1.0.1 949 | source-map-js: 1.2.0 950 | 951 | promise-polyfill@8.3.0: {} 952 | 953 | raf@3.4.1: 954 | dependencies: 955 | performance-now: 2.1.0 956 | optional: true 957 | 958 | ramda@0.29.1: {} 959 | 960 | regenerator-runtime@0.13.11: 961 | optional: true 962 | 963 | regenerator-runtime@0.14.1: {} 964 | 965 | rgbcolor@1.0.1: 966 | optional: true 967 | 968 | rollup@4.18.0: 969 | dependencies: 970 | '@types/estree': 1.0.5 971 | optionalDependencies: 972 | '@rollup/rollup-android-arm-eabi': 4.18.0 973 | '@rollup/rollup-android-arm64': 4.18.0 974 | '@rollup/rollup-darwin-arm64': 4.18.0 975 | '@rollup/rollup-darwin-x64': 4.18.0 976 | '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 977 | '@rollup/rollup-linux-arm-musleabihf': 4.18.0 978 | '@rollup/rollup-linux-arm64-gnu': 4.18.0 979 | '@rollup/rollup-linux-arm64-musl': 4.18.0 980 | '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 981 | '@rollup/rollup-linux-riscv64-gnu': 4.18.0 982 | '@rollup/rollup-linux-s390x-gnu': 4.18.0 983 | '@rollup/rollup-linux-x64-gnu': 4.18.0 984 | '@rollup/rollup-linux-x64-musl': 4.18.0 985 | '@rollup/rollup-win32-arm64-msvc': 4.18.0 986 | '@rollup/rollup-win32-ia32-msvc': 4.18.0 987 | '@rollup/rollup-win32-x64-msvc': 4.18.0 988 | fsevents: 2.3.3 989 | 990 | source-map-js@1.2.0: {} 991 | 992 | stackblur-canvas@2.7.0: 993 | optional: true 994 | 995 | svg-pathdata@6.0.3: 996 | optional: true 997 | 998 | text-segmentation@1.0.3: 999 | dependencies: 1000 | utrie: 1.0.2 1001 | optional: true 1002 | 1003 | to-fast-properties@2.0.0: {} 1004 | 1005 | underscore@1.13.6: {} 1006 | 1007 | utrie@1.0.2: 1008 | dependencies: 1009 | base64-arraybuffer: 1.0.2 1010 | optional: true 1011 | 1012 | vite@5.3.1: 1013 | dependencies: 1014 | esbuild: 0.21.5 1015 | postcss: 8.4.38 1016 | rollup: 4.18.0 1017 | optionalDependencies: 1018 | fsevents: 2.3.3 1019 | 1020 | vue-fusioncharts@3.2.0: 1021 | dependencies: 1022 | fusioncharts: 3.23.0 1023 | mixin-deep: 1.3.2 1024 | underscore: 1.13.6 1025 | websocket-extensions: 0.1.4 1026 | 1027 | vue@3.4.29: 1028 | dependencies: 1029 | '@vue/compiler-dom': 3.4.29 1030 | '@vue/compiler-sfc': 3.4.29 1031 | '@vue/runtime-dom': 3.4.29 1032 | '@vue/server-renderer': 3.4.29(vue@3.4.29) 1033 | '@vue/shared': 3.4.29 1034 | 1035 | websocket-extensions@0.1.4: {} 1036 | --------------------------------------------------------------------------------