@mlightcad/cad-viewer 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,6 +14,17 @@ CAD Viewer is a **high-performance** Vue 3 component for viewing and editing CAD
14
14
  - Dialogs, toolbars, and command line interface
15
15
  - Vue 3 component for embedding high-performance CAD viewers in your own apps
16
16
 
17
+ ## When Should You Choose cad-viewer?
18
+
19
+ Use `cad-viewer` if you want a **ready-to-use Vue 3 component** for viewing and editing CAD files with a modern UI, dialogs, toolbars, and state management. This package is ideal if:
20
+
21
+ - You want to quickly embed a high-performance CAD viewer/editor into your Vue application with minimal setup.
22
+ - You need a solution that handles file loading, rendering, layer/entity management, and user interactions out of the box.
23
+ - You want seamless integration with optimized SVG and THREE.js renderers, internationalization, and theming.
24
+ - You do **not** want to build your own UI from scratch.
25
+
26
+ **Recommended for:** Most web applications, dashboards, or platforms that need to display CAD files with a polished user interface.
27
+
17
28
  ## Browser-Only Architecture
18
29
 
19
30
  This Vue 3 component operates entirely in the browser with **no backend dependencies**. DWG/DXF files are parsed and processed locally using WebAssembly and JavaScript, providing:
@@ -45,6 +56,21 @@ Please refer to sub-package `cad-viewer-example` as one example.
45
56
 
46
57
  ### Basic Usage
47
58
 
59
+ Firstly, add the following dependencies into your package.json.
60
+
61
+ - @element-plus/icons-vue
62
+ - @mlightcad/cad-simple-viewer
63
+ - @mlightcad/cad-viewer
64
+ - @mlightcad/data-model
65
+ - @mlightcad/libredwg-converter
66
+ - @mlightcad/libredwg-web
67
+ - @vueuse/core
68
+ - element-plus
69
+ - vue
70
+ - vue-i18n
71
+
72
+ Then create one vue component as follows.
73
+
48
74
  ```vue
49
75
  <template>
50
76
  <div>
@@ -81,75 +107,88 @@ initApp()
81
107
  </script>
82
108
  ```
83
109
 
84
- ### Advanced Usage
110
+ ## MlCadViewer Component
85
111
 
86
- By default, cad viewer registers DXF converter only and can view DXF file only. If you want to view DWG file, you need to register DWG converter. The following example code shows how to register DWG converter.
112
+ The `MlCadViewer` is the main Vue 3 component that provides a complete CAD viewing and editing interface. It includes toolbars, layer management, command line, status bar, and various dialogs for a full-featured CAD experience.
87
113
 
88
- ```typescript
89
- import {
90
- AcDbDatabaseConverterManager,
91
- AcDbFileType
92
- } from '@mlightcad/data-model'
93
- import { AcDbLibreDwgConverter } from '@mlightcad/libredwg-converter'
94
-
95
-
96
- const registerConverters = async () => {
97
- try {
98
- const isDev = import.meta.env.DEV
99
- if (!isDev) {
100
- // Production mode - use dynamic import with explicit chunk name
101
- const instance = await import(
102
- /* webpackChunkName: "libredwg-web" */ '@mlightcad/libredwg-web'
103
- )
104
- const converter = new AcDbLibreDwgConverter(await instance.createModule())
105
- AcDbDatabaseConverterManager.instance.register(
106
- AcDbFileType.DWG,
107
- converter
108
- )
109
- }
110
- } catch (error) {
111
- console.error('Failed to load libredwg-web: ', error)
112
- }
113
- }
114
+ ### Component Properties
115
+
116
+ The `MlCadViewer` component accepts the following props:
117
+
118
+ | Property | Type | Default | Description |
119
+ |----------|------|---------|-------------|
120
+ | `locale` | `'en' \| 'zh' \| 'default'` | `'default'` | Sets the language for the component interface. Use `'en'` for English, `'zh'` for Chinese, or `'default'` to use the browser's default language. |
121
+ | `url` | `string` | `undefined` | Optional URL to automatically load a CAD file when the component mounts. The file will be fetched and opened automatically. |
122
+ | `wait` | `number` | `10` | When set to a positive number, the component will wait for DWG converter ready for use for the specified number of seconds before initializing. This is useful when you need to ensure DWG file support is available before the component becomes interactive. Set to `0` or negative value to disable waiting. |
123
+
124
+ ### Usage Examples
125
+
126
+ #### Basic Usage with Default Settings
127
+ ```vue
128
+ <template>
129
+ <MlCadViewer />
130
+ </template>
114
131
  ```
115
132
 
116
- In order to make it work in Vite dev mode, you need to add the following code.
133
+ #### With Custom Locale
134
+ ```vue
135
+ <template>
136
+ <MlCadViewer locale="en" />
137
+ </template>
138
+ ```
117
139
 
118
- ```typescript
119
- // This is for development mode only. In production mode, the library is bundled
120
- window.addEventListener('libredwg-ready', event => {
121
- // @ts-expect-error this is one custom event and you can get details in index.html
122
- const instance = event.detail as LibreDwgEx
123
- const converter = new AcDbLibreDwgConverter(instance)
124
- AcDbDatabaseConverterManager.instance.register(AcDbFileType.DWG, converter)
125
- })
140
+ #### Auto-load File from URL
141
+ ```vue
142
+ <template>
143
+ <MlCadViewer
144
+ locale="zh"
145
+ url="https://example.com/path/to/drawing.dwg"
146
+ />
147
+ </template>
126
148
  ```
