jky-component-lib 0.0.142 → 0.0.144

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.
@@ -17,14 +17,13 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { defineComponent, useModel, watch, onUnmounted, renderSlot, mergeModels } from "vue";
20
+ import { defineComponent, useModel, inject, onMounted, watch, onUnmounted, renderSlot, mergeModels } from "vue";
21
21
  const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, {
22
22
  name: "JkyAClusterMarker",
23
23
  inheritAttrs: false
24
24
  }), {
25
25
  __name: "AClusterMarker",
26
26
  props: /* @__PURE__ */ mergeModels({
27
- map: {},
28
27
  points: {},
29
28
  gridSize: { default: 60 },
30
29
  styles: {},
@@ -45,8 +44,14 @@ const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
45
44
  const props = __props;
46
45
  const emit = __emit;
47
46
  const modelValue = useModel(__props, "modelValue");
47
+ const amapContext = inject("amapContext");
48
48
  let clusterInstance = null;
49
49
  let mapInstance = null;
50
+ onMounted(() => {
51
+ if ((amapContext == null ? void 0 : amapContext.map) && props.enable) {
52
+ initCluster(amapContext.map);
53
+ }
54
+ });
50
55
  function initCluster(map) {
51
56
  if (!map || !window.AMap)
52
57
  return;
@@ -129,15 +134,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({
129
134
  destroy,
130
135
  getClusterInstance: () => clusterInstance
131
136
  });
132
- watch(
133
- () => props.map,
134
- (newMap) => {
135
- if (newMap && props.enable) {
136
- initCluster(newMap);
137
- }
138
- },
139
- { immediate: true }
140
- );
141
137
  watch(
142
138
  () => props.points,
143
139
  (newPoints) => {
@@ -1,7 +1,3 @@
1
1
 
2
- /* JkyAMarker 组件样式 - 参考高德官方示例 */
3
- .amap-icon img,
4
- .amap-marker-content img {
5
- width: 25px;
6
- height: 34px;
7
- }
2
+ /* 轨迹回放组件不需要额外样式 */
3
+ /* 所有样式通过 TailwindCSS 工具类或外部组件控制 */
@@ -1,3 +1,7 @@
1
1
 
2
- /* 轨迹回放组件不需要额外样式 */
3
- /* 所有样式通过 TailwindCSS 工具类或外部组件控制 */
2
+ /* JkyAMarker 组件样式 - 参考高德官方示例 */
3
+ .amap-icon img,
4
+ .amap-marker-content img {
5
+ width: 25px;
6
+ height: 34px;
7
+ }
@@ -0,0 +1,44 @@
1
+ import { AnimatedTransitionProps, AnimatedTransitionSlots } from './types';
2
+ type __VLS_Props = AnimatedTransitionProps;
3
+ type __VLS_PublicProps = {
4
+ 'visible'?: boolean;
5
+ } & __VLS_Props;
6
+ declare function __VLS_template(): {
7
+ attrs: Partial<{}>;
8
+ slots: Readonly<AnimatedTransitionSlots> & AnimatedTransitionSlots;
9
+ refs: {};
10
+ rootEl: any;
11
+ };
12
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
13
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
14
+ "update:visible": (value: boolean) => any;
15
+ } & {
16
+ afterEnter: () => any;
17
+ afterLeave: () => any;
18
+ beforeEnter: () => any;
19
+ enterCancelled: () => any;
20
+ beforeLeave: () => any;
21
+ leaveCancelled: () => any;
22
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
23
+ onAfterEnter?: (() => any) | undefined;
24
+ onAfterLeave?: (() => any) | undefined;
25
+ onBeforeEnter?: (() => any) | undefined;
26
+ onEnterCancelled?: (() => any) | undefined;
27
+ onBeforeLeave?: (() => any) | undefined;
28
+ onLeaveCancelled?: (() => any) | undefined;
29
+ "onUpdate:visible"?: ((value: boolean) => any) | undefined;
30
+ }>, {
31
+ name: import('./types').AnimationName | string;
32
+ visible: boolean;
33
+ duration: number;
34
+ mode: "if" | "show";
35
+ direction: import('./types').AnimationDirection;
36
+ enabled: boolean;
37
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
38
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
39
+ export default _default;
40
+ type __VLS_WithTemplateSlots<T, S> = T & {
41
+ new (): {
42
+ $slots: S;
43
+ };
44
+ };
@@ -0,0 +1,99 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import { defineComponent, useModel, computed, openBlock, createBlock, Transition, withCtx, withDirectives, createElementBlock, normalizeStyle, renderSlot, vShow, createCommentVNode, mergeModels } from "vue";
21
+ const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, {
22
+ name: "JkyAnimatedTransition"
23
+ }), {
24
+ __name: "AnimatedTransition",
25
+ props: /* @__PURE__ */ mergeModels({
26
+ name: { default: "fade" },
27
+ duration: { default: 300 },
28
+ direction: { default: "right" },
29
+ enabled: { type: Boolean, default: true },
30
+ visible: { type: Boolean, default: true },
31
+ mode: { default: "if" }
32
+ }, {
33
+ "visible": __spreadValues({ type: Boolean }, { default: true }),
34
+ "visibleModifiers": {}
35
+ }),
36
+ emits: /* @__PURE__ */ mergeModels(["beforeEnter", "afterEnter", "enterCancelled", "beforeLeave", "afterLeave", "leaveCancelled"], ["update:visible"]),
37
+ setup(__props, { emit: __emit }) {
38
+ const props = __props;
39
+ const emit = __emit;
40
+ const visible = useModel(__props, "visible");
41
+ function capitalize(str) {
42
+ return str.charAt(0).toUpperCase() + str.slice(1);
43
+ }
44
+ const activeClass = computed(() => {
45
+ const { name, direction } = props;
46
+ return {
47
+ enterActiveClass: `animate__animated animate__${name}In${capitalize(direction)}`,
48
+ leaveActiveClass: `animate__animated animate__${name}Out${capitalize(direction)}`
49
+ };
50
+ });
51
+ function handleBeforeEnter() {
52
+ emit("beforeEnter");
53
+ }
54
+ function handleAfterEnter() {
55
+ emit("afterEnter");
56
+ }
57
+ function handleEnterCancelled() {
58
+ emit("enterCancelled");
59
+ }
60
+ function handleBeforeLeave() {
61
+ emit("beforeLeave");
62
+ }
63
+ function handleAfterLeave() {
64
+ emit("afterLeave");
65
+ }
66
+ function handleLeaveCancelled() {
67
+ emit("leaveCancelled");
68
+ }
69
+ return (_ctx, _cache) => {
70
+ return __props.enabled && __props.direction ? (openBlock(), createBlock(Transition, {
71
+ key: 0,
72
+ name: "custom-classes",
73
+ "enter-active-class": activeClass.value.enterActiveClass,
74
+ "leave-active-class": activeClass.value.leaveActiveClass,
75
+ onBeforeEnter: handleBeforeEnter,
76
+ onAfterEnter: handleAfterEnter,
77
+ onEnterCancelled: handleEnterCancelled,
78
+ onBeforeLeave: handleBeforeLeave,
79
+ onAfterLeave: handleAfterLeave,
80
+ onLeaveCancelled: handleLeaveCancelled
81
+ }, {
82
+ default: withCtx(() => [
83
+ (__props.mode === "if" ? visible.value : true) ? withDirectives((openBlock(), createElementBlock("div", {
84
+ key: 0,
85
+ style: normalizeStyle({ "--animate-duration": `${__props.duration}ms` })
86
+ }, [
87
+ renderSlot(_ctx.$slots, "default")
88
+ ], 4)), [
89
+ [vShow, __props.mode === "show" ? visible.value : true]
90
+ ]) : createCommentVNode("", true)
91
+ ]),
92
+ _: 3
93
+ }, 8, ["enter-active-class", "leave-active-class"])) : renderSlot(_ctx.$slots, "default", { key: 1 });
94
+ };
95
+ }
96
+ }));
97
+ export {
98
+ _sfc_main as default
99
+ };
@@ -0,0 +1,5 @@
1
+ import _sfc_main from "./AnimatedTransition.vue.js";
2
+ /* empty css */
3
+ export {
4
+ _sfc_main as default
5
+ };
@@ -0,0 +1,4 @@
1
+ import { InstallWithSFC } from '../utils';
2
+ import { default as AnimatedTransition } from './AnimatedTransition.vue';
3
+ export declare const JkyAnimatedTransition: InstallWithSFC<typeof AnimatedTransition>;
4
+ export default JkyAnimatedTransition;
@@ -0,0 +1,8 @@
1
+ import _sfc_main from "./AnimatedTransition.vue.js";
2
+ /* empty css */
3
+ import { installWithSFC } from "../utils/with-install.js";
4
+ const JkyAnimatedTransition = installWithSFC(_sfc_main);
5
+ export {
6
+ JkyAnimatedTransition,
7
+ JkyAnimatedTransition as default
8
+ };
@@ -0,0 +1,6 @@
1
+
2
+ /* 禁止使用 @apply,所有 TailwindCSS 工具类直接写在 class 中 */
3
+ /* 样式文件仅用于定义组件特定的自定义纯 CSS 样式 */
4
+ .jky-animated-transition {
5
+ /* 动画组件不需要额外样式,所有样式由 animate.css 提供 */
6
+ }
@@ -1,6 +1,7 @@
1
1
  import { Plugin } from 'vue';
2
2
  export * from './add-input';
3
3
  export * from './amap';
4
+ export * from './animated';
4
5
  export * from './button';
5
6
  export * from './button-nav';
6
7
  export * from './code-mirror-editor';
@@ -1,6 +1,7 @@
1
1
  import { JkyAddInput } from "./add-input/index.js";
2
2
  import { JkyAMap, JkyAMapPicker } from "./amap/index.js";
3
3
  import { JkyAClusterMarker, JkyAMarker, JkyATrackPlayback } from "./amap/index.js";
4
+ import { JkyAnimatedTransition } from "./animated/index.js";
4
5
  import { JkyButton } from "./button/index.js";
5
6
  import { JkyButtonNav } from "./button-nav/index.js";
6
7
  import { JkyCodeMirrorEditor } from "./code-mirror-editor/index.js";
@@ -35,7 +36,8 @@ const components = [
35
36
  JkyModal,
36
37
  JkyAMap,
37
38
  JkyAMapPicker,
38
- JkyDraggable
39
+ JkyDraggable,
40
+ JkyAnimatedTransition
39
41
  ];
40
42
  export {
41
43
  JkyAClusterMarker,
@@ -46,6 +48,7 @@ export {
46
48
  JkyATrackPlayback,
47
49
  JkyActionColumn,
48
50
  JkyAddInput,
51
+ JkyAnimatedTransition,
49
52
  JkyButton,
50
53
  JkyButtonNav,
51
54
  JkyCodeMirrorEditor,
package/dist/es/index.js CHANGED
@@ -12,6 +12,7 @@ import { JkyAClusterMarker as JkyAClusterMarker2, JkyAMap, JkyAMapPicker, JkyAMa
12
12
  import { JkyAMapPickerItem, JkyForm, JkyFormItem } from "./form/index.js";
13
13
  import { JkyActionColumn, JkyPageTable, JkyPageTableColumn } from "./page-table/index.js";
14
14
  import { JkyAddInput } from "./add-input/index.js";
15
+ import { JkyAnimatedTransition } from "./animated/index.js";
15
16
  import { JkyButton } from "./button/index.js";
16
17
  import { JkyButtonNav } from "./button-nav/index.js";
17
18
  import { JkyCodeMirrorEditor } from "./code-mirror-editor/index.js";
@@ -42,6 +43,7 @@ export {
42
43
  JkyATrackPlayback,
43
44
  JkyActionColumn,
44
45
  JkyAddInput,
46
+ JkyAnimatedTransition,
45
47
  JkyButton,
46
48
  JkyButtonNav,
47
49
  JkyCodeMirrorEditor,
@@ -1,4 +1,4 @@
1
- const version = "0.0.142";
1
+ const version = "0.0.144";
2
2
  export {
3
3
  version
4
4
  };
@@ -1,2 +1,6 @@
1
1
  import { ComponentResolver } from 'unplugin-vue-components';
2
- export declare function JkyComponentLibResolver(): ComponentResolver;
2
+ export interface JkyComponentLibResolverOptions {
3
+ /** 不自动加载样式的组件白名单(组件名,不带 Jky 前缀) */
4
+ excludeStyleList?: string[];
5
+ }
6
+ export declare function JkyComponentLibResolver(options?: JkyComponentLibResolverOptions): ComponentResolver;
@@ -1,13 +1,34 @@
1
- function JkyComponentLibResolver() {
1
+ const defaultExcludeStyleList = [
2
+ // AMap 相关子组件,共用 amap 目录的样式
3
+ "AMapPicker",
4
+ "AClusterMarker",
5
+ "AMarker",
6
+ "ATrackPlayback",
7
+ // Form 相关子组件,共用 form 目录的样式
8
+ "FormItem",
9
+ "AMapPickerItem"
10
+ ];
11
+ function JkyComponentLibResolver(options = {}) {
12
+ const { excludeStyleList = [] } = options;
13
+ const excludeStyleSet = /* @__PURE__ */ new Set([...defaultExcludeStyleList, ...excludeStyleList]);
2
14
  return {
3
15
  type: "component",
4
16
  resolve: (name) => {
5
17
  if (name.match(/^Jky[A-Z]/)) {
18
+ const componentName = name.replace("Jky", "");
19
+ const kebabName = componentName.replace(/([A-Z])/g, "-$1").replace(/^-/, "").toLowerCase();
20
+ if (excludeStyleSet.has(componentName)) {
21
+ return {
22
+ name,
23
+ from: "jky-component-lib"
24
+ // 白名单中的组件不自动加载样式
25
+ };
26
+ }
6
27
  return {
7
28
  name,
8
29
  from: "jky-component-lib",
9
30
  sideEffects: [
10
- `jky-component-lib/dist/es/${name.replace("Jky", "").replace(/([A-Z])/g, "-$1").replace(/^-/, "").toLowerCase()}/style.css`
31
+ `jky-component-lib/dist/es/${kebabName}/style.css`
11
32
  ]
12
33
  };
13
34
  }
package/dist/es/style.css CHANGED
@@ -91,6 +91,7 @@
91
91
  --color-yellow-50: oklch(98.7% .026 102.212);
92
92
  --color-yellow-100: oklch(97.3% .071 103.193);
93
93
  --color-yellow-200: oklch(94.5% .129 101.54);
94
+ --color-yellow-400: oklch(85.2% .199 91.936);
94
95
  --color-yellow-500: oklch(79.5% .184 86.047);
95
96
  --color-yellow-600: oklch(68.1% .162 75.834);
96
97
  --color-yellow-700: oklch(55.4% .135 66.442);
@@ -1826,6 +1827,14 @@
1826
1827
  height: calc(var(--spacing) * 20);
1827
1828
  }
1828
1829
 
1830
+ .h-32 {
1831
+ height: calc(var(--spacing) * 32);
1832
+ }
1833
+
1834
+ .h-40 {
1835
+ height: calc(var(--spacing) * 40);
1836
+ }
1837
+
1829
1838
  .h-64 {
1830
1839
  height: calc(var(--spacing) * 64);
1831
1840
  }
@@ -1898,6 +1907,14 @@
1898
1907
  width: calc(var(--spacing) * 20);
1899
1908
  }
1900
1909
 
1910
+ .w-32 {
1911
+ width: calc(var(--spacing) * 32);
1912
+ }
1913
+
1914
+ .w-40 {
1915
+ width: calc(var(--spacing) * 40);
1916
+ }
1917
+
1901
1918
  .w-60 {
1902
1919
  width: calc(var(--spacing) * 60);
1903
1920
  }
@@ -2570,6 +2587,11 @@
2570
2587
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2571
2588
  }
2572
2589
 
2590
+ .from-yellow-400 {
2591
+ --tw-gradient-from: var(--color-yellow-400);
2592
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2593
+ }
2594
+
2573
2595
  .via-blue-700 {
2574
2596
  --tw-gradient-via: var(--color-blue-700);
2575
2597
  --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
@@ -2617,11 +2639,21 @@
2617
2639
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2618
2640
  }
2619
2641
 
2642
+ .to-orange-500 {
2643
+ --tw-gradient-to: var(--color-orange-500);
2644
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2645
+ }
2646
+
2620
2647
  .to-pink-500 {
2621
2648
  --tw-gradient-to: var(--color-pink-500);
2622
2649
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2623
2650
  }
2624
2651
 
2652
+ .to-purple-500 {
2653
+ --tw-gradient-to: var(--color-purple-500);
2654
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2655
+ }
2656
+
2625
2657
  .to-purple-600 {
2626
2658
  --tw-gradient-to: var(--color-purple-600);
2627
2659
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
@@ -26,7 +26,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValu
26
26
  }), {
27
27
  __name: "AClusterMarker",
28
28
  props: /* @__PURE__ */ vue.mergeModels({
29
- map: {},
30
29
  points: {},
31
30
  gridSize: { default: 60 },
32
31
  styles: {},
@@ -47,8 +46,14 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValu
47
46
  const props = __props;
48
47
  const emit = __emit;
49
48
  const modelValue = vue.useModel(__props, "modelValue");
49
+ const amapContext = vue.inject("amapContext");
50
50
  let clusterInstance = null;
51
51
  let mapInstance = null;
52
+ vue.onMounted(() => {
53
+ if ((amapContext == null ? void 0 : amapContext.map) && props.enable) {
54
+ initCluster(amapContext.map);
55
+ }
56
+ });
52
57
  function initCluster(map) {
53
58
  if (!map || !window.AMap)
54
59
  return;
@@ -131,15 +136,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValu
131
136
  destroy,
132
137
  getClusterInstance: () => clusterInstance
133
138
  });
134
- vue.watch(
135
- () => props.map,
136
- (newMap) => {
137
- if (newMap && props.enable) {
138
- initCluster(newMap);
139
- }
140
- },
141
- { immediate: true }
142
- );
143
139
  vue.watch(
144
140
  () => props.points,
145
141
  (newPoints) => {
@@ -1,7 +1,3 @@
1
1
 
2
- /* JkyAMarker 组件样式 - 参考高德官方示例 */
3
- .amap-icon img,
4
- .amap-marker-content img {
5
- width: 25px;
6
- height: 34px;
7
- }
2
+ /* 轨迹回放组件不需要额外样式 */
3
+ /* 所有样式通过 TailwindCSS 工具类或外部组件控制 */
@@ -1,3 +1,7 @@
1
1
 
2
- /* 轨迹回放组件不需要额外样式 */
3
- /* 所有样式通过 TailwindCSS 工具类或外部组件控制 */
2
+ /* JkyAMarker 组件样式 - 参考高德官方示例 */
3
+ .amap-icon img,
4
+ .amap-marker-content img {
5
+ width: 25px;
6
+ height: 34px;
7
+ }
@@ -0,0 +1,44 @@
1
+ import { AnimatedTransitionProps, AnimatedTransitionSlots } from './types';
2
+ type __VLS_Props = AnimatedTransitionProps;
3
+ type __VLS_PublicProps = {
4
+ 'visible'?: boolean;
5
+ } & __VLS_Props;
6
+ declare function __VLS_template(): {
7
+ attrs: Partial<{}>;
8
+ slots: Readonly<AnimatedTransitionSlots> & AnimatedTransitionSlots;
9
+ refs: {};
10
+ rootEl: any;
11
+ };
12
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
13
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
14
+ "update:visible": (value: boolean) => any;
15
+ } & {
16
+ afterEnter: () => any;
17
+ afterLeave: () => any;
18
+ beforeEnter: () => any;
19
+ enterCancelled: () => any;
20
+ beforeLeave: () => any;
21
+ leaveCancelled: () => any;
22
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
23
+ onAfterEnter?: (() => any) | undefined;
24
+ onAfterLeave?: (() => any) | undefined;
25
+ onBeforeEnter?: (() => any) | undefined;
26
+ onEnterCancelled?: (() => any) | undefined;
27
+ onBeforeLeave?: (() => any) | undefined;
28
+ onLeaveCancelled?: (() => any) | undefined;
29
+ "onUpdate:visible"?: ((value: boolean) => any) | undefined;
30
+ }>, {
31
+ name: import('./types').AnimationName | string;
32
+ visible: boolean;
33
+ duration: number;
34
+ mode: "if" | "show";
35
+ direction: import('./types').AnimationDirection;
36
+ enabled: boolean;
37
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
38
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
39
+ export default _default;
40
+ type __VLS_WithTemplateSlots<T, S> = T & {
41
+ new (): {
42
+ $slots: S;
43
+ };
44
+ };
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
22
+ const vue = require("vue");
23
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent(__spreadProps(__spreadValues({}, {
24
+ name: "JkyAnimatedTransition"
25
+ }), {
26
+ __name: "AnimatedTransition",
27
+ props: /* @__PURE__ */ vue.mergeModels({
28
+ name: { default: "fade" },
29
+ duration: { default: 300 },
30
+ direction: { default: "right" },
31
+ enabled: { type: Boolean, default: true },
32
+ visible: { type: Boolean, default: true },
33
+ mode: { default: "if" }
34
+ }, {
35
+ "visible": __spreadValues({ type: Boolean }, { default: true }),
36
+ "visibleModifiers": {}
37
+ }),
38
+ emits: /* @__PURE__ */ vue.mergeModels(["beforeEnter", "afterEnter", "enterCancelled", "beforeLeave", "afterLeave", "leaveCancelled"], ["update:visible"]),
39
+ setup(__props, { emit: __emit }) {
40
+ const props = __props;
41
+ const emit = __emit;
42
+ const visible = vue.useModel(__props, "visible");
43
+ function capitalize(str) {
44
+ return str.charAt(0).toUpperCase() + str.slice(1);
45
+ }
46
+ const activeClass = vue.computed(() => {
47
+ const { name, direction } = props;
48
+ return {
49
+ enterActiveClass: `animate__animated animate__${name}In${capitalize(direction)}`,
50
+ leaveActiveClass: `animate__animated animate__${name}Out${capitalize(direction)}`
51
+ };
52
+ });
53
+ function handleBeforeEnter() {
54
+ emit("beforeEnter");
55
+ }
56
+ function handleAfterEnter() {
57
+ emit("afterEnter");
58
+ }
59
+ function handleEnterCancelled() {
60
+ emit("enterCancelled");
61
+ }
62
+ function handleBeforeLeave() {
63
+ emit("beforeLeave");
64
+ }
65
+ function handleAfterLeave() {
66
+ emit("afterLeave");
67
+ }
68
+ function handleLeaveCancelled() {
69
+ emit("leaveCancelled");
70
+ }
71
+ return (_ctx, _cache) => {
72
+ return __props.enabled && __props.direction ? (vue.openBlock(), vue.createBlock(vue.Transition, {
73
+ key: 0,
74
+ name: "custom-classes",
75
+ "enter-active-class": activeClass.value.enterActiveClass,
76
+ "leave-active-class": activeClass.value.leaveActiveClass,
77
+ onBeforeEnter: handleBeforeEnter,
78
+ onAfterEnter: handleAfterEnter,
79
+ onEnterCancelled: handleEnterCancelled,
80
+ onBeforeLeave: handleBeforeLeave,
81
+ onAfterLeave: handleAfterLeave,
82
+ onLeaveCancelled: handleLeaveCancelled
83
+ }, {
84
+ default: vue.withCtx(() => [
85
+ (__props.mode === "if" ? visible.value : true) ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", {
86
+ key: 0,
87
+ style: vue.normalizeStyle({ "--animate-duration": `${__props.duration}ms` })
88
+ }, [
89
+ vue.renderSlot(_ctx.$slots, "default")
90
+ ], 4)), [
91
+ [vue.vShow, __props.mode === "show" ? visible.value : true]
92
+ ]) : vue.createCommentVNode("", true)
93
+ ]),
94
+ _: 3
95
+ }, 8, ["enter-active-class", "leave-active-class"])) : vue.renderSlot(_ctx.$slots, "default", { key: 1 });
96
+ };
97
+ }
98
+ }));
99
+ exports.default = _sfc_main;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const AnimatedTransition_vue_vue_type_script_setup_true_lang = require("./AnimatedTransition.vue.js");
4
+ ;/* empty css */
5
+ exports.default = AnimatedTransition_vue_vue_type_script_setup_true_lang.default;
@@ -0,0 +1,4 @@
1
+ import { InstallWithSFC } from '../utils';
2
+ import { default as AnimatedTransition } from './AnimatedTransition.vue';
3
+ export declare const JkyAnimatedTransition: InstallWithSFC<typeof AnimatedTransition>;
4
+ export default JkyAnimatedTransition;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const AnimatedTransition_vue_vue_type_script_setup_true_lang = require("./AnimatedTransition.vue.js");
4
+ ;/* empty css */
5
+ const withInstall = require("../utils/with-install.js");
6
+ const JkyAnimatedTransition = withInstall.installWithSFC(AnimatedTransition_vue_vue_type_script_setup_true_lang.default);
7
+ exports.JkyAnimatedTransition = JkyAnimatedTransition;
8
+ exports.default = JkyAnimatedTransition;
@@ -0,0 +1,6 @@
1
+
2
+ /* 禁止使用 @apply,所有 TailwindCSS 工具类直接写在 class 中 */
3
+ /* 样式文件仅用于定义组件特定的自定义纯 CSS 样式 */
4
+ .jky-animated-transition {
5
+ /* 动画组件不需要额外样式,所有样式由 animate.css 提供 */
6
+ }
@@ -1,6 +1,7 @@
1
1
  import { Plugin } from 'vue';
2
2
  export * from './add-input';
3
3
  export * from './amap';
4
+ export * from './animated';
4
5
  export * from './button';
5
6
  export * from './button-nav';
6
7
  export * from './code-mirror-editor';
@@ -2,40 +2,42 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const index$4 = require("./add-input/index.js");
4
4
  const index$1 = require("./amap/index.js");
5
- const index$5 = require("./button/index.js");
6
- const index$6 = require("./button-nav/index.js");
7
- const index$7 = require("./code-mirror-editor/index.js");
8
- const index$8 = require("./draggable/index.js");
5
+ const index$5 = require("./animated/index.js");
6
+ const index$6 = require("./button/index.js");
7
+ const index$7 = require("./button-nav/index.js");
8
+ const index$8 = require("./code-mirror-editor/index.js");
9
+ const index$9 = require("./draggable/index.js");
9
10
  const index$2 = require("./form/index.js");
10
- const index$9 = require("./menu/index.js");
11
- const index$a = require("./modal/index.js");
12
- const index$b = require("./page-header/index.js");
13
- const index$c = require("./page-layout/index.js");
11
+ const index$a = require("./menu/index.js");
12
+ const index$b = require("./modal/index.js");
13
+ const index$c = require("./page-header/index.js");
14
+ const index$d = require("./page-layout/index.js");
14
15
  const index$3 = require("./page-table/index.js");
15
- const index$d = require("./page-table-v2/index.js");
16
- const index$e = require("./rich-editor/index.js");
17
- const index$f = require("./say-hello/index.js");
18
- const index$g = require("./tabs/index.js");
16
+ const index$e = require("./page-table-v2/index.js");
17
+ const index$f = require("./rich-editor/index.js");
18
+ const index$g = require("./say-hello/index.js");
19
+ const index$h = require("./tabs/index.js");
19
20
  const components = [
20
- index$f.JkySayHello,
21
- index$5.JkyButton,
22
- index$6.JkyButtonNav,
23
- index$b.JkyPageHeader,
24
- index$9.JkyMenu,
21
+ index$g.JkySayHello,
22
+ index$6.JkyButton,
23
+ index$7.JkyButtonNav,
24
+ index$c.JkyPageHeader,
25
+ index$a.JkyMenu,
25
26
  index$2.JkyForm,
26
27
  index$2.JkyFormItem,
27
28
  index$2.JkyAMapPickerItem,
28
- index$7.JkyCodeMirrorEditor,
29
+ index$8.JkyCodeMirrorEditor,
29
30
  index$4.JkyAddInput,
30
- index$e.JkyRichEditor,
31
+ index$f.JkyRichEditor,
31
32
  index$3.JkyPageTable,
32
- index$d.JkyPageTableV2,
33
- index$c.JkyPageLayout,
34
- index$g.JkyTabs,
35
- index$a.JkyModal,
33
+ index$e.JkyPageTableV2,
34
+ index$d.JkyPageLayout,
35
+ index$h.JkyTabs,
36
+ index$b.JkyModal,
36
37
  index$1.JkyAMap,
37
38
  index$1.JkyAMapPicker,
38
- index$8.JkyDraggable
39
+ index$9.JkyDraggable,
40
+ index$5.JkyAnimatedTransition
39
41
  ];
40
42
  exports.JkyAddInput = index$4.JkyAddInput;
41
43
  exports.JkyAClusterMarker = index$1.JkyAClusterMarker;
@@ -43,22 +45,23 @@ exports.JkyAMap = index$1.JkyAMap;
43
45
  exports.JkyAMapPicker = index$1.JkyAMapPicker;
44
46
  exports.JkyAMarker = index$1.JkyAMarker;
45
47
  exports.JkyATrackPlayback = index$1.JkyATrackPlayback;
46
- exports.JkyButton = index$5.JkyButton;
47
- exports.JkyButtonNav = index$6.JkyButtonNav;
48
- exports.JkyCodeMirrorEditor = index$7.JkyCodeMirrorEditor;
49
- exports.JkyDraggable = index$8.JkyDraggable;
48
+ exports.JkyAnimatedTransition = index$5.JkyAnimatedTransition;
49
+ exports.JkyButton = index$6.JkyButton;
50
+ exports.JkyButtonNav = index$7.JkyButtonNav;
51
+ exports.JkyCodeMirrorEditor = index$8.JkyCodeMirrorEditor;
52
+ exports.JkyDraggable = index$9.JkyDraggable;
50
53
  exports.JkyAMapPickerItem = index$2.JkyAMapPickerItem;
51
54
  exports.JkyForm = index$2.JkyForm;
52
55
  exports.JkyFormItem = index$2.JkyFormItem;
53
- exports.JkyMenu = index$9.JkyMenu;
54
- exports.JkyModal = index$a.JkyModal;
55
- exports.JkyPageHeader = index$b.JkyPageHeader;
56
- exports.JkyPageLayout = index$c.JkyPageLayout;
56
+ exports.JkyMenu = index$a.JkyMenu;
57
+ exports.JkyModal = index$b.JkyModal;
58
+ exports.JkyPageHeader = index$c.JkyPageHeader;
59
+ exports.JkyPageLayout = index$d.JkyPageLayout;
57
60
  exports.JkyActionColumn = index$3.JkyActionColumn;
58
61
  exports.JkyPageTable = index$3.JkyPageTable;
59
62
  exports.JkyPageTableColumn = index$3.JkyPageTableColumn;
60
- exports.JkyPageTableV2 = index$d.JkyPageTableV2;
61
- exports.JkyRichEditor = index$e.JkyRichEditor;
62
- exports.JkySayHello = index$f.JkySayHello;
63
- exports.JkyTabs = index$g.JkyTabs;
63
+ exports.JkyPageTableV2 = index$e.JkyPageTableV2;
64
+ exports.JkyRichEditor = index$f.JkyRichEditor;
65
+ exports.JkySayHello = index$g.JkySayHello;
66
+ exports.JkyTabs = index$h.JkyTabs;
64
67
  exports.components = components;
package/dist/lib/index.js CHANGED
@@ -14,18 +14,19 @@ const index$1 = require("./amap/index.js");
14
14
  const index$2 = require("./form/index.js");
15
15
  const index$3 = require("./page-table/index.js");
16
16
  const index$4 = require("./add-input/index.js");
17
- const index$5 = require("./button/index.js");
18
- const index$6 = require("./button-nav/index.js");
19
- const index$7 = require("./code-mirror-editor/index.js");
20
- const index$8 = require("./draggable/index.js");
21
- const index$9 = require("./menu/index.js");
22
- const index$a = require("./modal/index.js");
23
- const index$b = require("./page-header/index.js");
24
- const index$c = require("./page-layout/index.js");
25
- const index$d = require("./page-table-v2/index.js");
26
- const index$e = require("./rich-editor/index.js");
27
- const index$f = require("./say-hello/index.js");
28
- const index$g = require("./tabs/index.js");
17
+ const index$5 = require("./animated/index.js");
18
+ const index$6 = require("./button/index.js");
19
+ const index$7 = require("./button-nav/index.js");
20
+ const index$8 = require("./code-mirror-editor/index.js");
21
+ const index$9 = require("./draggable/index.js");
22
+ const index$a = require("./menu/index.js");
23
+ const index$b = require("./modal/index.js");
24
+ const index$c = require("./page-header/index.js");
25
+ const index$d = require("./page-layout/index.js");
26
+ const index$e = require("./page-table-v2/index.js");
27
+ const index$f = require("./rich-editor/index.js");
28
+ const index$g = require("./say-hello/index.js");
29
+ const index$h = require("./tabs/index.js");
29
30
  const createTabsGuard = require("./tabs/createTabsGuard.js");
30
31
  const useTabsStore = require("./tabs/useTabsStore.js");
31
32
  const installer = installer$1.createInstaller(components.components);
@@ -49,18 +50,19 @@ exports.JkyActionColumn = index$3.JkyActionColumn;
49
50
  exports.JkyPageTable = index$3.JkyPageTable;
50
51
  exports.JkyPageTableColumn = index$3.JkyPageTableColumn;
51
52
  exports.JkyAddInput = index$4.JkyAddInput;
52
- exports.JkyButton = index$5.JkyButton;
53
- exports.JkyButtonNav = index$6.JkyButtonNav;
54
- exports.JkyCodeMirrorEditor = index$7.JkyCodeMirrorEditor;
55
- exports.JkyDraggable = index$8.JkyDraggable;
56
- exports.JkyMenu = index$9.JkyMenu;
57
- exports.JkyModal = index$a.JkyModal;
58
- exports.JkyPageHeader = index$b.JkyPageHeader;
59
- exports.JkyPageLayout = index$c.JkyPageLayout;
60
- exports.JkyPageTableV2 = index$d.JkyPageTableV2;
61
- exports.JkyRichEditor = index$e.JkyRichEditor;
62
- exports.JkySayHello = index$f.JkySayHello;
63
- exports.JkyTabs = index$g.JkyTabs;
53
+ exports.JkyAnimatedTransition = index$5.JkyAnimatedTransition;
54
+ exports.JkyButton = index$6.JkyButton;
55
+ exports.JkyButtonNav = index$7.JkyButtonNav;
56
+ exports.JkyCodeMirrorEditor = index$8.JkyCodeMirrorEditor;
57
+ exports.JkyDraggable = index$9.JkyDraggable;
58
+ exports.JkyMenu = index$a.JkyMenu;
59
+ exports.JkyModal = index$b.JkyModal;
60
+ exports.JkyPageHeader = index$c.JkyPageHeader;
61
+ exports.JkyPageLayout = index$d.JkyPageLayout;
62
+ exports.JkyPageTableV2 = index$e.JkyPageTableV2;
63
+ exports.JkyRichEditor = index$f.JkyRichEditor;
64
+ exports.JkySayHello = index$g.JkySayHello;
65
+ exports.JkyTabs = index$h.JkyTabs;
64
66
  exports.createTabsGuard = createTabsGuard.createTabsGuard;
65
67
  exports.createTabsStore = useTabsStore.createTabsStore;
66
68
  exports.default = installer;
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const version = "0.0.142";
3
+ const version = "0.0.144";
4
4
  exports.version = version;
@@ -1,2 +1,6 @@
1
1
  import { ComponentResolver } from 'unplugin-vue-components';
2
- export declare function JkyComponentLibResolver(): ComponentResolver;
2
+ export interface JkyComponentLibResolverOptions {
3
+ /** 不自动加载样式的组件白名单(组件名,不带 Jky 前缀) */
4
+ excludeStyleList?: string[];
5
+ }
6
+ export declare function JkyComponentLibResolver(options?: JkyComponentLibResolverOptions): ComponentResolver;
@@ -1,15 +1,36 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- function JkyComponentLibResolver() {
3
+ const defaultExcludeStyleList = [
4
+ // AMap 相关子组件,共用 amap 目录的样式
5
+ "AMapPicker",
6
+ "AClusterMarker",
7
+ "AMarker",
8
+ "ATrackPlayback",
9
+ // Form 相关子组件,共用 form 目录的样式
10
+ "FormItem",
11
+ "AMapPickerItem"
12
+ ];
13
+ function JkyComponentLibResolver(options = {}) {
14
+ const { excludeStyleList = [] } = options;
15
+ const excludeStyleSet = /* @__PURE__ */ new Set([...defaultExcludeStyleList, ...excludeStyleList]);
4
16
  return {
5
17
  type: "component",
6
18
  resolve: (name) => {
7
19
  if (name.match(/^Jky[A-Z]/)) {
20
+ const componentName = name.replace("Jky", "");
21
+ const kebabName = componentName.replace(/([A-Z])/g, "-$1").replace(/^-/, "").toLowerCase();
22
+ if (excludeStyleSet.has(componentName)) {
23
+ return {
24
+ name,
25
+ from: "jky-component-lib"
26
+ // 白名单中的组件不自动加载样式
27
+ };
28
+ }
8
29
  return {
9
30
  name,
10
31
  from: "jky-component-lib",
11
32
  sideEffects: [
12
- `jky-component-lib/dist/es/${name.replace("Jky", "").replace(/([A-Z])/g, "-$1").replace(/^-/, "").toLowerCase()}/style.css`
33
+ `jky-component-lib/dist/es/${kebabName}/style.css`
13
34
  ]
14
35
  };
15
36
  }
@@ -91,6 +91,7 @@
91
91
  --color-yellow-50: oklch(98.7% .026 102.212);
92
92
  --color-yellow-100: oklch(97.3% .071 103.193);
93
93
  --color-yellow-200: oklch(94.5% .129 101.54);
94
+ --color-yellow-400: oklch(85.2% .199 91.936);
94
95
  --color-yellow-500: oklch(79.5% .184 86.047);
95
96
  --color-yellow-600: oklch(68.1% .162 75.834);
96
97
  --color-yellow-700: oklch(55.4% .135 66.442);
@@ -1826,6 +1827,14 @@
1826
1827
  height: calc(var(--spacing) * 20);
1827
1828
  }
1828
1829
 
1830
+ .h-32 {
1831
+ height: calc(var(--spacing) * 32);
1832
+ }
1833
+
1834
+ .h-40 {
1835
+ height: calc(var(--spacing) * 40);
1836
+ }
1837
+
1829
1838
  .h-64 {
1830
1839
  height: calc(var(--spacing) * 64);
1831
1840
  }
@@ -1898,6 +1907,14 @@
1898
1907
  width: calc(var(--spacing) * 20);
1899
1908
  }
1900
1909
 
1910
+ .w-32 {
1911
+ width: calc(var(--spacing) * 32);
1912
+ }
1913
+
1914
+ .w-40 {
1915
+ width: calc(var(--spacing) * 40);
1916
+ }
1917
+
1901
1918
  .w-60 {
1902
1919
  width: calc(var(--spacing) * 60);
1903
1920
  }
@@ -2570,6 +2587,11 @@
2570
2587
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2571
2588
  }
2572
2589
 
2590
+ .from-yellow-400 {
2591
+ --tw-gradient-from: var(--color-yellow-400);
2592
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2593
+ }
2594
+
2573
2595
  .via-blue-700 {
2574
2596
  --tw-gradient-via: var(--color-blue-700);
2575
2597
  --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
@@ -2617,11 +2639,21 @@
2617
2639
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2618
2640
  }
2619
2641
 
2642
+ .to-orange-500 {
2643
+ --tw-gradient-to: var(--color-orange-500);
2644
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2645
+ }
2646
+
2620
2647
  .to-pink-500 {
2621
2648
  --tw-gradient-to: var(--color-pink-500);
2622
2649
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2623
2650
  }
2624
2651
 
2652
+ .to-purple-500 {
2653
+ --tw-gradient-to: var(--color-purple-500);
2654
+ --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
2655
+ }
2656
+
2625
2657
  .to-purple-600 {
2626
2658
  --tw-gradient-to: var(--color-purple-600);
2627
2659
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "jky-component-lib",
3
3
  "type": "module",
4
- "version": "0.0.142",
4
+ "version": "0.0.144",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -88,6 +88,7 @@
88
88
  "@element-plus/icons-vue": "^2.3.2",
89
89
  "@tinymce/tinymce-vue": "^6.0.0",
90
90
  "@vueuse/core": "^14.2.1",
91
+ "animate.css": "^4.1.1",
91
92
  "codemirror": "^6.0.0",
92
93
  "element-plus": "^2.13.6",
93
94
  "entities": "^6.0.0",
@@ -125,6 +126,7 @@
125
126
  "@vue/test-utils": "^2.4.6",
126
127
  "@vueuse/core": "^14.2.1",
127
128
  "ajv": "^8.18.0",
129
+ "animate.css": "^4.1.1",
128
130
  "bumpp": "^10.1.0",
129
131
  "bun": "^1.3.11",
130
132
  "codemirror": "^6.0.2",