@easy-editor/materials-dashboard-text 0.0.10 → 0.0.12
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/.vite/plugins/vite-plugin-external-deps.ts +224 -0
- package/CHANGELOG.md +12 -0
- package/dist/component.esm.js +123 -29
- package/dist/component.esm.js.map +1 -1
- package/dist/component.js +123 -28
- package/dist/component.js.map +1 -1
- package/dist/component.min.js +1 -1
- package/dist/component.min.js.map +1 -1
- package/dist/index.cjs +363 -76
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +363 -76
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +364 -77
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/meta.esm.js +248 -92
- package/dist/meta.esm.js.map +1 -1
- package/dist/meta.js +252 -96
- package/dist/meta.js.map +1 -1
- package/dist/meta.min.js +1 -1
- package/dist/meta.min.js.map +1 -1
- package/dist/src/component.d.ts +48 -0
- package/dist/src/configure.d.ts +6 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/meta.d.ts +6 -0
- package/dist/src/snippets.d.ts +6 -0
- package/package.json +3 -2
- package/vite.config.ts +16 -26
- package/dist/component.d.ts +0 -14
- package/dist/configure.d.ts +0 -3
- package/dist/index.d.ts +0 -6
- package/dist/meta.d.ts +0 -3
- package/dist/snippets.d.ts +0 -3
- /package/dist/{constants.d.ts → src/constants.d.ts} +0 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vite Plugin: External Dependencies
|
|
3
|
+
* 外部依赖插件 - 在开发模式下将 React/ReactDOM 外部化
|
|
4
|
+
*
|
|
5
|
+
* 用途:
|
|
6
|
+
* - 防止 Vite 将 React/ReactDOM 打包进开发服务器的模块
|
|
7
|
+
* - 强制使用父应用(dashboard)提供的 React 实例
|
|
8
|
+
* - 解决双 React 实例导致的 "Invalid hook call" 错误
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { Plugin } from 'vite'
|
|
12
|
+
|
|
13
|
+
interface ExternalDepsOptions {
|
|
14
|
+
/** 需要外部化的依赖列表 */
|
|
15
|
+
externals?: string[]
|
|
16
|
+
/** 全局变量映射 */
|
|
17
|
+
globals?: Record<string, string>
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const DEFAULT_EXTERNALS = ['react', 'react-dom', 'react/jsx-runtime']
|
|
21
|
+
|
|
22
|
+
const DEFAULT_GLOBALS: Record<string, string> = {
|
|
23
|
+
react: 'React',
|
|
24
|
+
'react-dom': 'ReactDOM',
|
|
25
|
+
'react/jsx-runtime': 'jsxRuntime',
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 创建外部依赖插件
|
|
30
|
+
*/
|
|
31
|
+
export function externalDeps(options: ExternalDepsOptions = {}): Plugin {
|
|
32
|
+
const externals = options.externals || DEFAULT_EXTERNALS
|
|
33
|
+
const globals = { ...DEFAULT_GLOBALS, ...options.globals }
|
|
34
|
+
|
|
35
|
+
// 虚拟模块前缀
|
|
36
|
+
const VIRTUAL_PREFIX = '\0virtual:external:'
|
|
37
|
+
|
|
38
|
+
return {
|
|
39
|
+
name: 'vite-plugin-external-deps',
|
|
40
|
+
enforce: 'pre',
|
|
41
|
+
|
|
42
|
+
// 在开发模式下拦截模块解析
|
|
43
|
+
resolveId(id) {
|
|
44
|
+
// 检查是否是需要外部化的依赖
|
|
45
|
+
if (externals.includes(id)) {
|
|
46
|
+
// 返回虚拟模块 ID(\0 前缀告诉 Vite 这是虚拟模块)
|
|
47
|
+
return VIRTUAL_PREFIX + id
|
|
48
|
+
}
|
|
49
|
+
return null
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
// 加载外部模块的代理代码
|
|
53
|
+
load(id) {
|
|
54
|
+
// 检查是否是虚拟外部模块
|
|
55
|
+
if (!id.startsWith(VIRTUAL_PREFIX)) {
|
|
56
|
+
return null
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const moduleName = id.slice(VIRTUAL_PREFIX.length)
|
|
60
|
+
const globalName = globals[moduleName]
|
|
61
|
+
|
|
62
|
+
if (!globalName) {
|
|
63
|
+
throw new Error(
|
|
64
|
+
`[vite-plugin-external-deps] No global mapping found for "${moduleName}". ` +
|
|
65
|
+
`Please add it to the globals option.`
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// 对于 react,导出常用的命名导出
|
|
70
|
+
if (moduleName === 'react') {
|
|
71
|
+
return `
|
|
72
|
+
// External module: react -> window.${globalName}
|
|
73
|
+
const React = window.${globalName};
|
|
74
|
+
if (!React) {
|
|
75
|
+
throw new Error(
|
|
76
|
+
'External dependency "react" (window.${globalName}) is not available. ' +
|
|
77
|
+
'Make sure the parent application has loaded it globally.'
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// 导出默认导出
|
|
82
|
+
export default React;
|
|
83
|
+
|
|
84
|
+
// 导出常用的命名导出
|
|
85
|
+
export const {
|
|
86
|
+
useState,
|
|
87
|
+
useEffect,
|
|
88
|
+
useContext,
|
|
89
|
+
useReducer,
|
|
90
|
+
useCallback,
|
|
91
|
+
useMemo,
|
|
92
|
+
useRef,
|
|
93
|
+
useImperativeHandle,
|
|
94
|
+
useLayoutEffect,
|
|
95
|
+
useDebugValue,
|
|
96
|
+
useDeferredValue,
|
|
97
|
+
useTransition,
|
|
98
|
+
useId,
|
|
99
|
+
useSyncExternalStore,
|
|
100
|
+
Fragment,
|
|
101
|
+
StrictMode,
|
|
102
|
+
Suspense,
|
|
103
|
+
createElement,
|
|
104
|
+
createContext,
|
|
105
|
+
forwardRef,
|
|
106
|
+
lazy,
|
|
107
|
+
memo,
|
|
108
|
+
startTransition,
|
|
109
|
+
Component,
|
|
110
|
+
PureComponent,
|
|
111
|
+
Children,
|
|
112
|
+
cloneElement,
|
|
113
|
+
isValidElement,
|
|
114
|
+
} = React;
|
|
115
|
+
`
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// 对于 react-dom,导出常用的命名导出
|
|
119
|
+
if (moduleName === 'react-dom') {
|
|
120
|
+
return `
|
|
121
|
+
// External module: react-dom -> window.${globalName}
|
|
122
|
+
const ReactDOM = window.${globalName};
|
|
123
|
+
if (!ReactDOM) {
|
|
124
|
+
throw new Error(
|
|
125
|
+
'External dependency "react-dom" (window.${globalName}) is not available. ' +
|
|
126
|
+
'Make sure the parent application has loaded it globally.'
|
|
127
|
+
);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// 导出默认导出
|
|
131
|
+
export default ReactDOM;
|
|
132
|
+
|
|
133
|
+
// 导出常用的命名导出
|
|
134
|
+
export const {
|
|
135
|
+
createRoot,
|
|
136
|
+
hydrateRoot,
|
|
137
|
+
render,
|
|
138
|
+
hydrate,
|
|
139
|
+
unmountComponentAtNode,
|
|
140
|
+
findDOMNode,
|
|
141
|
+
flushSync,
|
|
142
|
+
} = ReactDOM;
|
|
143
|
+
`
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// 对于 react/jsx-runtime
|
|
147
|
+
if (moduleName === 'react/jsx-runtime') {
|
|
148
|
+
return `
|
|
149
|
+
// External module: react/jsx-runtime -> window.${globalName}
|
|
150
|
+
const jsxRuntime = window.${globalName};
|
|
151
|
+
if (!jsxRuntime) {
|
|
152
|
+
throw new Error(
|
|
153
|
+
'External dependency "react/jsx-runtime" (window.${globalName}) is not available. ' +
|
|
154
|
+
'Make sure the parent application has loaded it globally.'
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// 导出 JSX 运行时函数
|
|
159
|
+
export const { jsx, jsxs, Fragment } = jsxRuntime;
|
|
160
|
+
export default jsxRuntime;
|
|
161
|
+
`
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// 对于 @easy-editor/core
|
|
165
|
+
if (moduleName === '@easy-editor/core') {
|
|
166
|
+
return `
|
|
167
|
+
// External module: @easy-editor/core -> window.${globalName}
|
|
168
|
+
const EasyEditorCore = window.${globalName};
|
|
169
|
+
if (!EasyEditorCore) {
|
|
170
|
+
throw new Error(
|
|
171
|
+
'External dependency "@easy-editor/core" (window.${globalName}) is not available. ' +
|
|
172
|
+
'Make sure the parent application has loaded it globally.'
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// 导出整个模块
|
|
177
|
+
export default EasyEditorCore;
|
|
178
|
+
export * from '\0virtual:external:@easy-editor/core:named';
|
|
179
|
+
`
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// 处理 @easy-editor/core 的命名导出
|
|
183
|
+
if (id === '\0virtual:external:@easy-editor/core:named') {
|
|
184
|
+
return `
|
|
185
|
+
const EasyEditorCore = window.${globals['@easy-editor/core']};
|
|
186
|
+
// 尝试导出所有属性
|
|
187
|
+
const keys = Object.keys(EasyEditorCore || {});
|
|
188
|
+
const exports = {};
|
|
189
|
+
keys.forEach(key => {
|
|
190
|
+
exports[key] = EasyEditorCore[key];
|
|
191
|
+
});
|
|
192
|
+
export default exports;
|
|
193
|
+
`
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// 默认情况:简单的全局变量代理
|
|
197
|
+
return `
|
|
198
|
+
// External module: ${moduleName} -> window.${globalName}
|
|
199
|
+
const mod = window.${globalName};
|
|
200
|
+
if (!mod) {
|
|
201
|
+
throw new Error(
|
|
202
|
+
'External dependency "${moduleName}" (window.${globalName}) is not available. ' +
|
|
203
|
+
'Make sure the parent application has loaded it globally.'
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
export default mod;
|
|
207
|
+
`
|
|
208
|
+
},
|
|
209
|
+
|
|
210
|
+
// 配置 Rollup 外部化(用于构建)
|
|
211
|
+
config(config) {
|
|
212
|
+
return {
|
|
213
|
+
build: {
|
|
214
|
+
rollupOptions: {
|
|
215
|
+
external: externals,
|
|
216
|
+
output: {
|
|
217
|
+
globals,
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
}
|
|
224
|
+
}
|
package/CHANGELOG.md
CHANGED
package/dist/component.esm.js
CHANGED
|
@@ -1,40 +1,134 @@
|
|
|
1
|
-
/* @easy-editor/materials-dashboard-text v0.0.
|
|
1
|
+
/* @easy-editor/materials-dashboard-text v0.0.11 (component, esm) */
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
4
|
+
function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
|
|
5
|
+
|
|
6
|
+
function cn(...inputs) {
|
|
7
|
+
return clsx(inputs);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function styleInject(css, ref) {
|
|
11
|
+
if (ref === void 0) ref = {};
|
|
12
|
+
var insertAt = ref.insertAt;
|
|
13
|
+
if (typeof document === 'undefined') {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
|
17
|
+
var style = document.createElement('style');
|
|
18
|
+
style.type = 'text/css';
|
|
19
|
+
if (insertAt === 'top') {
|
|
20
|
+
if (head.firstChild) {
|
|
21
|
+
head.insertBefore(style, head.firstChild);
|
|
22
|
+
} else {
|
|
23
|
+
head.appendChild(style);
|
|
24
|
+
}
|
|
25
|
+
} else {
|
|
26
|
+
head.appendChild(style);
|
|
27
|
+
}
|
|
28
|
+
if (style.styleSheet) {
|
|
29
|
+
style.styleSheet.cssText = css;
|
|
30
|
+
} else {
|
|
31
|
+
style.appendChild(document.createTextNode(css));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var css_248z = ".component-module__container___VbZSk{display:flex;height:100%;width:100%}.component-module__text___nFUOn{display:inline-block;word-break:break-word}.component-module__link___20asF{cursor:pointer;text-decoration:none;transition:opacity .2s ease}.component-module__link___20asF:hover{opacity:.8}.component-module__underline___0oAJz{text-decoration:underline}.component-module__alignLeft___IOvpO{justify-content:flex-start;text-align:left}.component-module__alignCenter___EIwIC{justify-content:center;text-align:center}.component-module__alignRight___p3ReL{justify-content:flex-end;text-align:right}.component-module__valignTop___-5DmK{align-items:flex-start}.component-module__valignMiddle___i0are{align-items:center}.component-module__valignBottom___97zzw{align-items:flex-end}";
|
|
36
|
+
var styles = {"container":"component-module__container___VbZSk","text":"component-module__text___nFUOn","link":"component-module__link___20asF","underline":"component-module__underline___0oAJz","alignLeft":"component-module__alignLeft___IOvpO","alignCenter":"component-module__alignCenter___EIwIC","alignRight":"component-module__alignRight___p3ReL","valignTop":"component-module__valignTop___-5DmK","valignMiddle":"component-module__valignMiddle___i0are","valignBottom":"component-module__valignBottom___97zzw"};
|
|
37
|
+
styleInject(css_248z);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Text Component
|
|
41
|
+
* 文本组件 - 支持普通文本、链接、标题、发光效果
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
const getAlignClass = align => {
|
|
45
|
+
switch (align) {
|
|
46
|
+
case 'left':
|
|
47
|
+
return styles.alignLeft;
|
|
48
|
+
case 'center':
|
|
49
|
+
return styles.alignCenter;
|
|
50
|
+
case 'right':
|
|
51
|
+
return styles.alignRight;
|
|
52
|
+
default:
|
|
53
|
+
return styles.alignLeft;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const getValignClass = align => {
|
|
57
|
+
switch (align) {
|
|
58
|
+
case 'top':
|
|
59
|
+
return styles.valignTop;
|
|
60
|
+
case 'middle':
|
|
61
|
+
return styles.valignMiddle;
|
|
62
|
+
case 'bottom':
|
|
63
|
+
return styles.valignBottom;
|
|
64
|
+
default:
|
|
65
|
+
return styles.valignMiddle;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const Text = ({
|
|
69
|
+
ref,
|
|
70
|
+
content = '文本内容',
|
|
71
|
+
fontSize = 16,
|
|
72
|
+
fontWeight = 'normal',
|
|
73
|
+
fontFamily = 'inherit',
|
|
74
|
+
color = '#ffffff',
|
|
75
|
+
textAlign = 'left',
|
|
76
|
+
verticalAlign = 'middle',
|
|
77
|
+
lineHeight = 1.5,
|
|
78
|
+
letterSpacing = 0,
|
|
79
|
+
isLink = false,
|
|
80
|
+
href = '',
|
|
81
|
+
target = '_blank',
|
|
82
|
+
underline = false,
|
|
83
|
+
glowEnable = false,
|
|
84
|
+
glowColor = '#00d4ff',
|
|
85
|
+
glowIntensity = 1,
|
|
86
|
+
style: externalStyle
|
|
87
|
+
}) => {
|
|
88
|
+
// 计算发光效果
|
|
89
|
+
const textShadow = glowEnable ? `0 0 ${10 * glowIntensity}px ${glowColor}, 0 0 ${20 * glowIntensity}px ${glowColor}, 0 0 ${30 * glowIntensity}px ${glowColor}` : undefined;
|
|
90
|
+
const textStyle = {
|
|
91
|
+
fontSize,
|
|
21
92
|
fontWeight,
|
|
22
|
-
|
|
93
|
+
fontFamily,
|
|
94
|
+
color,
|
|
23
95
|
lineHeight,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
27
|
-
const mergedStyle = {
|
|
28
|
-
...internalStyle,
|
|
29
|
-
...externalStyle
|
|
96
|
+
letterSpacing,
|
|
97
|
+
textShadow
|
|
30
98
|
};
|
|
99
|
+
const containerClass = cn(styles.container, getAlignClass(textAlign), getValignClass(verticalAlign));
|
|
100
|
+
const textClass = cn(styles.text, isLink && styles.link, underline && styles.underline);
|
|
101
|
+
|
|
102
|
+
// 链接模式
|
|
103
|
+
if (isLink && href) {
|
|
104
|
+
const relValue = target === '_blank' ? 'noopener noreferrer' : '';
|
|
105
|
+
return /*#__PURE__*/jsx("div", {
|
|
106
|
+
className: containerClass,
|
|
107
|
+
ref: ref,
|
|
108
|
+
style: externalStyle,
|
|
109
|
+
children: /*#__PURE__*/jsx("a", {
|
|
110
|
+
className: textClass,
|
|
111
|
+
href: href,
|
|
112
|
+
rel: relValue,
|
|
113
|
+
style: textStyle,
|
|
114
|
+
target: target,
|
|
115
|
+
children: content
|
|
116
|
+
})
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// 普通文本
|
|
31
121
|
return /*#__PURE__*/jsx("div", {
|
|
32
|
-
className:
|
|
122
|
+
className: containerClass,
|
|
33
123
|
ref: ref,
|
|
34
|
-
style:
|
|
35
|
-
children:
|
|
124
|
+
style: externalStyle,
|
|
125
|
+
children: /*#__PURE__*/jsx("span", {
|
|
126
|
+
className: textClass,
|
|
127
|
+
style: textStyle,
|
|
128
|
+
children: content
|
|
129
|
+
})
|
|
36
130
|
});
|
|
37
131
|
};
|
|
38
132
|
|
|
39
|
-
export { Text as default };
|
|
133
|
+
export { Text, Text as default };
|
|
40
134
|
//# sourceMappingURL=component.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.esm.js","sources":["../src/component.tsx"],"sourcesContent":["import type { CSSProperties, Ref } from 'react'\n\
|
|
1
|
+
{"version":3,"file":"component.esm.js","sources":["../../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../../shared/src/lib/utils.ts","../../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/component.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx, type ClassValue } from 'clsx'\n\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs)\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/**\n * Text Component\n * 文本组件 - 支持普通文本、链接、标题、发光效果\n */\n\nimport type { CSSProperties, Ref } from 'react'\nimport { cn } from '@easy-editor/materials-shared'\nimport styles from './component.module.css'\n\nexport type TextAlign = 'left' | 'center' | 'right'\nexport type VerticalAlign = 'top' | 'middle' | 'bottom'\n\nexport interface TextProps {\n ref?: Ref<HTMLDivElement>\n /** 文本内容 */\n content?: string\n /** 字体大小 */\n fontSize?: number\n /** 字体粗细 */\n fontWeight?: number | 'normal' | 'bold'\n /** 字体家族 */\n fontFamily?: string\n /** 颜色 */\n color?: string\n /** 水平对齐 */\n textAlign?: TextAlign\n /** 垂直对齐 */\n verticalAlign?: VerticalAlign\n /** 行高 */\n lineHeight?: number\n /** 字间距 */\n letterSpacing?: number\n /** 是否为链接 */\n isLink?: boolean\n /** 链接地址 */\n href?: string\n /** 链接打开方式 */\n target?: '_self' | '_blank'\n /** 下划线 */\n underline?: boolean\n /** 发光效果 */\n glowEnable?: boolean\n /** 发光颜色 */\n glowColor?: string\n /** 发光强度 */\n glowIntensity?: number\n /** 显隐控制 */\n condition?: boolean\n /** 外部样式 */\n style?: CSSProperties\n}\n\nconst getAlignClass = (align: TextAlign): string => {\n switch (align) {\n case 'left':\n return styles.alignLeft\n case 'center':\n return styles.alignCenter\n case 'right':\n return styles.alignRight\n default:\n return styles.alignLeft\n }\n}\n\nconst getValignClass = (align: VerticalAlign): string => {\n switch (align) {\n case 'top':\n return styles.valignTop\n case 'middle':\n return styles.valignMiddle\n case 'bottom':\n return styles.valignBottom\n default:\n return styles.valignMiddle\n }\n}\n\nexport const Text: React.FC<TextProps> = ({\n ref,\n content = '文本内容',\n fontSize = 16,\n fontWeight = 'normal',\n fontFamily = 'inherit',\n color = '#ffffff',\n textAlign = 'left',\n verticalAlign = 'middle',\n lineHeight = 1.5,\n letterSpacing = 0,\n isLink = false,\n href = '',\n target = '_blank',\n underline = false,\n glowEnable = false,\n glowColor = '#00d4ff',\n glowIntensity = 1,\n style: externalStyle,\n}) => {\n // 计算发光效果\n const textShadow = glowEnable\n ? `0 0 ${10 * glowIntensity}px ${glowColor}, 0 0 ${20 * glowIntensity}px ${glowColor}, 0 0 ${30 * glowIntensity}px ${glowColor}`\n : undefined\n\n const textStyle: CSSProperties = {\n fontSize,\n fontWeight,\n fontFamily,\n color,\n lineHeight,\n letterSpacing,\n textShadow,\n }\n\n const containerClass = cn(styles.container, getAlignClass(textAlign), getValignClass(verticalAlign))\n\n const textClass = cn(styles.text, isLink && styles.link, underline && styles.underline)\n\n // 链接模式\n if (isLink && href) {\n const relValue = target === '_blank' ? 'noopener noreferrer' : ''\n return (\n <div className={containerClass} ref={ref} style={externalStyle}>\n <a className={textClass} href={href} rel={relValue} style={textStyle} target={target}>\n {content}\n </a>\n </div>\n )\n }\n\n // 普通文本\n return (\n <div className={containerClass} ref={ref} style={externalStyle}>\n <span className={textClass} style={textStyle}>\n {content}\n </span>\n </div>\n )\n}\n\nexport default Text\n"],"names":["cn","inputs","clsx","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","getAlignClass","align","styles","alignLeft","alignCenter","alignRight","getValignClass","valignTop","valignMiddle","valignBottom","Text","content","fontSize","fontWeight","fontFamily","color","textAlign","verticalAlign","lineHeight","letterSpacing","isLink","href","target","underline","glowEnable","glowColor","glowIntensity","externalStyle","textShadow","undefined","textStyle","containerClass","container","textClass","text","link","relValue","_jsx","className","children","rel"],"mappings":"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","x_google_ignoreList":[0,2]}
|
package/dist/component.js
CHANGED
|
@@ -1,45 +1,140 @@
|
|
|
1
|
-
/* @easy-editor/materials-dashboard-text v0.0.
|
|
1
|
+
/* @easy-editor/materials-dashboard-text v0.0.11 (component) */
|
|
2
2
|
(function (global, factory) {
|
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react/jsx-runtime')) :
|
|
4
4
|
typeof define === 'function' && define.amd ? define(['exports', 'react/jsx-runtime'], factory) :
|
|
5
5
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.EasyEditorMaterialsTextComponent = {}, global.jsxRuntime));
|
|
6
6
|
})(this, (function (exports, jsxRuntime) { 'use strict';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
8
|
+
function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
|
|
9
|
+
|
|
10
|
+
function cn(...inputs) {
|
|
11
|
+
return clsx(inputs);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function styleInject(css, ref) {
|
|
15
|
+
if (ref === void 0) ref = {};
|
|
16
|
+
var insertAt = ref.insertAt;
|
|
17
|
+
if (typeof document === 'undefined') {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
var head = document.head || document.getElementsByTagName('head')[0];
|
|
21
|
+
var style = document.createElement('style');
|
|
22
|
+
style.type = 'text/css';
|
|
23
|
+
if (insertAt === 'top') {
|
|
24
|
+
if (head.firstChild) {
|
|
25
|
+
head.insertBefore(style, head.firstChild);
|
|
26
|
+
} else {
|
|
27
|
+
head.appendChild(style);
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
head.appendChild(style);
|
|
31
|
+
}
|
|
32
|
+
if (style.styleSheet) {
|
|
33
|
+
style.styleSheet.cssText = css;
|
|
34
|
+
} else {
|
|
35
|
+
style.appendChild(document.createTextNode(css));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
var css_248z = ".component-module__container___VbZSk{display:flex;height:100%;width:100%}.component-module__text___nFUOn{display:inline-block;word-break:break-word}.component-module__link___20asF{cursor:pointer;text-decoration:none;transition:opacity .2s ease}.component-module__link___20asF:hover{opacity:.8}.component-module__underline___0oAJz{text-decoration:underline}.component-module__alignLeft___IOvpO{justify-content:flex-start;text-align:left}.component-module__alignCenter___EIwIC{justify-content:center;text-align:center}.component-module__alignRight___p3ReL{justify-content:flex-end;text-align:right}.component-module__valignTop___-5DmK{align-items:flex-start}.component-module__valignMiddle___i0are{align-items:center}.component-module__valignBottom___97zzw{align-items:flex-end}";
|
|
40
|
+
var styles = {"container":"component-module__container___VbZSk","text":"component-module__text___nFUOn","link":"component-module__link___20asF","underline":"component-module__underline___0oAJz","alignLeft":"component-module__alignLeft___IOvpO","alignCenter":"component-module__alignCenter___EIwIC","alignRight":"component-module__alignRight___p3ReL","valignTop":"component-module__valignTop___-5DmK","valignMiddle":"component-module__valignMiddle___i0are","valignBottom":"component-module__valignBottom___97zzw"};
|
|
41
|
+
styleInject(css_248z);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Text Component
|
|
45
|
+
* 文本组件 - 支持普通文本、链接、标题、发光效果
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
const getAlignClass = align => {
|
|
49
|
+
switch (align) {
|
|
50
|
+
case 'left':
|
|
51
|
+
return styles.alignLeft;
|
|
52
|
+
case 'center':
|
|
53
|
+
return styles.alignCenter;
|
|
54
|
+
case 'right':
|
|
55
|
+
return styles.alignRight;
|
|
56
|
+
default:
|
|
57
|
+
return styles.alignLeft;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const getValignClass = align => {
|
|
61
|
+
switch (align) {
|
|
62
|
+
case 'top':
|
|
63
|
+
return styles.valignTop;
|
|
64
|
+
case 'middle':
|
|
65
|
+
return styles.valignMiddle;
|
|
66
|
+
case 'bottom':
|
|
67
|
+
return styles.valignBottom;
|
|
68
|
+
default:
|
|
69
|
+
return styles.valignMiddle;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const Text = ({
|
|
73
|
+
ref,
|
|
74
|
+
content = '文本内容',
|
|
75
|
+
fontSize = 16,
|
|
76
|
+
fontWeight = 'normal',
|
|
77
|
+
fontFamily = 'inherit',
|
|
78
|
+
color = '#ffffff',
|
|
79
|
+
textAlign = 'left',
|
|
80
|
+
verticalAlign = 'middle',
|
|
81
|
+
lineHeight = 1.5,
|
|
82
|
+
letterSpacing = 0,
|
|
83
|
+
isLink = false,
|
|
84
|
+
href = '',
|
|
85
|
+
target = '_blank',
|
|
86
|
+
underline = false,
|
|
87
|
+
glowEnable = false,
|
|
88
|
+
glowColor = '#00d4ff',
|
|
89
|
+
glowIntensity = 1,
|
|
90
|
+
style: externalStyle
|
|
91
|
+
}) => {
|
|
92
|
+
// 计算发光效果
|
|
93
|
+
const textShadow = glowEnable ? `0 0 ${10 * glowIntensity}px ${glowColor}, 0 0 ${20 * glowIntensity}px ${glowColor}, 0 0 ${30 * glowIntensity}px ${glowColor}` : undefined;
|
|
94
|
+
const textStyle = {
|
|
95
|
+
fontSize,
|
|
25
96
|
fontWeight,
|
|
26
|
-
|
|
97
|
+
fontFamily,
|
|
98
|
+
color,
|
|
27
99
|
lineHeight,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
};
|
|
31
|
-
const mergedStyle = {
|
|
32
|
-
...internalStyle,
|
|
33
|
-
...externalStyle
|
|
100
|
+
letterSpacing,
|
|
101
|
+
textShadow
|
|
34
102
|
};
|
|
103
|
+
const containerClass = cn(styles.container, getAlignClass(textAlign), getValignClass(verticalAlign));
|
|
104
|
+
const textClass = cn(styles.text, isLink && styles.link, underline && styles.underline);
|
|
105
|
+
|
|
106
|
+
// 链接模式
|
|
107
|
+
if (isLink && href) {
|
|
108
|
+
const relValue = target === '_blank' ? 'noopener noreferrer' : '';
|
|
109
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
110
|
+
className: containerClass,
|
|
111
|
+
ref: ref,
|
|
112
|
+
style: externalStyle,
|
|
113
|
+
children: /*#__PURE__*/jsxRuntime.jsx("a", {
|
|
114
|
+
className: textClass,
|
|
115
|
+
href: href,
|
|
116
|
+
rel: relValue,
|
|
117
|
+
style: textStyle,
|
|
118
|
+
target: target,
|
|
119
|
+
children: content
|
|
120
|
+
})
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// 普通文本
|
|
35
125
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
36
|
-
className:
|
|
126
|
+
className: containerClass,
|
|
37
127
|
ref: ref,
|
|
38
|
-
style:
|
|
39
|
-
children:
|
|
128
|
+
style: externalStyle,
|
|
129
|
+
children: /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
130
|
+
className: textClass,
|
|
131
|
+
style: textStyle,
|
|
132
|
+
children: content
|
|
133
|
+
})
|
|
40
134
|
});
|
|
41
135
|
};
|
|
42
136
|
|
|
137
|
+
exports.Text = Text;
|
|
43
138
|
exports.default = Text;
|
|
44
139
|
|
|
45
140
|
Object.defineProperty(exports, '__esModule', { value: true });
|
package/dist/component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../src/component.tsx"],"sourcesContent":["import type { CSSProperties, Ref } from 'react'\n\
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../../shared/src/lib/utils.ts","../../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../src/component.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx, type ClassValue } from 'clsx'\n\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs)\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","/**\n * Text Component\n * 文本组件 - 支持普通文本、链接、标题、发光效果\n */\n\nimport type { CSSProperties, Ref } from 'react'\nimport { cn } from '@easy-editor/materials-shared'\nimport styles from './component.module.css'\n\nexport type TextAlign = 'left' | 'center' | 'right'\nexport type VerticalAlign = 'top' | 'middle' | 'bottom'\n\nexport interface TextProps {\n ref?: Ref<HTMLDivElement>\n /** 文本内容 */\n content?: string\n /** 字体大小 */\n fontSize?: number\n /** 字体粗细 */\n fontWeight?: number | 'normal' | 'bold'\n /** 字体家族 */\n fontFamily?: string\n /** 颜色 */\n color?: string\n /** 水平对齐 */\n textAlign?: TextAlign\n /** 垂直对齐 */\n verticalAlign?: VerticalAlign\n /** 行高 */\n lineHeight?: number\n /** 字间距 */\n letterSpacing?: number\n /** 是否为链接 */\n isLink?: boolean\n /** 链接地址 */\n href?: string\n /** 链接打开方式 */\n target?: '_self' | '_blank'\n /** 下划线 */\n underline?: boolean\n /** 发光效果 */\n glowEnable?: boolean\n /** 发光颜色 */\n glowColor?: string\n /** 发光强度 */\n glowIntensity?: number\n /** 显隐控制 */\n condition?: boolean\n /** 外部样式 */\n style?: CSSProperties\n}\n\nconst getAlignClass = (align: TextAlign): string => {\n switch (align) {\n case 'left':\n return styles.alignLeft\n case 'center':\n return styles.alignCenter\n case 'right':\n return styles.alignRight\n default:\n return styles.alignLeft\n }\n}\n\nconst getValignClass = (align: VerticalAlign): string => {\n switch (align) {\n case 'top':\n return styles.valignTop\n case 'middle':\n return styles.valignMiddle\n case 'bottom':\n return styles.valignBottom\n default:\n return styles.valignMiddle\n }\n}\n\nexport const Text: React.FC<TextProps> = ({\n ref,\n content = '文本内容',\n fontSize = 16,\n fontWeight = 'normal',\n fontFamily = 'inherit',\n color = '#ffffff',\n textAlign = 'left',\n verticalAlign = 'middle',\n lineHeight = 1.5,\n letterSpacing = 0,\n isLink = false,\n href = '',\n target = '_blank',\n underline = false,\n glowEnable = false,\n glowColor = '#00d4ff',\n glowIntensity = 1,\n style: externalStyle,\n}) => {\n // 计算发光效果\n const textShadow = glowEnable\n ? `0 0 ${10 * glowIntensity}px ${glowColor}, 0 0 ${20 * glowIntensity}px ${glowColor}, 0 0 ${30 * glowIntensity}px ${glowColor}`\n : undefined\n\n const textStyle: CSSProperties = {\n fontSize,\n fontWeight,\n fontFamily,\n color,\n lineHeight,\n letterSpacing,\n textShadow,\n }\n\n const containerClass = cn(styles.container, getAlignClass(textAlign), getValignClass(verticalAlign))\n\n const textClass = cn(styles.text, isLink && styles.link, underline && styles.underline)\n\n // 链接模式\n if (isLink && href) {\n const relValue = target === '_blank' ? 'noopener noreferrer' : ''\n return (\n <div className={containerClass} ref={ref} style={externalStyle}>\n <a className={textClass} href={href} rel={relValue} style={textStyle} target={target}>\n {content}\n </a>\n </div>\n )\n }\n\n // 普通文本\n return (\n <div className={containerClass} ref={ref} style={externalStyle}>\n <span className={textClass} style={textStyle}>\n {content}\n </span>\n </div>\n )\n}\n\nexport default Text\n"],"names":["cn","inputs","clsx","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","getAlignClass","align","styles","alignLeft","alignCenter","alignRight","getValignClass","valignTop","valignMiddle","valignBottom","Text","content","fontSize","fontWeight","fontFamily","color","textAlign","verticalAlign","lineHeight","letterSpacing","isLink","href","target","underline","glowEnable","glowColor","glowIntensity","externalStyle","textShadow","undefined","textStyle","containerClass","container","textClass","text","link","relValue","_jsx","className","children","rel"],"mappings":"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","x_google_ignoreList":[0,2]}
|