127
149
 
128
- Copy `libredwg-web.js` to folder `public/assets` and update `index.html` by adding the following code.
129
-
130
- ```html
131
- <script type="module" defer>
132
- if (import.meta.env.DEV) {
133
- (async () => {
134
- // Create a script element to load the module
135
- const script = document.createElement("script");
136
- script.type = "module";
137
- script.src = "/assets/libredwg-web.js";
138
- script.async = true;
139
-
140
- script.onload = async () => {
141
- // Import dynamically after script is loaded
142
- const actualModule = await import(/* @vite-ignore */script.src);
143
- const libredwg = await actualModule.createModule();
144
- window.dispatchEvent(new CustomEvent("libredwg-ready", { detail: libredwg }));
145
- };
146
-
147
- document.body.appendChild(script);
148
- })();
149
- }
150
- </script>
150
+ #### Wait for DWG Converter Ready to Use
151
+ ```vue
152
+ <template>
153
+ <MlCadViewer
154
+ :wait="10"
155
+ url="https://example.com/path/to/drawing.dwg"
156
+ />
157
+ </template>
151
158
  ```
152
159
 
160
+ ### Component Features
161
+
162
+ The `MlCadViewer` component includes:
163
+
164
+ - **Main Menu** - File operations, view controls, and settings
165
+ - **Toolbars** - Drawing tools, zoom controls, and selection tools
166
+ - **Layer Manager** - Layer visibility and property management
167
+ - **Command Line** - AutoCAD-style command input
168
+ - **Status Bar** - Current position, zoom level, and system status
169
+ - **Dialog Manager** - Modal dialogs for various operations
170
+ - **File Reader** - Drag-and-drop file loading
171
+ - **Entity Info** - Detailed information about selected entities
172
+ - **Language Selector** - UI language switching
173
+ - **Theme Support** - Dark/light mode toggle
174
+
175
+ ### Event Handling
176
+
177
+ The component automatically handles various events:
178
+
179
+ - **File Loading** - Supports drag-and-drop and URL-based file loading
180
+ - **Error Messages** - Displays user-friendly error messages for failed operations
181
+ - **Font Loading** - Handles missing fonts with appropriate notifications
182
+ - **System Messages** - Shows status updates and operation feedback
183
+
184
+ ### Advanced Usage
185
+
186
+ Please refer to [readme of cad-simple-viewer](../cad-simple-viewer/README.md) to learn the following advanced usage.
187
+
188
+ - Register DWG converter to display drawings in DWG format
189
+ - Define your own font loader to load fonts from your own server
190
+ - Create drawing or modify drawing
191
+
153
192
  ## Available Exports
154
193
 
155
194
  ### Main Component
@@ -193,21 +232,6 @@ Copy `libredwg-web.js` to folder `public/assets` and update `index.html` by addi
193
232
  - Dark mode support
194
233
  - Element Plus integration
195
234
 
196
- ## Dependencies
197
-
198
- This component library requires the following peer dependencies:
199
-
200
- - `vue` ^3.4.0
201
- - `@mlightcad/data-model`
202
- - `@mlightcad/libredwg-converter`
203
- - `@mlightcad/libredwg-web`
204
- - `@mlightcad/svg-renderer`
205
- - `@mlightcad/three-renderer`
206
- - `@mlightcad/cad-simple-viewer`
207
- - `element-plus`
208
- - `vue-i18n`
209
- - And others as specified in package.json
210
-
211
235
  ## Development
212
236
 
213
237
  ```bash
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app/app.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAA;AACpC,OAAO,oBAAoB,CAAA;AAC3B,OAAO,qBAAqB,CAAA;AAwD5B,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,SAGpD,CAAA;AAED,eAAO,MAAM,mBAAmB,YAG/B,CAAA"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/app/app.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAA;AACpC,OAAO,oBAAoB,CAAA;AAC3B,OAAO,qBAAqB,CAAA;AAwD5B,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,SAIpD,CAAA;AAED,eAAO,MAAM,mBAAmB,YAG/B,CAAA"}
@@ -1,16 +1,21 @@
1
+ import { LocaleProp } from '../locale';
1
2
  interface Props {
2
- locale?: 'en' | 'zh' | 'default';
3
+ locale?: LocaleProp;
3
4
  url?: string;
5
+ wait?: number;
4
6
  }
