pxx-vue-quill 1.0.96 → 1.0.98

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.
@@ -0,0 +1 @@
1
+ .ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked] > li::before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor > *{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol > li,.ql-editor ul > li{list-style-type:none}.ql-editor ul > li::before{content:'\2022'}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true] > li *,.ql-editor ul[data-checked=false] > li *{pointer-events:all}.ql-editor ul[data-checked=true] > li::before,.ql-editor ul[data-checked=false] > li::before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true] > li::before{content:'\2611'}.ql-editor ul[data-checked=false] > li::before{content:'\2610'}.ql-editor li::before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl)::before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl::before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0, decimal) '. '}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1, lower-alpha) '. '}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2, lower-roman) '. '}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3, decimal) '. '}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4, lower-alpha) '. '}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5, lower-roman) '. '}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6, decimal) '. '}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7, lower-alpha) '. '}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8, lower-roman) '. '}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9, decimal) '. '}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank::before{color:rgba(0,0,0,0.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:'';display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px;margin-left:1px;margin-right:1px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover{background-color:#f3f4f6}.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{background-color:#dbeafe;color:#2563eb}.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#2563eb}.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#2563eb}@media (pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#4b5563}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#4b5563}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#4b5563}}.ql-snow{box-sizing:border-box}.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:'';display:table}.ql-snow .ql-stroke{fill:none;stroke:#4b5563;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#4b5563;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#4b5563}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#4b5563;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle;margin-right:1px;margin-left:1px}.ql-snow .ql-picker-label{cursor:pointer;display:flex;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label::before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding:5px 8px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#d1d5db;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#d1d5db}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#d1d5db}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:3px}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px;margin:2px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label::before,.ql-snow .ql-picker.ql-header .ql-picker-item::before{content:'Normal'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before{content:'Heading 1'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before{content:'Heading 2'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before{content:'Heading 3'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before{content:'Heading 4'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before{content:'Heading 5'}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before{content:'Heading 6'}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]::before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]::before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]::before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]::before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]::before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]::before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label::before,.ql-snow .ql-picker.ql-font .ql-picker-item::before{content:'Sans Serif'}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before{content:'Serif'}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before{content:'Monospace'}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label::before,.ql-snow .ql-picker.ql-size .ql-picker-item::before{content:'Normal'}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before{content:'Small'}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before{content:'Large'}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before{content:'Huge'}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.quill-editor-container{width:100%;display:flex;flex-direction:column;position:relative}.quill-editor-container .hover-status,.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-color-picker .ql-picker-label:hover,.quill-editor-container .ql-toolbar.ql-snow .ql-formats button:hover{color:#333;border-radius:6px;border-color:transparent;background-color:rgba(0,0,0,0.05)}.quill-editor-container .active-status,.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-active,.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-color-picker.ql-expanded .ql-picker-label{color:#333;border-radius:6px;border-color:transparent;background-color:rgba(0,0,0,0.08)}.quill-editor-container.embedded .ql-toolbar.ql-snow{padding:7px 15px}.quill-editor-container.fixed-top{position:relative}.quill-editor-container.fixed-top.no-collapse .ql-toolbar.ql-snow{min-height:0;padding:8px 15px}.quill-editor-container.fixed-top .ql-toolbar.ql-snow{width:max-content;position:absolute;border:0;z-index:2;top:-44px;display:none;background-color:#f7f7f7;border-radius:8px;box-shadow:0 0 6px 0 rgba(0,0,0,0.1)}.quill-editor-container.fixed-top .ql-toolbar.ql-snow .short-tools{padding:7px 15px;border-radius:8px;border:1px solid #eee}.quill-editor-container.fixed-top .ql-toolbar.ql-snow .short-tools.collapse{border-radius:8px 8px 0 0}.quill-editor-container.fixed-top .ql-toolbar.ql-snow .more-tools{padding:8px 15px;border-radius:0 0 8px 8px;border:1px solid #eee;border-top:0}.quill-editor-container.fixed-top .ql-toolbar.ql-snow .more-tools .more-tools-item{margin-bottom:8px}.quill-editor-container .ql-toolbar.ql-snow{border:0;display:none;padding:0;min-height:40px;line-height:1;border:1px solid #eee;background-color:#f7f7f7}.quill-editor-container .ql-toolbar.ql-snow .ql-formats{margin-right:0}.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-undo.ql-disabled,.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-redo.ql-disabled,.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-customLink.ql-disabled{color:#d8d8d8 !important;cursor:not-allowed !important;opacity:.5 !important;pointer-events:none !important}.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-active .ql-stroke{stroke:#333}.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-color-picker{margin-left:0;margin-right:12px;width:24px}.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-color-picker .ql-picker-label{padding:1px}.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-color-picker .ql-picker-options{z-index:3}.quill-editor-container .ql-toolbar.ql-snow .ql-formats button{width:24px;margin-right:12px;margin-left:0;padding:3px}.quill-editor-container .ql-toolbar.ql-snow .ql-formats button.ql-math,.quill-editor-container .ql-toolbar.ql-snow .ql-formats button.ql-ocr{padding:3px 4px}.quill-editor-container .ql-toolbar.ql-snow .ql-formats .mr-0{margin-right:0}.quill-editor-container .ql-toolbar.ql-snow .ql-formats .ql-more{cursor:pointer;border-radius:6px}.quill-editor-container .ql-toolbar.ql-snow + .ql-container.ql-container{border:0;flex:1}.quill-editor-container .ql-custom-link{position:absolute;height:50px;border:1px solid #eee;background-color:#fff;border-radius:8px;display:flex;align-items:center;box-shadow:rgba(0,0,0,0.2) 0 2px 8px;padding:0 8px}.quill-editor-container .ql-custom-link input{height:34px;width:190px;border:0;background-color:#f9f9f9;border-radius:8px;padding-left:8px;display:inline-block}.quill-editor-container .ql-custom-link input:focus-visible{outline:0;border-color:transparent}.quill-editor-container .ql-custom-link .custom-link-btn{width:94px;height:34px;background-color:#383b50;display:flex;align-items:center;justify-content:center;margin-left:8px;border-radius:8px;color:#fff;cursor:pointer}.quill-editor-container .ql-container .ql-editor{padding:12px 16px;line-height:22px;word-break:break-all}.quill-editor-container .ql-container .ql-editor ul,.quill-editor-container .ql-container .ql-editor ol{padding-left:0}.quill-editor-container .ql-container .ql-editor ul li::before,.quill-editor-container .ql-container .ql-editor ol li::before{width:8px;text-align:left}.quill-editor-container .ql-container .ql-editor ul li:not(.ql-direction-rtl),.quill-editor-container .ql-container .ql-editor ol li:not(.ql-direction-rtl){padding-left:18px}.quill-editor-container .ql-container .ql-editor img{display:block}.quill-editor-container .ql-container .ql-editor.ql-blank::before{color:#b6b6b6;font-style:normal;font-size:14px;left:15px}.quill-editor-container .ql-container.ql-snow .ql-tooltip{display:none}.quill-editor-container .ql-container .blot-formatter__overlay .blot-formatter__toolbar{display:none}.ql-toolbar.ql-snow{border:1px solid #d1d5db;box-sizing:border-box;font-family:'Helvetica Neue','Helvetica','Arial',sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:10px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:rgba(0,0,0,0.2) 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label{border-color:#d1d5db}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#d1d5db}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow + .ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #d1d5db;box-shadow:0 0 5px #d1d5db;color:#4b5563;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip::before{content:"访问链接:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #d1d5db;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip input[type=text]::placeholder{color:#999;font-style:italic}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action::after{border-right:1px solid #d1d5db;content:'编辑';margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove::before{content:'删除';margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action::after{border-right:0;content:'保存';padding-right:0}.ql-snow .ql-tooltip[data-mode=link]::before{content:"输入链接:"}.ql-snow .ql-tooltip[data-mode=formula]::before{content:"输入公式:"}.ql-snow .ql-tooltip[data-mode=video]::before{content:"输入视频:"}.ql-snow a{color:#2563eb}.ql-container.ql-snow{border:1px solid #d1d5db}
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Copyright (c) 2025 Pxx-Team
9
9
  * Released under the MIT license
10
- * Date: 2025-09-09T02:28:36.927Z
10
+ * Date: 2025-09-09T11:01:46.299Z
11
11
  */
12
12
  (function (global, factory) {
13
13
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue')) :
@@ -18444,7 +18444,7 @@
18444
18444
  full: [
18445
18445
  ['bold', 'italic', 'underline'],
18446
18446
  [{ color: [] }],
18447
- ['link'],
18447
+ ['customLink'],
18448
18448
  [{ list: 'ordered' }, { list: 'bullet' }],
18449
18449
  ['image'],
18450
18450
  ['undo', 'redo'],
@@ -18517,8 +18517,9 @@
18517
18517
  ]),
18518
18518
  vue.h('span', { class: 'ql-formats' }, [
18519
18519
  vue.h('button', {
18520
- class: 'ql-link',
18521
- type: 'button'
18520
+ class: 'ql-customLink',
18521
+ type: 'button',
18522
+ onClick: () => emit('toolClick', 'customLink')
18522
18523
  }, '')
18523
18524
  ]),
18524
18525
  vue.h('span', { class: 'ql-formats' }, [
@@ -18590,6 +18591,80 @@
18590
18591
  }
18591
18592
  });
18592
18593
 
18594
+ const CustomLink = vue.defineComponent({
18595
+ name: 'CustomLink',
18596
+ props: {
18597
+ visible: {
18598
+ type: Boolean,
18599
+ default: false
18600
+ },
18601
+ position: {
18602
+ type: Object,
18603
+ default: () => ({ top: 0, left: 0 })
18604
+ },
18605
+ linkUrl: {
18606
+ type: String,
18607
+ default: ''
18608
+ },
18609
+ linkText: {
18610
+ type: String,
18611
+ default: ''
18612
+ }
18613
+ },
18614
+ emits: ['save', 'update:linkUrl', 'update:linkText'],
18615
+ setup(props, { emit }) {
18616
+ const localLinkUrl = vue.computed({
18617
+ get() {
18618
+ return props.linkUrl;
18619
+ },
18620
+ set(val) {
18621
+ emit('update:linkUrl', val);
18622
+ },
18623
+ });
18624
+ const localLinkText = vue.computed({
18625
+ get() {
18626
+ return props.linkText;
18627
+ },
18628
+ set(val) {
18629
+ emit('update:linkText', val);
18630
+ },
18631
+ });
18632
+ const handleSave = () => {
18633
+ emit('save', {
18634
+ url: localLinkUrl.value,
18635
+ text: localLinkText.value
18636
+ });
18637
+ };
18638
+ return () => {
18639
+ if (!props.visible)
18640
+ return null;
18641
+ return vue.h('div', {
18642
+ class: 'ql-custom-link',
18643
+ style: {
18644
+ top: `${props.position.top}px`,
18645
+ left: `${props.position.left}px`,
18646
+ },
18647
+ onClick: (event) => {
18648
+ event.stopPropagation();
18649
+ }
18650
+ }, [
18651
+ vue.h('input', {
18652
+ type: 'text',
18653
+ value: localLinkUrl.value,
18654
+ placeholder: '请输入链接',
18655
+ onInput: (e) => {
18656
+ localLinkUrl.value = e.target.value;
18657
+ }
18658
+ }),
18659
+ vue.h('button', {
18660
+ class: 'custom-link-btn',
18661
+ onClick: handleSave
18662
+ }, '确定'),
18663
+ ]);
18664
+ };
18665
+ }
18666
+ });
18667
+
18593
18668
  var dist = {};
18594
18669
 
18595
18670
  var Options = {};
@@ -20097,7 +20172,6 @@
20097
20172
 
20098
20173
  var BlotFormatter = /*@__PURE__*/getDefaultExportFromCjs(dist);
20099
20174
 
20100
- let isBlotFormatterRegistered = false;
20101
20175
  function useBlotFormatter(editor, enableImageResize = true) {
20102
20176
  const quillRef = vue.ref(null);
20103
20177
  const removeQuillBlotFormatter = () => {
@@ -20196,13 +20270,13 @@
20196
20270
  }
20197
20271
  };
20198
20272
  const registerBlotFormatter = () => {
20273
+ var _a;
20199
20274
  if (!enableImageResize) {
20200
20275
  return;
20201
20276
  }
20202
20277
  try {
20203
- if (!isBlotFormatterRegistered) {
20278
+ if (!((_a = Quill.imports) === null || _a === void 0 ? void 0 : _a['modules/blotFormatter'])) {
20204
20279
  Quill.register('modules/blotFormatter', BlotFormatter);
20205
- isBlotFormatterRegistered = true;
20206
20280
  }
20207
20281
  }
20208
20282
  catch (error) {
@@ -20242,6 +20316,64 @@
20242
20316
  };
20243
20317
  }
20244
20318
 
20319
+ function useLinkClick(editor, initialHandleCustomLink) {
20320
+ const quillRef = vue.ref(null);
20321
+ const handleCustomLinkRef = vue.ref(initialHandleCustomLink || null);
20322
+ const handleLinkClick = (event) => {
20323
+ if (!quillRef.value || !handleCustomLinkRef.value)
20324
+ return;
20325
+ const target = event.target;
20326
+ if (target.tagName === 'A') {
20327
+ event.preventDefault();
20328
+ event.stopPropagation();
20329
+ try {
20330
+ const linkElement = target;
20331
+ const linkUrl = linkElement.getAttribute('href') || '';
20332
+ const linkText = linkElement.textContent || '';
20333
+ const range = quillRef.value.getSelection();
20334
+ if (range) {
20335
+ const [blot] = quillRef.value.getLeaf(range.index);
20336
+ if (blot && blot.parent && blot.parent.domNode.tagName === 'A') {
20337
+ const linkBlot = blot.parent;
20338
+ const linkIndex = quillRef.value.getIndex(linkBlot);
20339
+ const linkLength = linkBlot.length();
20340
+ quillRef.value.setSelection(linkIndex, linkLength);
20341
+ handleCustomLinkRef.value(true, { url: linkUrl, text: linkText });
20342
+ }
20343
+ }
20344
+ }
20345
+ catch (error) {
20346
+ console.warn('选中链接失败:', error);
20347
+ }
20348
+ }
20349
+ };
20350
+ const addLinkClickListener = () => {
20351
+ if (!quillRef.value)
20352
+ return;
20353
+ vue.nextTick(() => {
20354
+ var _a;
20355
+ const editorElement = (_a = editor.value) === null || _a === void 0 ? void 0 : _a.querySelector('.ql-editor');
20356
+ if (editorElement) {
20357
+ editorElement.removeEventListener('click', handleLinkClick);
20358
+ editorElement.addEventListener('click', handleLinkClick);
20359
+ }
20360
+ });
20361
+ };
20362
+ const setQuill = (quillInstance) => {
20363
+ quillRef.value = quillInstance;
20364
+ };
20365
+ const setHandleCustomLink = (fn) => {
20366
+ handleCustomLinkRef.value = fn;
20367
+ };
20368
+ return {
20369
+ quillRef,
20370
+ setQuill,
20371
+ setHandleCustomLink,
20372
+ handleLinkClick,
20373
+ addLinkClickListener
20374
+ };
20375
+ }
20376
+
20245
20377
  const boldSVG = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><g><g style="opacity:0;"><rect x="0" y="0" width="18" height="18" rx="0" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M6.794999938146972,7.7800002288818355L9.045000038146974,7.7800002288818355Q9.855000038146972,7.7800002288818355,10.230000038146972,7.442500128881836Q10.605000038146972,7.105000028881836,10.605000038146972,6.505000128881836Q10.605000038146972,6.114999728881836,10.440000038146973,5.860000628881836Q10.275000138146972,5.6050005288818365,9.929999838146973,5.470000228881836Q9.585000038146973,5.335000028881836,9.045000038146974,5.335000028881836L7.139999938146973,5.335000028881836L7.139999938146973,3.385000228881836L9.045000038146974,3.385000228881836Q10.034999838146973,3.385000228881836,10.852499938146973,3.797500608881836Q11.670000038146974,4.2100000388818355,12.142499938146972,4.922500628881836Q12.614999738146974,5.635000228881836,12.614999738146974,6.505000128881836Q12.614999738146974,7.375000028881836,12.142499938146972,8.042500028881836Q11.670000038146974,8.710000028881836,10.860000138146972,9.070000128881837Q10.050000238146973,9.430000328881835,9.045000038146974,9.430000328881835L6.794999938146972,9.430000328881835L6.794999938146972,7.7800002288818355ZM7.139999938146973,12.550000228881835L9.329999938146972,12.550000228881835Q9.900000138146972,12.550000228881835,10.327499838146974,12.354999528881836Q10.755000138146972,12.159999828881835,10.987500238146973,11.807499928881835Q11.219999838146972,11.454999928881836,11.219999838146972,11.020000428881836Q11.219999838146972,10.600000428881836,10.987500238146973,10.232500028881836Q10.755000138146972,9.864999728881836,10.327499838146974,9.647500028881836Q9.900000138146972,9.430000328881835,9.329999938146972,9.430000328881835L6.975000038146972,9.430000328881835L6.975000038146972,7.7800002288818355L9.329999938146972,7.7800002288818355Q10.349999938146972,7.7800002288818355,11.250000038146972,8.200000328881835Q12.149999638146973,8.620000328881837,12.690000538146972,9.362500228881835Q13.229999538146973,10.104999528881836,13.229999538146973,11.034999828881837Q13.229999538146973,11.949999828881836,12.690000538146972,12.752500528881836Q12.149999638146973,13.555000228881836,11.250000038146972,14.027500228881836Q10.349999938146972,14.500000228881836,9.329999938146972,14.500000228881836L7.139999938146973,14.500000228881836L7.139999938146973,12.550000228881835ZM7.064999938146973,14.500000228881836Q6.284999968146972,14.500000228881836,5.872500058146973,14.095000228881837Q5.460000038146973,13.689999228881836,5.460000038146973,12.895000428881836L5.460000038146973,4.989999728881836Q5.460000038146973,4.195000648881836,5.872500058146973,3.789999958881836Q6.284999968146972,3.385000228881836,7.064999938146973,3.385000228881836L7.469999838146973,3.385000228881836L7.469999838146973,14.500000228881836L7.064999938146973,14.500000228881836Z" fill="#555555" fill-opacity="1"/></g></g></svg>`;
20246
20378
  const italicSVG = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><g><g style="opacity:0;"><rect x="0" y="0" width="18" height="18" rx="0" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M8,3Q7.9015086,3,7.8049095,3.019214718Q7.7083106,3.038429435,7.6173165,3.076120459Q7.5263224,3.11381148,7.4444296,3.16853037Q7.3625371,3.2232492600000002,7.2928932,3.2928932Q7.2232492,3.36253715,7.1685302,3.4444297600000002Q7.1138113999999995,3.52632231,7.0761204,3.61731648Q7.0384293,3.70831072,7.0192146,3.80490965Q6.99999994,3.90150857,7,4Q6.99999994,4.0984913,7.0192146,4.1950902Q7.0384293,4.291689,7.0761204,4.3826833Q7.1138113999999995,4.4736774,7.1685302,4.5555699Q7.2232492,4.6374626,7.2928932,4.7071065999999995Q7.3625371,4.7767504,7.4444296,4.8314693Q7.5263224,4.8861883,7.6173165,4.9238794Q7.7083106,4.9615704,7.8049096,4.9807851Q7.9015086,4.9999999,8,5L9.137146,5L8,13L7,13Q6.90150857,13,6.80490965,13.019215Q6.70831072,13.038429,6.6173164799999995,13.07612Q6.52632231,13.113811,6.44442973,13.16853Q6.36253715,13.223249,6.2928932,13.292892Q6.22324926,13.362536,6.16853037,13.444429Q6.11381148,13.526321,6.076120459,13.617315Q6.038429435,13.708309,6.019214718,13.804909Q6,13.901508,6,14Q6,14.098491,6.019214718,14.195089Q6.038429435,14.291689,6.076120459,14.382683Q6.11381148,14.473677,6.16853037,14.555569Q6.22324926,14.637462,6.2928932,14.707106Q6.36253715,14.77675,6.44442976,14.831469Q6.52632231,14.886187,6.6173164799999995,14.923878Q6.70831072,14.961569,6.80490965,14.980784Q6.90150857,15,7,15L11,15Q11.0984912,15,11.1950898,14.980784Q11.2916889,14.961569,11.382682800000001,14.923878Q11.473677200000001,14.886187,11.5555696,14.831469Q11.6374626,14.77675,11.7071066,14.707106Q11.7767506,14.637462,11.8314691,14.555569Q11.8861876,14.473677,11.9238791,14.382683Q11.9615698,14.291689,11.9807849,14.195089Q12,14.098491,12,14Q12,13.901508,11.9807849,13.804909Q11.9615698,13.708309,11.9238791,13.617315Q11.8861876,13.526321,11.8314691,13.444428Q11.7767506,13.362536,11.7071066,13.292892Q11.6374626,13.223249,11.5555701,13.16853Q11.473677200000001,13.113811,11.382682800000001,13.07612Q11.2916889,13.038429,11.1950903,13.019215Q11.0984912,13,11,13L9.8626451,13L11,5L12,5Q12.0984907,4.9999999,12.1950893,4.9807851Q12.2916884,4.9615703,12.382682800000001,4.9238793Q12.4736767,4.8861883,12.5555696,4.8314693Q12.6374621,4.7767504,12.7071061,4.7071065999999995Q12.776750100000001,4.6374626,12.831468600000001,4.5555699Q12.8861876,4.4736774,12.9238787,4.3826833Q12.9615698,4.291689,12.9807849,4.1950902Q12.999999500000001,4.0984913,13,4Q12.999999500000001,3.90150857,12.980784400000001,3.80490965Q12.9615698,3.70831072,12.9238787,3.61731648Q12.8861876,3.52632231,12.8314691,3.44442973Q12.7767506,3.36253715,12.7071066,3.2928932Q12.6374626,3.2232492600000002,12.5555696,3.16853037Q12.4736767,3.11381148,12.382682800000001,3.076120459Q12.2916884,3.038429435,12.1950898,3.019214718Q12.0984907,3,12,3L8,3Z" fill-rule="evenodd" fill="#555555" fill-opacity="1"/></g></g></svg>`;
20247
20379
  const underlineSVG = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="18" height="18" viewBox="0 0 18 18"><g><g style="opacity:0;"><rect x="0" y="0" width="18" height="18" rx="0" fill="#FFFFFF" fill-opacity="1"/></g><g><path d="M5.000117301940918,14.500022450683593L5.000117301940918,14.500022450683593Q5.000117301940918,14.450777450683594,5.009724660740918,14.402477450683593Q5.019332019940918,14.354177450683594,5.038177530940918,14.308679450683593Q5.057023040940918,14.263182450683594,5.084382488940918,14.222236450683594Q5.111741931940918,14.181290450683594,5.146563901940918,14.146469450683593Q5.181385871940918,14.111646450683594,5.222332181940918,14.084286450683594Q5.263278451940918,14.056927450683594,5.308775541940918,14.038082450683595Q5.354272661940918,14.019237450683594,5.402572121940918,14.009630450683593Q5.450871581940918,14.000022450683593,5.500117301940918,14.000022450683593L12.500117301940918,14.000022450683593Q12.549362201940918,14.000022450683593,12.597661501940918,14.009629450683594Q12.645960801940918,14.019237450683594,12.691457701940918,14.038082450683595Q12.736954701940917,14.056926450683594,12.777901601940918,14.084285450683593Q12.818847701940918,14.111645450683593,12.853670101940917,14.146468450683594Q12.888492101940919,14.181289450683593,12.915851601940918,14.222235450683593Q12.943210601940919,14.263181450683593,12.962056201940918,14.308679450683593Q12.980901701940919,14.354177450683594,12.990509501940917,14.402477450683593Q13.00011680194092,14.450777450683594,13.000117301940918,14.500022450683593L13.000117301940918,14.500022450683593Q13.00011680194092,14.549268450683593,12.990509001940918,14.597566450683594Q12.980901701940919,14.645866450683593,12.962056201940918,14.691363450683594Q12.943210601940919,14.736860450683594,12.915851601940918,14.777807450683595Q12.888492101940919,14.818753450683595,12.853670101940917,14.853575450683593Q12.818847701940918,14.888397450683593,12.777901601940918,14.915756450683594Q12.736954701940917,14.943115450683594,12.691457701940918,14.961960450683593Q12.645960801940918,14.980806450683593,12.597661501940918,14.990413450683594Q12.549362201940918,15.000021450683594,12.500117301940918,15.000022450683593L5.500117301940918,15.000022450683593Q5.450871581940918,15.000021450683594,5.402572121940918,14.990414450683593Q5.354272661940918,14.980806450683593,5.308775541940918,14.961960450683593Q5.263278451940918,14.943115450683594,5.222332161940918,14.915756450683594Q5.181385871940918,14.888397450683593,5.146563901940918,14.853574450683594Q5.111741931940918,14.818752450683593,5.084382488940918,14.777806450683594Q5.057023040940918,14.736860450683594,5.038177530940918,14.691363450683594Q5.019332019940918,14.645866450683593,5.009724660740918,14.597567450683593Q5.000117301940918,14.549268450683593,5.000117301940918,14.500022450683593ZM5.045039176940918,3.548906330683594Q5.045039176940918,3.1015625006835936,5.283039211940918,2.8637809706835937Q5.521039131940918,2.6259994506835938,5.969039081940918,2.6259994506835938L5.997039201940918,2.6259994506835938Q6.445039201940918,2.6259994506835938,6.6830393019409176,2.8637809706835937Q6.921039201940918,3.1015625006835936,6.921039201940918,3.548906330683594L6.921039201940918,9.010000250683593Q6.921039201940918,9.737999950683594,7.180039401940919,10.255999550683594Q7.439039201940918,10.774000150683595,7.908039101940918,11.053999950683593Q8.377039001940918,11.333999650683594,8.993039101940917,11.333999650683594Q9.609039301940918,11.333999650683594,10.085039101940918,11.060999850683594Q10.561039401940917,10.788000150683594,10.820039301940918,10.263000450683593Q11.079039101940918,9.737999950683594,11.079039101940918,9.010000250683593L11.079039101940918,3.548906330683594Q11.079039101940918,3.1015625006835936,11.317039501940918,2.8637809706835937Q11.555039401940917,2.6259994506835938,12.003039401940917,2.6259994506835938L12.031039201940917,2.6259994506835938Q12.479039201940918,2.6259994506835938,12.717039101940918,2.8637809706835937Q12.955039001940918,3.1015625006835936,12.955039001940918,3.548906330683594L12.955039001940918,9.010000250683593Q12.955039001940918,10.144000050683594,12.416039501940919,11.095999750683594Q11.877039901940918,12.048000350683594,10.967039101940918,12.600999850683595Q10.057039301940918,13.154000450683593,8.993039101940917,13.154000450683593Q7.929039001940918,13.154000450683593,7.0190392019409185,12.600999850683595Q6.109039201940918,12.048000350683594,5.577039361940918,11.095999750683594Q5.045039176940918,10.144000050683594,5.045039176940918,9.010000250683593L5.045039176940918,3.548906330683594Z" fill="#555555" fill-opacity="1"/></g></g></svg>`;
@@ -20335,7 +20467,14 @@
20335
20467
  const showMoreToolbar = vue.ref(false);
20336
20468
  const canUndo = vue.ref(false);
20337
20469
  const canRedo = vue.ref(false);
20470
+ const showLinkDialog = vue.ref(false);
20471
+ const linkUrl = vue.ref('');
20472
+ const linkText = vue.ref('');
20473
+ const canUseLink = vue.ref(false);
20474
+ const linkPosition = vue.ref({ top: 0, left: 0 });
20475
+ const savedRange = vue.ref(null);
20338
20476
  const { setQuill, removeQuillBlotFormatter, configureBlotFormatter, applyImageStyle, registerBlotFormatter, getBlotFormatterConfig } = useBlotFormatter(editor, props.enableImageResize);
20477
+ const { setQuill: setLinkQuill, setHandleCustomLink, addLinkClickListener } = useLinkClick(editor);
20339
20478
  vue.onMounted(() => {
20340
20479
  initialize();
20341
20480
  });
@@ -20380,6 +20519,7 @@
20380
20519
  icons['underline'] = underlineSVG;
20381
20520
  icons['more'] = moreSVG;
20382
20521
  icons['link'] = linkSVG;
20522
+ icons['customLink'] = linkSVG;
20383
20523
  icons['undo'] = undoSVG;
20384
20524
  icons['redo'] = redoSVG;
20385
20525
  icons['ocr'] = ocrSVG;
@@ -20409,6 +20549,7 @@
20409
20549
  if (toolbar) {
20410
20550
  const undoBtn = toolbar.querySelector('.ql-undo');
20411
20551
  const redoBtn = toolbar.querySelector('.ql-redo');
20552
+ const customLinkBtn = toolbar.querySelector('.ql-customLink');
20412
20553
  if (undoBtn) {
20413
20554
  if (canUndo.value) {
20414
20555
  undoBtn.classList.remove('ql-disabled');
@@ -20427,10 +20568,19 @@
20427
20568
  }
20428
20569
  redoBtn.disabled = !canRedo.value;
20429
20570
  }
20571
+ if (customLinkBtn) {
20572
+ if (canUseLink.value) {
20573
+ customLinkBtn.classList.remove('ql-disabled');
20574
+ }
20575
+ else {
20576
+ customLinkBtn.classList.add('ql-disabled');
20577
+ }
20578
+ customLinkBtn.disabled = !canUseLink.value;
20579
+ }
20430
20580
  }
20431
20581
  };
20432
20582
  const initialize = () => {
20433
- var _a, _b;
20583
+ var _a;
20434
20584
  if (!editor.value)
20435
20585
  return;
20436
20586
  if (props.enableImageResize) {
@@ -20440,20 +20590,28 @@
20440
20590
  setIcons();
20441
20591
  quill = new Quill(editor.value, options);
20442
20592
  setQuill(quill);
20443
- const toolbar = (_a = quill === null || quill === void 0 ? void 0 : quill.getModule('toolbar')) === null || _a === void 0 ? void 0 : _a.container;
20444
- if (toolbar) {
20445
- toolbar.style.display = 'none';
20446
- }
20593
+ setLinkQuill(quill);
20594
+ controlToolbarVisible(false);
20447
20595
  setContents(props.content);
20448
20596
  quill.on('text-change', handleTextChange);
20449
20597
  quill.on('selection-change', handleSelectionChange);
20450
20598
  quill.on('editor-change', handleEditorChange);
20451
20599
  quill.on('text-change', updateHistoryState);
20452
20600
  quill.on('selection-change', updateHistoryState);
20601
+ addLinkClickListener();
20453
20602
  updateHistoryState();
20454
- const toolbarDom = (_b = quill.getModule('toolbar')) === null || _b === void 0 ? void 0 : _b.container;
20455
- toolbarDom.addEventListener('mousedown', (e) => {
20456
- e.preventDefault();
20603
+ const toolbarDom = (_a = quill.getModule('toolbar')) === null || _a === void 0 ? void 0 : _a.container;
20604
+ vue.nextTick(() => {
20605
+ const customLinkBtn = toolbarDom.querySelector('.ql-customLink');
20606
+ if (customLinkBtn) {
20607
+ customLinkBtn.addEventListener('click', (e) => {
20608
+ e.preventDefault();
20609
+ e.stopPropagation();
20610
+ if (canUseLink.value) {
20611
+ handleCustomLink(true);
20612
+ }
20613
+ });
20614
+ }
20457
20615
  });
20458
20616
  const tooltipInput = toolbarDom.querySelector('.ql-tooltip input');
20459
20617
  if (tooltipInput) {
@@ -20489,6 +20647,11 @@
20489
20647
  ...toolbarOptions.full,
20490
20648
  ],
20491
20649
  handlers: {
20650
+ customLink: function () {
20651
+ if (canUseLink.value) {
20652
+ handleCustomLink(true);
20653
+ }
20654
+ },
20492
20655
  redo: function () {
20493
20656
  var _a;
20494
20657
  if (canRedo.value) {
@@ -20566,22 +20729,25 @@
20566
20729
  preview.setAttribute('href', 'javascript:void(0)');
20567
20730
  preview.setAttribute('target', '_self');
20568
20731
  };
20732
+ const controlToolbarVisible = (visible) => {
20733
+ var _a;
20734
+ const toolbar = (_a = quill === null || quill === void 0 ? void 0 : quill.getModule('toolbar')) === null || _a === void 0 ? void 0 : _a.container;
20735
+ if (toolbar) {
20736
+ toolbar.style.display = visible ? 'block' : 'none';
20737
+ props.needCollapse && (showMoreToolbar.value = false);
20738
+ ctx.emit('toolbarVisibleChange', visible);
20739
+ }
20740
+ };
20569
20741
  const isEditorFocus = vue.ref();
20570
20742
  const handleSelectionChange = (range, oldRange, source) => {
20571
- var _a;
20572
20743
  observeTooltip();
20573
20744
  isEditorFocus.value = !!(quill === null || quill === void 0 ? void 0 : quill.hasFocus());
20574
- const toolbar = (_a = quill === null || quill === void 0 ? void 0 : quill.getModule('toolbar')) === null || _a === void 0 ? void 0 : _a.container;
20575
- if (toolbar) {
20576
- if (isEditorFocus.value) {
20577
- toolbar.style.display = 'block';
20578
- ctx.emit('toolbarVisibleChange', true);
20579
- }
20580
- else {
20581
- toolbar.style.display = 'none';
20582
- showMoreToolbar.value = false;
20583
- ctx.emit('toolbarVisibleChange', true);
20584
- }
20745
+ canUseLink.value = !!(range && range.length > 0);
20746
+ if (isEditorFocus.value) {
20747
+ controlToolbarVisible(true);
20748
+ }
20749
+ else {
20750
+ controlToolbarVisible(false);
20585
20751
  }
20586
20752
  ctx.emit('selectionChange', { range, oldRange, source });
20587
20753
  };
@@ -20711,6 +20877,79 @@
20711
20877
  else if (tool === 'more') {
20712
20878
  showMoreToolbar.value = !showMoreToolbar.value;
20713
20879
  }
20880
+ else if (tool === 'customLink') {
20881
+ handleCustomLink(true);
20882
+ }
20883
+ };
20884
+ const calculateSelectionPosition = (range) => {
20885
+ if (!quill)
20886
+ return { top: 0, left: 0 };
20887
+ const selectionRange = range || quill.getSelection();
20888
+ if (!selectionRange || selectionRange.length === 0)
20889
+ return { top: 0, left: 0 };
20890
+ try {
20891
+ const bounds = quill.getBounds(selectionRange.index, selectionRange.length);
20892
+ return {
20893
+ top: bounds.top + bounds.height + 5,
20894
+ left: bounds.left
20895
+ };
20896
+ }
20897
+ catch (error) {
20898
+ console.warn('计算选中位置时出错:', error);
20899
+ return { top: 0, left: 0 };
20900
+ }
20901
+ };
20902
+ const handleCustomLink = (bool, linkInfo) => {
20903
+ if (!quill)
20904
+ return;
20905
+ if (bool) {
20906
+ controlToolbarVisible(false);
20907
+ if (linkInfo) {
20908
+ linkUrl.value = linkInfo.url;
20909
+ linkText.value = linkInfo.text;
20910
+ const range = quill.getSelection();
20911
+ savedRange.value = range ? { ...range } : null;
20912
+ }
20913
+ else {
20914
+ const range = quill.getSelection();
20915
+ if (range && range.length > 0) {
20916
+ savedRange.value = { ...range };
20917
+ const selectedText = quill.getText(range.index, range.length);
20918
+ linkText.value = selectedText;
20919
+ }
20920
+ else {
20921
+ savedRange.value = range ? { ...range } : null;
20922
+ linkText.value = '';
20923
+ }
20924
+ }
20925
+ const range = quill.getSelection();
20926
+ linkPosition.value = calculateSelectionPosition(range || undefined);
20927
+ }
20928
+ else {
20929
+ savedRange.value = null;
20930
+ }
20931
+ showLinkDialog.value = bool;
20932
+ };
20933
+ setHandleCustomLink(handleCustomLink);
20934
+ const saveLink = (data) => {
20935
+ console.log("data", data);
20936
+ if (!quill || !data.url.trim())
20937
+ return;
20938
+ const range = savedRange.value;
20939
+ if (!range)
20940
+ return;
20941
+ if (range.length > 0) {
20942
+ quill.formatText(range.index, range.length, 'link', data.url);
20943
+ }
20944
+ else {
20945
+ const text = data.text || data.url;
20946
+ quill.insertText(range.index, text, { link: data.url });
20947
+ quill.setSelection(range.index + text.length, 0);
20948
+ }
20949
+ showLinkDialog.value = false;
20950
+ linkUrl.value = '';
20951
+ linkText.value = '';
20952
+ savedRange.value = null;
20714
20953
  };
20715
20954
  vue.watch(() => props.content, (newContent) => {
20716
20955
  if (!quill || internalModelEquals(newContent))
@@ -20731,6 +20970,11 @@
20731
20970
  showMoreToolbar,
20732
20971
  canUndo,
20733
20972
  canRedo,
20973
+ canUseLink,
20974
+ showLinkDialog,
20975
+ linkUrl,
20976
+ linkText,
20977
+ linkPosition,
20734
20978
  getEditor,
20735
20979
  getToolbar,
20736
20980
  getQuill,
@@ -20743,12 +20987,18 @@
20743
20987
  getText,
20744
20988
  setText,
20745
20989
  reinit,
20746
- moreToolbarToolClick
20990
+ moreToolbarToolClick,
20991
+ saveLink,
20992
+ handleCustomLink
20747
20993
  };
20748
20994
  },
20749
20995
  render() {
20750
20996
  return [
20751
- vue.h('div', { class: this.editorWrapClass }, [
20997
+ vue.h('div', {
20998
+ class: this.editorWrapClass, onClick: () => {
20999
+ this.handleCustomLink(false);
21000
+ }
21001
+ }, [
20752
21002
  this.$props.needCollapse && this.$props.editorKey && vue.h(MoreToolbar, {
20753
21003
  editorKey: String(this.$props.editorKey),
20754
21004
  needCollapse: this.needCollapse,
@@ -20761,8 +21011,19 @@
20761
21011
  }
20762
21012
  }),
20763
21013
  vue.h('div', {
20764
- ref: 'editor', ...this.$attrs
21014
+ ref: 'editor',
21015
+ style: { position: 'relative' },
21016
+ ...this.$attrs
20765
21017
  }),
21018
+ vue.h(CustomLink, {
21019
+ visible: this.showLinkDialog,
21020
+ position: this.linkPosition,
21021
+ linkUrl: this.linkUrl,
21022
+ linkText: this.linkText,
21023
+ 'onUpdate:linkUrl': (value) => { this.linkUrl = value; },
21024
+ 'onUpdate:linkText': (value) => { this.linkText = value; },
21025
+ onSave: this.saveLink,
21026
+ })
20766
21027
  ]),
20767
21028
  ];
20768
21029
  },