exploria-ui 2026.3.2 → 2026.3.5
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 +102 -137
- package/dist/components/advanced/EWatermark/EWatermark.vue.d.ts +47 -7
- package/dist/components/basic/EBadge/EBadge.vue.d.ts +26 -0
- package/dist/components/data/EProgress.vue.d.ts +46 -3
- package/dist/components/form/ETimePicker.vue.d.ts +2 -1
- package/dist/components/hooks/usePosition.d.ts +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.js +47 -46
- package/dist/components/navigation/ETabs/ETabPane.vue.d.ts +3 -3
- package/dist/components/navigation/ETabs/ETabs.vue.d.ts +2 -2
- package/dist/directives/ESlideIn.d.ts +1 -1
- package/dist/index.css +1 -1
- package/dist/node_modules/.pnpm/sortablejs@1.15.7/node_modules/sortablejs/modular/sortable.esm.js +2 -2
- package/dist/node_modules/.pnpm/three@0.180.0/node_modules/three/examples/jsm/libs/fflate.module.js +7 -4
- package/dist/node_modules/.pnpm/three@0.180.0/node_modules/three/examples/jsm/loaders/FBXLoader.js +7 -7
- package/dist/node_modules/.pnpm/three@0.180.0/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4 -4
- package/dist/packages/exploria-ui/src/components/advanced/EParallaxScrolling/EParallaxScrolling.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/advanced/EParallaxScrolling/EParallaxScrolling.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/advanced/ERollingFollow/ERollingFollow.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/advanced/ERollingFollow/ERollingFollow.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/advanced/EVirtualList/EVirtualList.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/advanced/EVirtualList/EVirtualList.vue_vue_type_script_setup_true_lang.js +2 -4
- package/dist/packages/exploria-ui/src/components/advanced/EWatermark/EWatermark.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/advanced/EWatermark/EWatermark.vue_vue_type_script_setup_true_lang.js +79 -25
- package/dist/packages/exploria-ui/src/components/basic/EBadge/EBadge.vue.js +7 -0
- package/dist/packages/exploria-ui/src/components/basic/EBadge/EBadge.vue_vue_type_script_setup_true_lang.js +40 -0
- package/dist/packages/exploria-ui/src/components/basic/EButton/EButton.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/basic/EButton/EButton.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/basic/ECard/ECard.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/basic/ECard/ECard.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/packages/exploria-ui/src/components/basic/ESvgIcon/ESvgIcon.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/basic/EUnderLine/EUnderLine.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/EAvatar/EAvatar.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/EAvatar/EAvatar.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ECalendar.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ECalendar.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/packages/exploria-ui/src/components/data/ECarousel/ECarousel.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ECarousel/ECarousel.vue_vue_type_script_setup_true_lang.js +51 -43
- package/dist/packages/exploria-ui/src/components/data/ECarousel/ECarouselItem.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ECarousel/ECarouselItem.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ECodeCollapse/ECodeCollapse.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ECodeCollapse/ECodeCollapse.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ECollapse/ECollapse.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ECollapse/ECollapse.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/EImage.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/EImage.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/EList.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/EList.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/EMediaViewer/EMediaViewer.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/EMediaViewer/EMediaViewer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/EProgress.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/EProgress.vue_vue_type_script_setup_true_lang.js +93 -15
- package/dist/packages/exploria-ui/src/components/data/ERollingPagination.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ERollingPagination.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ESkeleton/ESkeleton.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ETable/ETable.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ETable/ETable.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ETable/ETableColumn.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ETimeline/ETimeline.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ETimeline/ETimeline.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ETimeline/ETimelineItem.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/data/ETimeline/ETimelineItem.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/EDialog/EDialog.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/EDialog/EDialog.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/EDrawer/EDrawer.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/EDrawer/EDrawer.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/EMessage/EMessage.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/EMessage/EMessage.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/EMessageBox/EMessageBox.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/EMessageBox/EMessageBox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/ENotification/ENotification.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/ENotification/ENotification.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/ENotification/ENotification.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/EPopover.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/EPopover.vue_vue_type_script_setup_true_lang.js +16 -16
- package/dist/packages/exploria-ui/src/components/feedback/ETooltip.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/feedback/ETooltip.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/packages/exploria-ui/src/components/form/ECheckbox.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/ECheckbox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/EColorPicker.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/EColorPicker.vue_vue_type_script_setup_true_lang.js +156 -102
- package/dist/packages/exploria-ui/src/components/form/EConditionGroup/EConditionGroup.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/EConditionGroup/EConditionGroup.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/EFileSelector.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/EFileSelector.vue_vue_type_script_setup_true_lang.js +2 -4
- package/dist/packages/exploria-ui/src/components/form/EForm.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/EForm.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/EFormItem.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/EFormItem.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/EInput/EInput.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/EInput/EInput.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/ERadio.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/ERadio.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/ESelect/ESelect.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/ESelect/ESelect.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/packages/exploria-ui/src/components/form/ESlider.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/ESlider.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/ETimePicker.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/form/ETimePicker.vue_vue_type_script_setup_true_lang.js +82 -74
- package/dist/packages/exploria-ui/src/components/geometry/ECube.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/hooks/usePosition.js +1 -1
- package/dist/packages/exploria-ui/src/components/layout/EContainerWithScrollbar.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/layout/EContainerWithScrollbar.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/layout/EDivider.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/layout/EDivider.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/layout/EScrollX.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/layout/EScrollX.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/layout/EScrollbar.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/layout/EScrollbar.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/packages/exploria-ui/src/components/navigation/EDropdown.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/navigation/EDropdown.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/packages/exploria-ui/src/components/navigation/ETabs/ETabPane.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/navigation/ETabs/ETabPane.vue_vue_type_script_setup_true_lang.js +11 -11
- package/dist/packages/exploria-ui/src/components/navigation/ETabs/ETabs.vue.js +1 -1
- package/dist/packages/exploria-ui/src/components/navigation/ETabs/ETabs.vue_vue_type_script_setup_true_lang.js +29 -24
- package/dist/packages/exploria-ui/src/directives/ESizeOb.js +1 -1
- package/dist/packages/exploria-ui/src/directives/ESlideIn.js +120 -16
- package/dist/packages/exploria-ui/src/utils/EClipboardUtil.js +1 -1
- package/dist/packages/exploria-ui/src/utils/EDomUtil.js +23 -2
- package/dist/packages/exploria-ui/src/utils/EImageUtil.js +2 -2
- package/package.json +2 -3
- package/src/plugins/EPreloadImageBuilder.ts +0 -66
- package/src/plugins/ESvgPolyfill.ts +0 -29
- package/src/plugins/ESvgSpriteBuilder.ts +0 -48
- package/src/plugins/index.ts +0 -5
|
@@ -1,8 +1,29 @@
|
|
|
1
1
|
//#region src/utils/EDomUtil.ts
|
|
2
2
|
var e = class {
|
|
3
3
|
static scrollIntoView(e) {
|
|
4
|
-
let { element: t, block: n, inline: r
|
|
5
|
-
|
|
4
|
+
let { element: t, block: n = "start", inline: r = "start" } = e;
|
|
5
|
+
if (!t) return;
|
|
6
|
+
let i = t.parentElement;
|
|
7
|
+
if (!(i instanceof HTMLElement)) return;
|
|
8
|
+
let a = t.getBoundingClientRect(), { offsetTop: o, offsetLeft: s } = t, { clientHeight: c, clientWidth: l } = i, u = a.height, d = a.width;
|
|
9
|
+
if (n) switch (n) {
|
|
10
|
+
case "center":
|
|
11
|
+
i.scrollTop = o - (c - u) / 2;
|
|
12
|
+
break;
|
|
13
|
+
case "end":
|
|
14
|
+
i.scrollTop = o + u - c;
|
|
15
|
+
break;
|
|
16
|
+
default: i.scrollTop = o;
|
|
17
|
+
}
|
|
18
|
+
if (r) switch (r) {
|
|
19
|
+
case "center":
|
|
20
|
+
i.scrollLeft = s - (l - d) / 2;
|
|
21
|
+
break;
|
|
22
|
+
case "end":
|
|
23
|
+
i.scrollLeft = s + d - l;
|
|
24
|
+
break;
|
|
25
|
+
default: i.scrollLeft = s;
|
|
26
|
+
}
|
|
6
27
|
}
|
|
7
28
|
};
|
|
8
29
|
//#endregion
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
var e = (e) => new Promise((t, n) => {
|
|
3
3
|
let r = document.createElement("canvas"), i = r.getContext("2d");
|
|
4
4
|
if (!i) {
|
|
5
|
-
n(
|
|
5
|
+
n(Error("无法获取 canvas 上下文"));
|
|
6
6
|
return;
|
|
7
7
|
}
|
|
8
8
|
r.width = e.naturalWidth || e.width, r.height = e.naturalHeight || e.height, i.translate(r.width, 0), i.scale(-1, 1), i.drawImage(e, 0, 0), r.toBlob((e) => {
|
|
9
|
-
e ? t(new File([e], "mirrored-image.png", { type: "image/png" })) : n(
|
|
9
|
+
e ? t(new File([e], "mirrored-image.png", { type: "image/png" })) : n(Error("生成 Blob 失败"));
|
|
10
10
|
}, "image/png");
|
|
11
11
|
}), t = class {
|
|
12
12
|
static mirror(t) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "exploria-ui",
|
|
3
3
|
"description": "《探索UI》组件库",
|
|
4
|
-
"version": "2026.3.
|
|
4
|
+
"version": "2026.3.5",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./dist/components/index.js",
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
],
|
|
16
16
|
"files": [
|
|
17
17
|
"dist",
|
|
18
|
-
"src/plugins",
|
|
19
18
|
"package.json",
|
|
20
19
|
"README.md"
|
|
21
20
|
],
|
|
@@ -70,7 +69,7 @@
|
|
|
70
69
|
},
|
|
71
70
|
"scripts": {
|
|
72
71
|
"build:watch": "vite build --watch",
|
|
73
|
-
"build:plugins:watch": "node ./scripts/build-plugins.ts
|
|
72
|
+
"build:plugins:watch": "node ./scripts/build-plugins.ts",
|
|
74
73
|
"pub": "pnpm publish --no-git-checks",
|
|
75
74
|
"type-check": "vue-tsc --noEmit"
|
|
76
75
|
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import * as fastGlob from 'fast-glob';
|
|
2
|
-
import type { Plugin } from 'vite';
|
|
3
|
-
|
|
4
|
-
const EPreloadImageBuilder = (options: {
|
|
5
|
-
pattern: string | string[];
|
|
6
|
-
}): Plugin => {
|
|
7
|
-
const { pattern } = options;
|
|
8
|
-
const _images: string[] = [];
|
|
9
|
-
return {
|
|
10
|
-
name: 'vite-plugin-preload-images',
|
|
11
|
-
apply: (_, { command }) => ['serve', 'build'].includes(command),
|
|
12
|
-
|
|
13
|
-
generateBundle(_, bundle) {
|
|
14
|
-
const assetsImages: string[] = [];
|
|
15
|
-
const publicImages: string[] = [];
|
|
16
|
-
fastGlob.sync(pattern).forEach((file) => {
|
|
17
|
-
if (file.includes('src/')) {
|
|
18
|
-
assetsImages.push(file.replace('./', ''));
|
|
19
|
-
} else if (file.includes('public/')) {
|
|
20
|
-
publicImages.push(file.replace('./', ''));
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
const values = Object.values(bundle);
|
|
24
|
-
values.forEach((item) => {
|
|
25
|
-
if (
|
|
26
|
-
item.type === 'asset' &&
|
|
27
|
-
assetsImages.includes(item.originalFileNames[0])
|
|
28
|
-
) {
|
|
29
|
-
_images.push(item.fileName);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
for (const item of publicImages) {
|
|
34
|
-
_images.push(item.replace('public/', ''));
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
|
|
38
|
-
transformIndexHtml(_, ctx) {
|
|
39
|
-
let images: string[];
|
|
40
|
-
if (ctx.server) {
|
|
41
|
-
// 开发环境
|
|
42
|
-
const files = fastGlob.sync(pattern);
|
|
43
|
-
images = files.map(
|
|
44
|
-
(file) => (ctx.server!.config.base || '') + file
|
|
45
|
-
);
|
|
46
|
-
} else {
|
|
47
|
-
// 生产环境
|
|
48
|
-
images = _images;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return images.map((file) => {
|
|
52
|
-
return {
|
|
53
|
-
tag: 'link',
|
|
54
|
-
attrs: {
|
|
55
|
-
rel: 'preload',
|
|
56
|
-
href: file,
|
|
57
|
-
as: 'image',
|
|
58
|
-
fetchpriority: 'low',
|
|
59
|
-
},
|
|
60
|
-
injectTo: 'head',
|
|
61
|
-
};
|
|
62
|
-
});
|
|
63
|
-
},
|
|
64
|
-
};
|
|
65
|
-
};
|
|
66
|
-
export default EPreloadImageBuilder;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { Plugin } from 'vite';
|
|
2
|
-
|
|
3
|
-
// 修复 老旧浏览器 中 <use> 引用 <symbol> 时,因封闭影子 DOM 导致的 fill=“url(#*)” 失效问题
|
|
4
|
-
const ESvgPolyfill = (): Plugin => {
|
|
5
|
-
return {
|
|
6
|
-
name: 'vite-plugin-svg-polyfill',
|
|
7
|
-
// 仅在 serve 和 build 命令时生效
|
|
8
|
-
apply: (_, { command }) => ['serve', 'build'].includes(command),
|
|
9
|
-
transformIndexHtml(html) {
|
|
10
|
-
const code = `<script>
|
|
11
|
-
document.addEventListener('DOMContentLoaded', () => {
|
|
12
|
-
const defs = document.querySelectorAll('svg defs');
|
|
13
|
-
let globalDefsContent = '';
|
|
14
|
-
defs.forEach(def => {
|
|
15
|
-
globalDefsContent += def.innerHTML;
|
|
16
|
-
});
|
|
17
|
-
const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
|
18
|
-
svg.class = 'global-svg-defs';
|
|
19
|
-
svg.style.cssText = 'position: fixed; width: 0; height: 0; visibility: hidden;';
|
|
20
|
-
svg.innerHTML = '<defs>'+globalDefsContent+'</defs>';
|
|
21
|
-
document.body.insertBefore(svg, document.body.firstChild);
|
|
22
|
-
});
|
|
23
|
-
</script>`;
|
|
24
|
-
return html.replace('</body>', `${code}</body>`);
|
|
25
|
-
},
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
export default ESvgPolyfill;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// ESvgSpriteBuilder.ts
|
|
2
|
-
import { readFileSync } from 'node:fs';
|
|
3
|
-
import { basename } from 'node:path';
|
|
4
|
-
|
|
5
|
-
import fastGlob from 'fast-glob';
|
|
6
|
-
import type { Plugin } from 'vite';
|
|
7
|
-
|
|
8
|
-
// 获取svgInnerContent
|
|
9
|
-
const getSvgInnerContent = (str: string): string | null => {
|
|
10
|
-
const regex = /<svg[^>]*>(.*?)<\/svg>/s; // 匹配带有任意属性的<svg>标签
|
|
11
|
-
const match = str.match(regex); // 执行匹配
|
|
12
|
-
return match ? match[1] : null; // 如果匹配成功,返回匹配的内容,否则返回 null
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
const getSvgSymbols = (
|
|
16
|
-
pattern: string,
|
|
17
|
-
symbolId: (filename: string) => string
|
|
18
|
-
): string[] => {
|
|
19
|
-
const files = fastGlob.sync(pattern, {
|
|
20
|
-
cwd: process.cwd(),
|
|
21
|
-
});
|
|
22
|
-
return files.map((filePath) => {
|
|
23
|
-
const filename = basename(filePath, '.svg');
|
|
24
|
-
const svgContent = readFileSync(filePath, 'utf-8');
|
|
25
|
-
const innerContent = getSvgInnerContent(svgContent);
|
|
26
|
-
const viewBoxMatch = svgContent.match(/viewBox="([^"]*)"/);
|
|
27
|
-
const viewBox = viewBoxMatch ? viewBoxMatch[1] : '0 0 16 16';
|
|
28
|
-
return `<symbol id="${symbolId(filename)}" viewBox="${viewBox}">${innerContent}</symbol>`;
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
const ESvgSpriteBuilder = (options: {
|
|
32
|
-
pattern: string;
|
|
33
|
-
symbolId: (filename: string) => string;
|
|
34
|
-
}): Plugin => {
|
|
35
|
-
const { pattern, symbolId } = options;
|
|
36
|
-
return {
|
|
37
|
-
name: 'vite-plugin-e-svg-sprite-builder',
|
|
38
|
-
apply: (_, { command }) => ['serve', 'build'].includes(command),
|
|
39
|
-
|
|
40
|
-
transformIndexHtml(html) {
|
|
41
|
-
// 只在首次调用时生成 SVG 内容
|
|
42
|
-
const symbols = getSvgSymbols(pattern, symbolId);
|
|
43
|
-
const svgHtml = `<svg xmlns="http://www.w3.org/2000/svg" style="position: fixed;">${symbols.join('')}</svg>`;
|
|
44
|
-
return html.replace('</body>', `${svgHtml}</body>`);
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
};
|
|
48
|
-
export default ESvgSpriteBuilder;
|