5
7
  declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<Props>, {
6
8
  locale: string;
7
9
  url: undefined;
10
+ wait: number;
8
11
  }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<Props>, {
9
12
  locale: string;
10
13
  url: undefined;
14
+ wait: number;
11
15
  }>>> & Readonly<{}>, {
12
- locale: "en" | "zh" | "default";
16
+ locale: LocaleProp;
13
17
  url: string;
18
+ wait: number;
14
19
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
15
20
  export default _default;
16
21
  type __VLS_WithDefaults<P, D> = {
@@ -1 +1 @@
1
- {"version":3,"file":"MlCadViewer.vue.d.ts","sourceRoot":"","sources":["../../src/component/MlCadViewer.vue"],"names":[],"mappings":"AA8LA,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAA;IAChC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;;;;;;;;YAFU,IAAI,GAAG,IAAI,GAAG,SAAS;SAC1B,MAAM;;AAgQd,wBAMG;AAEH,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAC9B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAC7C,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KAAC,CAAC,GAC5C,CAAC,CAAC,CAAC,CAAC;CACP,CAAC;AACF,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,uBAAuB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9D;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CACzD,CAAC;AACF,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"MlCadViewer.vue.d.ts","sourceRoot":"","sources":["../../src/component/MlCadViewer.vue"],"names":[],"mappings":"AAuOA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAatC,UAAU,KAAK;IACb,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;;;;;;;;;;YAHU,UAAU;SACb,MAAM;UACL,MAAM;;AAmTf,wBAMG;AAEH,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAC9B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAC7C,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KAAC,CAAC,GAC5C,CAAC,CAAC,CAAC,CAAC;CACP,CAAC;AACF,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,uBAAuB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9D;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CACzD,CAAC;AACF,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -29,9 +29,9 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
29
29
  default: () => {};
30
30
  };
31
31
  }>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
32
- "update:modelValue": (...args: any[]) => void;
33
32
  ok: (...args: any[]) => void;
34
33
  cancel: (...args: any[]) => void;
34
+ "update:modelValue": (...args: any[]) => void;
35
35
  }, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
36
36
  title: {
37
37
  type: StringConstructor;
@@ -54,9 +54,9 @@ declare const __VLS_component: import('vue').DefineComponent<import('vue').Extra
54
54
  default: () => {};
55
55
  };
56
56
  }>> & Readonly<{
57
- "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
58
57
  onOk?: ((...args: any[]) => any) | undefined;
59
58
  onCancel?: ((...args: any[]) => any) | undefined;
59
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
60
60
  }>, {
61
61
  props: Record<string, any>;
62
62
  width: string | number;
@@ -1,3 +1,30 @@
1
- declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
1
+ import { LocaleProp } from '../../locale';
2
+ interface Props {
3
+ currentLocale?: LocaleProp;
4
+ }
5
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<Props>, {
6
+ currentLocale: undefined;
7
+ }>>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<Props>, {
8
+ currentLocale: undefined;
9
+ }>>> & Readonly<{}>, {
10
+ currentLocale: LocaleProp;
11
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
12
  export default _default;
13
+ type __VLS_WithDefaults<P, D> = {
14
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
15
+ default: D[K];
16
+ }> : P[K];
17
+ };
18
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
19
+ type __VLS_TypePropsToOption<T> = {
20
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
21
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
22
+ } : {
23
+ type: import('vue').PropType<T[K]>;
24
+ required: true;
25
+ };
26
+ };
27
+ type __VLS_PrettifyLocal<T> = {
28
+ [K in keyof T]: T[K];
29
+ } & {};
3
30
  //# sourceMappingURL=MlLanguageSelector.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MlLanguageSelector.vue.d.ts","sourceRoot":"","sources":["../../../src/component/layout/MlLanguageSelector.vue"],"names":[],"mappings":"AAQA;;AA4HA,wBAKG"}
