@@ -5,6 +5,34 @@ import { getToolbarTips, defaultOptions } from './options'
55import registerTableModule from './table-module'
66import registerCustomClipboard from './clipboard'
77
8+ // 注册自定义 Size 格式以支持像素值
9+ const registerCustomSize = ( Quill , sizeConfig ) => {
10+ if ( ! sizeConfig || ! Array . isArray ( sizeConfig ) ) {
11+ return
12+ }
13+
14+ // 检查是否包含像素值(如 '12px', '14px' 等)
15+ const hasPixelValues = sizeConfig . some ( ( item ) => {
16+ return item && typeof item === 'string' && item . includes ( 'px' )
17+ } )
18+
19+ if ( ! hasPixelValues ) {
20+ return
21+ }
22+
23+ // 使用 StyleAttributor 来支持像素值
24+ const SizeStyle = Quill . import ( 'attributors/style/size' )
25+
26+ // 过滤掉 false 值,设置白名单
27+ const whitelist = sizeConfig . filter ( ( item ) => item !== false )
28+
29+ // 设置白名单,允许的 size 值
30+ SizeStyle . whitelist = whitelist
31+
32+ // 使用 true 参数强制覆盖已注册的格式
33+ Quill . register ( 'formats/size' , SizeStyle , true )
34+ }
35+
836export const initContent =
937 ( { state, props, nextTick } ) =>
1038 ( ) => {
@@ -34,6 +62,38 @@ export const initQuill =
3462 ( ) => {
3563 state . innerOptions = extend ( true , { } , defaultOptions , props . globalOptions , props . options )
3664
65+ // 检查并注册自定义 Size 格式(支持像素值)
66+ const toolbarConfig = state . innerOptions . modules ?. toolbar ?. container || [ ]
67+
68+ // 递归查找 size 配置
69+ const findSizeConfig = ( config ) => {
70+ if ( ! config ) return null
71+
72+ if ( Array . isArray ( config ) ) {
73+ for ( let i = 0 ; i < config . length ; i ++ ) {
74+ const result = findSizeConfig ( config [ i ] )
75+ if ( result ) return result
76+ }
77+ } else if ( typeof config === 'object' && config !== null ) {
78+ // 检查是否有 size 属性
79+ if ( config . size && Array . isArray ( config . size ) ) {
80+ return config . size
81+ }
82+ // 递归检查对象的值
83+ for ( const key in config ) {
84+ const result = findSizeConfig ( config [ key ] )
85+ if ( result ) return result
86+ }
87+ }
88+
89+ return null
90+ }
91+
92+ const sizeConfig = findSizeConfig ( toolbarConfig )
93+ if ( sizeConfig ) {
94+ registerCustomSize ( Quill , sizeConfig )
95+ }
96+
3797 if ( document . caretRangeFromPoint ) {
3898 if ( props . imageDrop ) {
3999 Quill . register ( 'modules/imageDrop' , ImageDrop , true )
0 commit comments