1
+ {"version":3,"file":"MlLanguageSelector.vue.d.ts","sourceRoot":"","sources":["../../../src/component/layout/MlLanguageSelector.vue"],"names":[],"mappings":"AAQA;AA4DA,OAAO,EAAE,UAAU,EAAe,MAAM,cAAc,CAAA;AAGtD,UAAU,KAAK;IACb,aAAa,CAAC,EAAE,UAAU,CAAA;CAC3B;;;;;;mBADiB,UAAU;;AA6F5B,wBAMG;AAEH,KAAK,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI;KAC9B,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,GAC7C,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;KAAC,CAAC,GAC5C,CAAC,CAAC,CAAC,CAAC;CACP,CAAC;AACF,KAAK,sBAAsB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;AACjE,KAAK,uBAAuB,CAAC,CAAC,IAAI;KAChC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GACpC;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KAAE,GAC9D;QAAE,IAAI,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE;CACzD,CAAC;AACF,KAAK,mBAAmB,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MlProgress.vue.d.ts","sourceRoot":"","sources":["../../../src/component/statusBar/MlProgress.vue"],"names":[],"mappings":"AAUA;;AAmKA,wBAKG"}
1
+ {"version":3,"file":"MlProgress.vue.d.ts","sourceRoot":"","sources":["../../../src/component/statusBar/MlProgress.vue"],"names":[],"mappings":"AAUA;;AAiMA,wBAKG"}
@@ -7,4 +7,5 @@ export * from './useLayouts';
7
7
  export * from './useMissedData';
8
8
  export * from './useSettings';
9
9
  export * from './useSystemVars';
10
+ export * from './useLocale';
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composable/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composable/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLayers.d.ts","sourceRoot":"","sources":["../../src/composable/useLayers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAK7D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,uCAkD/C"}
1
+ {"version":3,"file":"useLayers.d.ts","sourceRoot":"","sources":["../../src/composable/useLayers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAI7D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,OAAO,CAAA;IACb,WAAW,EAAE,OAAO,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,uCAiD/C"}
@@ -0,0 +1,187 @@
1
+ import { LocaleProp, LocaleValue } from '../locale';
2
+ export declare function useLocale(propLocale?: LocaleProp): {
3
+ currentLocale: import('vue').Ref<LocaleValue, LocaleValue>;
4
+ effectiveLocale: import('vue').ComputedRef<LocaleProp>;
5
+ elementPlusLocale: import('vue').ComputedRef<{
6
+ name: string;
7
+ el: {
8
+ breadcrumb: {
9
+ label: string;
10
+ };
11
+ colorpicker: {
12
+ confirm: string;
13
+ clear: string;
14
+ defaultLabel: string;
15
+ description: string;
16
+ alphaLabel: string;
17
+ };
18
+ datepicker: {
19
+ now: string;
20
+ today: string;
21
+ cancel: string;
22
+ clear: string;
23
+ confirm: string;
24
+ dateTablePrompt: string;
25
+ monthTablePrompt: string;
26
+ yearTablePrompt: string;
27
+ selectedDate: string;
28
+ selectDate: string;
29
+ selectTime: string;
30
+ startDate: string;
31
+ startTime: string;
32
+ endDate: string;
33
+ endTime: string;
34
+ prevYear: string;
35
+ nextYear: string;
36
+ prevMonth: string;
37
+ nextMonth: string;
38
+ year: string;
39
+ month1: string;
40
+ month2: string;
41
+ month3: string;
42
+ month4: string;
43
+ month5: string;
44
+ month6: string;
45
+ month7: string;
46
+ month8: string;
47
+ month9: string;
48
+ month10: string;
49
+ month11: string;
50
+ month12: string;
51
+ weeks: {
52
+ sun: string;
53
+ mon: string;
54
+ tue: string;
55
+ wed: string;
56
+ thu: string;
57
+ fri: string;
58
+ sat: string;
59
+ };
60
+ weeksFull: {
61
+ sun: string;
62
+ mon: string;
63
+ tue: string;
64
+ wed: string;
65
+ thu: string;
66
+ fri: string;
67
+ sat: string;
68
+ };
69
+ months: {
70
+ jan: string;
71
+ feb: string;
72
+ mar: string;
73
+ apr: string;
74
+ may: string;
75
+ jun: string;
76
+ jul: string;
77
+ aug: string;
78
+ sep: string;
79
+ oct: string;
80
+ nov: string;
81
+ dec: string;
82
+ };
83
+ };
84
+ inputNumber: {
85
+ decrease: string;
86
+ increase: string;
87
+ };
88
+ select: {
89
+ loading: string;
90
+ noMatch: string;
91
+ noData: string;
92
+ placeholder: string;
93
+ };
94
+ dropdown: {
95
+ toggleDropdown: string;
96
+ };
97
+ mention: {
98
+ loading: string;
99
+ };
100
+ cascader: {
101
+ noMatch: string;
102
+ loading: string;
103
+ placeholder: string;
104
+ noData: string;
105
+ };
106
+ pagination: {
107
+ goto: string;
108
+ pagesize: string;
109
+ total: string;
110
+ pageClassifier: string;
111
+ page: string;
112
+ prev: string;
113
+ next: string;
114
+ currentPage: string;
115
+ prevPages: string;
116
+ nextPages: string;
117
+ deprecationWarning: string;
118
+ };
119
+ dialog: {
120
+ close: string;
121
+ };
122
+ drawer: {
123
+ close: string;
124
+ };
125
+ messagebox: {
126
+ title: string;
127
+ confirm: string;
128
+ cancel: string;
129
+ error: string;
130
+ close: string;
131
+ };
132
+ upload: {
133
+ deleteTip: string;
134
+ delete: string;
135
+ preview: string;
136
+ continue: string;
137
+ };
138
+ slider: {
139
+ defaultLabel: string;
140
+ defaultRangeStartLabel: string;
141
+ defaultRangeEndLabel: string;
142
+ };
143
+ table: {
144
+ emptyText: string;
145
+ confirmFilter: string;
146
+ resetFilter: string;
147
+ clearFilter: string;
148
+ sumText: string;
149
+ };
150
+ tour: {
151
+ next: string;
152
+ previous: string;
153
+ finish: string;
154
+ };
155
+ tree: {
156
+ emptyText: string;
157
+ };
158
+ transfer: {
159
+ noMatch: string;
160
+ noData: string;
161
+ titles: string[];
162
+ filterPlaceholder: string;
163
+ noCheckedFormat: string;
164
+ hasCheckedFormat: string;
165
+ };
166
+ image: {
167
+ error: string;
168
+ };
169
+ pageHeader: {
170
+ title: string;
171
+ };
172
+ popconfirm: {
173
+ confirmButtonText: string;
174
+ cancelButtonText: string;
175
+ };
176
+ carousel: {
177
+ leftArrow: string;
178
+ rightArrow: string;
179
+ indicator: string;
180
+ };
181
+ };
182
+ }>;
183
+ setLocale: (newLocale: LocaleValue) => void;
184
+ clearStoragePreference: () => void;
185
+ isControlled: import('vue').ComputedRef<boolean>;
186
+ };
187
+ //# sourceMappingURL=useLocale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocale.d.ts","sourceRoot":"","sources":["../../src/composable/useLocale.ts"],"names":[],"mappings":"AAKA,OAAO,EAAQ,UAAU,EAAC,WAAW,EAAE,MAAM,WAAW,CAAA;AAIxD,wBAAgB,SAAS,CAAC,UAAU,CAAC,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAwBjB,WAAW;;;EA2D1C"}
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";body{margin:0;display:flex}body,html{height:100%}.canvas{top:0;height:calc(100vh - var(--ml-status-bar-height));width:100%;display:block;outline:none}.el-dialog{padding-bottom:8px;padding-top:8px}.el-dialog__headerbtn{height:36px;width:36px}html.dark{color-scheme:dark;--el-color-primary: #409eff;--el-color-primary-light-3: rgb(51, 117, 185);--el-color-primary-light-5: rgb(42, 89, 138);--el-color-primary-light-7: rgb(33, 61, 91);--el-color-primary-light-8: rgb(29, 48, 67);--el-color-primary-light-9: rgb(24, 34, 43);--el-color-primary-dark-2: rgb(102, 177, 255);--el-color-success: #67c23a;--el-color-success-light-3: rgb(78, 142, 47);--el-color-success-light-5: rgb(62, 107, 39);--el-color-success-light-7: rgb(45, 72, 31);--el-color-success-light-8: rgb(37, 55, 28);--el-color-success-light-9: rgb(28, 37, 24);--el-color-success-dark-2: rgb(133, 206, 97);--el-color-warning: #e6a23c;--el-color-warning-light-3: rgb(167, 119, 48);--el-color-warning-light-5: rgb(125, 91, 40);--el-color-warning-light-7: rgb(83, 63, 32);--el-color-warning-light-8: rgb(62, 48, 28);--el-color-warning-light-9: rgb(41, 34, 24);--el-color-warning-dark-2: rgb(235, 181, 99);--el-color-danger: #f56c6c;--el-color-danger-light-3: rgb(178, 82, 82);--el-color-danger-light-5: rgb(133, 64, 64);--el-color-danger-light-7: rgb(88, 46, 46);--el-color-danger-light-8: rgb(65, 38, 38);--el-color-danger-light-9: rgb(42, 29, 29);--el-color-danger-dark-2: rgb(247, 137, 137);--el-color-error: #f56c6c;--el-color-error-light-3: rgb(178, 82, 82);--el-color-error-light-5: rgb(133, 64, 64);--el-color-error-light-7: rgb(88, 46, 46);--el-color-error-light-8: rgb(65, 38, 38);--el-color-error-light-9: rgb(42, 29, 29);--el-color-error-dark-2: rgb(247, 137, 137);--el-color-info: #909399;--el-color-info-light-3: rgb(107, 109, 113);--el-color-info-light-5: rgb(82, 84, 87);--el-color-info-light-7: rgb(57, 58, 60);--el-color-info-light-8: rgb(45, 45, 47);--el-color-info-light-9: rgb(32, 33, 33);--el-color-info-dark-2: rgb(166, 169, 173);--el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, .36), 0px 8px 20px rgba(0, 0, 0, .72);--el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, .72);--el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, .72);--el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, .72), 0px 12px 32px #000000, 0px 8px 16px -8px #000000;--el-bg-color-page: #0a0a0a;--el-bg-color: #141414;--el-bg-color-overlay: #1d1e1f;--el-text-color-primary: #E5EAF3;--el-text-color-regular: #CFD3DC;--el-text-color-secondary: #A3A6AD;--el-text-color-placeholder: #8D9095;--el-text-color-disabled: #6C6E72;--el-border-color-darker: #636466;--el-border-color-dark: #58585B;--el-border-color: #4C4D4F;--el-border-color-light: #414243;--el-border-color-lighter: #363637;--el-border-color-extra-light: #2B2B2C;--el-fill-color-darker: #424243;--el-fill-color-dark: #39393A;--el-fill-color: #303030;--el-fill-color-light: #262727;--el-fill-color-lighter: #1D1D1D;--el-fill-color-extra-light: #191919;--el-fill-color-blank: transparent;--el-mask-color: rgba(0, 0, 0, .8);--el-mask-color-extra-light: rgba(0, 0, 0, .3)}html.dark .el-button{--el-button-disabled-text-color: rgba(255, 255, 255, .5)}html.dark .el-card{--el-card-bg-color: var(--el-bg-color-overlay)}html.dark .el-empty{--el-empty-fill-color-0: var(--el-color-black);--el-empty-fill-color-1: #4b4b52;--el-empty-fill-color-2: #36383d;--el-empty-fill-color-3: #1e1e20;--el-empty-fill-color-4: #262629;--el-empty-fill-color-5: #202124;--el-empty-fill-color-6: #212224;--el-empty-fill-color-7: #1b1c1f;--el-empty-fill-color-8: #1c1d1f;--el-empty-fill-color-9: #18181a}:root{--ml-status-bar-height: 30px}body{font-family:Inter,system-ui,Avenir,Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}a{color:var(--el-color-primary)}code{border-radius:2px;padding:2px 4px;background-color:var(--el-color-primary-light-9);color:var(--elcolor-primary)}.ml-dialog-header-bottom-line[data-v-8df470d5]{margin-left:-16px;margin-top:6px;margin-bottom:6px;width:calc(100% + 64px)}.ml-dialog-footer-top-line[data-v-8df470d5]{margin-left:-16px;margin-top:6px;margin-bottom:6px;width:calc(100% + 32px)}.ml-toggle-button[data-v-48d6b055]{border:none;padding:0;cursor:pointer;width:var(--a97b120a);height:var(--a97b120a)}.ml-layer-list{width:100%;font-size:small;min-width:100%}.ml-layer-list .el-table__header,.ml-layer-list .el-table__body{border-bottom:1px solid var(--el-border-color)}.ml-layer-list-cell{display:flex;align-items:center;justify-content:center}.ml-layer-list-color{width:20px;height:20px}.ml-layer-manager[data-v-d49ba2cb]{left:2px;top:55px;width:400px;height:500px}.ml-layer-list-wrapper[data-v-d49ba2cb]{overflow:auto;width:100%;display:flex;align-items:flex-start;justify-content:flex-start}.autocomplete-container[data-v-082845cb]{position:fixed;left:50%;bottom:40px;transform:translate(-50%);width:80%;max-width:600px;z-index:1000}.autocomplete-input[data-v-082845cb]{width:100%}.ml-entity-info[data-v-5f45b19d]{position:fixed;width:180px;left:var(--504f44a9);top:var(--4d65ff1a);margin:6px}.ml-entity-info-title[data-v-5f45b19d]{font-weight:700;margin-bottom:16px;margin-top:0}.ml-entity-info-text[data-v-5f45b19d]{margin:6px}.ml-language-selector[data-v-de5200f8]{position:fixed;right:40px;top:20px;z-index:1000}.ml-main-menu-container[data-v-8c0c738e]{position:fixed;left:40px;top:20px;z-index:1000}.ml-main-menu-icon[data-v-8c0c738e],.ml-main-menu-icon[data-v-8c0c738e]:hover{outline:none;border:none}.ml-vertical-toolbar-container{position:fixed;right:30px;top:50%;transform:translateY(-50%)}.ml-point-style-button[data-v-29692d7d]{border:none;padding:0;cursor:pointer;width:30px}.ml-progress[data-v-799ce32b]{width:100px}.ml-setting-button[data-v-666f03a3],.ml-warning-button[data-v-3411a3ec]{border:none;padding:0;cursor:pointer;width:30px}.ml-status-bar[data-v-ee6f13c4]{box-sizing:border-box}.ml-status-bar-left-button-group[data-v-ee6f13c4]{border:none;box-sizing:border-box;height:var(--ml-status-bar-height)}.ml-status-bar-layout-button[data-v-ee6f13c4]{box-sizing:border-box}.ml-status-bar-right-button-group[data-v-ee6f13c4]{border:none;padding:0;height:var(--ml-status-bar-height)}.ml-status-bar-current-pos[data-v-ee6f13c4]{border:none;height:100%}.ml-file-name{position:absolute;top:0;left:50%;transform:translate(-50%);text-align:center;width:100%;margin-top:20px}
1
+ @charset "UTF-8";body{margin:0;display:flex}body,html{height:100%}.canvas{top:0;height:calc(100vh - var(--ml-status-bar-height));width:100%;display:block;outline:none}.el-dialog{padding-bottom:8px;padding-top:8px}.el-dialog__headerbtn{height:36px;width:36px}html.dark{color-scheme:dark;--el-color-primary: #409eff;--el-color-primary-light-3: rgb(51, 117, 185);--el-color-primary-light-5: rgb(42, 89, 138);--el-color-primary-light-7: rgb(33, 61, 91);--el-color-primary-light-8: rgb(29, 48, 67);--el-color-primary-light-9: rgb(24, 34, 43);--el-color-primary-dark-2: rgb(102, 177, 255);--el-color-success: #67c23a;--el-color-success-light-3: rgb(78, 142, 47);--el-color-success-light-5: rgb(62, 107, 39);--el-color-success-light-7: rgb(45, 72, 31);--el-color-success-light-8: rgb(37, 55, 28);--el-color-success-light-9: rgb(28, 37, 24);--el-color-success-dark-2: rgb(133, 206, 97);--el-color-warning: #e6a23c;--el-color-warning-light-3: rgb(167, 119, 48);--el-color-warning-light-5: rgb(125, 91, 40);--el-color-warning-light-7: rgb(83, 63, 32);--el-color-warning-light-8: rgb(62, 48, 28);--el-color-warning-light-9: rgb(41, 34, 24);--el-color-warning-dark-2: rgb(235, 181, 99);--el-color-danger: #f56c6c;--el-color-danger-light-3: rgb(178, 82, 82);--el-color-danger-light-5: rgb(133, 64, 64);--el-color-danger-light-7: rgb(88, 46, 46);--el-color-danger-light-8: rgb(65, 38, 38);--el-color-danger-light-9: rgb(42, 29, 29);--el-color-danger-dark-2: rgb(247, 137, 137);--el-color-error: #f56c6c;--el-color-error-light-3: rgb(178, 82, 82);--el-color-error-light-5: rgb(133, 64, 64);--el-color-error-light-7: rgb(88, 46, 46);--el-color-error-light-8: rgb(65, 38, 38);--el-color-error-light-9: rgb(42, 29, 29);--el-color-error-dark-2: rgb(247, 137, 137);--el-color-info: #909399;--el-color-info-light-3: rgb(107, 109, 113);--el-color-info-light-5: rgb(82, 84, 87);--el-color-info-light-7: rgb(57, 58, 60);--el-color-info-light-8: rgb(45, 45, 47);--el-color-info-light-9: rgb(32, 33, 33);--el-color-info-dark-2: rgb(166, 169, 173);--el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, .36), 0px 8px 20px rgba(0, 0, 0, .72);--el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, .72);--el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, .72);--el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, .72), 0px 12px 32px #000000, 0px 8px 16px -8px #000000;--el-bg-color-page: #0a0a0a;--el-bg-color: #141414;--el-bg-color-overlay: #1d1e1f;--el-text-color-primary: #E5EAF3;--el-text-color-regular: #CFD3DC;--el-text-color-secondary: #A3A6AD;--el-text-color-placeholder: #8D9095;--el-text-color-disabled: #6C6E72;--el-border-color-darker: #636466;--el-border-color-dark: #58585B;--el-border-color: #4C4D4F;--el-border-color-light: #414243;--el-border-color-lighter: #363637;--el-border-color-extra-light: #2B2B2C;--el-fill-color-darker: #424243;--el-fill-color-dark: #39393A;--el-fill-color: #303030;--el-fill-color-light: #262727;--el-fill-color-lighter: #1D1D1D;--el-fill-color-extra-light: #191919;--el-fill-color-blank: transparent;--el-mask-color: rgba(0, 0, 0, .8);--el-mask-color-extra-light: rgba(0, 0, 0, .3)}html.dark .el-button{--el-button-disabled-text-color: rgba(255, 255, 255, .5)}html.dark .el-card{--el-card-bg-color: var(--el-bg-color-overlay)}html.dark .el-empty{--el-empty-fill-color-0: var(--el-color-black);--el-empty-fill-color-1: #4b4b52;--el-empty-fill-color-2: #36383d;--el-empty-fill-color-3: #1e1e20;--el-empty-fill-color-4: #262629;--el-empty-fill-color-5: #202124;--el-empty-fill-color-6: #212224;--el-empty-fill-color-7: #1b1c1f;--el-empty-fill-color-8: #1c1d1f;--el-empty-fill-color-9: #18181a}:root{--ml-status-bar-height: 30px}body{font-family:Inter,system-ui,Avenir,Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}a{color:var(--el-color-primary)}code{border-radius:2px;padding:2px 4px;background-color:var(--el-color-primary-light-9);color:var(--elcolor-primary)}.ml-dialog-header-bottom-line[data-v-8df470d5]{margin-left:-16px;margin-top:6px;margin-bottom:6px;width:calc(100% + 64px)}.ml-dialog-footer-top-line[data-v-8df470d5]{margin-left:-16px;margin-top:6px;margin-bottom:6px;width:calc(100% + 32px)}.ml-toggle-button[data-v-48d6b055]{border:none;padding:0;cursor:pointer;width:var(--a97b120a);height:var(--a97b120a)}.ml-layer-list{width:100%;font-size:small;min-width:100%}.ml-layer-list .el-table__header,.ml-layer-list .el-table__body{border-bottom:1px solid var(--el-border-color)}.ml-layer-list-cell{display:flex;align-items:center;justify-content:center}.ml-layer-list-color{width:20px;height:20px}.ml-layer-manager[data-v-d49ba2cb]{left:2px;top:55px;width:400px;height:500px}.ml-layer-list-wrapper[data-v-d49ba2cb]{overflow:auto;width:100%;display:flex;align-items:flex-start;justify-content:flex-start}.autocomplete-container[data-v-082845cb]{position:fixed;left:50%;bottom:40px;transform:translate(-50%);width:80%;max-width:600px;z-index:1000}.autocomplete-input[data-v-082845cb]{width:100%}.ml-entity-info[data-v-5f45b19d]{position:fixed;width:180px;left:var(--504f44a9);top:var(--4d65ff1a);margin:6px}.ml-entity-info-title[data-v-5f45b19d]{font-weight:700;margin-bottom:16px;margin-top:0}.ml-entity-info-text[data-v-5f45b19d]{margin:6px}.ml-language-selector[data-v-1b9f7bc0]{position:fixed;right:40px;top:20px;z-index:1000}.ml-main-menu-container[data-v-8c0c738e]{position:fixed;left:40px;top:20px;z-index:1000}.ml-main-menu-icon[data-v-8c0c738e],.ml-main-menu-icon[data-v-8c0c738e]:hover{outline:none;border:none}.ml-vertical-toolbar-container{position:fixed;right:30px;top:50%;transform:translateY(-50%)}.ml-point-style-button[data-v-29692d7d]{border:none;padding:0;cursor:pointer;width:30px}.ml-progress[data-v-5d48a084]{width:100px}.ml-setting-button[data-v-666f03a3],.ml-warning-button[data-v-3411a3ec]{border:none;padding:0;cursor:pointer;width:30px}.ml-status-bar[data-v-ee6f13c4]{box-sizing:border-box}.ml-status-bar-left-button-group[data-v-ee6f13c4]{border:none;box-sizing:border-box;height:var(--ml-status-bar-height)}.ml-status-bar-layout-button[data-v-ee6f13c4]{box-sizing:border-box}.ml-status-bar-right-button-group[data-v-ee6f13c4]{border:none;padding:0;height:var(--ml-status-bar-height)}.ml-status-bar-current-pos[data-v-ee6f13c4]{border:none;height:100%}.ml-file-name{position:absolute;top:0;left:50%;transform:translate(-50%);text-align:center;width:100%;margin-top:20px}