@ebl-vue/editor-full 1.0.13 → 1.1.2
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/dist/index.d.ts +1 -0
- package/dist/index.mjs +712 -584
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -2
- package/src/components/Editor/Editor.vue +52 -24
- package/src/index.ts +8 -2
- package/src/plugins/imageResizeCrop/ImageTune.ts +900 -0
- package/src/plugins/imageResizeCrop/index.css +234 -0
- package/src/plugins/imageResizeCrop/index.ts +5 -0
- package/src/plugins/imageResizeCrop/types.d.ts +23 -0
- package/src/plugins/imageTool/index.css +1 -1
- package/src/plugins/imageTool/index.ts +30 -11
- package/src/plugins/imageTool/types/types.ts +2 -0
- package/src/plugins/imageTool/ui.ts +3 -2
- package/src/plugins/imageTool/uploader.ts +137 -103
- package/src/plugins/imageTool/utils/index.ts +73 -0
- package/src/utils/AxiosService.ts +87 -0
- package/types/index.d.ts +6 -1
- package/types/plugins/index.d.ts +0 -0
package/dist/index.mjs
CHANGED
|
@@ -1,29 +1,21 @@
|
|
|
1
|
-
(function(){"use strict";try{if(typeof document!="undefined"){var e=document.createElement("style");e.appendChild(document.createTextNode(':root{--color-border: #EFF0F1}.ebl-editor{cursor:text;font-size:16px;font-weight:400;background-color:#fff}.ebl-editor-title{min-height:55px}.ebl-editor-title-wrap{min-height:55px;margin:0 auto}.ebl-editor-title-input{min-height:55px;width:100%;font-weight:600;border:none;background-color:transparent;font-size:34px}.ebl-editor-title-input:focus{outline:none}.ebl-editor-title-input:active{outline:none}.ebl-editor-time-wrap{white-space:nowrap;font-size:14px;font-weight:400;line-height:22px;padding-top:12px;padding-bottom:8px;color:#646a73}.ce-block__content{max-width:650px}@media (min-width: 1050px){.ce-block__content,.ce-toolbar__content{max-width:700px}}.ce-toolbar,.ce-inline-toolbar{z-index:1000}.ce-toolbar__plus{border:1px solid #EFF0F1}.ce-toolbar .ce-popover__items{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.ce-toolbar .ce-popover__items .ce-popover-item{position:relative}.ce-toolbar .ce-popover__items .ce-popover-item__title{display:none}.ce-toolbar .ce-popover-item-html,.ce-toolbar .ce-popover-item-separator,.ce-toolbar .ce-popover-item[data-item-name=convert-to]{width:100%}.ce-toolbar .ce-popover-item[data-item-name=convert-to] .ce-popover-item__title{display:block}.ce-inline-toolbar .ce-popover__items{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.ce-inline-toolbar .ce-popover__items{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.ce-inline-toolbar .ce-popover__items .ce-popover-item__title{display:none}.ce-block--drop-target .ce-block__content:before{content:"";position:absolute;top:50%;left:-20px;margin-top:-1px;height:8px;width:8px;border:solid #a0a0a0;border-width:1px 1px 0 0;-webkit-transform-origin:right;transform-origin:right;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ce-block--drop-target .ce-block__content:after{background:none}.ce-header{padding:.6em 0 3px;margin:0;line-height:1.25em;outline:none}.ce-header p,.ce-header div{padding:0!important;margin:0!important}.ce-tune-alignment--right{text-align:right}.ce-tune-alignment--center{text-align:center}.ce-tune-alignment--left{text-align:left}.ce-paragraph{line-height:1.6em;outline:none}.ce-block:only-of-type .ce-paragraph[data-placeholder-active]:empty:before,.ce-block:only-of-type .ce-paragraph[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active)}.ce-paragraph p:first-of-type{margin-top:0}.ce-paragraph p:last-of-type{margin-bottom:0}.ce-editorjs-x-shiki{border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:10px 0}.ce-editorjs-x-shiki__code{position:relative;float:left;min-width:100%;overflow-x:auto}.ce-editorjs-x-shiki__selector{display:-webkit-box;display:-ms-flexbox;display:flex;gap:.25rem;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;z-index:12;border-bottom-style:solid;border-color:#9ca3af0d;padding:.5rem}.ce-editorjs-x-shiki__selector-language,.ce-editorjs-x-shiki__selector-theme{font-size:13px;font-family:inherit}.ce-editorjs-x-shiki__selector-language{width:90px}.ce-editorjs-x-shiki__selector select{border:none;outline:none}.ce-editorjs-x-shiki__span{position:relative;z-index:0;padding:20px;margin:0;white-space:pre;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.ce-editorjs-x-shiki__textarea{white-space:pre;overflow:hidden;background-color:transparent;position:absolute;padding:20px;inset:0;color:transparent;z-index:0;font-size:13px;caret-color:#999;resize:none;border:none;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.ce-editorjs-x-shiki__copy{width:24px;height:24px;cursor:pointer;position:relative;margin-right:0}.ce-editorjs-x-shiki__copy_tip{font-size:12px;width:60px;margin-left:-20px;background-color:#0c0c0c;color:#ececec;text-align:center;border-radius:6px;padding:5px 10px;position:absolute;z-index:1;top:125%;-webkit-transition:opacity .3s;transition:opacity .3s;visibility:hidden;opacity:0}.ce-editorjs-x-shiki__copy_tip:after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent #0c0c0c transparent}.ce-editorjs-x-shiki__copy_tip.visible{visibility:visible;opacity:1}.cdx-quote{overflow:hidden;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;word-wrap:break-word;word-break:break-all}.cdx-quote blockquote{margin:0}.cdx-block-quote{border:solid #acacac;border-width:0 0 0 3px;-webkit-box-shadow:none;box-shadow:none;color:#666;line-height:1.6em;padding:1px 0 0 12px;text-align:left}.ce-delimiter__line__wrapper{height:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ce-delimiter__line{-webkit-box-flex:1;-ms-flex:1;flex:1;height:2px;background-color:#eff0f1}.cdx-list{margin:0;padding:0;outline:none;display:grid;counter-reset:item;grid-gap:var(--spacing-s);padding:var(--spacing-xs);--spacing-s: 8px;--spacing-xs: 6px;--list-counter-type: numeric;--radius-border: 5px;--checkbox-background: #fff;--color-border: #C9C9C9;--color-bg-checked: #369FFF;--line-height: 1.45em;--color-bg-checked-hover: #0059AB;--color-tick: #fff;--size-checkbox: 1.2em}.cdx-list ol{padding-left:0}.cdx-list__item{line-height:var(--line-height);display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;grid-template-areas:"checkbox content" ". child"}.cdx-list__item-children{display:grid;grid-area:child;grid-gap:var(--spacing-s);padding-top:var(--spacing-s)}.cdx-list__item [contenteditable]{outline:none}.cdx-list__item-content{word-break:break-word;white-space:pre-wrap;grid-area:content;padding-left:var(--spacing-s)}.cdx-list__item:before{counter-increment:item;white-space:nowrap}.cdx-list-ordered .cdx-list__item:before{content:counters(item,".",var(--list-counter-type)) "."}.cdx-list-ordered{counter-reset:item}.cdx-list-unordered{padding-left:0}.cdx-list-unordered .cdx-list__item:before{content:"•"}.cdx-list-checklist .cdx-list__item:before{content:""}.cdx-list__settings .cdx-settings-button{width:50%}.cdx-list__checkbox{padding-top:calc((var(--line-height) - var(--size-checkbox)) / 2);grid-area:checkbox;width:var(--size-checkbox);height:var(--size-checkbox);display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer}.cdx-list__checkbox svg{opacity:0;height:var(--size-checkbox);width:var(--size-checkbox);left:-1px;top:-1px;position:absolute}@media (hover: hover){.cdx-list__checkbox:not(.cdx-list__checkbox--no-hover):hover .cdx-list__checkbox-check svg{opacity:1}}.cdx-list__checkbox--checked{line-height:var(--line-height)}@media (hover: hover){.cdx-list__checkbox--checked:not(.cdx-list__checkbox--checked--no-hover):hover .cdx-checklist__checkbox-check{background:var(--color-bg-checked-hover);border-color:var(--color-bg-checked-hover)}}.cdx-list__checkbox--checked .cdx-list__checkbox-check{background:var(--color-bg-checked);border-color:var(--color-bg-checked)}.cdx-list__checkbox--checked .cdx-list__checkbox-check svg{opacity:1}.cdx-list__checkbox--checked .cdx-list__checkbox-check svg path{stroke:var(--color-tick)}.cdx-list__checkbox--checked .cdx-list__checkbox-check:before{opacity:0;visibility:visible;-webkit-transform:scale(2.5);transform:scale(2.5)}.cdx-list__checkbox-check{cursor:pointer;display:inline-block;position:relative;margin:0 auto;width:var(--size-checkbox);height:var(--size-checkbox);-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:var(--radius-border);border:1px solid var(--color-border);background:var(--checkbox-background)}.cdx-list__checkbox-check:before{content:"";position:absolute;inset:0;border-radius:100%;background-color:var(--color-bg-checked);visibility:hidden;pointer-events:none;-webkit-transform:scale(1);transform:scale(1);-webkit-transition:opacity .4s,-webkit-transform .4s ease-out;transition:opacity .4s,-webkit-transform .4s ease-out;transition:transform .4s ease-out,opacity .4s;transition:transform .4s ease-out,opacity .4s,-webkit-transform .4s ease-out}.cdx-list__checkbox-check--disabled{pointer-events:none}.cdx-list-start-with-field{background:#F8F8F8;border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:2px;display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto}.cdx-list-start-with-field--invalid{background:#FFECED;border:1px solid #E13F3F}.cdx-list-start-with-field--invalid .cdx-list-start-with-field__input{color:#e13f3f}.cdx-list-start-with-field__input{font-size:14px;outline:none;font-weight:500;font-family:inherit;border:0;background:transparent;margin:0;padding:0;line-height:22px;min-width:calc(100% - var(--toolbox-buttons-size) - var(--icon-margin-right))}.cdx-list-start-with-field__input::-webkit-input-placeholder{color:var(--grayText);font-weight:500}.cdx-list-start-with-field__input::-moz-placeholder{color:var(--grayText);font-weight:500}.cdx-list-start-with-field__input:-ms-input-placeholder{color:var(--grayText);font-weight:500}.cdx-list-start-with-field__input::-ms-input-placeholder{color:var(--grayText);font-weight:500}.cdx-list-start-with-field__input::placeholder{color:var(--grayText);font-weight:500}.cdx-alert{position:relative;padding:10px;border-radius:5px;margin-bottom:10px}.cdx-alert-primary{background-color:#ebf8ff;border:1px solid #4299e1;color:#2b6cb0}.cdx-alert-secondary{background-color:#f7fafc;border:1px solid #cbd5e0;color:#222731}.cdx-alert-info{background-color:#e6fdff;border:1px solid #4cd4ce;color:#00727c}.cdx-alert-success{background-color:#f0fff4;border:1px solid #68d391;color:#2f855a}.cdx-alert-warning{background-color:#fffaf0;border:1px solid #ed8936;color:#c05621}.cdx-alert-danger{background-color:#fff5f5;border:1px solid #fc8181;color:#c53030}.cdx-alert-light{background-color:#fff;border:1px solid #edf2f7;color:#1a202c}.cdx-alert-dark{background-color:#2d3748;border:1px solid #1a202c;color:#d3d3d3}.cdx-alert-align-left{text-align:left}.cdx-alert-align-center{text-align:center}.cdx-alert-align-right{text-align:right}.cdx-alert__message{outline:none}.cdx-alert [contentEditable=true][data-placeholder]:before{position:absolute;content:attr(data-placeholder);color:#707684;font-weight:400;opacity:0}.cdx-alert [contentEditable=true][data-placeholder]:empty:before{opacity:1}.cdx-alert [contentEditable=true][data-placeholder]:empty:focus:before{opacity:0}.ce-popover__item[data-item-name=alert-primary] .ce-popover__item-icon svg #background{fill:#ebf8ff;stroke:#4299e1}.ce-popover__item[data-item-name=alert-primary] .ce-popover__item-icon svg #content{fill:#2b6cb0}.ce-popover__item[data-item-name=alert-secondary] .ce-popover__item-icon svg #background{fill:#f7fafc;stroke:#cbd5e0}.ce-popover__item[data-item-name=alert-secondary] .ce-popover__item-icon svg #content{fill:#222731}.ce-popover__item[data-item-name=alert-info] .ce-popover__item-icon svg #background{fill:#e6fdff;stroke:#4cd4ce}.ce-popover__item[data-item-name=alert-info] .ce-popover__item-icon svg #content{fill:#00727c}.ce-popover__item[data-item-name=alert-success] .ce-popover__item-icon svg #background{fill:#f0fff4;stroke:#68d391}.ce-popover__item[data-item-name=alert-success] .ce-popover__item-icon svg #content{fill:#2f855a}.ce-popover__item[data-item-name=alert-warning] .ce-popover__item-icon svg #background{fill:#fffaf0;stroke:#ed8936}.ce-popover__item[data-item-name=alert-warning] .ce-popover__item-icon svg #content{fill:#c05621}.ce-popover__item[data-item-name=alert-danger] .ce-popover__item-icon svg #background{fill:#fff5f5;stroke:#fc8181}.ce-popover__item[data-item-name=alert-danger] .ce-popover__item-icon svg #content{fill:#c53030}.ce-popover__item[data-item-name=alert-light] .ce-popover__item-icon svg #background{fill:#fff;stroke:#edf2f7}.ce-popover__item[data-item-name=alert-light] .ce-popover__item-icon svg #content{fill:#1a202c}.ce-popover__item[data-item-name=alert-dark] .ce-popover__item-icon svg #background{fill:#2d3748;stroke:#1a202c}.ce-popover__item[data-item-name=alert-dark] .ce-popover__item-icon svg #content{fill:#d3d3d3}.cdx-alert_setting__icon_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:10px}.cdx-alert_setting__icon_wrapper_align{margin-top:10px}.cdx-alert_setting__icon{display:inline-block;width:24px;height:24px;text-align:center;line-height:24px;cursor:pointer}.cdx-alert_setting__icon_active{opacity:.3}.ce-popover-indent-item{cursor:default!important}.ce-popover-indent-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px}.ce-popover-indent-item[version^="2.26"]{gap:10px}.ce-popover-indent-item:hover{background-color:transparent!important}.ce-popover-indent-item .ce-popover-item__icon{width:26px;height:26px;cursor:pointer;will-change:background-color,color;transition:.3s background-color,.3s color;padding:0;border-width:0px;color:#000;background-color:#fff;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;-webkit-transition:.3s background-color,.3s color;-moz-transition:.3s background-color,.3s color;-ms-transition:.3s background-color,.3s color;-o-transition:.3s background-color,.3s color}.ce-popover-indent-item .ce-popover-item--disabled{color:#707684;opacity:.3;cursor:default}.ce-popover-indent-item .ce-popover-item__icon:focus{outline:none}.ce-popover-indent-item[version^="2.26"]:hover .ce-popover-item__icon,.ce-popover-indent-item[version^="2.27"]:hover .ce-popover-item__icon,.ce-popover-indent-item[version^="2.28"]:hover .ce-popover-item__icon,.ce-popover-indent-item[version^="2.29"]:hover .ce-popover-item__icon,.ce-popover-indent-item[version^="2.26"] .ce-popover-item__icon,.ce-popover-indent-item[version^="2.27"] .ce-popover-item__icon,.ce-popover-indent-item[version^="2.28"] .ce-popover-item__icon,.ce-popover-indent-item[version^="2.29"] .ce-popover-item__icon{box-shadow:0 0 0 1px #c9c9cc7a!important;-webkit-box-shadow:0 0 0 1px rgba(201,201,204,.48)!important}.ce-popover-indent-item[version^="2.26"] .ce-popover-item__icon:hover,.ce-popover-indent-item[version^="2.27"] .ce-popover-item__icon:hover,.ce-popover-indent-item[version^="2.28"] .ce-popover-item__icon:hover,.ce-popover-indent-item[version^="2.29"] .ce-popover-item__icon:hover{background-color:#eff2f5}.ce-highlight-indent{display:inline-block;height:1.6em;top:50%;position:absolute;transform:translateY(-50%);-webkit-transform:translate(0px,-50%);-moz-transform:translate(0px,-50%);-ms-transform:translate(0px,-50%);-o-transform:translate(0px,-50%)}.ce-popover-indent-item[version^="2.3"] .ce-popover-item__title{margin-left:4px}.cdx-marker{background:rgba(245,235,111,.29);padding:3px 0}.ce-popover--inline .ce-popover--nested .ce-popover__container{width:-webkit-min-content!important;width:-moz-min-content!important;width:min-content!important;min-width:0!important;min-width:initial!important}.ce-popover--inline .ce-popover--nested .ce-popover__items{width:-webkit-max-content;width:-moz-max-content;width:max-content}.editorjs__color-selector-container{display:grid;grid-gap:10px;padding:4px}.editorjs__color-selector__container-item{width:30px;height:30px;display:block;cursor:pointer;border-radius:100%;-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.editorjs__color-selector__container-item:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.cdx-underline{-webkit-text-decoration:underline;text-decoration:underline}.inline-code{background:rgba(250,239,240,.78);color:#b44437;padding:3px 4px;border-radius:5px;margin:0 1px;font-family:inherit;font-size:.86em;font-weight:500;letter-spacing:.3px}.tc-wrap{--color-background: #f9f9fb;--color-text-secondary: #7b7e89;--color-border: #e8e8eb;--cell-size: 34px;--toolbox-icon-size: 18px;--toolbox-padding: 6px;--toolbox-aiming-field-size: calc(var(--toolbox-icon-size) + var(--toolbox-padding)*2);--col-width: 100px 100px 100px;position:relative;height:100%;margin-top:var(--toolbox-icon-size);-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-grid;z-index:0}.tc-wrap svg{vertical-align:top}@media print{.tc-wrap{border-left-color:var(--color-border);border-left-style:solid;border-left-width:1px}}@media print{.tc-wrap .tc-row:after{display:none}}.tc-table{position:relative;width:100%;height:100%;display:grid;font-size:14px;border-top:1px solid var(--color-border);border-left:1px solid var(--color-border);line-height:1.4;overflow-x:auto}.tc-table:after{width:calc(var(--cell-size));height:100%;left:calc(var(--cell-size)*-1);top:0}.tc-table:after,.tc-table:before{position:absolute;content:""}.tc-table:before{width:100%;height:var(--toolbox-aiming-field-size);top:calc(var(--toolbox-aiming-field-size)*-1);left:0}.tc-table--heading .tc-row:first-child{font-weight:600;border-bottom:2px solid var(--color-border);position:sticky;top:0;z-index:2;background:var(--color-background)}.tc-table--heading .tc-row:first-child [contenteditable]:empty:before{content:attr(heading);color:var(--color-text-secondary)}.tc-table--heading .tc-row:first-child:after{bottom:-2px;border-bottom:2px solid var(--color-border)}.tc-add-column,.tc-add-row{display:-webkit-box;display:-ms-flexbox;display:flex;color:var(--color-text-secondary)}@media print{.tc-add{display:none}}.tc-add-column{display:grid;border-top:1px solid var(--color-border);grid-auto-rows:var(--cell-size);-webkit-box-align:center;-ms-flex-align:center;align-items:center;justify-items:center}.tc-add-column svg{padding:5px;position:sticky;top:0;background-color:var(--color-background)}.tc-add-column--disabled{visibility:hidden}@media print{.tc-add-column{display:none}}.tc-add-row{height:var(--cell-size);-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:4px;position:relative}.tc-add-row--disabled{display:none}.tc-add-row:before{content:"";position:absolute;right:calc(var(--cell-size)*-1);width:var(--cell-size);height:100%}@media print{.tc-add-row{display:none}}.tc-add-column,.tc-add-row{-webkit-transition:0s;transition:0s;cursor:pointer;will-change:background-color}.tc-add-column:hover,.tc-add-row:hover{-webkit-transition:background-color .1s ease;transition:background-color .1s ease;background-color:var(--color-background)}.tc-add-row{margin-top:1px}.tc-add-row:hover:before{-webkit-transition:.1s;transition:.1s;background-color:var(--color-background)}.tc-row{display:grid;grid-template-columns:var(--col-width);position:relative;border-bottom:1px solid var(--color-border)}.tc-row--selected{background:var(--color-background)}.tc-row--selected:after{background:var(--color-background)}.tc-cell{border-right:1px solid var(--color-border);padding:6px 12px;overflow:hidden;outline:none;line-break:normal}.tc-cell--selected{background:var(--color-background)}.tc-wrap--readonly .tc-row:after{display:none}.tc-toolbox{--toolbox-padding: 6px;--popover-margin: 30px;--toggler-click-zone-size: 30px;--toggler-dots-color: #7b7e89;--toggler-dots-color-hovered: #1d202b;position:absolute;cursor:pointer;z-index:1;opacity:0;-webkit-transition:opacity .1s;transition:opacity .1s;will-change:left,opacity}.tc-toolbox--column{top:calc(var(--toggler-click-zone-size)*-1);-webkit-transform:translate(calc(var(--toggler-click-zone-size)*-1/2));transform:translate(calc(var(--toggler-click-zone-size)*-1/2));will-change:left,opacity}.tc-toolbox--row{left:calc(var(--popover-margin)*-1);-webkit-transform:translateY(calc(var(--toggler-click-zone-size)*-1/2));transform:translateY(calc(var(--toggler-click-zone-size)*-1/2));margin-top:-1px;will-change:top,opacity}.tc-toolbox--showed{opacity:1}.tc-toolbox .tc-popover{position:absolute;top:0;left:var(--popover-margin)}.tc-toolbox__toggler{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:var(--toggler-click-zone-size);height:var(--toggler-click-zone-size);color:var(--toggler-dots-color);opacity:0;-webkit-transition:opacity .15s ease;transition:opacity .15s ease;will-change:opacity}.tc-toolbox__toggler:hover{color:var(--toggler-dots-color-hovered)}.tc-toolbox__toggler svg{fill:currentColor}.tc-wrap:hover .tc-toolbox__toggler{opacity:1}.tc-settings .cdx-settings-button{width:50%;margin:0}.tc-popover{--color-border: #eaeaea;--color-background: #fff;--color-background-hover: rgba(232, 232, 235, .49);--color-background-confirm: #e24a4a;--color-background-confirm-hover: #d54040;--color-text-confirm: #fff;background:var(--color-background);border:1px solid var(--color-border);-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.12941);box-shadow:0 3px 15px -3px #0d142121;border-radius:6px;padding:6px;display:none;will-change:opacity,transform}.tc-popover--opened{display:block;-webkit-animation:menuShowing .1s cubic-bezier(.215,.61,.355,1) forwards;animation:menuShowing .1s cubic-bezier(.215,.61,.355,1) forwards}.tc-popover__item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:2px 14px 2px 2px;border-radius:5px;cursor:pointer;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tc-popover__item:hover{background:var(--color-background-hover)}.tc-popover__item:not(:last-of-type){margin-bottom:2px}.tc-popover__item-icon{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;width:26px;height:26px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--color-background);border-radius:5px;border:1px solid var(--color-border);margin-right:8px}.tc-popover__item-label{line-height:22px;font-size:14px;font-weight:500}.tc-popover__item--confirm{background:var(--color-background-confirm);color:var(--color-text-confirm)}.tc-popover__item--confirm:hover{background-color:var(--color-background-confirm-hover)}.tc-popover__item--confirm .tc-popover__item-icon{background:var(--color-background-confirm);border-color:#0000001a}.tc-popover__item--confirm .tc-popover__item-icon svg{-webkit-transition:-webkit-transform .2s ease-in;transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in;-webkit-transform:rotate(90deg) scale(1.2);transform:rotate(90deg) scale(1.2)}.tc-popover__item--hidden{display:none}@-webkit-keyframes menuShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes menuShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.cell-resizable{cursor:col-resize}.image-tool{--bg-color: #cdd1e0;--front-color: #388ae5;--border-color: #e8e8eb }.image-tool__image{border-radius:3px;overflow:hidden;margin-bottom:10px;padding-bottom:0}.image-tool__image-picture{max-width:100%;vertical-align:bottom;display:inline-block}.image-tool__image-preloader{width:50px;height:50px;border-radius:50%;background-size:cover;margin:auto;position:relative;background-color:var(--bg-color);background-position:center center}.image-tool__image-preloader:after{content:"";position:absolute;z-index:3;width:60px;height:60px;border-radius:50%;border:2px solid var(--bg-color);border-top-color:var(--front-color);left:50%;top:50%;margin-top:-30px;margin-left:-30px;-webkit-animation:image-preloader-spin 2s infinite linear;animation:image-preloader-spin 2s infinite linear;-webkit-box-sizing:border-box;box-sizing:border-box}.image-tool__caption{visibility:hidden;position:absolute;bottom:0;left:0;margin-bottom:10px}.image-tool__caption[contentEditable=true][data-placeholder]:before{position:absolute!important}.image-tool__caption[contentEditable=true][data-placeholder]:before{content:attr(data-placeholder);color:#707684;font-weight:400;display:none}.image-tool__caption[contentEditable=true][data-placeholder]:empty:before{display:block}.image-tool__caption[contentEditable=true][data-placeholder]:empty:focus:before{display:none}.image-tool--empty .image-tool__image,.image-tool--empty .image-tool__image-preloader{display:none}.image-tool--empty .image-tool__caption,.image-tool--uploading .image-tool__caption{visibility:hidden!important}.image-tool .cdx-button{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.image-tool .cdx-button svg{height:auto;margin:0 6px 0 0}.image-tool--filled .cdx-button,.image-tool--filled .image-tool__image-preloader{display:none}.image-tool--uploading .image-tool__image{min-height:200px;display:-webkit-box;display:-ms-flexbox;display:flex;border:1px solid var(--border-color);background-color:#fff}.image-tool--uploading .image-tool__image-picture,.image-tool--uploading .cdx-button{display:none}.image-tool--withBorder .image-tool__image{border:1px solid var(--border-color)}.image-tool--withBackground .image-tool__image{padding:15px;background:var(--bg-color)}.image-tool--withBackground .image-tool__image-picture{max-width:60%;margin:0 auto}.image-tool--stretched .image-tool__image-picture{width:100%}.image-tool--caption .image-tool__caption{visibility:visible}.image-tool--caption{padding-bottom:50px}@-webkit-keyframes image-preloader-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes image-preloader-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}')),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|
|
2
|
-
import { defineComponent as
|
|
3
|
-
import
|
|
4
|
-
import { bundledLanguagesInfo as
|
|
5
|
-
import { make as
|
|
6
|
-
import { focus as
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
e.component(i.name, i);
|
|
14
|
-
}, t)
|
|
15
|
-
for (const [e, i] of Object.entries(t))
|
|
16
|
-
h[e] = i;
|
|
17
|
-
return h;
|
|
18
|
-
};
|
|
19
|
-
class ne {
|
|
1
|
+
(function(){"use strict";try{if(typeof document!="undefined"){var e=document.createElement("style");e.appendChild(document.createTextNode(':root{--color-border: #EFF0F1}.ebl-editor{cursor:text;font-size:16px;font-weight:400;background-color:#fff}.ebl-editor-title{min-height:55px}.ebl-editor-title-wrap{min-height:55px;margin:0 auto}.ebl-editor-title-input{min-height:55px;width:100%;font-weight:600;border:none;background-color:transparent;font-size:34px}.ebl-editor-title-input:focus{outline:none}.ebl-editor-title-input:active{outline:none}.ebl-editor-time-wrap{white-space:nowrap;font-size:14px;font-weight:400;line-height:22px;padding-top:12px;padding-bottom:8px;color:#646a73}.ce-block__content{max-width:650px}@media (min-width: 1050px){.ce-block__content,.ce-toolbar__content{max-width:700px}}.ce-toolbar,.ce-inline-toolbar{z-index:1000}.ce-toolbar__plus{border:1px solid #EFF0F1}.ce-toolbar .ce-popover__items{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.ce-toolbar .ce-popover__items .ce-popover-item{position:relative}.ce-toolbar .ce-popover__items .ce-popover-item__title{display:none}.ce-toolbar .ce-popover-item-html,.ce-toolbar .ce-popover-item-separator,.ce-toolbar .ce-popover-item[data-item-name=convert-to]{width:100%}.ce-toolbar .ce-popover-item[data-item-name=convert-to] .ce-popover-item__title{display:block}.ce-inline-toolbar .ce-popover__items{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.ce-inline-toolbar .ce-popover__items{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.ce-inline-toolbar .ce-popover__items .ce-popover-item__title{display:none}.ce-block--drop-target .ce-block__content:before{content:"";position:absolute;top:50%;left:-20px;margin-top:-1px;height:8px;width:8px;border:solid #a0a0a0;border-width:1px 1px 0 0;-webkit-transform-origin:right;transform-origin:right;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ce-block--drop-target .ce-block__content:after{background:none}.ce-header{padding:.6em 0 3px;margin:0;line-height:1.25em;outline:none}.ce-header p,.ce-header div{padding:0!important;margin:0!important}.ce-tune-alignment--right{text-align:right}.ce-tune-alignment--center{text-align:center}.ce-tune-alignment--left{text-align:left}.ce-paragraph{line-height:1.6em;outline:none}.ce-block:only-of-type .ce-paragraph[data-placeholder-active]:empty:before,.ce-block:only-of-type .ce-paragraph[data-placeholder-active][data-empty=true]:before{content:attr(data-placeholder-active)}.ce-paragraph p:first-of-type{margin-top:0}.ce-paragraph p:last-of-type{margin-bottom:0}.ce-editorjs-x-shiki{border-radius:10px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:10px 0}.ce-editorjs-x-shiki__code{position:relative;float:left;min-width:100%;overflow-x:auto}.ce-editorjs-x-shiki__selector{display:-webkit-box;display:-ms-flexbox;display:flex;gap:.25rem;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;z-index:12;border-bottom-style:solid;border-color:#9ca3af0d;padding:.5rem}.ce-editorjs-x-shiki__selector-language,.ce-editorjs-x-shiki__selector-theme{font-size:13px;font-family:inherit}.ce-editorjs-x-shiki__selector-language{width:90px}.ce-editorjs-x-shiki__selector select{border:none;outline:none}.ce-editorjs-x-shiki__span{position:relative;z-index:0;padding:20px;margin:0;white-space:pre;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.ce-editorjs-x-shiki__textarea{white-space:pre;overflow:hidden;background-color:transparent;position:absolute;padding:20px;inset:0;color:transparent;z-index:0;font-size:13px;caret-color:#999;resize:none;border:none;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.ce-editorjs-x-shiki__copy{width:24px;height:24px;cursor:pointer;position:relative;margin-right:0}.ce-editorjs-x-shiki__copy_tip{font-size:12px;width:60px;margin-left:-20px;background-color:#0c0c0c;color:#ececec;text-align:center;border-radius:6px;padding:5px 10px;position:absolute;z-index:1;top:125%;-webkit-transition:opacity .3s;transition:opacity .3s;visibility:hidden;opacity:0}.ce-editorjs-x-shiki__copy_tip:after{content:"";position:absolute;bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-style:solid;border-color:transparent transparent #0c0c0c transparent}.ce-editorjs-x-shiki__copy_tip.visible{visibility:visible;opacity:1}.cdx-quote{overflow:hidden;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;word-wrap:break-word;word-break:break-all}.cdx-quote blockquote{margin:0}.cdx-block-quote{border:solid #acacac;border-width:0 0 0 3px;-webkit-box-shadow:none;box-shadow:none;color:#666;line-height:1.6em;padding:1px 0 0 12px;text-align:left}.ce-delimiter__line__wrapper{height:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.ce-delimiter__line{-webkit-box-flex:1;-ms-flex:1;flex:1;height:2px;background-color:#eff0f1}.cdx-list{margin:0;padding:0;outline:none;display:grid;counter-reset:item;grid-gap:var(--spacing-s);padding:var(--spacing-xs);--spacing-s: 8px;--spacing-xs: 6px;--list-counter-type: numeric;--radius-border: 5px;--checkbox-background: #fff;--color-border: #C9C9C9;--color-bg-checked: #369FFF;--line-height: 1.45em;--color-bg-checked-hover: #0059AB;--color-tick: #fff;--size-checkbox: 1.2em}.cdx-list ol{padding-left:0}.cdx-list__item{line-height:var(--line-height);display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;grid-template-areas:"checkbox content" ". child"}.cdx-list__item-children{display:grid;grid-area:child;grid-gap:var(--spacing-s);padding-top:var(--spacing-s)}.cdx-list__item [contenteditable]{outline:none}.cdx-list__item-content{word-break:break-word;white-space:pre-wrap;grid-area:content;padding-left:var(--spacing-s)}.cdx-list__item:before{counter-increment:item;white-space:nowrap}.cdx-list-ordered .cdx-list__item:before{content:counters(item,".",var(--list-counter-type)) "."}.cdx-list-ordered{counter-reset:item}.cdx-list-unordered{padding-left:0}.cdx-list-unordered .cdx-list__item:before{content:"•"}.cdx-list-checklist .cdx-list__item:before{content:""}.cdx-list__settings .cdx-settings-button{width:50%}.cdx-list__checkbox{padding-top:calc((var(--line-height) - var(--size-checkbox)) / 2);grid-area:checkbox;width:var(--size-checkbox);height:var(--size-checkbox);display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer}.cdx-list__checkbox svg{opacity:0;height:var(--size-checkbox);width:var(--size-checkbox);left:-1px;top:-1px;position:absolute}@media (hover: hover){.cdx-list__checkbox:not(.cdx-list__checkbox--no-hover):hover .cdx-list__checkbox-check svg{opacity:1}}.cdx-list__checkbox--checked{line-height:var(--line-height)}@media (hover: hover){.cdx-list__checkbox--checked:not(.cdx-list__checkbox--checked--no-hover):hover .cdx-checklist__checkbox-check{background:var(--color-bg-checked-hover);border-color:var(--color-bg-checked-hover)}}.cdx-list__checkbox--checked .cdx-list__checkbox-check{background:var(--color-bg-checked);border-color:var(--color-bg-checked)}.cdx-list__checkbox--checked .cdx-list__checkbox-check svg{opacity:1}.cdx-list__checkbox--checked .cdx-list__checkbox-check svg path{stroke:var(--color-tick)}.cdx-list__checkbox--checked .cdx-list__checkbox-check:before{opacity:0;visibility:visible;-webkit-transform:scale(2.5);transform:scale(2.5)}.cdx-list__checkbox-check{cursor:pointer;display:inline-block;position:relative;margin:0 auto;width:var(--size-checkbox);height:var(--size-checkbox);-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:var(--radius-border);border:1px solid var(--color-border);background:var(--checkbox-background)}.cdx-list__checkbox-check:before{content:"";position:absolute;inset:0;border-radius:100%;background-color:var(--color-bg-checked);visibility:hidden;pointer-events:none;-webkit-transform:scale(1);transform:scale(1);-webkit-transition:opacity .4s,-webkit-transform .4s ease-out;transition:opacity .4s,-webkit-transform .4s ease-out;transition:transform .4s ease-out,opacity .4s;transition:transform .4s ease-out,opacity .4s,-webkit-transform .4s ease-out}.cdx-list__checkbox-check--disabled{pointer-events:none}.cdx-list-start-with-field{background:#f8f8f8;border:1px solid rgba(226,226,229,.2);border-radius:6px;padding:2px;display:grid;grid-template-columns:auto auto 1fr;grid-template-rows:auto}.cdx-list-start-with-field--invalid{background:#ffeced;border:1px solid #E13F3F}.cdx-list-start-with-field--invalid .cdx-list-start-with-field__input{color:#e13f3f}.cdx-list-start-with-field__input{font-size:14px;outline:none;font-weight:500;font-family:inherit;border:0;background:transparent;margin:0;padding:0;line-height:22px;min-width:calc(100% - var(--toolbox-buttons-size) - var(--icon-margin-right))}.cdx-list-start-with-field__input::-webkit-input-placeholder{color:var(--grayText);font-weight:500}.cdx-list-start-with-field__input::-moz-placeholder{color:var(--grayText);font-weight:500}.cdx-list-start-with-field__input:-ms-input-placeholder{color:var(--grayText);font-weight:500}.cdx-list-start-with-field__input::-ms-input-placeholder{color:var(--grayText);font-weight:500}.cdx-list-start-with-field__input::placeholder{color:var(--grayText);font-weight:500}.cdx-alert{position:relative;padding:10px;border-radius:5px;margin-bottom:10px}.cdx-alert-primary{background-color:#ebf8ff;border:1px solid #4299e1;color:#2b6cb0}.cdx-alert-secondary{background-color:#f7fafc;border:1px solid #cbd5e0;color:#222731}.cdx-alert-info{background-color:#e6fdff;border:1px solid #4cd4ce;color:#00727c}.cdx-alert-success{background-color:#f0fff4;border:1px solid #68d391;color:#2f855a}.cdx-alert-warning{background-color:#fffaf0;border:1px solid #ed8936;color:#c05621}.cdx-alert-danger{background-color:#fff5f5;border:1px solid #fc8181;color:#c53030}.cdx-alert-light{background-color:#fff;border:1px solid #edf2f7;color:#1a202c}.cdx-alert-dark{background-color:#2d3748;border:1px solid #1a202c;color:#d3d3d3}.cdx-alert-align-left{text-align:left}.cdx-alert-align-center{text-align:center}.cdx-alert-align-right{text-align:right}.cdx-alert__message{outline:none}.cdx-alert [contentEditable=true][data-placeholder]:before{position:absolute;content:attr(data-placeholder);color:#707684;font-weight:400;opacity:0}.cdx-alert [contentEditable=true][data-placeholder]:empty:before{opacity:1}.cdx-alert [contentEditable=true][data-placeholder]:empty:focus:before{opacity:0}.ce-popover__item[data-item-name=alert-primary] .ce-popover__item-icon svg #background{fill:#ebf8ff;stroke:#4299e1}.ce-popover__item[data-item-name=alert-primary] .ce-popover__item-icon svg #content{fill:#2b6cb0}.ce-popover__item[data-item-name=alert-secondary] .ce-popover__item-icon svg #background{fill:#f7fafc;stroke:#cbd5e0}.ce-popover__item[data-item-name=alert-secondary] .ce-popover__item-icon svg #content{fill:#222731}.ce-popover__item[data-item-name=alert-info] .ce-popover__item-icon svg #background{fill:#e6fdff;stroke:#4cd4ce}.ce-popover__item[data-item-name=alert-info] .ce-popover__item-icon svg #content{fill:#00727c}.ce-popover__item[data-item-name=alert-success] .ce-popover__item-icon svg #background{fill:#f0fff4;stroke:#68d391}.ce-popover__item[data-item-name=alert-success] .ce-popover__item-icon svg #content{fill:#2f855a}.ce-popover__item[data-item-name=alert-warning] .ce-popover__item-icon svg #background{fill:#fffaf0;stroke:#ed8936}.ce-popover__item[data-item-name=alert-warning] .ce-popover__item-icon svg #content{fill:#c05621}.ce-popover__item[data-item-name=alert-danger] .ce-popover__item-icon svg #background{fill:#fff5f5;stroke:#fc8181}.ce-popover__item[data-item-name=alert-danger] .ce-popover__item-icon svg #content{fill:#c53030}.ce-popover__item[data-item-name=alert-light] .ce-popover__item-icon svg #background{fill:#fff;stroke:#edf2f7}.ce-popover__item[data-item-name=alert-light] .ce-popover__item-icon svg #content{fill:#1a202c}.ce-popover__item[data-item-name=alert-dark] .ce-popover__item-icon svg #background{fill:#2d3748;stroke:#1a202c}.ce-popover__item[data-item-name=alert-dark] .ce-popover__item-icon svg #content{fill:#d3d3d3}.cdx-alert_setting__icon_wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:10px}.cdx-alert_setting__icon_wrapper_align{margin-top:10px}.cdx-alert_setting__icon{display:inline-block;width:24px;height:24px;text-align:center;line-height:24px;cursor:pointer}.cdx-alert_setting__icon_active{opacity:.3}.ce-popover-indent-item{cursor:default!important}.ce-popover-indent-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px}.ce-popover-indent-item[version^="2.26"]{gap:10px}.ce-popover-indent-item:hover{background-color:transparent!important}.ce-popover-indent-item .ce-popover-item__icon{width:26px;height:26px;cursor:pointer;will-change:background-color,color;transition:.3s background-color,.3s color;padding:0;border-width:0px;color:#000;background-color:#fff;border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;-o-border-radius:5px;-webkit-transition:.3s background-color,.3s color;-moz-transition:.3s background-color,.3s color;-ms-transition:.3s background-color,.3s color;-o-transition:.3s background-color,.3s color}.ce-popover-indent-item .ce-popover-item--disabled{color:#707684;opacity:.3;cursor:default}.ce-popover-indent-item .ce-popover-item__icon:focus{outline:none}.ce-popover-indent-item[version^="2.26"]:hover .ce-popover-item__icon,.ce-popover-indent-item[version^="2.27"]:hover .ce-popover-item__icon,.ce-popover-indent-item[version^="2.28"]:hover .ce-popover-item__icon,.ce-popover-indent-item[version^="2.29"]:hover .ce-popover-item__icon,.ce-popover-indent-item[version^="2.26"] .ce-popover-item__icon,.ce-popover-indent-item[version^="2.27"] .ce-popover-item__icon,.ce-popover-indent-item[version^="2.28"] .ce-popover-item__icon,.ce-popover-indent-item[version^="2.29"] .ce-popover-item__icon{box-shadow:0 0 0 1px #c9c9cc7a!important;-webkit-box-shadow:0 0 0 1px rgba(201,201,204,.48)!important}.ce-popover-indent-item[version^="2.26"] .ce-popover-item__icon:hover,.ce-popover-indent-item[version^="2.27"] .ce-popover-item__icon:hover,.ce-popover-indent-item[version^="2.28"] .ce-popover-item__icon:hover,.ce-popover-indent-item[version^="2.29"] .ce-popover-item__icon:hover{background-color:#eff2f5}.ce-highlight-indent{display:inline-block;height:1.6em;top:50%;position:absolute;transform:translateY(-50%);-webkit-transform:translate(0px,-50%);-moz-transform:translate(0px,-50%);-ms-transform:translate(0px,-50%);-o-transform:translate(0px,-50%)}.ce-popover-indent-item[version^="2.3"] .ce-popover-item__title{margin-left:4px}.cdx-marker{background:#f5eb6f4a;padding:3px 0}.ce-popover--inline .ce-popover--nested .ce-popover__container{width:-webkit-min-content!important;width:-moz-min-content!important;width:min-content!important;min-width:0!important;min-width:initial!important}.ce-popover--inline .ce-popover--nested .ce-popover__items{width:-webkit-max-content;width:-moz-max-content;width:max-content}.editorjs__color-selector-container{display:grid;grid-gap:10px;padding:4px}.editorjs__color-selector__container-item{width:30px;height:30px;display:block;cursor:pointer;border-radius:100%;-webkit-transition:-webkit-transform .2s ease;transition:-webkit-transform .2s ease;transition:transform .2s ease;transition:transform .2s ease,-webkit-transform .2s ease}.editorjs__color-selector__container-item:hover{-webkit-transform:scale(1.1);transform:scale(1.1)}.cdx-underline{-webkit-text-decoration:underline;text-decoration:underline}.inline-code{background:#faeff0c7;color:#b44437;padding:3px 4px;border-radius:5px;margin:0 1px;font-family:inherit;font-size:.86em;font-weight:500;letter-spacing:.3px}.tc-wrap{--color-background: #f9f9fb;--color-text-secondary: #7b7e89;--color-border: #e8e8eb;--cell-size: 34px;--toolbox-icon-size: 18px;--toolbox-padding: 6px;--toolbox-aiming-field-size: calc(var(--toolbox-icon-size) + var(--toolbox-padding)*2);--col-width: 100px 100px 100px;position:relative;height:100%;margin-top:var(--toolbox-icon-size);-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-grid;z-index:0}.tc-wrap svg{vertical-align:top}@media print{.tc-wrap{border-left-color:var(--color-border);border-left-style:solid;border-left-width:1px}}@media print{.tc-wrap .tc-row:after{display:none}}.tc-table{position:relative;width:100%;height:100%;display:grid;font-size:14px;border-top:1px solid var(--color-border);border-left:1px solid var(--color-border);line-height:1.4;overflow-x:auto}.tc-table:after{width:calc(var(--cell-size));height:100%;left:calc(var(--cell-size)*-1);top:0}.tc-table:after,.tc-table:before{position:absolute;content:""}.tc-table:before{width:100%;height:var(--toolbox-aiming-field-size);top:calc(var(--toolbox-aiming-field-size)*-1);left:0}.tc-table--heading .tc-row:first-child{font-weight:600;border-bottom:2px solid var(--color-border);position:sticky;top:0;z-index:2;background:var(--color-background)}.tc-table--heading .tc-row:first-child [contenteditable]:empty:before{content:attr(heading);color:var(--color-text-secondary)}.tc-table--heading .tc-row:first-child:after{bottom:-2px;border-bottom:2px solid var(--color-border)}.tc-add-column,.tc-add-row{display:-webkit-box;display:-ms-flexbox;display:flex;color:var(--color-text-secondary)}@media print{.tc-add{display:none}}.tc-add-column{display:grid;border-top:1px solid var(--color-border);grid-auto-rows:var(--cell-size);-webkit-box-align:center;-ms-flex-align:center;align-items:center;justify-items:center}.tc-add-column svg{padding:5px;position:sticky;top:0;background-color:var(--color-background)}.tc-add-column--disabled{visibility:hidden}@media print{.tc-add-column{display:none}}.tc-add-row{height:var(--cell-size);-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:4px;position:relative}.tc-add-row--disabled{display:none}.tc-add-row:before{content:"";position:absolute;right:calc(var(--cell-size)*-1);width:var(--cell-size);height:100%}@media print{.tc-add-row{display:none}}.tc-add-column,.tc-add-row{-webkit-transition:0s;transition:0s;cursor:pointer;will-change:background-color}.tc-add-column:hover,.tc-add-row:hover{-webkit-transition:background-color .1s ease;transition:background-color .1s ease;background-color:var(--color-background)}.tc-add-row{margin-top:1px}.tc-add-row:hover:before{-webkit-transition:.1s;transition:.1s;background-color:var(--color-background)}.tc-row{display:grid;grid-template-columns:var(--col-width);position:relative;border-bottom:1px solid var(--color-border)}.tc-row--selected{background:var(--color-background)}.tc-row--selected:after{background:var(--color-background)}.tc-cell{border-right:1px solid var(--color-border);padding:6px 12px;overflow:hidden;outline:none;line-break:normal}.tc-cell--selected{background:var(--color-background)}.tc-wrap--readonly .tc-row:after{display:none}.tc-toolbox{--toolbox-padding: 6px;--popover-margin: 30px;--toggler-click-zone-size: 30px;--toggler-dots-color: #7b7e89;--toggler-dots-color-hovered: #1d202b;position:absolute;cursor:pointer;z-index:1;opacity:0;-webkit-transition:opacity .1s;transition:opacity .1s;will-change:left,opacity}.tc-toolbox--column{top:calc(var(--toggler-click-zone-size)*-1);-webkit-transform:translate(calc(var(--toggler-click-zone-size)*-1/2));transform:translate(calc(var(--toggler-click-zone-size)*-1/2));will-change:left,opacity}.tc-toolbox--row{left:calc(var(--popover-margin)*-1);-webkit-transform:translateY(calc(var(--toggler-click-zone-size)*-1/2));transform:translateY(calc(var(--toggler-click-zone-size)*-1/2));margin-top:-1px;will-change:top,opacity}.tc-toolbox--showed{opacity:1}.tc-toolbox .tc-popover{position:absolute;top:0;left:var(--popover-margin)}.tc-toolbox__toggler{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:var(--toggler-click-zone-size);height:var(--toggler-click-zone-size);color:var(--toggler-dots-color);opacity:0;-webkit-transition:opacity .15s ease;transition:opacity .15s ease;will-change:opacity}.tc-toolbox__toggler:hover{color:var(--toggler-dots-color-hovered)}.tc-toolbox__toggler svg{fill:currentColor}.tc-wrap:hover .tc-toolbox__toggler{opacity:1}.tc-settings .cdx-settings-button{width:50%;margin:0}.tc-popover{--color-border: #eaeaea;--color-background: #fff;--color-background-hover: rgba(232, 232, 235, .49);--color-background-confirm: #e24a4a;--color-background-confirm-hover: #d54040;--color-text-confirm: #fff;background:var(--color-background);border:1px solid var(--color-border);-webkit-box-shadow:0 3px 15px -3px rgba(13,20,33,.12941);box-shadow:0 3px 15px -3px #0d142121;border-radius:6px;padding:6px;display:none;will-change:opacity,transform}.tc-popover--opened{display:block;-webkit-animation:menuShowing .1s cubic-bezier(.215,.61,.355,1) forwards;animation:menuShowing .1s cubic-bezier(.215,.61,.355,1) forwards}.tc-popover__item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:2px 14px 2px 2px;border-radius:5px;cursor:pointer;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tc-popover__item:hover{background:var(--color-background-hover)}.tc-popover__item:not(:last-of-type){margin-bottom:2px}.tc-popover__item-icon{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;width:26px;height:26px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--color-background);border-radius:5px;border:1px solid var(--color-border);margin-right:8px}.tc-popover__item-label{line-height:22px;font-size:14px;font-weight:500}.tc-popover__item--confirm{background:var(--color-background-confirm);color:var(--color-text-confirm)}.tc-popover__item--confirm:hover{background-color:var(--color-background-confirm-hover)}.tc-popover__item--confirm .tc-popover__item-icon{background:var(--color-background-confirm);border-color:#0000001a}.tc-popover__item--confirm .tc-popover__item-icon svg{-webkit-transition:-webkit-transform .2s ease-in;transition:-webkit-transform .2s ease-in;transition:transform .2s ease-in;transition:transform .2s ease-in,-webkit-transform .2s ease-in;-webkit-transform:rotate(90deg) scale(1.2);transform:rotate(90deg) scale(1.2)}.tc-popover__item--hidden{display:none}@-webkit-keyframes menuShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes menuShowing{0%{opacity:0;-webkit-transform:translateY(-8px) scale(.9);transform:translateY(-8px) scale(.9)}70%{opacity:1;-webkit-transform:translateY(2px);transform:translateY(2px)}to{-webkit-transform:translateY(0);transform:translateY(0)}}.cell-resizable{cursor:col-resize}.image-tool{--bg-color: #cdd1e0;--front-color: #388ae5;--border-color: #e8e8eb }.image-tool__image{border-radius:3px;overflow:hidden;margin-bottom:10px;padding-bottom:0}.image-tool__image-picture{max-width:100%;vertical-align:bottom;display:inline-block}.image-tool__image-preloader{width:50px;height:50px;border-radius:50%;background-size:cover;margin:auto;position:relative;background-color:var(--bg-color);background-position:center center}.image-tool__image-preloader:after{content:"";position:absolute;z-index:3;width:60px;height:60px;border-radius:50%;border:2px solid var(--bg-color);border-top-color:var(--front-color);left:50%;top:50%;margin-top:-30px;margin-left:-30px;-webkit-animation:image-preloader-spin 2s infinite linear;animation:image-preloader-spin 2s infinite linear;-webkit-box-sizing:border-box;box-sizing:border-box}.image-tool__caption{visibility:hidden;position:absolute;bottom:0;left:0;margin-bottom:10px}.image-tool__caption[contentEditable=true][data-placeholder]:before{position:absolute!important}.image-tool__caption[contentEditable=true][data-placeholder]:before{content:attr(data-placeholder);color:#707684;font-weight:400;display:none}.image-tool__caption[contentEditable=true][data-placeholder]:empty:before{display:block}.image-tool__caption[contentEditable=true][data-placeholder]:empty:focus:before{display:none}.image-tool--empty .image-tool__image,.image-tool--empty .image-tool__image-preloader{display:none}.image-tool--empty .image-tool__caption,.image-tool--uploading .image-tool__caption{visibility:hidden!important}.image-tool .cdx-button{display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.image-tool .cdx-button svg{height:auto;margin:0 6px 0 0}.image-tool--filled .cdx-button,.image-tool--filled .image-tool__image-preloader{display:none}.image-tool--uploading .image-tool__image{min-height:200px;display:-webkit-box;display:-ms-flexbox;display:flex;border:1px solid var(--border-color);background-color:#fff}.image-tool--uploading .image-tool__image-picture,.image-tool--uploading .cdx-button{display:none}.image-tool--withBorder .image-tool__image{border:1px solid var(--border-color)}.image-tool--withBackground .image-tool__image{padding:15px;background:var(--bg-color)}.image-tool--withBackground .image-tool__image-picture{max-width:60%;margin:0 auto}.image-tool--stretched .image-tool__image-picture{width:100%}.image-tool--caption .image-tool__caption{visibility:visible}.image-tool--caption{padding-bottom:50px}@-webkit-keyframes image-preloader-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes image-preloader-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cdx-image-tool-tune--floatLeft .cdx-block,.cdx-image-tool-tune--center .cdx-block,.cdx-image-tool-tune--floatRight .cdx-block,.cdx-image-tool-tune--floatLeft .image-tool__image,.cdx-image-tool-tune--center .image-tool__image,.cdx-image-tool-tune--floatRight .image-tool__image{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}:root{--primary: #2492F5;--primary-content: #E9F4FE}.cdx-settings-button--active{background:#e9f4fe;color:#2492f5}.cdx-settings-button:hover{background:#e9f4fe}.cdx-image-tool-tune--center{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}@media all and (min-width: 470px){.codex-editor:not(.read-only) .cdx-image-tool-tune--floatLeft.ce-block__content,.codex-editor:not(.read-only) .cdx-image-tool-tune--floatRight.ce-block__content{min-height:20px}.cdx-image-tool-tune--floatLeft.ce-block__content .image-tool__image,.cdx-image-tool-tune--floatRight.ce-block__content .image-tool__image{margin-top:40px}.cdx-image-tool-tune--floatLeft.ce-block__content .image-tool__image{margin-left:20px}.cdx-image-tool-tune--floatRight.ce-block__content .image-tool__image{margin-right:20px}.cdx-image-tool-tune--floatLeft.ce-block__content .cdx-input,.cdx-image-tool-tune--floatRight.ce-block__content .cdx-input{width:calc(100% - 20px)}.cdx-image-tool-tune--floatLeft.ce-block__content .cdx-input{margin-left:20px}.cdx-image-tool-tune--floatRight.ce-block__content .cdx-input{margin-right:20px}.cdx-image-tool-tune--floatLeft .cdx-block{float:left;margin-right:10px}.cdx-image-tool-tune--floatRight .cdx-block{float:right;margin-left:10px}.cdx-image-tool-tune--sizeSmall .cdx-block{max-width:25%!important}.cdx-image-tool-tune--sizeMiddle .cdx-block{max-width:50%!important}.cdx-image-tool-tune--sizeLarge .cdx-block{max-width:75%!important}}.cdx-image-tool-tune--sizeLarge img,.cdx-image-tool-tune--sizeSmall img,.cdx-image-tool-tune--sizeMiddle img{-o-object-fit:cover;object-fit:cover;max-width:100%}.codex-editor.read-only .cdx-input.image-tool__caption:empty,.read-only>.codex-editor .cdx-input.image-tool__caption:empty{display:none}.cdx-image-tool-tune--resize .cdx-block{position:relative;overflow:visible}.cdx-image-tool-tune--resize .cdx-block .resizable{display:none}.cdx-image-tool-tune--resize .image-tool__image-picture{width:100%!important}.cdx-image-tool-tune--resize .cdx-block:hover .resizable{display:block}.cdx-image-tool-tune--resize .cdx-block .resizable .resizers .resizer{width:12px;height:12px;border-radius:50%;background:#e9f4fe;border:3px solid #2492F5;position:absolute}.cdx-image-tool-tune--resize .cdx-block .resizable .resizers .resizer.top-left{left:-5px;top:-5px;cursor:nwse-resize}.cdx-image-tool-tune--resize .cdx-block .resizable .resizers .resizer.top-right{right:-5px;top:-5px;cursor:nesw-resize}.cdx-image-tool-tune--resize .cdx-block .resizable .resizers .resizer.bottom-left{left:-5px;bottom:-5px;cursor:nesw-resize}.cdx-image-tool-tune--resize .cdx-block .resizable .resizers .resizer.bottom-right{right:-5px;bottom:-5px;cursor:nwse-resize}.cdx-image-tool-tune--crop:hover,.cdx-image-tool-tune--crop.isCropping,.cdx-image-tool-tune--resize:hover{z-index:2}.cdx-image-tool-tune--crop .image-tool__image{position:relative}.cdx-image-tool-tune--crop .isCropping .image-tool__image{min-height:600px;min-width:100%}.cdx-image-tool-tune--crop .image-tool__image .crop-btn,.cdx-image-tool-tune--crop .image-tool__image .crop-save{position:absolute;top:0;left:0;padding:7px;background:#2492f5;color:#e9f4fe;text-align:center;line-height:20px;cursor:pointer;display:none}.cdx-image-tool-tune--crop .image-tool__image:hover .crop-btn,.cdx-image-tool-tune--crop .image-tool__image:hover .crop-save{display:block}.cdx-image-tool-tune--crop .image-tool__image img.isCropped{position:absolute;min-width:0;min-width:initial;max-width:none;max-width:initial;min-height:0;min-height:initial;max-height:none;max-height:initial}.cdx-image-tool-tune--crop .cdx-block.image-tool.isCropping{min-width:0!important;min-width:initial!important;max-width:none!important;max-width:initial!important;min-height:0!important;min-height:initial!important;max-height:none!important;max-height:initial!important}.ce-block{margin:.8em 0}.ce-toolbar{z-index:3}.image-tool__caption{background-color:#fff}.image-tool{position:relative;z-index:1}.cdx-image-tool-tune{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;gap:4px;width:100%}')),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
|
|
2
|
+
import { defineComponent as Nt, inject as zt, onMounted as Ft, toRaw as Pt, onUnmounted as Wt, createElementBlock as $t, openBlock as jt, createElementVNode as Ut } from "vue";
|
|
3
|
+
import qt from "@ebl-vue/editorjs";
|
|
4
|
+
import { bundledLanguagesInfo as Vt, codeToHtml as Kt } from "shiki";
|
|
5
|
+
import { make as S, isEmpty as rt } from "@editorjs/dom";
|
|
6
|
+
import { focus as Yt, isCaretAtStartOfInput as Gt, getCaretNodeAndOffset as Xt, getContenteditableSlice as Zt } from "@editorjs/caret";
|
|
7
|
+
import lt from "vanilla-caret-js";
|
|
8
|
+
import Y from "axios";
|
|
9
|
+
const dt = Symbol("INSTALLED_KEY"), Jt = (c, t) => (c.install = (e) => {
|
|
10
|
+
for (const i of [c, ...Object.values({})]) e.component(i.name, i);
|
|
11
|
+
}, c);
|
|
12
|
+
class Qt {
|
|
20
13
|
constructor(t, e, i, s) {
|
|
21
14
|
const { blocks: n, toolbar: r } = i;
|
|
22
15
|
this.toolbar = r, this.borderStyle = s || "1px dashed #aaa", this.api = n, this.holder = document.getElementById(t), this.readOnly = e, this.startBlock = null, this.endBlock = null, this.setDragListener(), this.setDropListener();
|
|
23
16
|
}
|
|
24
17
|
setElementCursor(t) {
|
|
25
|
-
if (!t)
|
|
26
|
-
return;
|
|
18
|
+
if (!t) return;
|
|
27
19
|
const e = document.createRange(), i = window.getSelection();
|
|
28
20
|
e.setStart(t.childNodes[0], 0), e.collapse(!0), i == null || i.removeAllRanges(), i == null || i.addRange(e), t.focus();
|
|
29
21
|
}
|
|
@@ -51,8 +43,7 @@ class ne {
|
|
|
51
43
|
setBorderBlocks(t, e) {
|
|
52
44
|
Object.values(t).forEach((i) => {
|
|
53
45
|
const s = i.querySelector(".ce-block__content");
|
|
54
|
-
if (i !== e)
|
|
55
|
-
s == null || s.style.removeProperty("border-top"), s == null || s.style.removeProperty("border-bottom");
|
|
46
|
+
if (i !== e) s == null || s.style.removeProperty("border-top"), s == null || s.style.removeProperty("border-bottom");
|
|
56
47
|
else {
|
|
57
48
|
const n = Object.keys(t).find((r) => t[Number(r)] === e);
|
|
58
49
|
n && Number(n) > this.startBlock ? s.style.borderBottom = this.borderStyle : s.style.borderTop = this.borderStyle;
|
|
@@ -88,8 +79,8 @@ class ne {
|
|
|
88
79
|
this.isTheOnlyBlock() || this.api.move(this.endBlock, this.startBlock);
|
|
89
80
|
}
|
|
90
81
|
}
|
|
91
|
-
const
|
|
92
|
-
class
|
|
82
|
+
const ht = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6 7L6 12M6 17L6 12M6 12L12 12M12 7V12M12 17L12 12"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M19 17V10.2135C19 10.1287 18.9011 10.0824 18.836 10.1367L16 12.5"/></svg>', ct = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6 7L6 12M6 17L6 12M6 12L12 12M12 7V12M12 17L12 12"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M16 11C16 10 19 9.5 19 12C19 13.9771 16.0684 13.9997 16.0012 16.8981C15.9999 16.9533 16.0448 17 16.1 17L19.3 17"/></svg>', pt = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6 7L6 12M6 17L6 12M6 12L12 12M12 7V12M12 17L12 12"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M16 11C16 10.5 16.8323 10 17.6 10C18.3677 10 19.5 10.311 19.5 11.5C19.5 12.5315 18.7474 12.9022 18.548 12.9823C18.5378 12.9864 18.5395 13.0047 18.5503 13.0063C18.8115 13.0456 20 13.3065 20 14.8C20 16 19.5 17 17.8 17C17.8 17 16 17 16 16.3"/></svg>', ut = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6 7L6 12M6 17L6 12M6 12L12 12M12 7V12M12 17L12 12"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M18 10L15.2834 14.8511C15.246 14.9178 15.294 15 15.3704 15C16.8489 15 18.7561 15 20.2 15M19 17C19 15.7187 19 14.8813 19 13.6"/></svg>', gt = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6 7L6 12M6 17L6 12M6 12L12 12M12 7V12M12 17L12 12"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M16 15.9C16 15.9 16.3768 17 17.8 17C19.5 17 20 15.6199 20 14.7C20 12.7323 17.6745 12.0486 16.1635 12.9894C16.094 13.0327 16 12.9846 16 12.9027V10.1C16 10.0448 16.0448 10 16.1 10H19.8"/></svg>', mt = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M6 7L6 12M6 17L6 12M6 12L12 12M12 7V12M12 17L12 12"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M19.5 10C16.5 10.5 16 13.3285 16 15M16 15V15C16 16.1046 16.8954 17 18 17H18.3246C19.3251 17 20.3191 16.3492 20.2522 15.3509C20.0612 12.4958 16 12.6611 16 15Z"/></svg>', It = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M18 7L6 7"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M18 17H6"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M16 12L8 12"/></svg>', Ht = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M17 7L5 7"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M17 17H5"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M13 12L5 12"/></svg>', Bt = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M19 7L7 7"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M19 17H7"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M19 12L11 12"/></svg>', ft = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M8 8L12 12M12 12L16 16M12 12L16 8M12 12L8 16"/></svg>', Ct = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-width="2" d="M11.3535 9.31802L12.7678 7.90381C13.5488 7.12276 14.8151 7.12276 15.5962 7.90381C16.3772 8.68486 16.3772 9.95119 15.5962 10.7322L14.182 12.1464M11.3535 9.31802L7.96729 12.7043C7.40889 13.2627 7.02826 13.9739 6.87339 14.7482L6.69798 15.6253C6.55803 16.325 7.17495 16.942 7.87467 16.802L8.75175 16.6266C9.52612 16.4717 10.2373 16.0911 10.7957 15.5327L14.182 12.1464M11.3535 9.31802L14.182 12.1464"/><line x1="15" x2="19" y1="17" y2="17" stroke="currentColor" stroke-linecap="round" stroke-width="2"/></svg>', At = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><rect width="14" height="14" x="5" y="5" stroke="currentColor" stroke-width="2" rx="4"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5.13968 15.32L8.69058 11.5661C9.02934 11.2036 9.48873 11 9.96774 11C10.4467 11 10.9061 11.2036 11.2449 11.5661L15.3871 16M13.5806 14.0664L15.0132 12.533C15.3519 12.1705 15.8113 11.9668 16.2903 11.9668C16.7693 11.9668 17.2287 12.1705 17.5675 12.533L18.841 13.9634"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.7778 9.33331H13.7867"/></svg>', Ot = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M8 9V7.2C8 7.08954 8.08954 7 8.2 7L12 7M16 9V7.2C16 7.08954 15.9105 7 15.8 7L12 7M12 7L12 17M12 17H10M12 17H14"/></svg>', vt = '<svg t="1763708081701" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2604" width="24" height="24"><path d="M469.3330000000001 725.333H896V640H469.3330000000001v85.333zM128 512l170.667 170.667V341.3330000000001L128 512z m0 384h768v-85.333H128V896z m0-768v85.333h768V128H128z m341.333 256H896v-85.333H469.3330000000001V384z m0 170.667H896v-85.334H469.3330000000001v85.334z" p-id="2605" fill="#000000"></path></svg>', kt = '<svg t="1763708124227" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2788" width="24" height="24"><path d="M128 896h768v-85.333H128V896z m0-554.667v341.334L298.667 512 128 341.333z m341.333 384H896V640H469.333v85.333zM128 128v85.333h768V128H128z m341.333 256H896v-85.333H469.333V384z m0 170.667H896v-85.334H469.333v85.334z" p-id="2789" fill="#000000"></path></svg>';
|
|
83
|
+
class te {
|
|
93
84
|
constructor({ data: t, config: e, api: i, readOnly: s }) {
|
|
94
85
|
this.api = i, this.readOnly = s, this._settings = { placeholder: "H1" }, this._data = this.normalizeData(t), this._element = this.getTag();
|
|
95
86
|
}
|
|
@@ -157,7 +148,7 @@ class re {
|
|
|
157
148
|
t.dataset.placeholder = this.api.i18n.t(this._settings.placeholder || "");
|
|
158
149
|
}
|
|
159
150
|
get defaultLevel() {
|
|
160
|
-
return { number: 1, tag: "H1", svg:
|
|
151
|
+
return { number: 1, tag: "H1", svg: ht };
|
|
161
152
|
}
|
|
162
153
|
onPaste(t) {
|
|
163
154
|
const e = t.detail;
|
|
@@ -170,10 +161,10 @@ class re {
|
|
|
170
161
|
return { tags: ["H1"] };
|
|
171
162
|
}
|
|
172
163
|
static get toolbox() {
|
|
173
|
-
return { icon:
|
|
164
|
+
return { icon: ht, title: "H1" };
|
|
174
165
|
}
|
|
175
166
|
}
|
|
176
|
-
class
|
|
167
|
+
class ee {
|
|
177
168
|
constructor({ data: t, config: e, api: i, readOnly: s }) {
|
|
178
169
|
this.api = i, this.readOnly = s, this._settings = { placeholder: "H2" }, this._data = this.normalizeData(t), this._element = this.getTag();
|
|
179
170
|
}
|
|
@@ -241,7 +232,7 @@ class oe {
|
|
|
241
232
|
t.dataset.placeholder = this.api.i18n.t(this._settings.placeholder || "");
|
|
242
233
|
}
|
|
243
234
|
get defaultLevel() {
|
|
244
|
-
return { number: 2, tag: "H2", svg:
|
|
235
|
+
return { number: 2, tag: "H2", svg: ct };
|
|
245
236
|
}
|
|
246
237
|
onPaste(t) {
|
|
247
238
|
const e = t.detail;
|
|
@@ -254,10 +245,10 @@ class oe {
|
|
|
254
245
|
return { tags: ["H2"] };
|
|
255
246
|
}
|
|
256
247
|
static get toolbox() {
|
|
257
|
-
return { icon:
|
|
248
|
+
return { icon: ct, title: "H2" };
|
|
258
249
|
}
|
|
259
250
|
}
|
|
260
|
-
class
|
|
251
|
+
class ie {
|
|
261
252
|
constructor({ data: t, config: e, api: i, readOnly: s }) {
|
|
262
253
|
this.api = i, this.readOnly = s, this._settings = { placeholder: "H3" }, this._data = this.normalizeData(t), this._element = this.getTag();
|
|
263
254
|
}
|
|
@@ -341,7 +332,7 @@ class ae {
|
|
|
341
332
|
return { icon: pt, title: "H3" };
|
|
342
333
|
}
|
|
343
334
|
}
|
|
344
|
-
class
|
|
335
|
+
class se {
|
|
345
336
|
constructor({ data: t, config: e, api: i, readOnly: s }) {
|
|
346
337
|
this.api = i, this.readOnly = s, this._settings = { placeholder: "H4" }, this._data = this.normalizeData(t), this._element = this.getTag();
|
|
347
338
|
}
|
|
@@ -409,7 +400,7 @@ class le {
|
|
|
409
400
|
t.dataset.placeholder = this.api.i18n.t(this._settings.placeholder || "");
|
|
410
401
|
}
|
|
411
402
|
get defaultLevel() {
|
|
412
|
-
return { number: 4, tag: "H4", svg:
|
|
403
|
+
return { number: 4, tag: "H4", svg: ut };
|
|
413
404
|
}
|
|
414
405
|
onPaste(t) {
|
|
415
406
|
const e = t.detail;
|
|
@@ -422,10 +413,10 @@ class le {
|
|
|
422
413
|
return { tags: ["H4"] };
|
|
423
414
|
}
|
|
424
415
|
static get toolbox() {
|
|
425
|
-
return { icon:
|
|
416
|
+
return { icon: ut, title: "H4" };
|
|
426
417
|
}
|
|
427
418
|
}
|
|
428
|
-
class
|
|
419
|
+
class ne {
|
|
429
420
|
constructor({ data: t, config: e, api: i, readOnly: s }) {
|
|
430
421
|
this.api = i, this.readOnly = s, this._settings = { placeholder: "H5" }, this._data = this.normalizeData(t), this._element = this.getTag();
|
|
431
422
|
}
|
|
@@ -493,7 +484,7 @@ class de {
|
|
|
493
484
|
t.dataset.placeholder = this.api.i18n.t(this._settings.placeholder || "");
|
|
494
485
|
}
|
|
495
486
|
get defaultLevel() {
|
|
496
|
-
return { number: 5, tag: "H5", svg:
|
|
487
|
+
return { number: 5, tag: "H5", svg: gt };
|
|
497
488
|
}
|
|
498
489
|
onPaste(t) {
|
|
499
490
|
const e = t.detail;
|
|
@@ -506,10 +497,10 @@ class de {
|
|
|
506
497
|
return { tags: ["H5"] };
|
|
507
498
|
}
|
|
508
499
|
static get toolbox() {
|
|
509
|
-
return { icon:
|
|
500
|
+
return { icon: gt, title: "H5" };
|
|
510
501
|
}
|
|
511
502
|
}
|
|
512
|
-
class
|
|
503
|
+
class re {
|
|
513
504
|
constructor({ data: t, config: e, api: i, readOnly: s }) {
|
|
514
505
|
this.api = i, this.readOnly = s, this._settings = { placeholder: "H6" }, this._data = this.normalizeData(t), this._element = this.getTag();
|
|
515
506
|
}
|
|
@@ -577,7 +568,7 @@ class he {
|
|
|
577
568
|
t.dataset.placeholder = this.api.i18n.t(this._settings.placeholder || "");
|
|
578
569
|
}
|
|
579
570
|
get defaultLevel() {
|
|
580
|
-
return { number: 6, tag: "H6", svg:
|
|
571
|
+
return { number: 6, tag: "H6", svg: mt };
|
|
581
572
|
}
|
|
582
573
|
onPaste(t) {
|
|
583
574
|
const e = t.detail;
|
|
@@ -590,10 +581,10 @@ class he {
|
|
|
590
581
|
return { tags: ["H6"] };
|
|
591
582
|
}
|
|
592
583
|
static get toolbox() {
|
|
593
|
-
return { icon:
|
|
584
|
+
return { icon: mt, title: "H6" };
|
|
594
585
|
}
|
|
595
586
|
}
|
|
596
|
-
class
|
|
587
|
+
class ot {
|
|
597
588
|
static get DEFAULT_ALIGNMENT() {
|
|
598
589
|
return "left";
|
|
599
590
|
}
|
|
@@ -602,10 +593,10 @@ class at {
|
|
|
602
593
|
}
|
|
603
594
|
getAlignment() {
|
|
604
595
|
var t, e;
|
|
605
|
-
return (t = this.settings) != null && t.blocks && this.settings.blocks.hasOwnProperty(this.block.name) ? this.settings.blocks[this.block.name] : (e = this.settings) != null && e.default ? this.settings.default :
|
|
596
|
+
return (t = this.settings) != null && t.blocks && this.settings.blocks.hasOwnProperty(this.block.name) ? this.settings.blocks[this.block.name] : (e = this.settings) != null && e.default ? this.settings.default : ot.DEFAULT_ALIGNMENT;
|
|
606
597
|
}
|
|
607
598
|
constructor({ api: t, data: e, config: i, block: s }) {
|
|
608
|
-
this.api = t, this.block = s, this.settings = i, this.data = e || { alignment: this.getAlignment() }, this.alignmentSettings = [{ name: "left", icon:
|
|
599
|
+
this.api = t, this.block = s, this.settings = i, this.data = e || { alignment: this.getAlignment() }, this.alignmentSettings = [{ name: "left", icon: Ht }, { name: "center", icon: It }, { name: "right", icon: Bt }], this._CSS = { alignment: { left: "ce-tune-alignment--left", center: "ce-tune-alignment--center", right: "ce-tune-alignment--right" } };
|
|
609
600
|
}
|
|
610
601
|
wrap(t) {
|
|
611
602
|
return this.wrapper = document.createElement("div"), this.wrapper.classList.toggle(this._CSS.alignment[this.data.alignment]), this.wrapper.append(t), this.wrapper;
|
|
@@ -630,17 +621,16 @@ class at {
|
|
|
630
621
|
return this.data;
|
|
631
622
|
}
|
|
632
623
|
}
|
|
633
|
-
class
|
|
624
|
+
class at {
|
|
634
625
|
static get DEFAULT_PLACEHOLDER() {
|
|
635
626
|
return "";
|
|
636
627
|
}
|
|
637
628
|
constructor({ data: t, config: e, api: i, readOnly: s }) {
|
|
638
629
|
var n;
|
|
639
|
-
this.api = i, this.readOnly = s, this._CSS = { block: this.api.styles.block, wrapper: "ce-paragraph" }, this.readOnly || (this.onKeyUp = this.onKeyUp.bind(this)), this._placeholder = e.placeholder ? e.placeholder :
|
|
630
|
+
this.api = i, this.readOnly = s, this._CSS = { block: this.api.styles.block, wrapper: "ce-paragraph" }, this.readOnly || (this.onKeyUp = this.onKeyUp.bind(this)), this._placeholder = e.placeholder ? e.placeholder : at.DEFAULT_PLACEHOLDER, this._data = t != null ? t : {}, this._element = null, this._preserveBlank = (n = e.preserveBlank) != null ? n : !1;
|
|
640
631
|
}
|
|
641
632
|
onKeyUp(t) {
|
|
642
|
-
if (t.code !== "Backspace" && t.code !== "Delete" || !this._element)
|
|
643
|
-
return;
|
|
633
|
+
if (t.code !== "Backspace" && t.code !== "Delete" || !this._element) return;
|
|
644
634
|
const { textContent: e } = this._element;
|
|
645
635
|
e === "" && (this._element.innerHTML = "");
|
|
646
636
|
}
|
|
@@ -652,8 +642,7 @@ class lt {
|
|
|
652
642
|
return this._element = this.drawView(), this._element;
|
|
653
643
|
}
|
|
654
644
|
merge(t) {
|
|
655
|
-
if (!this._element)
|
|
656
|
-
return;
|
|
645
|
+
if (!this._element) return;
|
|
657
646
|
this._data.text += t.text;
|
|
658
647
|
const e = function(i) {
|
|
659
648
|
const s = document.createElement("div");
|
|
@@ -691,10 +680,10 @@ class lt {
|
|
|
691
680
|
return { icon: Ot, title: "Text" };
|
|
692
681
|
}
|
|
693
682
|
}
|
|
694
|
-
class
|
|
683
|
+
class j {
|
|
695
684
|
constructor({ data: t, config: e, api: i, readOnly: s }) {
|
|
696
685
|
var n;
|
|
697
|
-
this._selectorLanguage = "", this._selectorTheme = "", this.api = i, this.readOnly = s, this.placeholder = this.api.i18n.t(e.placeholder ||
|
|
686
|
+
this._selectorLanguage = "", this._selectorTheme = "", this.api = i, this.readOnly = s, this.placeholder = this.api.i18n.t(e.placeholder || j.DEFAULT_PLACEHOLDER), this._selectorLanguage = t.lang || e.lang || j.DEFAULT_LANGUAGE, this._selectorTheme = t.theme || e.theme || j.DEFAULT_THEME, this.CSS = { baseClass: this.api.styles.block, input: this.api.styles.input, wrapper: "ce-editorjs-x-shiki", textarea: "ce-editorjs-x-shiki__textarea", span: "ce-editorjs-x-shiki__span", selectorLanguage: "ce-editorjs-x-shiki__selector-language", selectorTheme: "ce-editorjs-x-shiki__selector-theme" }, this.nodes = { holder: null, textarea: null }, this.data = { code: (n = t.code) != null ? n : "", lang: this._selectorLanguage, theme: this._selectorTheme }, this.nodes.holder = this.drawView();
|
|
698
687
|
}
|
|
699
688
|
static get isReadOnlySupported() {
|
|
700
689
|
return !0;
|
|
@@ -745,52 +734,49 @@ class U {
|
|
|
745
734
|
let o;
|
|
746
735
|
if (i) {
|
|
747
736
|
const a = function(d, l) {
|
|
748
|
-
let
|
|
749
|
-
for (;
|
|
750
|
-
` && l > 0; )
|
|
751
|
-
|
|
752
|
-
return c === `
|
|
737
|
+
let h = "";
|
|
738
|
+
for (; h !== `
|
|
739
|
+
` && l > 0; ) l -= 1, h = d.substr(l, 1);
|
|
740
|
+
return h === `
|
|
753
741
|
` && (l += 1), l;
|
|
754
742
|
}(n, s);
|
|
755
|
-
if (n.substr(a, 2) !== r)
|
|
756
|
-
return;
|
|
743
|
+
if (n.substr(a, 2) !== r) return;
|
|
757
744
|
e.value = n.substring(0, a) + n.substring(a + 2), o = s - 2;
|
|
758
|
-
} else
|
|
759
|
-
o = s + 2, e.value = n.substring(0, s) + r + n.substring(s);
|
|
745
|
+
} else o = s + 2, e.value = n.substring(0, s) + r + n.substring(s);
|
|
760
746
|
e.setSelectionRange(o, o);
|
|
761
747
|
}
|
|
762
748
|
drawView() {
|
|
763
749
|
const t = document.createElement("div"), e = document.createElement("div"), i = document.createElement("div"), s = document.createElement("div"), n = document.createElement("div"), r = document.createElement("div"), o = document.createElement("select"), a = document.createElement("select"), d = document.createElement("span"), l = document.createElement("textarea");
|
|
764
|
-
return t.classList.add(this.CSS.baseClass, this.CSS.wrapper), e.classList.add("ce-editorjs-x-shiki__code"), i.classList.add("ce-editorjs-x-shiki__selector"), s.classList.add("ce-editorjs-x-shiki__lang"), n.classList.add("ce-editorjs-x-shiki__copy"), r.classList.add("ce-editorjs-x-shiki__copy_tip"), o.classList.add(this.CSS.selectorLanguage), l.classList.add(this.CSS.textarea, this.CSS.input), s.innerHTML = this.data.lang, n.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.25 8.5H10.25C9.2835 8.5 8.5 9.2835 8.5 10.25V17.25C8.5 18.2165 9.2835 19 10.25 19H17.25C18.2165 19 19 18.2165 19 17.25V10.25C19 9.2835 18.2165 8.5 17.25 8.5Z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15.5 8.5V6.75C15.5 6.28587 15.3156 5.84075 14.9874 5.51256C14.6592 5.18437 14.2141 5 13.75 5H6.75C6.28587 5 5.84075 5.18437 5.51256 5.51256C5.18437 5.84075 5 6.28587 5 6.75V13.75C5 14.2141 5.18437 14.6592 5.51256 14.9874C5.84075 15.3156 6.28587 15.5 6.75 15.5H8.5"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 12L15.5 12"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15.5L15.5 15.5"/></svg>', r.innerText = this.api.i18n.t("Copied"),
|
|
765
|
-
const
|
|
766
|
-
|
|
767
|
-
}), o.value = this.data.lang, l.value = this.data.code, l.placeholder = this.placeholder, l.spellcheck = !1, l.autocomplete = "off", l.autocapitalize = "off", this.readOnly && (l.disabled = !0), e.appendChild(d), e.appendChild(l), this.readOnly ? i.appendChild(s) : i.appendChild(o), n.appendChild(r), i.appendChild(n), t.appendChild(i), t.appendChild(e), this.runShiki().then(({ html:
|
|
768
|
-
d.innerHTML =
|
|
769
|
-
}), o.addEventListener("change", (
|
|
770
|
-
const
|
|
771
|
-
this._selectorLanguage =
|
|
772
|
-
d.innerHTML =
|
|
750
|
+
return t.classList.add(this.CSS.baseClass, this.CSS.wrapper), e.classList.add("ce-editorjs-x-shiki__code"), i.classList.add("ce-editorjs-x-shiki__selector"), s.classList.add("ce-editorjs-x-shiki__lang"), n.classList.add("ce-editorjs-x-shiki__copy"), r.classList.add("ce-editorjs-x-shiki__copy_tip"), o.classList.add(this.CSS.selectorLanguage), l.classList.add(this.CSS.textarea, this.CSS.input), s.innerHTML = this.data.lang, n.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.25 8.5H10.25C9.2835 8.5 8.5 9.2835 8.5 10.25V17.25C8.5 18.2165 9.2835 19 10.25 19H17.25C18.2165 19 19 18.2165 19 17.25V10.25C19 9.2835 18.2165 8.5 17.25 8.5Z"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15.5 8.5V6.75C15.5 6.28587 15.3156 5.84075 14.9874 5.51256C14.6592 5.18437 14.2141 5 13.75 5H6.75C6.28587 5 5.84075 5.18437 5.51256 5.51256C5.18437 5.84075 5 6.28587 5 6.75V13.75C5 14.2141 5.18437 14.6592 5.51256 14.9874C5.84075 15.3156 6.28587 15.5 6.75 15.5H8.5"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 12L15.5 12"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15.5L15.5 15.5"/></svg>', r.innerText = this.api.i18n.t("Copied"), Vt.forEach((h) => {
|
|
751
|
+
const p = document.createElement("option");
|
|
752
|
+
p.value = h.id, p.text = h.name, o.appendChild(p);
|
|
753
|
+
}), o.value = this.data.lang, l.value = this.data.code, l.placeholder = this.placeholder, l.spellcheck = !1, l.autocomplete = "off", l.autocapitalize = "off", this.readOnly && (l.disabled = !0), e.appendChild(d), e.appendChild(l), this.readOnly ? i.appendChild(s) : i.appendChild(o), n.appendChild(r), i.appendChild(n), t.appendChild(i), t.appendChild(e), this.runShiki().then(({ html: h, preStyle: p }) => {
|
|
754
|
+
d.innerHTML = h, t == null || t.setAttribute("style", p), o.setAttribute("style", p), a.setAttribute("style", p);
|
|
755
|
+
}), o.addEventListener("change", (h) => {
|
|
756
|
+
const p = h.target.value;
|
|
757
|
+
this._selectorLanguage = p, this.runShiki().then(({ html: u, preStyle: g }) => {
|
|
758
|
+
d.innerHTML = u, s.innerHTML = p;
|
|
773
759
|
});
|
|
774
|
-
}), a.addEventListener("change", (
|
|
775
|
-
const
|
|
776
|
-
this._selectorTheme =
|
|
777
|
-
d.innerHTML =
|
|
760
|
+
}), a.addEventListener("change", (h) => {
|
|
761
|
+
const p = h.target.value;
|
|
762
|
+
this._selectorTheme = p, this.runShiki().then(({ html: u, preStyle: g }) => {
|
|
763
|
+
d.innerHTML = u, t == null || t.setAttribute("style", g), o.setAttribute("style", g), a.setAttribute("style", g);
|
|
778
764
|
});
|
|
779
765
|
}), l.addEventListener("input", () => {
|
|
780
|
-
this.data.code = l.value, this.runShiki().then(({ html:
|
|
781
|
-
d.innerHTML =
|
|
766
|
+
this.data.code = l.value, this.runShiki().then(({ html: h, preStyle: p }) => {
|
|
767
|
+
d.innerHTML = h, t == null || t.setAttribute("style", p), o.setAttribute("style", p), a.setAttribute("style", p);
|
|
782
768
|
});
|
|
783
|
-
}), l.addEventListener("keydown", (
|
|
784
|
-
|
|
785
|
-
d.innerHTML =
|
|
769
|
+
}), l.addEventListener("keydown", (h) => {
|
|
770
|
+
h.code === "Tab" && (this.tabHandler(h), this.data.code = l.value, this.runShiki().then(({ html: p, preStyle: u }) => {
|
|
771
|
+
d.innerHTML = p;
|
|
786
772
|
}));
|
|
787
|
-
}), n.addEventListener("click", (
|
|
788
|
-
this.copyCode(this.data.code,
|
|
773
|
+
}), n.addEventListener("click", (h) => {
|
|
774
|
+
this.copyCode(this.data.code, h);
|
|
789
775
|
}), this.nodes.textarea = l, t;
|
|
790
776
|
}
|
|
791
777
|
async runShiki() {
|
|
792
778
|
let t = "";
|
|
793
|
-
return { html: await
|
|
779
|
+
return { html: await Kt(this.data.code, { lang: this._selectorLanguage, theme: this._selectorTheme, transformers: [{ preprocess: (e) => `${e}
|
|
794
780
|
`, pre(e) {
|
|
795
781
|
var i;
|
|
796
782
|
this.addClassToHast(e, "ce-editorjs-x-shiki__span"), t = ((i = e.properties) == null ? void 0 : i.style) || "";
|
|
@@ -812,7 +798,7 @@ class U {
|
|
|
812
798
|
});
|
|
813
799
|
}
|
|
814
800
|
}
|
|
815
|
-
class
|
|
801
|
+
class oe {
|
|
816
802
|
constructor({ data: t, api: e, readOnly: i }) {
|
|
817
803
|
this.api = e, this.readOnly = i, this._data = { text: t.text || "" }, this._CSS = { baseClass: this.api.styles.block, wrapper: "cdx-quote", text: "cdx-quote__text", input: this.api.styles.input };
|
|
818
804
|
}
|
|
@@ -837,8 +823,8 @@ class ce {
|
|
|
837
823
|
return { baseClass: this.api.styles.block, wrapper: "cdx-quote", text: "cdx-quote__text", input: this.api.styles.input };
|
|
838
824
|
}
|
|
839
825
|
render() {
|
|
840
|
-
const t =
|
|
841
|
-
return this._quoteElement =
|
|
826
|
+
const t = S("div", [this._CSS.baseClass, this._CSS.wrapper]);
|
|
827
|
+
return this._quoteElement = S("blockquote", [this._CSS.input, this._CSS.text, "cdx-block-quote"], { contentEditable: !this.readOnly, innerHTML: this._data.text }), this._quoteElement.addEventListener("keydown", (e) => this.handleKeydown(e)), t.appendChild(this._quoteElement), t;
|
|
842
828
|
}
|
|
843
829
|
get currentItem() {
|
|
844
830
|
let t = window.getSelection().anchorNode;
|
|
@@ -865,7 +851,7 @@ class ce {
|
|
|
865
851
|
return { text: { br: !0 } };
|
|
866
852
|
}
|
|
867
853
|
}
|
|
868
|
-
class
|
|
854
|
+
class ae {
|
|
869
855
|
static get isReadOnlySupported() {
|
|
870
856
|
return !0;
|
|
871
857
|
}
|
|
@@ -895,25 +881,25 @@ class ue {
|
|
|
895
881
|
this.data = {};
|
|
896
882
|
}
|
|
897
883
|
}
|
|
898
|
-
const
|
|
899
|
-
class
|
|
884
|
+
const x = "cdx-list", k = { wrapper: x, item: `${x}__item`, itemContent: `${x}__item-content`, itemChildren: `${x}__item-children` };
|
|
885
|
+
class E {
|
|
900
886
|
static get CSS() {
|
|
901
|
-
return { ...
|
|
887
|
+
return { ...k, orderedList: `${x}-ordered` };
|
|
902
888
|
}
|
|
903
889
|
constructor(t, e) {
|
|
904
890
|
this.config = e, this.readOnly = t;
|
|
905
891
|
}
|
|
906
892
|
renderWrapper(t) {
|
|
907
893
|
let e;
|
|
908
|
-
return e =
|
|
894
|
+
return e = S("ol", t === !0 ? [E.CSS.wrapper, E.CSS.orderedList] : [E.CSS.orderedList, E.CSS.itemChildren]), e;
|
|
909
895
|
}
|
|
910
896
|
renderItem(t, e) {
|
|
911
|
-
const i =
|
|
897
|
+
const i = S("li", E.CSS.item), s = S("div", E.CSS.itemContent, { innerHTML: t, contentEditable: (!this.readOnly).toString() });
|
|
912
898
|
return i.appendChild(s), i;
|
|
913
899
|
}
|
|
914
900
|
getItemContent(t) {
|
|
915
|
-
const e = t.querySelector(`.${
|
|
916
|
-
return e ?
|
|
901
|
+
const e = t.querySelector(`.${E.CSS.itemContent}`);
|
|
902
|
+
return e ? rt(e) ? "" : e.innerHTML : "";
|
|
917
903
|
}
|
|
918
904
|
getItemMeta() {
|
|
919
905
|
return {};
|
|
@@ -922,24 +908,24 @@ class L {
|
|
|
922
908
|
return {};
|
|
923
909
|
}
|
|
924
910
|
}
|
|
925
|
-
class
|
|
911
|
+
class M {
|
|
926
912
|
static get CSS() {
|
|
927
|
-
return { ...
|
|
913
|
+
return { ...k, unorderedList: `${x}-unordered` };
|
|
928
914
|
}
|
|
929
915
|
constructor(t, e) {
|
|
930
916
|
this.config = e, this.readOnly = t;
|
|
931
917
|
}
|
|
932
918
|
renderWrapper(t) {
|
|
933
919
|
let e;
|
|
934
|
-
return e =
|
|
920
|
+
return e = S("ul", t === !0 ? [M.CSS.wrapper, M.CSS.unorderedList] : [M.CSS.unorderedList, M.CSS.itemChildren]), e;
|
|
935
921
|
}
|
|
936
922
|
renderItem(t, e) {
|
|
937
|
-
const i =
|
|
923
|
+
const i = S("li", M.CSS.item), s = S("div", M.CSS.itemContent, { innerHTML: t, contentEditable: (!this.readOnly).toString() });
|
|
938
924
|
return i.appendChild(s), i;
|
|
939
925
|
}
|
|
940
926
|
getItemContent(t) {
|
|
941
|
-
const e = t.querySelector(`.${
|
|
942
|
-
return e ?
|
|
927
|
+
const e = t.querySelector(`.${M.CSS.itemContent}`);
|
|
928
|
+
return e ? rt(e) ? "" : e.innerHTML : "";
|
|
943
929
|
}
|
|
944
930
|
getItemMeta() {
|
|
945
931
|
return {};
|
|
@@ -948,49 +934,49 @@ class x {
|
|
|
948
934
|
return {};
|
|
949
935
|
}
|
|
950
936
|
}
|
|
951
|
-
function
|
|
952
|
-
return
|
|
937
|
+
function R(c) {
|
|
938
|
+
return c.nodeType === Node.ELEMENT_NODE;
|
|
953
939
|
}
|
|
954
|
-
class
|
|
940
|
+
class C {
|
|
955
941
|
static get CSS() {
|
|
956
|
-
return { ...
|
|
942
|
+
return { ...k, checklist: `${x}-checklist`, itemChecked: `${x}__checkbox--checked`, noHover: `${x}__checkbox--no-hover`, checkbox: `${x}__checkbox-check`, checkboxContainer: `${x}__checkbox`, checkboxCheckDisabled: `${x}__checkbox-check--disabled` };
|
|
957
943
|
}
|
|
958
944
|
constructor(t, e) {
|
|
959
945
|
this.config = e, this.readOnly = t;
|
|
960
946
|
}
|
|
961
947
|
renderWrapper(t) {
|
|
962
948
|
let e;
|
|
963
|
-
return t === !0 ? (e =
|
|
949
|
+
return t === !0 ? (e = S("ul", [C.CSS.wrapper, C.CSS.checklist]), e.addEventListener("click", (i) => {
|
|
964
950
|
const s = i.target;
|
|
965
951
|
if (s) {
|
|
966
|
-
const n = s.closest(`.${
|
|
952
|
+
const n = s.closest(`.${C.CSS.checkboxContainer}`);
|
|
967
953
|
n && n.contains(s) && this.toggleCheckbox(n);
|
|
968
954
|
}
|
|
969
|
-
})) : e =
|
|
955
|
+
})) : e = S("ul", [C.CSS.checklist, C.CSS.itemChildren]), e;
|
|
970
956
|
}
|
|
971
957
|
renderItem(t, e) {
|
|
972
|
-
const i =
|
|
973
|
-
return e.checked === !0 && r.classList.add(
|
|
958
|
+
const i = S("li", [C.CSS.item, C.CSS.item]), s = S("div", C.CSS.itemContent, { innerHTML: t, contentEditable: (!this.readOnly).toString() }), n = S("span", C.CSS.checkbox), r = S("div", C.CSS.checkboxContainer);
|
|
959
|
+
return e.checked === !0 && r.classList.add(C.CSS.itemChecked), this.readOnly && r.classList.add(C.CSS.checkboxCheckDisabled), n.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M7 12L10.4884 15.8372C10.5677 15.9245 10.705 15.9245 10.7844 15.8372L17 9"/></svg>', r.appendChild(n), i.appendChild(r), i.appendChild(s), i;
|
|
974
960
|
}
|
|
975
961
|
getItemContent(t) {
|
|
976
|
-
const e = t.querySelector(`.${
|
|
977
|
-
return e ?
|
|
962
|
+
const e = t.querySelector(`.${C.CSS.itemContent}`);
|
|
963
|
+
return e ? rt(e) ? "" : e.innerHTML : "";
|
|
978
964
|
}
|
|
979
965
|
getItemMeta(t) {
|
|
980
|
-
const e = t.querySelector(`.${
|
|
981
|
-
return { checked: !!e && e.classList.contains(
|
|
966
|
+
const e = t.querySelector(`.${C.CSS.checkboxContainer}`);
|
|
967
|
+
return { checked: !!e && e.classList.contains(C.CSS.itemChecked) };
|
|
982
968
|
}
|
|
983
969
|
composeDefaultMeta() {
|
|
984
970
|
return { checked: !1 };
|
|
985
971
|
}
|
|
986
972
|
toggleCheckbox(t) {
|
|
987
|
-
t.classList.toggle(
|
|
973
|
+
t.classList.toggle(C.CSS.itemChecked), t.classList.add(C.CSS.noHover), t.addEventListener("mouseleave", () => this.removeSpecialHoverBehavior(t), { once: !0 });
|
|
988
974
|
}
|
|
989
975
|
removeSpecialHoverBehavior(t) {
|
|
990
|
-
t.classList.remove(
|
|
976
|
+
t.classList.remove(C.CSS.noHover);
|
|
991
977
|
}
|
|
992
978
|
}
|
|
993
|
-
function
|
|
979
|
+
function G(c, t = "after") {
|
|
994
980
|
const e = [];
|
|
995
981
|
let i;
|
|
996
982
|
function s(n) {
|
|
@@ -1001,43 +987,39 @@ function J(h, t = "after") {
|
|
|
1001
987
|
return n.previousElementSibling;
|
|
1002
988
|
}
|
|
1003
989
|
}
|
|
1004
|
-
for (i = s(
|
|
1005
|
-
e.push(i), i = s(i);
|
|
990
|
+
for (i = s(c); i !== null; ) e.push(i), i = s(i);
|
|
1006
991
|
return e.length !== 0 ? e : null;
|
|
1007
992
|
}
|
|
1008
|
-
function
|
|
1009
|
-
let e =
|
|
1010
|
-
return
|
|
993
|
+
function I(c, t = !0) {
|
|
994
|
+
let e = c;
|
|
995
|
+
return c.classList.contains(k.item) && (e = c.querySelector(`.${k.itemChildren}`)), e === null ? [] : t ? Array.from(e.querySelectorAll(`:scope > .${k.item}`)) : Array.from(e.querySelectorAll(`.${k.item}`));
|
|
1011
996
|
}
|
|
1012
|
-
function
|
|
1013
|
-
return
|
|
997
|
+
function A(c) {
|
|
998
|
+
return c.querySelector(`.${k.itemChildren}`);
|
|
1014
999
|
}
|
|
1015
|
-
function
|
|
1016
|
-
let t =
|
|
1017
|
-
|
|
1000
|
+
function X(c) {
|
|
1001
|
+
let t = c;
|
|
1002
|
+
c.classList.contains(k.item) && (t = A(c)), t !== null && I(t).length === 0 && t.remove();
|
|
1018
1003
|
}
|
|
1019
|
-
function
|
|
1020
|
-
return
|
|
1004
|
+
function U(c) {
|
|
1005
|
+
return c.querySelector(`.${k.itemContent}`);
|
|
1021
1006
|
}
|
|
1022
|
-
function
|
|
1023
|
-
const e =
|
|
1024
|
-
e &&
|
|
1007
|
+
function F(c, t = !0) {
|
|
1008
|
+
const e = U(c);
|
|
1009
|
+
e && Yt(e, t);
|
|
1025
1010
|
}
|
|
1026
|
-
class
|
|
1011
|
+
class Z {
|
|
1027
1012
|
get currentItem() {
|
|
1028
1013
|
const t = window.getSelection();
|
|
1029
|
-
if (!t)
|
|
1030
|
-
return null;
|
|
1014
|
+
if (!t) return null;
|
|
1031
1015
|
let e = t.anchorNode;
|
|
1032
|
-
return e ? (
|
|
1016
|
+
return e ? (R(e) || (e = e.parentNode), e && R(e) ? e.closest(`.${k.item}`) : null) : null;
|
|
1033
1017
|
}
|
|
1034
1018
|
get currentItemLevel() {
|
|
1035
1019
|
const t = this.currentItem;
|
|
1036
|
-
if (t === null)
|
|
1037
|
-
return null;
|
|
1020
|
+
if (t === null) return null;
|
|
1038
1021
|
let e = t.parentNode, i = 0;
|
|
1039
|
-
for (; e !== null && e !== this.listWrapper; )
|
|
1040
|
-
B(e) && e.classList.contains(f.item) && (i += 1), e = e.parentNode;
|
|
1022
|
+
for (; e !== null && e !== this.listWrapper; ) R(e) && e.classList.contains(k.item) && (i += 1), e = e.parentNode;
|
|
1041
1023
|
return i + 1;
|
|
1042
1024
|
}
|
|
1043
1025
|
constructor({ data: t, config: e, api: i, readOnly: s, block: n }, r) {
|
|
@@ -1058,8 +1040,8 @@ class Q {
|
|
|
1058
1040
|
}, !1), "start" in this.data.meta && this.data.meta.start !== void 0 && this.changeStartWith(this.data.meta.start), "counterType" in this.data.meta && this.data.meta.counterType !== void 0 && this.changeCounters(this.data.meta.counterType), this.listWrapper;
|
|
1059
1041
|
}
|
|
1060
1042
|
save(t) {
|
|
1061
|
-
const e = t != null ? t : this.listWrapper, i = (r) =>
|
|
1062
|
-
const a =
|
|
1043
|
+
const e = t != null ? t : this.listWrapper, i = (r) => I(r).map((o) => {
|
|
1044
|
+
const a = A(o);
|
|
1063
1045
|
return { content: this.renderer.getItemContent(o), meta: this.renderer.getItemMeta(o), items: a ? i(a) : [] };
|
|
1064
1046
|
}), s = e ? i(e) : [];
|
|
1065
1047
|
let n = { style: this.data.style, meta: {}, items: s };
|
|
@@ -1069,13 +1051,11 @@ class Q {
|
|
|
1069
1051
|
return { tags: ["OL", "UL", "LI"] };
|
|
1070
1052
|
}
|
|
1071
1053
|
merge(t) {
|
|
1072
|
-
const e = this.block.holder.querySelectorAll(`.${
|
|
1073
|
-
if (i === null || s === null || (s.insertAdjacentHTML("beforeend", t.items[0].content), this.listWrapper === void 0))
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
return;
|
|
1078
|
-
let r = I(n[n.length - 1]);
|
|
1054
|
+
const e = this.block.holder.querySelectorAll(`.${k.item}`), i = e[e.length - 1], s = U(i);
|
|
1055
|
+
if (i === null || s === null || (s.insertAdjacentHTML("beforeend", t.items[0].content), this.listWrapper === void 0)) return;
|
|
1056
|
+
const n = I(this.listWrapper);
|
|
1057
|
+
if (n.length === 0) return;
|
|
1058
|
+
let r = A(n[n.length - 1]);
|
|
1079
1059
|
const o = t.items.shift();
|
|
1080
1060
|
o !== void 0 && (o.items.length !== 0 && (r === null && (r = this.renderer.renderWrapper(!1)), this.appendItems(o.items, r)), t.items.length > 0 && this.appendItems(t.items, this.listWrapper));
|
|
1081
1061
|
}
|
|
@@ -1099,9 +1079,9 @@ class Q {
|
|
|
1099
1079
|
const n = { style: s, meta: {}, items: [] };
|
|
1100
1080
|
s === "ordered" && (this.data.meta.counterType = "numeric", this.data.meta.start = 1);
|
|
1101
1081
|
const r = (o) => Array.from(o.querySelectorAll(":scope > li")).map((a) => {
|
|
1102
|
-
var
|
|
1082
|
+
var h;
|
|
1103
1083
|
const d = a.querySelector(`:scope > ${i}`), l = d ? r(d) : [];
|
|
1104
|
-
return { content: (
|
|
1084
|
+
return { content: (h = a.innerHTML) != null ? h : "", meta: {}, items: l };
|
|
1105
1085
|
});
|
|
1106
1086
|
return n.items = r(t), n;
|
|
1107
1087
|
}
|
|
@@ -1114,48 +1094,41 @@ class Q {
|
|
|
1114
1094
|
enterPressed(t) {
|
|
1115
1095
|
var o;
|
|
1116
1096
|
const e = this.currentItem;
|
|
1117
|
-
if (t.stopPropagation(), t.preventDefault(), t.isComposing || e === null)
|
|
1118
|
-
return;
|
|
1097
|
+
if (t.stopPropagation(), t.preventDefault(), t.isComposing || e === null) return;
|
|
1119
1098
|
const i = ((o = this.renderer) == null ? void 0 : o.getItemContent(e).trim().length) === 0, s = e.parentNode === this.listWrapper, n = e.previousElementSibling === null, r = this.api.blocks.getCurrentBlockIndex();
|
|
1120
|
-
if (s && i)
|
|
1121
|
-
return
|
|
1122
|
-
|
|
1123
|
-
}(e) ? void this.splitList(e) : void (n ? this.convertItemToDefaultBlock(r, !0) : this.convertItemToDefaultBlock());
|
|
1099
|
+
if (s && i) return e.nextElementSibling !== null || function(a) {
|
|
1100
|
+
return a.querySelector(`.${k.itemChildren}`) !== null;
|
|
1101
|
+
}(e) ? void this.splitList(e) : void (n ? this.convertItemToDefaultBlock(r, !0) : this.convertItemToDefaultBlock());
|
|
1124
1102
|
i ? this.unshiftItem(e) : this.splitItem(e);
|
|
1125
1103
|
}
|
|
1126
1104
|
backspace(t) {
|
|
1127
1105
|
var i;
|
|
1128
1106
|
const e = this.currentItem;
|
|
1129
|
-
e !== null &&
|
|
1107
|
+
e !== null && Gt(e) && ((i = window.getSelection()) == null ? void 0 : i.isCollapsed) !== !1 && (t.stopPropagation(), e.parentNode !== this.listWrapper || e.previousElementSibling !== null ? (t.preventDefault(), this.mergeItemWithPrevious(e)) : this.convertFirstItemToDefaultBlock());
|
|
1130
1108
|
}
|
|
1131
1109
|
shiftTab(t) {
|
|
1132
1110
|
t.stopPropagation(), t.preventDefault(), this.currentItem !== null && this.unshiftItem(this.currentItem);
|
|
1133
1111
|
}
|
|
1134
1112
|
unshiftItem(t) {
|
|
1135
|
-
if (!t.parentNode || !
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
if (t.parentElement === null)
|
|
1142
|
-
return;
|
|
1143
|
-
const s = J(t);
|
|
1113
|
+
if (!t.parentNode || !R(t.parentNode)) return;
|
|
1114
|
+
const e = t.parentNode.closest(`.${k.item}`);
|
|
1115
|
+
if (!e) return;
|
|
1116
|
+
let i = A(t);
|
|
1117
|
+
if (t.parentElement === null) return;
|
|
1118
|
+
const s = G(t);
|
|
1144
1119
|
s !== null && (i === null && (i = this.renderer.renderWrapper(!1)), s.forEach((n) => {
|
|
1145
1120
|
i.appendChild(n);
|
|
1146
|
-
}), t.appendChild(i)), e.after(t),
|
|
1121
|
+
}), t.appendChild(i)), e.after(t), F(t, !1), X(e);
|
|
1147
1122
|
}
|
|
1148
1123
|
splitList(t) {
|
|
1149
|
-
const e =
|
|
1124
|
+
const e = I(t), i = this.block, s = this.api.blocks.getCurrentBlockIndex();
|
|
1150
1125
|
if (e.length !== 0) {
|
|
1151
1126
|
const a = e[0];
|
|
1152
|
-
this.unshiftItem(a),
|
|
1127
|
+
this.unshiftItem(a), F(t, !1);
|
|
1153
1128
|
}
|
|
1154
|
-
if (t.previousElementSibling === null && t.parentNode === this.listWrapper)
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
if (n === null)
|
|
1158
|
-
return;
|
|
1129
|
+
if (t.previousElementSibling === null && t.parentNode === this.listWrapper) return void this.convertItemToDefaultBlock(s);
|
|
1130
|
+
const n = G(t);
|
|
1131
|
+
if (n === null) return;
|
|
1159
1132
|
const r = this.renderer.renderWrapper(!0);
|
|
1160
1133
|
n.forEach((a) => {
|
|
1161
1134
|
r.appendChild(a);
|
|
@@ -1164,73 +1137,63 @@ class Q {
|
|
|
1164
1137
|
o.meta.start = this.data.style == "ordered" ? 1 : void 0, this.api.blocks.insert(i == null ? void 0 : i.name, o, this.config, s + 1), this.convertItemToDefaultBlock(s + 1), r.remove();
|
|
1165
1138
|
}
|
|
1166
1139
|
splitItem(t) {
|
|
1167
|
-
const [e, i] =
|
|
1168
|
-
if (e === null)
|
|
1169
|
-
|
|
1170
|
-
const s = z(t);
|
|
1140
|
+
const [e, i] = Xt();
|
|
1141
|
+
if (e === null) return;
|
|
1142
|
+
const s = U(t);
|
|
1171
1143
|
let n;
|
|
1172
|
-
n = s === null ? "" :
|
|
1173
|
-
const r =
|
|
1174
|
-
t == null || t.after(o), r && o.appendChild(r),
|
|
1144
|
+
n = s === null ? "" : Zt(s, e, i, "right", !0);
|
|
1145
|
+
const r = A(t), o = this.renderItem(n);
|
|
1146
|
+
t == null || t.after(o), r && o.appendChild(r), F(o);
|
|
1175
1147
|
}
|
|
1176
1148
|
mergeItemWithPrevious(t) {
|
|
1177
|
-
var
|
|
1149
|
+
var h;
|
|
1178
1150
|
const e = t.previousElementSibling, i = t.parentNode;
|
|
1179
|
-
if (i === null || !
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
if (!e && !s || e && !B(e))
|
|
1183
|
-
return;
|
|
1151
|
+
if (i === null || !R(i)) return;
|
|
1152
|
+
const s = i.closest(`.${k.item}`);
|
|
1153
|
+
if (!e && !s || e && !R(e)) return;
|
|
1184
1154
|
let n;
|
|
1185
1155
|
if (e) {
|
|
1186
|
-
const
|
|
1187
|
-
n =
|
|
1188
|
-
} else
|
|
1189
|
-
n = s;
|
|
1156
|
+
const p = I(e, !1);
|
|
1157
|
+
n = p.length !== 0 && p.length !== 0 ? p[p.length - 1] : e;
|
|
1158
|
+
} else n = s;
|
|
1190
1159
|
const r = this.renderer.getItemContent(t);
|
|
1191
|
-
if (!n)
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
if (o === null)
|
|
1196
|
-
return;
|
|
1160
|
+
if (!n) return;
|
|
1161
|
+
F(n, !1);
|
|
1162
|
+
const o = U(n);
|
|
1163
|
+
if (o === null) return;
|
|
1197
1164
|
o.insertAdjacentHTML("beforeend", r);
|
|
1198
|
-
const a =
|
|
1199
|
-
if (a.length === 0)
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
}), I(d) === null && n.appendChild(l), t.remove();
|
|
1165
|
+
const a = I(t);
|
|
1166
|
+
if (a.length === 0) return t.remove(), void X(n);
|
|
1167
|
+
const d = e || s, l = (h = A(d)) != null ? h : this.renderer.renderWrapper(!1);
|
|
1168
|
+
e ? a.forEach((p) => {
|
|
1169
|
+
l.appendChild(p);
|
|
1170
|
+
}) : a.forEach((p) => {
|
|
1171
|
+
l.prepend(p);
|
|
1172
|
+
}), A(d) === null && n.appendChild(l), t.remove();
|
|
1207
1173
|
}
|
|
1208
1174
|
addTab(t) {
|
|
1209
1175
|
var n;
|
|
1210
1176
|
t.stopPropagation(), t.preventDefault();
|
|
1211
1177
|
const e = this.currentItem;
|
|
1212
|
-
if (!e)
|
|
1213
|
-
return;
|
|
1178
|
+
if (!e) return;
|
|
1214
1179
|
if (((n = this.config) == null ? void 0 : n.maxLevel) !== void 0) {
|
|
1215
1180
|
const r = this.currentItemLevel;
|
|
1216
|
-
if (r !== null && r === this.config.maxLevel)
|
|
1217
|
-
return;
|
|
1181
|
+
if (r !== null && r === this.config.maxLevel) return;
|
|
1218
1182
|
}
|
|
1219
1183
|
const i = e.previousSibling;
|
|
1220
|
-
if (i === null || !
|
|
1221
|
-
|
|
1222
|
-
const s = I(i);
|
|
1184
|
+
if (i === null || !R(i)) return;
|
|
1185
|
+
const s = A(i);
|
|
1223
1186
|
if (s)
|
|
1224
|
-
s.appendChild(e),
|
|
1187
|
+
s.appendChild(e), I(e).forEach((r) => {
|
|
1225
1188
|
s.appendChild(r);
|
|
1226
1189
|
});
|
|
1227
1190
|
else {
|
|
1228
1191
|
const r = this.renderer.renderWrapper(!1);
|
|
1229
|
-
r.appendChild(e),
|
|
1192
|
+
r.appendChild(e), I(e).forEach((o) => {
|
|
1230
1193
|
r.appendChild(o);
|
|
1231
1194
|
}), i.appendChild(r);
|
|
1232
1195
|
}
|
|
1233
|
-
|
|
1196
|
+
X(e), F(e, !1);
|
|
1234
1197
|
}
|
|
1235
1198
|
convertItemToDefaultBlock(t, e) {
|
|
1236
1199
|
let i;
|
|
@@ -1239,21 +1202,20 @@ class Q {
|
|
|
1239
1202
|
}
|
|
1240
1203
|
convertFirstItemToDefaultBlock() {
|
|
1241
1204
|
const t = this.currentItem;
|
|
1242
|
-
if (t === null)
|
|
1243
|
-
|
|
1244
|
-
const e = E(t);
|
|
1205
|
+
if (t === null) return;
|
|
1206
|
+
const e = I(t);
|
|
1245
1207
|
if (e.length !== 0) {
|
|
1246
1208
|
const r = e[0];
|
|
1247
|
-
this.unshiftItem(r),
|
|
1209
|
+
this.unshiftItem(r), F(t);
|
|
1248
1210
|
}
|
|
1249
|
-
const i =
|
|
1211
|
+
const i = G(t), s = this.api.blocks.getCurrentBlockIndex(), n = i === null;
|
|
1250
1212
|
this.convertItemToDefaultBlock(s, n);
|
|
1251
1213
|
}
|
|
1252
1214
|
renderItem(t, e) {
|
|
1253
1215
|
const i = e != null ? e : this.renderer.composeDefaultMeta();
|
|
1254
1216
|
switch (!0) {
|
|
1255
|
-
case this.renderer instanceof
|
|
1256
|
-
case this.renderer instanceof
|
|
1217
|
+
case this.renderer instanceof E:
|
|
1218
|
+
case this.renderer instanceof M:
|
|
1257
1219
|
}
|
|
1258
1220
|
return this.renderer.renderItem(t, i);
|
|
1259
1221
|
}
|
|
@@ -1268,8 +1230,8 @@ class Q {
|
|
|
1268
1230
|
});
|
|
1269
1231
|
}
|
|
1270
1232
|
}
|
|
1271
|
-
const
|
|
1272
|
-
class
|
|
1233
|
+
const le = /* @__PURE__ */ new Map([["Numeric", "numeric"], ["Lower Roman", "lower-roman"], ["Upper Roman", "upper-roman"], ["Lower Alpha", "lower-alpha"], ["Upper Alpha", "upper-alpha"]]);
|
|
1234
|
+
class V {
|
|
1273
1235
|
static get isReadOnlySupported() {
|
|
1274
1236
|
return !0;
|
|
1275
1237
|
}
|
|
@@ -1283,7 +1245,7 @@ class K {
|
|
|
1283
1245
|
return { tags: ["OL", "UL", "LI"] };
|
|
1284
1246
|
}
|
|
1285
1247
|
static get conversionConfig() {
|
|
1286
|
-
return { export: (t) =>
|
|
1248
|
+
return { export: (t) => V.joinRecursive(t), import: (t, e) => ({ meta: {}, items: [{ content: t, meta: {}, items: [] }], style: (e == null ? void 0 : e.defaultStyle) !== void 0 ? e.defaultStyle : "unordered" }) };
|
|
1287
1249
|
}
|
|
1288
1250
|
get listStyle() {
|
|
1289
1251
|
return this.data.style || this.defaultListStyle;
|
|
@@ -1296,7 +1258,7 @@ class K {
|
|
|
1296
1258
|
}
|
|
1297
1259
|
constructor({ data: t, config: e, api: i, readOnly: s, block: n }) {
|
|
1298
1260
|
var o;
|
|
1299
|
-
this.api = i, this.readOnly = s, this.config = e, this.block = n, this.defaultListStyle = ((o = this.config) == null ? void 0 : o.defaultStyle) || "unordered", this.defaultCounterTypes = this.config.counterTypes || Array.from(
|
|
1261
|
+
this.api = i, this.readOnly = s, this.config = e, this.block = n, this.defaultListStyle = ((o = this.config) == null ? void 0 : o.defaultStyle) || "unordered", this.defaultCounterTypes = this.config.counterTypes || Array.from(le.values());
|
|
1300
1262
|
const r = { style: this.defaultListStyle, meta: {}, items: [] };
|
|
1301
1263
|
this.data = Object.keys(t).length ? function(a) {
|
|
1302
1264
|
const d = [];
|
|
@@ -1314,7 +1276,7 @@ class K {
|
|
|
1314
1276
|
}(t) : r, this.listStyle === "ordered" && this.data.meta.counterType === void 0 && (this.data.meta.counterType = "numeric"), this.changeTabulatorByStyle();
|
|
1315
1277
|
}
|
|
1316
1278
|
static joinRecursive(t) {
|
|
1317
|
-
return t.items.map((e) => `${e.content} ${
|
|
1279
|
+
return t.items.map((e) => `${e.content} ${V.joinRecursive(e)}`).join("");
|
|
1318
1280
|
}
|
|
1319
1281
|
render() {
|
|
1320
1282
|
return this.listElement = this.list.render(), this.listElement;
|
|
@@ -1343,17 +1305,17 @@ class K {
|
|
|
1343
1305
|
changeTabulatorByStyle() {
|
|
1344
1306
|
switch (this.listStyle) {
|
|
1345
1307
|
case "ordered":
|
|
1346
|
-
this.list = new
|
|
1308
|
+
this.list = new Z({ data: this.data, readOnly: this.readOnly, api: this.api, config: this.config, block: this.block }, new E(this.readOnly, this.config));
|
|
1347
1309
|
break;
|
|
1348
1310
|
case "unordered":
|
|
1349
|
-
this.list = new
|
|
1311
|
+
this.list = new Z({ data: this.data, readOnly: this.readOnly, api: this.api, config: this.config, block: this.block }, new M(this.readOnly, this.config));
|
|
1350
1312
|
break;
|
|
1351
1313
|
case "checklist":
|
|
1352
|
-
this.list = new
|
|
1314
|
+
this.list = new Z({ data: this.data, readOnly: this.readOnly, api: this.api, config: this.config, block: this.block }, new C(this.readOnly, this.config));
|
|
1353
1315
|
}
|
|
1354
1316
|
}
|
|
1355
1317
|
}
|
|
1356
|
-
class
|
|
1318
|
+
class de {
|
|
1357
1319
|
constructor(t, e, i) {
|
|
1358
1320
|
this.holder = e, this.observer = null, this.debounceTimer = i, this.mutationDebouncer = this.debounce(() => {
|
|
1359
1321
|
t();
|
|
@@ -1393,19 +1355,18 @@ class ge {
|
|
|
1393
1355
|
document.dispatchEvent(t), (e = this.observer) == null || e.disconnect();
|
|
1394
1356
|
}
|
|
1395
1357
|
}
|
|
1396
|
-
class
|
|
1358
|
+
class he {
|
|
1397
1359
|
constructor({ editor: t, config: e = {}, onUpdate: i, maxLength: s }) {
|
|
1398
1360
|
this.position = 0;
|
|
1399
1361
|
const n = { maxLength: 30, onUpdate() {
|
|
1400
|
-
}, config: { debounceTimer: 200, shortcuts: { undo: ["CMD+Z"], redo: ["CMD+Y", "CMD+SHIFT+Z"] } } }, { blocks: r, caret: o } = t, { configuration: a } = t, { holder: d, defaultBlock: l } = a,
|
|
1401
|
-
this.holder = typeof d == "string" ? document.getElementById(d) : d, this.editor = t, this.defaultBlock = l, this.blocks = r, this.caret = o, this.shouldSaveHistory = !0, this.readOnly = a.readOnly, this.maxLength = s || n.maxLength, this.onUpdate = i || n.onUpdate, this.config = { debounceTimer:
|
|
1362
|
+
}, config: { debounceTimer: 200, shortcuts: { undo: ["CMD+Z"], redo: ["CMD+Y", "CMD+SHIFT+Z"] } } }, { blocks: r, caret: o } = t, { configuration: a } = t, { holder: d, defaultBlock: l } = a, h = n.config.shortcuts, { shortcuts: p } = e, u = { ...h, ...p }, g = Array.isArray(u.undo) ? u.undo : [u.undo], m = Array.isArray(u.redo) ? u.redo : [u.redo], f = n.config.debounceTimer, { debounceTimer: v = f } = e;
|
|
1363
|
+
this.holder = typeof d == "string" ? document.getElementById(d) : d, this.editor = t, this.defaultBlock = l, this.blocks = r, this.caret = o, this.shouldSaveHistory = !0, this.readOnly = a.readOnly, this.maxLength = s || n.maxLength, this.onUpdate = i || n.onUpdate, this.config = { debounceTimer: v, shortcuts: { undo: g, redo: m } }, new de(() => this.registerChange(), this.holder, this.config.debounceTimer).setMutationObserver(), this.setEventListeners(), this.initialItem = null, this.clear();
|
|
1402
1364
|
}
|
|
1403
1365
|
static get isReadOnlySupported() {
|
|
1404
1366
|
return !0;
|
|
1405
1367
|
}
|
|
1406
1368
|
truncate(t, e) {
|
|
1407
|
-
for (; t.length > e; )
|
|
1408
|
-
t.shift();
|
|
1369
|
+
for (; t.length > e; ) t.shift();
|
|
1409
1370
|
}
|
|
1410
1371
|
initialize(t) {
|
|
1411
1372
|
const e = "blocks" in t ? t.blocks : t, i = { index: e.length - 1, state: e };
|
|
@@ -1437,14 +1398,13 @@ class me {
|
|
|
1437
1398
|
}
|
|
1438
1399
|
getCaretIndex(t) {
|
|
1439
1400
|
const e = this.holder.getElementsByClassName("ce-block__content");
|
|
1440
|
-
return new
|
|
1401
|
+
return new lt(e[t].firstChild).getPos();
|
|
1441
1402
|
}
|
|
1442
1403
|
insertDeletedBlock(t, e, i) {
|
|
1443
|
-
for (let s = 0; s < t.length; s += 1)
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
}
|
|
1404
|
+
for (let s = 0; s < t.length; s += 1) if (!e[s] || t[s].id !== e[s].id) {
|
|
1405
|
+
this.blocks.insert(t[s].type, t[s].data, {}, s, !0), this.caret.setToBlock(i, "end");
|
|
1406
|
+
break;
|
|
1407
|
+
}
|
|
1448
1408
|
}
|
|
1449
1409
|
blockWasDropped(t, e) {
|
|
1450
1410
|
return t.length === e.length && t.some((i, s) => i.id !== e[s].id);
|
|
@@ -1469,16 +1429,11 @@ class me {
|
|
|
1469
1429
|
const { state: s, caretIndex: n } = this.stack[this.position];
|
|
1470
1430
|
this.onUpdate();
|
|
1471
1431
|
const r = this.blocks.getBlocksCount();
|
|
1472
|
-
if (s[i] || (i -= 1, this.stack[this.position].index = i), this.blockWasDeleted(s, e))
|
|
1473
|
-
|
|
1474
|
-
else if (this.
|
|
1475
|
-
|
|
1476
|
-
else if (
|
|
1477
|
-
await this.blocks.delete(t), this.caret.setToBlock(i, "end");
|
|
1478
|
-
else if (r > s.length)
|
|
1479
|
-
await this.blocks.render({ blocks: s }), this.setCaretIndex(i, n);
|
|
1480
|
-
else if (this.blockWasDropped(s, e))
|
|
1481
|
-
await this.blocks.render({ blocks: s }), this.caret.setToBlock(i, "end");
|
|
1432
|
+
if (s[i] || (i -= 1, this.stack[this.position].index = i), this.blockWasDeleted(s, e)) this.insertDeletedBlock(s, e, i);
|
|
1433
|
+
else if (this.contentWasCopied(s, e, i)) await this.blocks.render({ blocks: s }), this.caret.setToBlock(i, "end");
|
|
1434
|
+
else if (i < t && this.blockWasSkipped(s, e)) await this.blocks.delete(t), this.caret.setToBlock(i, "end");
|
|
1435
|
+
else if (r > s.length) await this.blocks.render({ blocks: s }), this.setCaretIndex(i, n);
|
|
1436
|
+
else if (this.blockWasDropped(s, e)) await this.blocks.render({ blocks: s }), this.caret.setToBlock(i, "end");
|
|
1482
1437
|
else if (this.contentChangedInNoFocusBlock(i, t)) {
|
|
1483
1438
|
const { id: a } = this.blocks.getBlockByIndex(t);
|
|
1484
1439
|
await this.blocks.update(a, s[t].data), this.setCaretIndex(i, n);
|
|
@@ -1489,17 +1444,15 @@ class me {
|
|
|
1489
1444
|
}
|
|
1490
1445
|
setCaretIndex(t, e) {
|
|
1491
1446
|
if (e && e !== -1) {
|
|
1492
|
-
const i = this.holder.getElementsByClassName("ce-block__content"), s = new
|
|
1447
|
+
const i = this.holder.getElementsByClassName("ce-block__content"), s = new lt(i[t].firstChild);
|
|
1493
1448
|
setTimeout(() => s.setPos(e), 50);
|
|
1494
|
-
} else
|
|
1495
|
-
this.caret.setToBlock(t, "end");
|
|
1449
|
+
} else this.caret.setToBlock(t, "end");
|
|
1496
1450
|
}
|
|
1497
1451
|
async insertBlock(t, e) {
|
|
1498
1452
|
await this.blocks.insert(t[e].type, t[e].data, {}, e, !0);
|
|
1499
1453
|
}
|
|
1500
1454
|
async insertSkippedBlocks(t, e, i) {
|
|
1501
|
-
for (let s = t.length; s < e.length; s += 1)
|
|
1502
|
-
this.insertBlock(e, s);
|
|
1455
|
+
for (let s = t.length; s < e.length; s += 1) this.insertBlock(e, s);
|
|
1503
1456
|
JSON.stringify(t[i - 1]) !== JSON.stringify(e[i - 1]) && await this.updateModifiedBlock(e, i);
|
|
1504
1457
|
}
|
|
1505
1458
|
async updateModifiedBlock(t, e) {
|
|
@@ -1529,17 +1482,17 @@ class me {
|
|
|
1529
1482
|
return i.push(s), i;
|
|
1530
1483
|
}
|
|
1531
1484
|
setEventListeners() {
|
|
1532
|
-
const { holder: t } = this, { shortcuts: e } = this.config, { undo: i, redo: s } = e, n = i.map((
|
|
1533
|
-
l(
|
|
1534
|
-
},
|
|
1535
|
-
l(
|
|
1485
|
+
const { holder: t } = this, { shortcuts: e } = this.config, { undo: i, redo: s } = e, n = i.map((u) => u.replace(/ /g, "").split("+")), r = s.map((u) => u.replace(/ /g, "").split("+")), o = n.map((u) => this.parseKeys(u)), a = r.map((u) => this.parseKeys(u)), d = (u, g) => g.reduce((m, f) => m || ((v, L) => L.length === 3 && v[L[0]] && v[L[1]] && v.key.toLowerCase() === L[2])(u, f), !1), l = (u, g, m) => !(!((f, v) => v.reduce((L, w) => L || ((_, B) => B.length === 2 && _[B[0]] && _.key.toLowerCase() === B[1])(f, w), !1))(u, g) || d(u, m)) || !!d(u, g), h = (u) => {
|
|
1486
|
+
l(u, o, a) && (u.preventDefault(), this.undo());
|
|
1487
|
+
}, p = (u) => {
|
|
1488
|
+
l(u, a, o) && (u.preventDefault(), this.redo());
|
|
1536
1489
|
};
|
|
1537
|
-
t.addEventListener("keydown",
|
|
1538
|
-
t.removeEventListener("keydown",
|
|
1490
|
+
t.addEventListener("keydown", h), t.addEventListener("keydown", p), t.addEventListener("destroy", () => {
|
|
1491
|
+
t.removeEventListener("keydown", h), t.removeEventListener("keydown", p);
|
|
1539
1492
|
});
|
|
1540
1493
|
}
|
|
1541
1494
|
}
|
|
1542
|
-
class
|
|
1495
|
+
class H {
|
|
1543
1496
|
static get toolbox() {
|
|
1544
1497
|
return { icon: '<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1763693072662" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2633" id="mx_n_1763693072663" width="24" height="24" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M83.2 147.2V448c0 25.6 19.2 44.8 44.8 44.8h768c25.6 0 44.8-19.2 44.8-44.8V147.2c0-25.6-19.2-44.8-44.8-44.8H128c-25.6 6.4-44.8 25.6-44.8 44.8z m89.6 256V192h684.8v211.2H172.8zM810.24 642.56c0-25.6-19.2-44.8-44.8-44.8h-640c-25.6 0-44.8 19.2-44.8 44.8 0 25.6 19.2 44.8 44.8 44.8h640c25.6 6.4 44.8-12.8 44.8-44.8zM554.56 866.24c0-25.6-19.2-44.8-44.8-44.8h-384c-25.6 0-44.8 19.2-44.8 44.8 0 25.6 19.2 44.8 44.8 44.8h384c25.6 6.4 44.8-12.8 44.8-44.8z" fill="#262626" p-id="2634"></path></svg>', title: "Alert" };
|
|
1545
1498
|
}
|
|
@@ -1565,7 +1518,7 @@ class M {
|
|
|
1565
1518
|
return { wrapper: "cdx-alert", wrapperForType: (t) => `cdx-alert-${t}`, wrapperForAlignType: (t) => `cdx-alert-align-${t}`, message: "cdx-alert__message" };
|
|
1566
1519
|
}
|
|
1567
1520
|
constructor({ data: t, config: e, api: i, readOnly: s }) {
|
|
1568
|
-
this.api = i, this.alertTypes = e.alertTypes ||
|
|
1521
|
+
this.api = i, this.alertTypes = e.alertTypes || H.ALERT_TYPES, this.defaultType = e.defaultType || H.DEFAULT_TYPE, this.defaultAlign = e.defaultAlign || H.DEFAULT_ALIGN_TYPE, this.messagePlaceholder = e.messagePlaceholder || H.DEFAULT_MESSAGE_PLACEHOLDER, this.data = { type: this.alertTypes.includes(t.type) ? t.type : this.defaultType, align: H.ALIGN_TYPES.includes(t.align) ? t.align : this.defaultAlign, message: t.message || "" }, this.container = void 0, this.readOnly = s;
|
|
1569
1522
|
}
|
|
1570
1523
|
static get isReadOnlySupported() {
|
|
1571
1524
|
return !0;
|
|
@@ -1618,9 +1571,9 @@ class M {
|
|
|
1618
1571
|
a.classList.toggle("cdx-alert_setting__icon_active", l === this.data.type);
|
|
1619
1572
|
});
|
|
1620
1573
|
});
|
|
1621
|
-
}),
|
|
1574
|
+
}), H.ALIGN_TYPES.map((s) => {
|
|
1622
1575
|
let n;
|
|
1623
|
-
return s === "left" && (n = document.createElement("div"), n.classList.add("cdx-alert_setting__icon"), n.innerHTML =
|
|
1576
|
+
return s === "left" && (n = document.createElement("div"), n.classList.add("cdx-alert_setting__icon"), n.innerHTML = Ht), s === "right" && (n = document.createElement("div"), n.classList.add("cdx-alert_setting__icon"), n.innerHTML = Bt), s === "center" && (n = document.createElement("div"), n.classList.add("cdx-alert_setting__icon"), n.innerHTML = It), n == null || n.setAttribute("data-align", s), this.api.tooltip.onHover(n, this.api.i18n.t(`align-${s}`), { placement: "top" }), i.appendChild(n), n;
|
|
1624
1577
|
}).forEach((s, n, r) => {
|
|
1625
1578
|
const o = s.getAttribute("data-align") || "";
|
|
1626
1579
|
s.addEventListener("click", () => {
|
|
@@ -1641,7 +1594,7 @@ class M {
|
|
|
1641
1594
|
});
|
|
1642
1595
|
}
|
|
1643
1596
|
_changeAlignType(t) {
|
|
1644
|
-
this.data.align = t,
|
|
1597
|
+
this.data.align = t, H.ALIGN_TYPES.forEach((e) => {
|
|
1645
1598
|
const i = this.CSS.wrapperForAlignType(e);
|
|
1646
1599
|
this.container.classList.remove(i), t === e && this.container.classList.add(i);
|
|
1647
1600
|
});
|
|
@@ -1653,8 +1606,7 @@ class M {
|
|
|
1653
1606
|
_make(t, e, i = {}) {
|
|
1654
1607
|
let s = document.createElement(t);
|
|
1655
1608
|
Array.isArray(e) ? s.classList.add(...e) : e && s.classList.add(e);
|
|
1656
|
-
for (let n in i)
|
|
1657
|
-
s.setAttribute(n, i[n]);
|
|
1609
|
+
for (let n in i) s.setAttribute(n, i[n]);
|
|
1658
1610
|
return s;
|
|
1659
1611
|
}
|
|
1660
1612
|
onPaste(t) {
|
|
@@ -1668,15 +1620,15 @@ class M {
|
|
|
1668
1620
|
return { message: !0, type: !1, alignType: !1 };
|
|
1669
1621
|
}
|
|
1670
1622
|
}
|
|
1671
|
-
const
|
|
1623
|
+
const wt = { orientation: !1 }, b = class b {
|
|
1672
1624
|
constructor({ api: t, data: e, config: i, block: s, ...n }) {
|
|
1673
|
-
var o, a, d, l,
|
|
1625
|
+
var o, a, d, l, h, p;
|
|
1674
1626
|
this.wrapper = document.createElement("div"), this.DEFAULT_INDENT_KEY = "Tab", this.lastResizeTimeout = null, this.cachedMaxWidthForContent = null, this.api = t, this.block = s, !i && "settings" in n && (i = (o = n.settings) != null ? o : {}), this.config = { indentSize: 24, maxIndent: 8, minIndent: 0, multiblock: !1, autoIndent: !1, tuneName: null, orientation: "horizontal", customBlockIndentLimits: {}, handleShortcut: void 0, direction: "ltr", directionChangeHandler: null, version: "2.30", ...i != null ? i : {} }, this.changeConfigBasedOnVersionIfNeeded(), (a = this.config) != null && a.directionChangeHandler && this.config.directionChangeHandler(this.alignmentChangeListener.bind(this));
|
|
1675
|
-
const r = (
|
|
1676
|
-
this.data = { indentLevel: r, ...e != null ? e : {} }, this.config.multiblock && this.config.tuneName, window.addEventListener("resize", (
|
|
1677
|
-
var
|
|
1678
|
-
const g =
|
|
1679
|
-
((
|
|
1627
|
+
const r = (p = (h = this.config.customBlockIndentLimits[(l = (d = this.block) == null ? void 0 : d.name) != null ? l : ""]) == null ? void 0 : h.min) != null ? p : this.config.minIndent;
|
|
1628
|
+
this.data = { indentLevel: r, ...e != null ? e : {} }, this.config.multiblock && this.config.tuneName, window.addEventListener("resize", (u) => this.onResize.call(this, u)), this.api.events.on("block changed", ({ event: u }) => {
|
|
1629
|
+
var f;
|
|
1630
|
+
const g = u.detail.target.id;
|
|
1631
|
+
((f = this.block) == null ? void 0 : f.id) === g && this.shouldApplyAutoIndent && queueMicrotask(() => this.autoIndentBlock());
|
|
1680
1632
|
});
|
|
1681
1633
|
}
|
|
1682
1634
|
static get isTune() {
|
|
@@ -1691,28 +1643,26 @@ const bt = { orientation: !1 }, j = class b {
|
|
|
1691
1643
|
const t = () => {
|
|
1692
1644
|
if (this.data.indentLevel == this.maxIndent) {
|
|
1693
1645
|
const a = this.getTuneButton("indent");
|
|
1694
|
-
if (a == null || a.classList.add(this.CSS.disabledItem), !a)
|
|
1695
|
-
return !0;
|
|
1646
|
+
if (a == null || a.classList.add(this.CSS.disabledItem), !a) return !0;
|
|
1696
1647
|
}
|
|
1697
1648
|
if (this.data.indentLevel == this.minIndent) {
|
|
1698
1649
|
const a = this.getTuneButton("unindent");
|
|
1699
|
-
if (a == null || a.classList.add(this.CSS.disabledItem), !a)
|
|
1700
|
-
return !0;
|
|
1650
|
+
if (a == null || a.classList.add(this.CSS.disabledItem), !a) return !0;
|
|
1701
1651
|
}
|
|
1702
1652
|
};
|
|
1703
1653
|
if (queueMicrotask(() => {
|
|
1704
1654
|
t() && setTimeout(t, 300);
|
|
1705
1655
|
}), this.config.orientation === "vertical") {
|
|
1706
1656
|
const a = `${this.TuneNames.indentLeft}-${(r = this.block) == null ? void 0 : r.id}`, d = `${this.TuneNames.indentRight}-${(o = this.block) == null ? void 0 : o.id}`;
|
|
1707
|
-
return [{ title: this.rightText, hint: { title: this.api.i18n.t(this.rightText) }, onActivate: (l,
|
|
1657
|
+
return [{ title: this.rightText, hint: { title: this.api.i18n.t(this.rightText) }, onActivate: (l, h) => {
|
|
1708
1658
|
this.handleIndentRight(), l.title = this.rightText;
|
|
1709
|
-
}, icon: kt, name: d }, { title: this.leftText, hint: { title: this.api.i18n.t(this.leftText) }, onActivate: (l,
|
|
1659
|
+
}, icon: kt, name: d }, { title: this.leftText, hint: { title: this.api.i18n.t(this.leftText) }, onActivate: (l, h) => {
|
|
1710
1660
|
this.handleIndentLeft(), l.title = this.leftText;
|
|
1711
|
-
}, icon:
|
|
1661
|
+
}, icon: vt, name: a }];
|
|
1712
1662
|
}
|
|
1713
1663
|
const e = `
|
|
1714
1664
|
<div class="${this.CSS.popoverItem} ${this.CSS.customPopoverItem}" data-item-name='indent' version=${this.config.version}>
|
|
1715
|
-
<button type="button" class="${this.CSS.popoverItemIcon}" data-${this.TuneNames.indentLeft}>${
|
|
1665
|
+
<button type="button" class="${this.CSS.popoverItemIcon}" data-${this.TuneNames.indentLeft}>${vt}</button>
|
|
1716
1666
|
<span class="${this.CSS.popoverItemTitle}">${this.api.sanitizer.clean(this.api.i18n.t("Indent"), {})}</span>
|
|
1717
1667
|
<button type="button" class="${this.CSS.popoverItemIcon}" data-${this.TuneNames.indentRight} style="margin-left:10px;">${kt}</button>
|
|
1718
1668
|
</div>
|
|
@@ -1767,29 +1717,22 @@ const bt = { orientation: !1 }, j = class b {
|
|
|
1767
1717
|
}
|
|
1768
1718
|
get shouldApplyAutoIndent() {
|
|
1769
1719
|
var s;
|
|
1770
|
-
if (!this.config.autoIndent)
|
|
1771
|
-
|
|
1772
|
-
if (typeof this.config.autoIndent == "boolean")
|
|
1773
|
-
return this.config.autoIndent;
|
|
1720
|
+
if (!this.config.autoIndent) return !1;
|
|
1721
|
+
if (typeof this.config.autoIndent == "boolean") return this.config.autoIndent;
|
|
1774
1722
|
const t = this.api.blocks.getCurrentBlockIndex();
|
|
1775
|
-
if (t < 0)
|
|
1776
|
-
return !1;
|
|
1723
|
+
if (t < 0) return !1;
|
|
1777
1724
|
const e = this.api.blocks.getBlockByIndex(t);
|
|
1778
|
-
if (!e)
|
|
1779
|
-
return !1;
|
|
1725
|
+
if (!e) return !1;
|
|
1780
1726
|
const i = e.name;
|
|
1781
1727
|
return !((s = this.config.autoIndent.tuneNames) != null && s.length) || this.config.autoIndent.tuneNames.includes(i);
|
|
1782
1728
|
}
|
|
1783
1729
|
handlePropagationForKeyEvent(t) {
|
|
1784
1730
|
var r, o, a;
|
|
1785
|
-
if (!((r = this.block) != null && r.id) || this.config.handleShortcut === !1)
|
|
1786
|
-
return null;
|
|
1731
|
+
if (!((r = this.block) != null && r.id) || this.config.handleShortcut === !1) return null;
|
|
1787
1732
|
const e = t.key == this.DEFAULT_INDENT_KEY, i = typeof this.config.handleShortcut == "function";
|
|
1788
|
-
if (!i && !e)
|
|
1789
|
-
return null;
|
|
1733
|
+
if (!i && !e) return null;
|
|
1790
1734
|
const s = (a = (o = this.config).handleShortcut) == null ? void 0 : a.call(o, t, this.block.id);
|
|
1791
|
-
if (!s && i)
|
|
1792
|
-
return null;
|
|
1735
|
+
if (!s && i) return null;
|
|
1793
1736
|
let n;
|
|
1794
1737
|
switch (s) {
|
|
1795
1738
|
case "indent":
|
|
@@ -1799,35 +1742,29 @@ const bt = { orientation: !1 }, j = class b {
|
|
|
1799
1742
|
n = !1;
|
|
1800
1743
|
break;
|
|
1801
1744
|
default:
|
|
1802
|
-
if (!e)
|
|
1803
|
-
return null;
|
|
1745
|
+
if (!e) return null;
|
|
1804
1746
|
n = !t.shiftKey;
|
|
1805
1747
|
}
|
|
1806
1748
|
return t.stopPropagation(), t.preventDefault(), { isIndent: n };
|
|
1807
1749
|
}
|
|
1808
1750
|
onKeyDown(t) {
|
|
1809
1751
|
var n, r, o;
|
|
1810
|
-
if (!((n = this.block) != null && n.id))
|
|
1811
|
-
return;
|
|
1752
|
+
if (!((n = this.block) != null && n.id)) return;
|
|
1812
1753
|
const e = this.handlePropagationForKeyEvent(t);
|
|
1813
|
-
if (!e)
|
|
1814
|
-
return;
|
|
1754
|
+
if (!e) return;
|
|
1815
1755
|
const { isIndent: i } = e;
|
|
1816
1756
|
this.api.inlineToolbar.close();
|
|
1817
1757
|
const s = this.getGlobalSelectedBlocks();
|
|
1818
|
-
if (!this.config.multiblock || s.length < 2)
|
|
1819
|
-
return i ? this.indentBlock() : this.unIndentBlock(), void ((o = (r = this.block).dispatchChange) == null ? void 0 : o.call(r));
|
|
1758
|
+
if (!this.config.multiblock || s.length < 2) return i ? this.indentBlock() : this.unIndentBlock(), void ((o = (r = this.block).dispatchChange) == null ? void 0 : o.call(r));
|
|
1820
1759
|
this.config.tuneName && s.forEach(async (a) => {
|
|
1821
|
-
var
|
|
1760
|
+
var p, u, g, m;
|
|
1822
1761
|
const d = await a.save();
|
|
1823
|
-
if (!d || !("tunes" in d) || typeof d.tunes != "object" || !d.tunes)
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
const c = this.getWrapperBlockById(a.id);
|
|
1830
|
-
c instanceof HTMLElement && this.applyStylesToWrapper(c, l.indentLevel);
|
|
1762
|
+
if (!d || !("tunes" in d) || typeof d.tunes != "object" || !d.tunes) return;
|
|
1763
|
+
const l = d.tunes[(p = this.config.tuneName) != null ? p : ""];
|
|
1764
|
+
if (!l) return;
|
|
1765
|
+
l.indentLevel = i ? Math.min(this.config.maxIndent, ((u = l.indentLevel) != null ? u : 0) + 1) : Math.max(0, ((g = l.indentLevel) != null ? g : 0) - 1), (m = a.dispatchChange) == null || m.call(a);
|
|
1766
|
+
const h = this.getWrapperBlockById(a.id);
|
|
1767
|
+
h instanceof HTMLElement && this.applyStylesToWrapper(h, l.indentLevel);
|
|
1831
1768
|
});
|
|
1832
1769
|
}
|
|
1833
1770
|
handleIndentLeft() {
|
|
@@ -1847,8 +1784,7 @@ const bt = { orientation: !1 }, j = class b {
|
|
|
1847
1784
|
autoIndentBlock() {
|
|
1848
1785
|
var r, o;
|
|
1849
1786
|
const t = this.api.blocks.getBlockIndex(this.block.id), e = this.api.blocks.getBlockByIndex(t - 1);
|
|
1850
|
-
if (!e)
|
|
1851
|
-
return;
|
|
1787
|
+
if (!e) return;
|
|
1852
1788
|
const i = (o = (r = e.holder) == null ? void 0 : r.querySelector(`[${b.DATA_WRAPPER_NAME}]`)) == null ? void 0 : o.getAttribute(b.DATA_INDENT_LEVEL), s = Number(i != null ? i : 0), n = Math.min(Math.max(s, this.minIndent), this.maxIndent);
|
|
1853
1789
|
this.data.indentLevel = n, this.applyStylesToWrapper(this.wrapper, this.data.indentLevel);
|
|
1854
1790
|
}
|
|
@@ -1872,15 +1808,13 @@ const bt = { orientation: !1 }, j = class b {
|
|
|
1872
1808
|
const i = e * this.config.indentSize;
|
|
1873
1809
|
t.setAttribute(b.DATA_INDENT_LEVEL, e.toString());
|
|
1874
1810
|
const s = t.querySelector(`.${this.EditorCSS.content}`), n = this.getBlockForWrapper(t) || document.querySelector(`.${this.EditorCSS.redactor}`);
|
|
1875
|
-
if (!(s instanceof HTMLElement && n))
|
|
1876
|
-
return;
|
|
1811
|
+
if (!(s instanceof HTMLElement && n)) return;
|
|
1877
1812
|
const r = n.getBoundingClientRect().width;
|
|
1878
|
-
if (r === 0)
|
|
1879
|
-
return void queueMicrotask(() => this.applyStylesToWrapper.bind(this)(t, e));
|
|
1813
|
+
if (r === 0) return void queueMicrotask(() => this.applyStylesToWrapper.bind(this)(t, e));
|
|
1880
1814
|
const o = (r - this.maxWidthForContent(t)) / 2, a = Math.max(0, Math.min(o, i)), d = 2 * a + "px", l = `${a}px`;
|
|
1881
1815
|
this.isDirectionInverted ? (t.style.paddingLeft = "0px", t.style.paddingRight = d) : (t.style.paddingLeft = d, t.style.paddingRight = "0px");
|
|
1882
|
-
const
|
|
1883
|
-
|
|
1816
|
+
const h = t.querySelector(`.${this.CSS.highlightIndent}`);
|
|
1817
|
+
h instanceof HTMLElement && (this.isDirectionInverted ? (h.style.width = l, h.style.left = "100%", h.style.right = "") : (h.style.width = l, h.style.left = "", h.style.right = "100%"));
|
|
1884
1818
|
}
|
|
1885
1819
|
onFocus(t) {
|
|
1886
1820
|
t.target instanceof HTMLElement && this.wrapper.contains(t.target) && this.wrapper.setAttribute(b.DATA_FOCUSED, "");
|
|
@@ -1906,8 +1840,7 @@ const bt = { orientation: !1 }, j = class b {
|
|
|
1906
1840
|
getBlockForWrapper(t) {
|
|
1907
1841
|
let e = t;
|
|
1908
1842
|
for (; !e.classList.contains(this.EditorCSS.block); ) {
|
|
1909
|
-
if (!e.parentElement || e instanceof HTMLHtmlElement)
|
|
1910
|
-
return null;
|
|
1843
|
+
if (!e.parentElement || e instanceof HTMLHtmlElement) return null;
|
|
1911
1844
|
e = e.parentElement;
|
|
1912
1845
|
}
|
|
1913
1846
|
return e;
|
|
@@ -1925,23 +1858,22 @@ const bt = { orientation: !1 }, j = class b {
|
|
|
1925
1858
|
return new DOMParser().parseFromString(t, "text/html").body.firstChild;
|
|
1926
1859
|
}
|
|
1927
1860
|
changeConfigBasedOnVersionIfNeeded() {
|
|
1928
|
-
this.config.version && this.config.version < "2.27" && this.config.orientation === "vertical" && (this.config.orientation = "horizontal",
|
|
1861
|
+
this.config.version && this.config.version < "2.27" && this.config.orientation === "vertical" && (this.config.orientation = "horizontal", wt.orientation, wt.orientation = !0);
|
|
1929
1862
|
}
|
|
1930
1863
|
maxWidthForContent(t) {
|
|
1931
1864
|
const e = t.querySelector(`.${this.EditorCSS.content}`);
|
|
1932
1865
|
if (e instanceof HTMLElement) {
|
|
1933
1866
|
const { maxWidth: i } = window.getComputedStyle(e);
|
|
1934
|
-
if (i)
|
|
1935
|
-
return this.cachedMaxWidthForContent = parseInt(i), this.cachedMaxWidthForContent;
|
|
1867
|
+
if (i) return this.cachedMaxWidthForContent = parseInt(i), this.cachedMaxWidthForContent;
|
|
1936
1868
|
}
|
|
1937
1869
|
return this.cachedMaxWidthForContent !== null || (this.cachedMaxWidthForContent = 650), this.cachedMaxWidthForContent;
|
|
1938
1870
|
}
|
|
1939
1871
|
};
|
|
1940
|
-
|
|
1941
|
-
let
|
|
1942
|
-
class
|
|
1872
|
+
b.DATA_WRAPPER_NAME = "data-block-indent-wrapper", b.DATA_FOCUSED = "data-focused", b.DATA_INDENT_LEVEL = "data-indent-level";
|
|
1873
|
+
let st = b;
|
|
1874
|
+
class W {
|
|
1943
1875
|
static get toolboxIcon() {
|
|
1944
|
-
return
|
|
1876
|
+
return Ct;
|
|
1945
1877
|
}
|
|
1946
1878
|
static get CSS() {
|
|
1947
1879
|
return "cdx-marker";
|
|
@@ -1956,14 +1888,13 @@ class P {
|
|
|
1956
1888
|
return this.button = document.createElement("button"), this.button.setAttribute("type", "button"), this.button.classList.add(this.iconClasses.base), this.button.innerHTML = this.toolboxIcon, this.button;
|
|
1957
1889
|
}
|
|
1958
1890
|
surround(t) {
|
|
1959
|
-
if (!t)
|
|
1960
|
-
|
|
1961
|
-
let e = this.api.selection.findParentTag(this.tag, P.CSS);
|
|
1891
|
+
if (!t) return;
|
|
1892
|
+
let e = this.api.selection.findParentTag(this.tag, W.CSS);
|
|
1962
1893
|
e ? this.unwrap(e) : this.wrap(t);
|
|
1963
1894
|
}
|
|
1964
1895
|
wrap(t) {
|
|
1965
1896
|
let e = document.createElement(this.tag);
|
|
1966
|
-
e.classList.add(
|
|
1897
|
+
e.classList.add(W.CSS), e.appendChild(t.extractContents()), t.insertNode(e), this.api.selection.expandToTag(e);
|
|
1967
1898
|
}
|
|
1968
1899
|
unwrap(t) {
|
|
1969
1900
|
var n;
|
|
@@ -1973,17 +1904,17 @@ class P {
|
|
|
1973
1904
|
}
|
|
1974
1905
|
checkState() {
|
|
1975
1906
|
var e;
|
|
1976
|
-
const t = this.api.selection.findParentTag(this.tag,
|
|
1907
|
+
const t = this.api.selection.findParentTag(this.tag, W.CSS);
|
|
1977
1908
|
(e = this.button) == null || e.classList.toggle(this.iconClasses.active, !!t);
|
|
1978
1909
|
}
|
|
1979
1910
|
get toolboxIcon() {
|
|
1980
|
-
return
|
|
1911
|
+
return Ct;
|
|
1981
1912
|
}
|
|
1982
1913
|
static get sanitize() {
|
|
1983
|
-
return { mark: { class:
|
|
1914
|
+
return { mark: { class: W.CSS } };
|
|
1984
1915
|
}
|
|
1985
1916
|
}
|
|
1986
|
-
class
|
|
1917
|
+
class ce {
|
|
1987
1918
|
constructor(t) {
|
|
1988
1919
|
this.tag = "SPAN", this.class = "cdx-text-color", this.defaultColor = "#2644FF", this.lastRange = null, this.colors = ["#182a4e", "#0055cc", "#1f6a83", "#206e4e", "#e56910", "#ae2e24", "#5e4db2", "#758195", "#1e7afd", "#2998bd", "#23a06b", "#fea363", "#c9372c", "#8270db"], this.columns = 7;
|
|
1989
1920
|
const { api: e, config: i } = t;
|
|
@@ -2005,8 +1936,7 @@ class Ce {
|
|
|
2005
1936
|
this.lastRange = t;
|
|
2006
1937
|
}
|
|
2007
1938
|
wrapAndColor(t, e) {
|
|
2008
|
-
if (!t)
|
|
2009
|
-
return;
|
|
1939
|
+
if (!t) return;
|
|
2010
1940
|
const i = t.extractContents(), s = document.createElement(this.tag);
|
|
2011
1941
|
s.classList.add(this.class), s.appendChild(i), s.style.color = e, s.innerHTML = s.textContent || "", t.insertNode(s), this.api.selection.expandToTag(s);
|
|
2012
1942
|
}
|
|
@@ -2023,11 +1953,11 @@ class Ce {
|
|
|
2023
1953
|
return { span: { style: { color: !0 } } };
|
|
2024
1954
|
}
|
|
2025
1955
|
}
|
|
2026
|
-
class
|
|
1956
|
+
class pe extends ce {
|
|
2027
1957
|
static get sanitize() {
|
|
2028
1958
|
}
|
|
2029
1959
|
}
|
|
2030
|
-
const
|
|
1960
|
+
const z = class z {
|
|
2031
1961
|
constructor(t) {
|
|
2032
1962
|
this.tag = "U", this.api = t.api, this.iconClasses = { base: this.api.styles.inlineToolButton, active: this.api.styles.inlineToolButtonActive };
|
|
2033
1963
|
}
|
|
@@ -2038,41 +1968,38 @@ const Dt = class F {
|
|
|
2038
1968
|
return this.button = document.createElement("button"), this.button.type = "button", this.button.classList.add(this.iconClasses.base), this.button.innerHTML = this.toolboxIcon, this.button;
|
|
2039
1969
|
}
|
|
2040
1970
|
surround(t) {
|
|
2041
|
-
if (!t)
|
|
2042
|
-
|
|
2043
|
-
const e = this.api.selection.findParentTag(this.tag, F.CSS);
|
|
1971
|
+
if (!t) return;
|
|
1972
|
+
const e = this.api.selection.findParentTag(this.tag, z.CSS);
|
|
2044
1973
|
e ? this.unwrap(e) : this.wrap(t);
|
|
2045
1974
|
}
|
|
2046
1975
|
wrap(t) {
|
|
2047
1976
|
const e = document.createElement(this.tag);
|
|
2048
|
-
e.classList.add(
|
|
1977
|
+
e.classList.add(z.CSS), e.appendChild(t.extractContents()), t.insertNode(e), this.api.selection.expandToTag(e);
|
|
2049
1978
|
}
|
|
2050
1979
|
unwrap(t) {
|
|
2051
1980
|
var n;
|
|
2052
1981
|
this.api.selection.expandToTag(t);
|
|
2053
1982
|
const e = window.getSelection();
|
|
2054
|
-
if (!e)
|
|
2055
|
-
return;
|
|
1983
|
+
if (!e) return;
|
|
2056
1984
|
const i = e.getRangeAt(0);
|
|
2057
|
-
if (!i)
|
|
2058
|
-
return;
|
|
1985
|
+
if (!i) return;
|
|
2059
1986
|
const s = i.extractContents();
|
|
2060
1987
|
s && ((n = t.parentNode) == null || n.removeChild(t), i.insertNode(s), e.removeAllRanges(), e.addRange(i));
|
|
2061
1988
|
}
|
|
2062
1989
|
checkState() {
|
|
2063
1990
|
var e;
|
|
2064
|
-
const t = this.api.selection.findParentTag(this.tag,
|
|
1991
|
+
const t = this.api.selection.findParentTag(this.tag, z.CSS);
|
|
2065
1992
|
return (e = this.button) == null || e.classList.toggle(this.iconClasses.active, !!t), !!t;
|
|
2066
1993
|
}
|
|
2067
1994
|
get toolboxIcon() {
|
|
2068
1995
|
return '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 7.5V11.5C9 12.2956 9.31607 13.0587 9.87868 13.6213C10.4413 14.1839 11.2044 14.5 12 14.5C12.7956 14.5 13.5587 14.1839 14.1213 13.6213C14.6839 13.0587 15 12.2956 15 11.5V7.5"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7.71429 18H16.2857"/></svg>';
|
|
2069
1996
|
}
|
|
2070
1997
|
static get sanitize() {
|
|
2071
|
-
return { u: { class:
|
|
1998
|
+
return { u: { class: z.CSS } };
|
|
2072
1999
|
}
|
|
2073
2000
|
};
|
|
2074
|
-
|
|
2075
|
-
let
|
|
2001
|
+
z.isInline = !0;
|
|
2002
|
+
let nt = z;
|
|
2076
2003
|
class $ {
|
|
2077
2004
|
constructor({ api: t }) {
|
|
2078
2005
|
this.tag = "CODE", this.api = t, this.button = null, this.iconClasses = { base: this.api.styles.inlineToolButton, active: this.api.styles.inlineToolButtonActive };
|
|
@@ -2088,8 +2015,7 @@ class $ {
|
|
|
2088
2015
|
}
|
|
2089
2016
|
surround(t) {
|
|
2090
2017
|
var i;
|
|
2091
|
-
if (!t)
|
|
2092
|
-
return;
|
|
2018
|
+
if (!t) return;
|
|
2093
2019
|
let e = this.api.selection.findParentTag(this.tag, $.CSS);
|
|
2094
2020
|
e ? this.unwrap(e) : (i = t.commonAncestorContainer.parentElement) != null && i.querySelector(this.tag) || this.wrap(t);
|
|
2095
2021
|
}
|
|
@@ -2101,8 +2027,7 @@ class $ {
|
|
|
2101
2027
|
var n;
|
|
2102
2028
|
this.api.selection.expandToTag(t);
|
|
2103
2029
|
const e = window.getSelection();
|
|
2104
|
-
if (!e)
|
|
2105
|
-
return;
|
|
2030
|
+
if (!e) return;
|
|
2106
2031
|
const i = e.getRangeAt(0), s = i.extractContents();
|
|
2107
2032
|
(n = t.parentNode) == null || n.removeChild(t), i.insertNode(s), e.removeAllRanges(), e.addRange(i);
|
|
2108
2033
|
}
|
|
@@ -2117,30 +2042,29 @@ class $ {
|
|
|
2117
2042
|
return { code: { class: $.CSS } };
|
|
2118
2043
|
}
|
|
2119
2044
|
}
|
|
2120
|
-
function
|
|
2121
|
-
const i = document.createElement(
|
|
2045
|
+
function T(c, t, e = {}) {
|
|
2046
|
+
const i = document.createElement(c);
|
|
2122
2047
|
Array.isArray(t) ? i.classList.add(...t) : t && i.classList.add(t);
|
|
2123
|
-
for (const s in e)
|
|
2124
|
-
Object.prototype.hasOwnProperty.call(e, s) && i.setAttribute(s, e[s]);
|
|
2048
|
+
for (const s in e) Object.prototype.hasOwnProperty.call(e, s) && i.setAttribute(s, e[s]);
|
|
2125
2049
|
return i;
|
|
2126
2050
|
}
|
|
2127
|
-
function
|
|
2128
|
-
const t =
|
|
2051
|
+
function bt(c) {
|
|
2052
|
+
const t = c.getBoundingClientRect();
|
|
2129
2053
|
return { y1: Math.floor(t.top + window.pageYOffset), x1: Math.floor(t.left + window.pageXOffset), x2: Math.floor(t.right + window.pageXOffset), y2: Math.floor(t.bottom + window.pageYOffset) };
|
|
2130
2054
|
}
|
|
2131
|
-
function
|
|
2132
|
-
const e =
|
|
2055
|
+
function J(c, t) {
|
|
2056
|
+
const e = bt(c), i = bt(t);
|
|
2133
2057
|
return { fromTopBorder: i.y1 - e.y1, fromLeftBorder: i.x1 - e.x1, fromRightBorder: e.x2 - i.x2, fromBottomBorder: e.y2 - i.y2 };
|
|
2134
2058
|
}
|
|
2135
|
-
function
|
|
2059
|
+
function yt(c, t) {
|
|
2136
2060
|
var e;
|
|
2137
|
-
return (e = t == null ? void 0 : t.parentNode) == null ? void 0 : e.insertBefore(
|
|
2061
|
+
return (e = t == null ? void 0 : t.parentNode) == null ? void 0 : e.insertBefore(c, t);
|
|
2138
2062
|
}
|
|
2139
|
-
function
|
|
2063
|
+
function St(c, t = !0) {
|
|
2140
2064
|
const e = document.createRange(), i = window.getSelection();
|
|
2141
|
-
e.selectNodeContents(
|
|
2065
|
+
e.selectNodeContents(c), e.collapse(t), i == null || i.removeAllRanges(), i == null || i.addRange(e);
|
|
2142
2066
|
}
|
|
2143
|
-
class
|
|
2067
|
+
class y {
|
|
2144
2068
|
constructor({ items: t }) {
|
|
2145
2069
|
this.items = t, this.wrapper = void 0, this.itemEls = [];
|
|
2146
2070
|
}
|
|
@@ -2148,51 +2072,49 @@ class C {
|
|
|
2148
2072
|
return { popover: "tc-popover", popoverOpened: "tc-popover--opened", item: "tc-popover__item", itemHidden: "tc-popover__item--hidden", itemConfirmState: "tc-popover__item--confirm", itemIcon: "tc-popover__item-icon", itemLabel: "tc-popover__item-label" };
|
|
2149
2073
|
}
|
|
2150
2074
|
render() {
|
|
2151
|
-
return this.wrapper =
|
|
2075
|
+
return this.wrapper = T("div", y.CSS.popover), this.items.forEach((t, e) => {
|
|
2152
2076
|
var r;
|
|
2153
|
-
const i =
|
|
2077
|
+
const i = T("div", y.CSS.item), s = T("div", y.CSS.itemIcon, { innerHTML: t.icon }), n = T("div", y.CSS.itemLabel, { textContent: t.label });
|
|
2154
2078
|
i.dataset.index = e + "", i.appendChild(s), i.appendChild(n), (r = this.wrapper) == null || r.appendChild(i), this.itemEls.push(i);
|
|
2155
2079
|
}), this.wrapper.addEventListener("click", (t) => {
|
|
2156
2080
|
this.popoverClicked(t);
|
|
2157
2081
|
}), this.wrapper;
|
|
2158
2082
|
}
|
|
2159
2083
|
popoverClicked(t) {
|
|
2160
|
-
const e = t.target.closest(`.${
|
|
2161
|
-
if (!e)
|
|
2162
|
-
return;
|
|
2084
|
+
const e = t.target.closest(`.${y.CSS.item}`);
|
|
2085
|
+
if (!e) return;
|
|
2163
2086
|
const i = e.dataset.index;
|
|
2164
|
-
if (!i)
|
|
2165
|
-
return;
|
|
2087
|
+
if (!i) return;
|
|
2166
2088
|
const s = this.items[parseInt(i)];
|
|
2167
2089
|
!s.confirmationRequired || this.hasConfirmationState(e) ? s.onClick() : this.setConfirmationState(e);
|
|
2168
2090
|
}
|
|
2169
2091
|
setConfirmationState(t) {
|
|
2170
|
-
t.classList.add(
|
|
2092
|
+
t.classList.add(y.CSS.itemConfirmState);
|
|
2171
2093
|
}
|
|
2172
2094
|
clearConfirmationState(t) {
|
|
2173
|
-
t.classList.remove(
|
|
2095
|
+
t.classList.remove(y.CSS.itemConfirmState);
|
|
2174
2096
|
}
|
|
2175
2097
|
hasConfirmationState(t) {
|
|
2176
|
-
return t.classList.contains(
|
|
2098
|
+
return t.classList.contains(y.CSS.itemConfirmState);
|
|
2177
2099
|
}
|
|
2178
2100
|
get opened() {
|
|
2179
2101
|
var t;
|
|
2180
|
-
return ((t = this.wrapper) == null ? void 0 : t.classList.contains(
|
|
2102
|
+
return ((t = this.wrapper) == null ? void 0 : t.classList.contains(y.CSS.popoverOpened)) || !1;
|
|
2181
2103
|
}
|
|
2182
2104
|
open() {
|
|
2183
2105
|
var t;
|
|
2184
2106
|
this.items.forEach((e, i) => {
|
|
2185
|
-
typeof e.hideIf == "function" && this.itemEls[i].classList.toggle(
|
|
2186
|
-
}), (t = this.wrapper) == null || t.classList.add(
|
|
2107
|
+
typeof e.hideIf == "function" && this.itemEls[i].classList.toggle(y.CSS.itemHidden, e.hideIf());
|
|
2108
|
+
}), (t = this.wrapper) == null || t.classList.add(y.CSS.popoverOpened);
|
|
2187
2109
|
}
|
|
2188
2110
|
close() {
|
|
2189
2111
|
var t;
|
|
2190
|
-
(t = this.wrapper) == null || t.classList.remove(
|
|
2112
|
+
(t = this.wrapper) == null || t.classList.remove(y.CSS.popoverOpened), this.itemEls.forEach((e) => {
|
|
2191
2113
|
this.clearConfirmationState(e);
|
|
2192
2114
|
});
|
|
2193
2115
|
}
|
|
2194
2116
|
}
|
|
2195
|
-
class
|
|
2117
|
+
class O {
|
|
2196
2118
|
constructor({ items: t, onOpen: e, onClose: i, cssModifier: s = "" }) {
|
|
2197
2119
|
this.items = t, this.onOpen = e, this.onClose = i, this.cssModifier = s, this.popover = null, this.wrapper = this.createToolbox();
|
|
2198
2120
|
}
|
|
@@ -2203,19 +2125,19 @@ class A {
|
|
|
2203
2125
|
return this.wrapper;
|
|
2204
2126
|
}
|
|
2205
2127
|
createToolbox() {
|
|
2206
|
-
const t =
|
|
2128
|
+
const t = T("div", [O.CSS.toolbox, this.cssModifier ? `${O.CSS.toolbox}--${this.cssModifier}` : ""]);
|
|
2207
2129
|
t.dataset.mutationFree = "true";
|
|
2208
2130
|
const e = this.createPopover(), i = this.createToggler();
|
|
2209
2131
|
return t.appendChild(i), t.appendChild(e), t;
|
|
2210
2132
|
}
|
|
2211
2133
|
createToggler() {
|
|
2212
|
-
const t =
|
|
2134
|
+
const t = T("div", O.CSS.toggler, { innerHTML: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-width="2.6" d="M9.41 9.66H9.4"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2.6" d="M14.6 9.66H14.59"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2.6" d="M9.31 14.36H9.3"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2.6" d="M14.6 14.36H14.59"/></svg>' });
|
|
2213
2135
|
return t.addEventListener("click", () => {
|
|
2214
2136
|
this.togglerClicked();
|
|
2215
2137
|
}), t;
|
|
2216
2138
|
}
|
|
2217
2139
|
createPopover() {
|
|
2218
|
-
return this.popover = new
|
|
2140
|
+
return this.popover = new y({ items: this.items }), this.popover.render();
|
|
2219
2141
|
}
|
|
2220
2142
|
togglerClicked() {
|
|
2221
2143
|
var t, e;
|
|
@@ -2225,30 +2147,29 @@ class A {
|
|
|
2225
2147
|
const e = t();
|
|
2226
2148
|
Object.entries(e).forEach(([i, s]) => {
|
|
2227
2149
|
this.wrapper.style.setProperty(i, s);
|
|
2228
|
-
}), this.wrapper.classList.add(
|
|
2150
|
+
}), this.wrapper.classList.add(O.CSS.toolboxShowed);
|
|
2229
2151
|
}
|
|
2230
2152
|
hide() {
|
|
2231
2153
|
var t;
|
|
2232
|
-
(t = this.popover) == null || t.close(), this.wrapper.classList.remove(
|
|
2154
|
+
(t = this.popover) == null || t.close(), this.wrapper.classList.remove(O.CSS.toolboxShowed);
|
|
2233
2155
|
}
|
|
2234
2156
|
}
|
|
2235
|
-
const
|
|
2236
|
-
class
|
|
2157
|
+
const Lt = "tc-wrap", ue = "tc-wrap--readonly", xt = "tc-table", D = "tc-row", Tt = "tc-table--heading", Q = "tc-row--selected", N = "tc-cell", tt = "tc-cell--selected", et = "tc-add-row", Et = "tc-add-row--disabled", it = "tc-add-column", Mt = "tc-add-column--disabled";
|
|
2158
|
+
class ge {
|
|
2237
2159
|
constructor(t, e, i, s) {
|
|
2238
2160
|
this.minCellWidhth = 50, this.defaultCellWidth = 100, this.handleDocumentMousedown = (n) => {
|
|
2239
2161
|
this.wrapper.contains(n.target) && n.target.classList.contains("cell-resizable") && (n.preventDefault(), this.isDragging = !0, this.table.classList.add("table-resizing"), document.addEventListener("mousemove", this.handleDocumentMousemove), document.addEventListener("mouseup", this.handleDocumentMouseup), this.draggingColumn = this.hoveredColumn, this.startWidth = this.colWidthArr[this.draggingColumn - 1], this.mouseStartX = n.clientX);
|
|
2240
2162
|
}, this.handleDocumentMousemove = (n) => {
|
|
2241
|
-
if (!this.isDragging)
|
|
2242
|
-
return;
|
|
2163
|
+
if (!this.isDragging) return;
|
|
2243
2164
|
const r = n.clientX - this.mouseStartX, o = Math.max(this.startWidth + r, this.minCellWidhth);
|
|
2244
2165
|
this.colWidthArr[this.draggingColumn - 1] = o, this.updateColWidth();
|
|
2245
2166
|
}, this.handleDocumentMouseup = () => {
|
|
2246
2167
|
this.updateToolboxesPosition(), this.isDragging = !1, this.table.classList.remove("table-resizing"), document.removeEventListener("mousemove", this.handleDocumentMousemove), document.removeEventListener("mouseup", this.handleDocumentMouseup);
|
|
2247
2168
|
}, this.readOnly = t, this.api = e, this.data = i, this.config = s, this.wrapper = null, this.table = null, this.hoveredCell = null, this.isDragging = !1, this.draggingColumn = 0, this.startWidth = 0, this.mouseStartX = 0, this.colWidthArr = [], this.focusedCell = { row: 0, col: 0 }, this.toolboxColumn = this.createColumnToolbox(), this.toolboxRow = this.createRowToolbox(), this.createTableWrapper(), this.hoveredRow = 0, this.hoveredColumn = 0, this.selectedRow = 0, this.selectedColumn = 0, this.tunes = { withHeadings: !1 }, this.resize(), this.data.colWidth.length > 0 && (this.colWidthArr = this.data.colWidth), this.updateColWidth(), this.fill(), this.focusedCell = { row: 0, column: 0 }, this.documentClicked = (n) => {
|
|
2248
2169
|
let r = n.target;
|
|
2249
|
-
const o = r.closest(`.${
|
|
2170
|
+
const o = r.closest(`.${xt}`) !== null, a = r.closest(`.${Lt}`) === null;
|
|
2250
2171
|
(o || a) && this.hideToolboxes();
|
|
2251
|
-
const d = r.closest(`.${
|
|
2172
|
+
const d = r.closest(`.${et}`), l = r.closest(`.${it}`);
|
|
2252
2173
|
d && d.parentNode === this.wrapper ? (this.addRow(void 0, !0), this.hideToolboxes()) : l && l.parentNode === this.wrapper && (this.addColumn(void 0, !0), this.hideToolboxes());
|
|
2253
2174
|
}, this.readOnly || this.bindEvents();
|
|
2254
2175
|
}
|
|
@@ -2256,28 +2177,27 @@ class be {
|
|
|
2256
2177
|
return this.wrapper;
|
|
2257
2178
|
}
|
|
2258
2179
|
bindEvents() {
|
|
2259
|
-
document.addEventListener("click", this.documentClicked), document.addEventListener("mousedown", (t) => this.handleDocumentMousedown(t)), this.table.addEventListener("mousemove", function(t, e) {
|
|
2180
|
+
document.addEventListener("click", this.documentClicked), document.addEventListener("mousedown", (t) => this.handleDocumentMousedown(t)), this.table.addEventListener("mousemove", /* @__PURE__ */ function(t, e) {
|
|
2260
2181
|
let i = 0;
|
|
2261
2182
|
return function(...s) {
|
|
2262
2183
|
const n = (/* @__PURE__ */ new Date()).getTime();
|
|
2263
|
-
if (!(n - i < t))
|
|
2264
|
-
return i = n, e(...s);
|
|
2184
|
+
if (!(n - i < t)) return i = n, e(...s);
|
|
2265
2185
|
};
|
|
2266
2186
|
}(150, (t) => this.onMouseMoveInTable(t)), { passive: !0 }), this.table.onkeypress = (t) => this.onKeyPressListener(t), this.table.addEventListener("keydown", (t) => this.onKeyDownListener(t)), this.table.addEventListener("focusin", (t) => this.focusInTableListener(t));
|
|
2267
2187
|
}
|
|
2268
2188
|
getCellInCol(t) {
|
|
2269
2189
|
const e = [];
|
|
2270
|
-
return this.table.querySelectorAll(`.${
|
|
2271
|
-
const s = i.querySelector(`.${
|
|
2190
|
+
return this.table.querySelectorAll(`.${D}`).forEach((i) => {
|
|
2191
|
+
const s = i.querySelector(`.${N}:nth-child(${t})`);
|
|
2272
2192
|
s && e.push(s);
|
|
2273
2193
|
}), e;
|
|
2274
2194
|
}
|
|
2275
2195
|
createColumnToolbox() {
|
|
2276
|
-
return new
|
|
2196
|
+
return new O({ api: this.api, cssModifier: "column", items: [{ label: this.api.i18n.t("Add column to left"), icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.9167 14.9167L11.5833 18.25M11.5833 18.25L8.25 14.9167M11.5833 18.25L11.5833 10.0833C11.5833 9.19928 11.9345 8.35143 12.5596 7.72631C13.1848 7.10119 14.0326 6.75 14.9167 6.75"/></svg>', hideIf: () => this.numberOfColumns === this.config.maxcols, onClick: () => {
|
|
2277
2197
|
this.addColumn(this.selectedColumn, !0), this.hideToolboxes(), this.updateColWidth();
|
|
2278
2198
|
} }, { label: this.api.i18n.t("Add column to right"), icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.13333 14.9167L12.4667 18.25M12.4667 18.25L15.8 14.9167M12.4667 18.25L12.4667 10.0833C12.4667 9.19928 12.1155 8.35143 11.4904 7.72631C10.8652 7.10119 10.0174 6.75 9.13333 6.75"/></svg>', hideIf: () => this.numberOfColumns === this.config.maxcols, onClick: () => {
|
|
2279
2199
|
this.addColumn(this.selectedColumn + 1, !0), this.hideToolboxes(), this.updateColWidth();
|
|
2280
|
-
} }, { label: this.api.i18n.t("Delete column"), icon:
|
|
2200
|
+
} }, { label: this.api.i18n.t("Delete column"), icon: ft, hideIf: () => this.numberOfColumns === 1, confirmationRequired: !0, onClick: () => {
|
|
2281
2201
|
this.deleteColumn(this.selectedColumn), this.hideToolboxes(), this.updateColWidth();
|
|
2282
2202
|
} }], onOpen: () => {
|
|
2283
2203
|
this.selectColumn(this.hoveredColumn), this.hideRowToolbox();
|
|
@@ -2286,11 +2206,11 @@ class be {
|
|
|
2286
2206
|
} });
|
|
2287
2207
|
}
|
|
2288
2208
|
createRowToolbox() {
|
|
2289
|
-
return new
|
|
2209
|
+
return new O({ api: this.api, cssModifier: "row", items: [{ label: this.api.i18n.t("Add row above"), icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.8833 15.8333L18.2167 12.5M18.2167 12.5L14.8833 9.16667M18.2167 12.5L10.05 12.5C9.16595 12.5 8.31811 12.8512 7.69299 13.4763C7.06787 14.1014 6.71667 14.9493 6.71667 15.8333"/></svg>', hideIf: () => this.numberOfRows === this.config.maxrows, onClick: () => {
|
|
2290
2210
|
this.addRow(this.selectedRow, !0), this.hideToolboxes();
|
|
2291
2211
|
} }, { label: this.api.i18n.t("Add row below"), icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.8833 9.16666L18.2167 12.5M18.2167 12.5L14.8833 15.8333M18.2167 12.5H10.05C9.16594 12.5 8.31809 12.1488 7.69297 11.5237C7.06785 10.8986 6.71666 10.0507 6.71666 9.16666"/></svg>', hideIf: () => this.numberOfRows === this.config.maxrows, onClick: () => {
|
|
2292
2212
|
this.addRow(this.selectedRow + 1, !0), this.hideToolboxes();
|
|
2293
|
-
} }, { label: this.api.i18n.t("Delete row"), icon:
|
|
2213
|
+
} }, { label: this.api.i18n.t("Delete row"), icon: ft, hideIf: () => this.numberOfRows === 1, confirmationRequired: !0, onClick: () => {
|
|
2294
2214
|
this.deleteRow(this.selectedRow), this.hideToolboxes();
|
|
2295
2215
|
} }], onOpen: () => {
|
|
2296
2216
|
this.selectRow(this.hoveredRow), this.hideColumnToolbox();
|
|
@@ -2302,16 +2222,16 @@ class be {
|
|
|
2302
2222
|
this.focusedCell.row !== this.numberOfRows ? (this.focusedCell.row += 1, this.focusCell()) : (this.addRow(), this.focusedCell.row += 1, this.focusCell(), this.updateToolboxesPosition(0, 0));
|
|
2303
2223
|
}
|
|
2304
2224
|
getCell(t, e) {
|
|
2305
|
-
return this.table.querySelectorAll(`.${
|
|
2225
|
+
return this.table.querySelectorAll(`.${D}:nth-child(${t}) .${N}`)[e - 1];
|
|
2306
2226
|
}
|
|
2307
2227
|
getRow(t) {
|
|
2308
|
-
return this.table.querySelector(`.${
|
|
2228
|
+
return this.table.querySelector(`.${D}:nth-child(${t})`);
|
|
2309
2229
|
}
|
|
2310
2230
|
getRowByCell(t) {
|
|
2311
2231
|
return t.parentElement;
|
|
2312
2232
|
}
|
|
2313
2233
|
getRowFirstCell(t) {
|
|
2314
|
-
return t.querySelector(`.${
|
|
2234
|
+
return t.querySelector(`.${N}:first-child`);
|
|
2315
2235
|
}
|
|
2316
2236
|
setCellContent(t, e, i) {
|
|
2317
2237
|
this.getCell(t, e).innerHTML = i;
|
|
@@ -2319,48 +2239,45 @@ class be {
|
|
|
2319
2239
|
addColumn(t = -1, e = !1) {
|
|
2320
2240
|
var n;
|
|
2321
2241
|
let i = this.numberOfColumns;
|
|
2322
|
-
if (this.config && this.config.maxcols && this.numberOfColumns >= this.config.maxcols)
|
|
2323
|
-
return;
|
|
2242
|
+
if (this.config && this.config.maxcols && this.numberOfColumns >= this.config.maxcols) return;
|
|
2324
2243
|
for (let r = 1; r <= this.numberOfRows; r++) {
|
|
2325
2244
|
let o;
|
|
2326
2245
|
const a = this.createCell();
|
|
2327
|
-
if (t > 0 && t <= i ? (o = this.getCell(r, t),
|
|
2246
|
+
if (t > 0 && t <= i ? (o = this.getCell(r, t), yt(a, o)) : o = this.getRow(r).appendChild(a), r === 1) {
|
|
2328
2247
|
const d = this.getCell(r, t > 0 ? t : i + 1);
|
|
2329
|
-
d && e &&
|
|
2248
|
+
d && e && St(d);
|
|
2330
2249
|
}
|
|
2331
2250
|
}
|
|
2332
|
-
const s = this.wrapper.querySelector(`.${
|
|
2333
|
-
(n = this.config) != null && n.maxcols && this.numberOfColumns > this.config.maxcols - 1 && s && s.classList.add(
|
|
2251
|
+
const s = this.wrapper.querySelector(`.${it}`);
|
|
2252
|
+
(n = this.config) != null && n.maxcols && this.numberOfColumns > this.config.maxcols - 1 && s && s.classList.add(Mt), this.addHeadingAttrToFirstRow(), this.colWidthArr.splice(t - 1, 0, this.defaultCellWidth);
|
|
2334
2253
|
}
|
|
2335
2254
|
addRow(t = -1, e = !1) {
|
|
2336
|
-
let i, s =
|
|
2255
|
+
let i, s = T("div", D);
|
|
2337
2256
|
this.tunes.withHeadings && this.removeHeadingAttrFromFirstRow();
|
|
2338
2257
|
let n = this.numberOfColumns;
|
|
2339
|
-
if (this.config && this.config.maxrows && this.numberOfRows >= this.config.maxrows)
|
|
2340
|
-
|
|
2341
|
-
t > 0 && t <= this.numberOfRows ? i = St(s, this.getRow(t)) : i = this.table.appendChild(s), this.fillRow(i, n), this.tunes.withHeadings && this.addHeadingAttrToFirstRow();
|
|
2258
|
+
if (this.config && this.config.maxrows && this.numberOfRows >= this.config.maxrows) return;
|
|
2259
|
+
t > 0 && t <= this.numberOfRows ? i = yt(s, this.getRow(t)) : i = this.table.appendChild(s), this.fillRow(i, n), this.tunes.withHeadings && this.addHeadingAttrToFirstRow();
|
|
2342
2260
|
const r = this.getRowFirstCell(i);
|
|
2343
|
-
r && e &&
|
|
2344
|
-
const o = this.wrapper.querySelector(`.${
|
|
2345
|
-
return this.config && this.config.maxrows && this.numberOfRows >= this.config.maxrows && o && o.classList.add(
|
|
2261
|
+
r && e && St(r);
|
|
2262
|
+
const o = this.wrapper.querySelector(`.${et}`);
|
|
2263
|
+
return this.config && this.config.maxrows && this.numberOfRows >= this.config.maxrows && o && o.classList.add(Et), i;
|
|
2346
2264
|
}
|
|
2347
2265
|
deleteColumn(t) {
|
|
2348
2266
|
for (let i = 1; i <= this.numberOfRows; i++) {
|
|
2349
2267
|
const s = this.getCell(i, t);
|
|
2350
|
-
if (!s)
|
|
2351
|
-
return;
|
|
2268
|
+
if (!s) return;
|
|
2352
2269
|
s.remove();
|
|
2353
2270
|
}
|
|
2354
|
-
const e = this.wrapper.querySelector(`.${
|
|
2355
|
-
e && e.classList.remove(
|
|
2271
|
+
const e = this.wrapper.querySelector(`.${it}`);
|
|
2272
|
+
e && e.classList.remove(Mt), this.colWidthArr.splice(t - 1, 1);
|
|
2356
2273
|
}
|
|
2357
2274
|
deleteRow(t) {
|
|
2358
2275
|
this.getRow(t).remove();
|
|
2359
|
-
const e = this.wrapper.querySelector(`.${
|
|
2360
|
-
e && e.classList.remove(
|
|
2276
|
+
const e = this.wrapper.querySelector(`.${et}`);
|
|
2277
|
+
e && e.classList.remove(Et), this.addHeadingAttrToFirstRow();
|
|
2361
2278
|
}
|
|
2362
2279
|
createTableWrapper() {
|
|
2363
|
-
this.wrapper =
|
|
2280
|
+
this.wrapper = T("div", Lt), this.table = T("div", xt), this.readOnly && this.wrapper.classList.add(ue), this.wrapper.appendChild(this.toolboxRow.element), this.wrapper.appendChild(this.toolboxColumn.element), this.wrapper.appendChild(this.table);
|
|
2364
2281
|
}
|
|
2365
2282
|
computeInitialSize() {
|
|
2366
2283
|
const t = this.data && this.data.content, e = Array.isArray(t), i = !!e && t.length, s = e ? t.length : void 0, n = i ? t[0].length : void 0, r = Number.parseInt(this.config && this.config.rows), o = Number.parseInt(this.config && this.config.cols), a = !isNaN(r) && r > 0 ? r : void 0, d = !isNaN(o) && o > 0 ? o : void 0;
|
|
@@ -2368,24 +2285,17 @@ class be {
|
|
|
2368
2285
|
}
|
|
2369
2286
|
resize() {
|
|
2370
2287
|
const { rows: t, cols: e } = this.computeInitialSize();
|
|
2371
|
-
for (let i = 0; i < t; i++)
|
|
2372
|
-
|
|
2373
|
-
for (let i = 0; i < e; i++)
|
|
2374
|
-
this.addColumn();
|
|
2288
|
+
for (let i = 0; i < t; i++) this.addRow();
|
|
2289
|
+
for (let i = 0; i < e; i++) this.addColumn();
|
|
2375
2290
|
}
|
|
2376
2291
|
updateColWidth() {
|
|
2377
2292
|
let t = "";
|
|
2378
|
-
if (this.colWidthArr && this.colWidthArr.length > 0)
|
|
2379
|
-
for (let e = 0; e < this.colWidthArr.length; e++)
|
|
2380
|
-
t += " " + this.colWidthArr[e] + "px";
|
|
2293
|
+
if (this.colWidthArr && this.colWidthArr.length > 0) for (let e = 0; e < this.colWidthArr.length; e++) t += " " + this.colWidthArr[e] + "px";
|
|
2381
2294
|
t && this.wrapper.style.setProperty("--col-width", t);
|
|
2382
2295
|
}
|
|
2383
2296
|
fill() {
|
|
2384
2297
|
const t = this.data;
|
|
2385
|
-
if (t && t.content)
|
|
2386
|
-
for (let e = 0; e < t.content.length; e++)
|
|
2387
|
-
for (let i = 0; i < t.content[e].length; i++)
|
|
2388
|
-
this.setCellContent(e + 1, i + 1, t.content[e][i]);
|
|
2298
|
+
if (t && t.content) for (let e = 0; e < t.content.length; e++) for (let i = 0; i < t.content[e].length; i++) this.setCellContent(e + 1, i + 1, t.content[e][i]);
|
|
2389
2299
|
}
|
|
2390
2300
|
fillRow(t, e) {
|
|
2391
2301
|
for (let i = 1; i <= e; i++) {
|
|
@@ -2394,13 +2304,13 @@ class be {
|
|
|
2394
2304
|
}
|
|
2395
2305
|
}
|
|
2396
2306
|
createCell() {
|
|
2397
|
-
return
|
|
2307
|
+
return T("div", N, { contentEditable: !this.readOnly });
|
|
2398
2308
|
}
|
|
2399
2309
|
get numberOfRows() {
|
|
2400
2310
|
return this.table.childElementCount;
|
|
2401
2311
|
}
|
|
2402
2312
|
get numberOfColumns() {
|
|
2403
|
-
return this.numberOfRows ? this.table.querySelectorAll(`.${
|
|
2313
|
+
return this.numberOfRows ? this.table.querySelectorAll(`.${D}:first-child .${N}`).length : 0;
|
|
2404
2314
|
}
|
|
2405
2315
|
get isColumnMenuShowing() {
|
|
2406
2316
|
return this.selectedColumn !== 0;
|
|
@@ -2417,8 +2327,7 @@ class be {
|
|
|
2417
2327
|
}
|
|
2418
2328
|
onKeyPressListener(t) {
|
|
2419
2329
|
if (t.key === "Enter") {
|
|
2420
|
-
if (t.shiftKey)
|
|
2421
|
-
return !0;
|
|
2330
|
+
if (t.shiftKey) return !0;
|
|
2422
2331
|
this.moveCursorToNextRow();
|
|
2423
2332
|
}
|
|
2424
2333
|
return t.key !== "Enter";
|
|
@@ -2428,7 +2337,7 @@ class be {
|
|
|
2428
2337
|
}
|
|
2429
2338
|
focusInTableListener(t) {
|
|
2430
2339
|
const e = t.target, i = this.getRowByCell(e);
|
|
2431
|
-
i && (this.focusedCell = { row: Array.from(this.table.querySelectorAll(`.${
|
|
2340
|
+
i && (this.focusedCell = { row: Array.from(this.table.querySelectorAll(`.${D}`)).indexOf(i) + 1, column: Array.from(i.querySelectorAll(`.${N}`)).indexOf(e) + 1 });
|
|
2432
2341
|
}
|
|
2433
2342
|
hideToolboxes() {
|
|
2434
2343
|
this.hideRowToolbox(), this.hideColumnToolbox(), this.updateToolboxesPosition();
|
|
@@ -2448,12 +2357,12 @@ class be {
|
|
|
2448
2357
|
}
|
|
2449
2358
|
updateToolboxesPosition(t = this.hoveredRow, e = this.hoveredColumn) {
|
|
2450
2359
|
this.isColumnMenuShowing || e > 0 && e <= this.numberOfColumns && this.toolboxColumn.show(() => ({ left: `calc((100% - var(--cell-size)) / (${this.numberOfColumns} * 2) * (1 + (${e} - 1) * 2))` })), this.isRowMenuShowing || t > 0 && t <= this.numberOfRows && this.toolboxRow.show(() => {
|
|
2451
|
-
const i = this.getRow(t), { fromTopBorder: s } =
|
|
2360
|
+
const i = this.getRow(t), { fromTopBorder: s } = J(this.table, i), { height: n } = i.getBoundingClientRect();
|
|
2452
2361
|
return { top: `${Math.ceil(s + n / 2)}px` };
|
|
2453
2362
|
});
|
|
2454
2363
|
}
|
|
2455
2364
|
setHeadingsSetting(t) {
|
|
2456
|
-
this.tunes.withHeadings = t, t ? (this.table.classList.add(
|
|
2365
|
+
this.tunes.withHeadings = t, t ? (this.table.classList.add(Tt), this.addHeadingAttrToFirstRow()) : (this.table.classList.remove(Tt), this.removeHeadingAttrFromFirstRow());
|
|
2457
2366
|
}
|
|
2458
2367
|
addHeadingAttrToFirstRow() {
|
|
2459
2368
|
for (let t = 1; t <= this.numberOfColumns; t++) {
|
|
@@ -2469,60 +2378,56 @@ class be {
|
|
|
2469
2378
|
}
|
|
2470
2379
|
selectRow(t) {
|
|
2471
2380
|
const e = this.getRow(t);
|
|
2472
|
-
e && (this.selectedRow = t, e.classList.add(
|
|
2381
|
+
e && (this.selectedRow = t, e.classList.add(Q));
|
|
2473
2382
|
}
|
|
2474
2383
|
unselectRow() {
|
|
2475
|
-
if (this.selectedRow <= 0)
|
|
2476
|
-
|
|
2477
|
-
|
|
2478
|
-
t && t.classList.remove(et), this.selectedRow = 0;
|
|
2384
|
+
if (this.selectedRow <= 0) return;
|
|
2385
|
+
const t = this.table.querySelector(`.${Q}`);
|
|
2386
|
+
t && t.classList.remove(Q), this.selectedRow = 0;
|
|
2479
2387
|
}
|
|
2480
2388
|
selectColumn(t) {
|
|
2481
2389
|
for (let e = 1; e <= this.numberOfRows; e++) {
|
|
2482
2390
|
const i = this.getCell(e, t);
|
|
2483
|
-
i && i.classList.add(
|
|
2391
|
+
i && i.classList.add(tt);
|
|
2484
2392
|
}
|
|
2485
2393
|
this.selectedColumn = t;
|
|
2486
2394
|
}
|
|
2487
2395
|
unselectColumn() {
|
|
2488
|
-
if (this.selectedColumn <= 0)
|
|
2489
|
-
|
|
2490
|
-
let t = this.table.querySelectorAll(`.${it}`);
|
|
2396
|
+
if (this.selectedColumn <= 0) return;
|
|
2397
|
+
let t = this.table.querySelectorAll(`.${tt}`);
|
|
2491
2398
|
Array.from(t).forEach((e) => {
|
|
2492
|
-
e.classList.remove(
|
|
2399
|
+
e.classList.remove(tt);
|
|
2493
2400
|
}), this.selectedColumn = 0;
|
|
2494
2401
|
}
|
|
2495
2402
|
getHoveredCell(t) {
|
|
2496
2403
|
let e = this.hoveredRow, i = this.hoveredColumn;
|
|
2497
|
-
const { width: s, height: n, x: r, y: o } = function(
|
|
2498
|
-
const g =
|
|
2499
|
-
return { width:
|
|
2404
|
+
const { width: s, height: n, x: r, y: o } = function(p, u) {
|
|
2405
|
+
const g = p.getBoundingClientRect(), { width: m, height: f, x: v, y: L } = g, { clientX: w, clientY: _ } = u;
|
|
2406
|
+
return { width: m, height: f, x: w - v, y: _ - L };
|
|
2500
2407
|
}(this.table, t);
|
|
2501
2408
|
if (r >= 0) {
|
|
2502
|
-
const
|
|
2503
|
-
i = this.binSearch(this.numberOfColumns, (g) => this.getCell(1, g),
|
|
2409
|
+
const p = ({ fromLeftBorder: g }) => r < g, u = ({ fromRightBorder: g }) => r > s - g;
|
|
2410
|
+
i = this.binSearch(this.numberOfColumns, (g) => this.getCell(1, g), p, u);
|
|
2504
2411
|
}
|
|
2505
2412
|
if (o >= 0) {
|
|
2506
|
-
const
|
|
2507
|
-
e = this.binSearch(this.numberOfRows, (g) => this.getCell(g, 1),
|
|
2413
|
+
const p = ({ fromTopBorder: g }) => o < g, u = ({ fromBottomBorder: g }) => o > n - g;
|
|
2414
|
+
e = this.binSearch(this.numberOfRows, (g) => this.getCell(g, 1), p, u);
|
|
2508
2415
|
}
|
|
2509
|
-
const a = e || this.hoveredRow, d = i || this.hoveredColumn, { deltaXCell: l, deltaYCell:
|
|
2510
|
-
return { row: a, column: d, deltaXCell: l, deltaYCell:
|
|
2416
|
+
const a = e || this.hoveredRow, d = i || this.hoveredColumn, { deltaXCell: l, deltaYCell: h } = this.getMousePositionRelateToCell(a, d, r, o);
|
|
2417
|
+
return { row: a, column: d, deltaXCell: l, deltaYCell: h };
|
|
2511
2418
|
}
|
|
2512
2419
|
getMousePositionRelateToCell(t, e, i, s) {
|
|
2513
|
-
const n = this.getCell(t, e), { fromTopBorder: r, fromLeftBorder: o } =
|
|
2420
|
+
const n = this.getCell(t, e), { fromTopBorder: r, fromLeftBorder: o } = J(this.table, n);
|
|
2514
2421
|
return { deltaXCell: i - o, deltaYCell: s - r };
|
|
2515
2422
|
}
|
|
2516
2423
|
binSearch(t, e, i, s) {
|
|
2517
2424
|
let n, r = 0, o = t + 1, a = 0;
|
|
2518
2425
|
for (; r < o - 1 && a < 10; ) {
|
|
2519
2426
|
n = Math.ceil((r + o) / 2);
|
|
2520
|
-
const d = e(n), l =
|
|
2521
|
-
if (i(l))
|
|
2522
|
-
o = n;
|
|
2427
|
+
const d = e(n), l = J(this.table, d);
|
|
2428
|
+
if (i(l)) o = n;
|
|
2523
2429
|
else {
|
|
2524
|
-
if (!s(l))
|
|
2525
|
-
break;
|
|
2430
|
+
if (!s(l)) break;
|
|
2526
2431
|
r = n;
|
|
2527
2432
|
}
|
|
2528
2433
|
a++;
|
|
@@ -2532,7 +2437,7 @@ class be {
|
|
|
2532
2437
|
getData() {
|
|
2533
2438
|
const t = [];
|
|
2534
2439
|
for (let e = 1; e <= this.numberOfRows; e++) {
|
|
2535
|
-
const i = this.table.querySelector(`.${
|
|
2440
|
+
const i = this.table.querySelector(`.${D}:nth-child(${e})`), s = Array.from(i.querySelectorAll(`.${N}`));
|
|
2536
2441
|
s.every((n) => !n.textContent.trim()) || t.push(s.map((n) => n.innerHTML));
|
|
2537
2442
|
}
|
|
2538
2443
|
return t;
|
|
@@ -2541,7 +2446,7 @@ class be {
|
|
|
2541
2446
|
document.removeEventListener("click", this.documentClicked);
|
|
2542
2447
|
}
|
|
2543
2448
|
}
|
|
2544
|
-
class
|
|
2449
|
+
class me {
|
|
2545
2450
|
static get isReadOnlySupported() {
|
|
2546
2451
|
return !0;
|
|
2547
2452
|
}
|
|
@@ -2555,7 +2460,7 @@ class ye {
|
|
|
2555
2460
|
return { icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-width="2" d="M10 5V18.5"/><path stroke="currentColor" stroke-width="2" d="M5 10H19"/><rect width="14" height="14" x="5" y="5" stroke="currentColor" stroke-width="2" rx="4"/></svg>', title: "Table" };
|
|
2556
2461
|
}
|
|
2557
2462
|
render() {
|
|
2558
|
-
return this.table = new
|
|
2463
|
+
return this.table = new ge(this.readOnly, this.api, this.data, this.config), this.container = T("div", this.api.styles.block), this.container.appendChild(this.table.getWrapper()), this.table.setHeadingsSetting(this.data.withHeadings), this.container;
|
|
2559
2464
|
}
|
|
2560
2465
|
renderSettings() {
|
|
2561
2466
|
return [{ label: this.api.i18n.t("With headings"), icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-width="2" d="M5 10H19"/><rect width="14" height="14" x="5" y="5" stroke="currentColor" stroke-width="2" rx="4"/></svg>', isActive: this.data.withHeadings, closeOnActivate: !0, toggle: !0, hint: { title: this.api.i18n.t("With headings") }, onActivate: () => {
|
|
@@ -2585,17 +2490,16 @@ class ye {
|
|
|
2585
2490
|
}
|
|
2586
2491
|
}
|
|
2587
2492
|
}
|
|
2588
|
-
function
|
|
2589
|
-
const i = document.createElement(
|
|
2493
|
+
function P(c, t = null, e = {}) {
|
|
2494
|
+
const i = document.createElement(c);
|
|
2590
2495
|
Array.isArray(t) ? i.classList.add(...t) : t !== null && i.classList.add(t);
|
|
2591
|
-
for (const s in e)
|
|
2592
|
-
e.hasOwnProperty(s) && (i[s] = e[s]);
|
|
2496
|
+
for (const s in e) e.hasOwnProperty(s) && (i[s] = e[s]);
|
|
2593
2497
|
return i;
|
|
2594
2498
|
}
|
|
2595
|
-
var
|
|
2596
|
-
class
|
|
2499
|
+
var q = ((c) => (c.Empty = "empty", c.Uploading = "uploading", c.Filled = "filled", c))(q || {});
|
|
2500
|
+
class fe {
|
|
2597
2501
|
constructor({ api: t, config: e, onSelectFile: i, readOnly: s }) {
|
|
2598
|
-
this.api = t, this.config = e, this.onSelectFile = i, this.readOnly = s, this.nodes = { wrapper:
|
|
2502
|
+
this.api = t, this.config = e, this.onSelectFile = i, this.readOnly = s, this.nodes = { wrapper: P("div", [this.CSS.baseClass, this.CSS.wrapper]), imageContainer: P("div", [this.CSS.imageContainer]), fileButton: this.createFileButton(), imageEl: void 0, imagePreloader: P("div", this.CSS.imagePreloader), caption: P("div", [this.CSS.input, this.CSS.caption], { contentEditable: !this.readOnly }) }, this.nodes.caption.dataset.placeholder = this.config.captionPlaceholder, this.nodes.imageContainer.appendChild(this.nodes.imagePreloader), this.nodes.wrapper.appendChild(this.nodes.imageContainer), this.nodes.wrapper.appendChild(this.nodes.caption), this.nodes.wrapper.appendChild(this.nodes.fileButton);
|
|
2599
2503
|
}
|
|
2600
2504
|
applyTune(t, e) {
|
|
2601
2505
|
this.nodes.wrapper.classList.toggle(`${this.CSS.wrapper}--${t}`, e);
|
|
@@ -2604,7 +2508,7 @@ class Se {
|
|
|
2604
2508
|
return this.toggleStatus("empty"), this.nodes.wrapper;
|
|
2605
2509
|
}
|
|
2606
2510
|
showPreloader(t) {
|
|
2607
|
-
this.nodes.imagePreloader.style.backgroundImage = `url(${t})
|
|
2511
|
+
this.nodes.imagePreloader.style.backgroundImage = `url(${t})`;
|
|
2608
2512
|
}
|
|
2609
2513
|
hidePreloader() {
|
|
2610
2514
|
this.nodes.imagePreloader.style.backgroundImage = "", this.toggleStatus("empty");
|
|
@@ -2612,7 +2516,7 @@ class Se {
|
|
|
2612
2516
|
fillImage(t) {
|
|
2613
2517
|
const e = /\.mp4$/.test(t) ? "VIDEO" : "IMG", i = { src: t };
|
|
2614
2518
|
let s = "load";
|
|
2615
|
-
e === "VIDEO" && (i.autoplay = !0, i.loop = !0, i.muted = !0, i.playsinline = !0, s = "loadeddata"), this.nodes.imageEl =
|
|
2519
|
+
e === "VIDEO" && (i.autoplay = !0, i.loop = !0, i.muted = !0, i.playsinline = !0, s = "loadeddata"), this.nodes.imageEl = P(e, this.CSS.imageEl, i), this.nodes.imageEl.addEventListener(s, () => {
|
|
2616
2520
|
this.toggleStatus("filled"), this.nodes.imagePreloader !== void 0 && (this.nodes.imagePreloader.style.backgroundImage = "");
|
|
2617
2521
|
}), this.nodes.imageContainer.appendChild(this.nodes.imageEl);
|
|
2618
2522
|
}
|
|
@@ -2620,103 +2524,130 @@ class Se {
|
|
|
2620
2524
|
this.nodes.caption !== void 0 && (this.nodes.caption.innerHTML = t);
|
|
2621
2525
|
}
|
|
2622
2526
|
toggleStatus(t) {
|
|
2623
|
-
for (const e in
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
}
|
|
2527
|
+
for (const e in q) if (Object.prototype.hasOwnProperty.call(q, e)) {
|
|
2528
|
+
const i = q[e];
|
|
2529
|
+
this.nodes.wrapper.classList.toggle(`${this.CSS.wrapper}--${i}`, i === t);
|
|
2530
|
+
}
|
|
2628
2531
|
}
|
|
2629
2532
|
get CSS() {
|
|
2630
2533
|
return { baseClass: this.api.styles.block, loading: this.api.styles.loader, input: this.api.styles.input, button: this.api.styles.button, wrapper: "image-tool", imageContainer: "image-tool__image", imagePreloader: "image-tool__image-preloader", imageEl: "image-tool__image-picture", caption: "image-tool__caption" };
|
|
2631
2534
|
}
|
|
2632
2535
|
createFileButton() {
|
|
2633
2536
|
var e;
|
|
2634
|
-
const t =
|
|
2635
|
-
return t.innerHTML = (e = this.config.buttonContent) != null ? e :
|
|
2537
|
+
const t = P("div", [this.CSS.button]);
|
|
2538
|
+
return t.innerHTML = (e = this.config.buttonContent) != null ? e : `${At} ${this.api.i18n.t("Select an Image")}`, t.addEventListener("click", () => {
|
|
2636
2539
|
this.onSelectFile();
|
|
2637
2540
|
}), t;
|
|
2638
2541
|
}
|
|
2639
2542
|
}
|
|
2640
|
-
|
|
2641
|
-
return h !== void 0 && typeof h.then == "function";
|
|
2642
|
-
}
|
|
2643
|
-
class Le {
|
|
2543
|
+
class Ce {
|
|
2644
2544
|
constructor({ config: t, onUpload: e, onError: i }) {
|
|
2645
2545
|
this.config = t, this.onUpload = e, this.onError = i;
|
|
2646
2546
|
}
|
|
2647
|
-
async uploadSelectedFile({ onPreview: t }) {
|
|
2648
|
-
var
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2547
|
+
async uploadSelectedFile({ onPreview: t, noSelectedFile: e }) {
|
|
2548
|
+
var g;
|
|
2549
|
+
let i = "", s = "";
|
|
2550
|
+
const n = await function(m = {}) {
|
|
2551
|
+
let f = !0;
|
|
2552
|
+
return new Promise((v, L) => {
|
|
2553
|
+
let w = document.createElement("INPUT");
|
|
2554
|
+
w.type = "file", m.multiple && w.setAttribute("multiple", "multiple"), m.accept && w.setAttribute("accept", m.accept), w.style.display = "none", document.body.appendChild(w), w.addEventListener("change", (_) => {
|
|
2555
|
+
f = !1;
|
|
2556
|
+
const B = _.target.files;
|
|
2557
|
+
v(B), document.body.removeChild(w);
|
|
2558
|
+
}, !1), window.addEventListener("focus", () => {
|
|
2559
|
+
setTimeout(() => {
|
|
2560
|
+
f && v([]);
|
|
2561
|
+
}, 1e3);
|
|
2562
|
+
}, { once: !0 }), w.click();
|
|
2662
2563
|
});
|
|
2663
|
-
}
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
const
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2564
|
+
}({ accept: (g = this.config.types) != null ? g : "image/*" });
|
|
2565
|
+
if (!(n && n.length > 0)) return void e();
|
|
2566
|
+
(function(m) {
|
|
2567
|
+
const f = new FileReader();
|
|
2568
|
+
f.readAsDataURL(m), f.onload = (v) => {
|
|
2569
|
+
t(v.target.result);
|
|
2570
|
+
};
|
|
2571
|
+
})(n[0]);
|
|
2572
|
+
const r = n[0], o = this.config.types.split(",");
|
|
2573
|
+
let a = r.name.lastIndexOf("."), d = r.name.slice(a);
|
|
2574
|
+
if (!o.includes(d.toLowerCase())) return void this.onError("文件类型不支持");
|
|
2575
|
+
let l = {};
|
|
2576
|
+
if (this.config.userStore) {
|
|
2577
|
+
const m = this.config.userStore.token, f = this.config.userStore.tokenName, v = this.config.userStore.tokenPrefix;
|
|
2578
|
+
m && f && (l[f] = v + " " + m);
|
|
2670
2579
|
}
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2580
|
+
const h = Y.create({ timeout: 18e5, headers: l });
|
|
2581
|
+
l["Content-Type"] = "application/json";
|
|
2582
|
+
const p = await h.post(this.config.endpoints.byFile, { fileName: r.name, contentType: r.type });
|
|
2583
|
+
if (p.status !== 200) return void this.onError(p.statusText);
|
|
2584
|
+
const u = p.data;
|
|
2585
|
+
if (!u.success) return void this.onError(u.message);
|
|
2586
|
+
i = u.data.cdn, s = u.data.objectKey, l["Content-Type"] = r.type, h.put(u.data.presignedUrl, r).then((m) => {
|
|
2587
|
+
m.status === 200 && (m = { success: 1, file: { url: i + s } }), this.onUpload(m);
|
|
2588
|
+
}).catch((m) => {
|
|
2589
|
+
this.onError(m);
|
|
2675
2590
|
});
|
|
2676
2591
|
}
|
|
2677
2592
|
uploadByUrl(t) {
|
|
2678
|
-
let e;
|
|
2679
|
-
|
|
2680
|
-
this.
|
|
2681
|
-
|
|
2682
|
-
|
|
2593
|
+
let e, i = { "Content-Type": "application/json" };
|
|
2594
|
+
if (this.config.userStore) {
|
|
2595
|
+
const s = this.config.userStore.token, n = this.config.userStore.tokenName, r = this.config.userStore.tokenPrefix;
|
|
2596
|
+
s && n && (i[n] = r + " " + s);
|
|
2597
|
+
}
|
|
2598
|
+
e = Y.create({ timeout: 18e5, headers: i }).post(this.config.endpoints.byUrl, { url: t, accept: ".jpg,.jpeg,.gif,.png,.webp" }), e.then((s) => {
|
|
2599
|
+
if (s.status !== 200 || s.data.success === !1) return void this.onError(s.data.message);
|
|
2600
|
+
let n = { success: 1, file: { url: s.data.data.cdn + s.data.data.objectKey } };
|
|
2601
|
+
this.onUpload(n);
|
|
2602
|
+
}).catch((s) => {
|
|
2603
|
+
this.onError(s);
|
|
2683
2604
|
});
|
|
2684
2605
|
}
|
|
2685
|
-
uploadByFile(t, { onPreview: e }) {
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
else {
|
|
2694
|
-
const r = new FormData();
|
|
2695
|
-
r.append((n = this.config.field) != null ? n : "image", t), this.config.additionalRequestData && Object.keys(this.config.additionalRequestData).length && Object.entries(this.config.additionalRequestData).forEach(([o, a]) => {
|
|
2696
|
-
r.append(o, a);
|
|
2697
|
-
}), s = H.post({ url: this.config.endpoints.byFile, data: r, type: H.contentType.JSON, headers: this.config.additionalRequestHeaders }).then((o) => o.body);
|
|
2606
|
+
async uploadByFile(t, { onPreview: e }) {
|
|
2607
|
+
const i = this.config.types.split(",");
|
|
2608
|
+
let s = t.name.lastIndexOf("."), n = t.name.slice(s);
|
|
2609
|
+
if (!i.includes(n.toLowerCase())) return void this.onError("文件类型不支持");
|
|
2610
|
+
let r = {};
|
|
2611
|
+
if (this.config.userStore) {
|
|
2612
|
+
const p = this.config.userStore.token, u = this.config.userStore.tokenName, g = this.config.userStore.tokenPrefix;
|
|
2613
|
+
p && u && (r[u] = g + " " + p);
|
|
2698
2614
|
}
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2615
|
+
const o = Y.create({ timeout: 18e5, headers: r });
|
|
2616
|
+
r["Content-Type"] = "application/json";
|
|
2617
|
+
const a = await o.post(this.config.endpoints.byFile, { fileName: t.name, contentType: t.type });
|
|
2618
|
+
if (a.status !== 200) return void this.onError(a.statusText);
|
|
2619
|
+
const d = a.data;
|
|
2620
|
+
if (!d.success) return void this.onError(d.message);
|
|
2621
|
+
let l = d.data.cdn, h = d.data.objectKey;
|
|
2622
|
+
r["Content-Type"] = t.type, o.put(d.data.presignedUrl, t).then((p) => {
|
|
2623
|
+
p.status === 200 && (p = { success: 1, file: { url: l + h } }), this.onUpload(p);
|
|
2624
|
+
}).catch((p) => {
|
|
2625
|
+
this.onError(p);
|
|
2703
2626
|
});
|
|
2704
2627
|
}
|
|
2705
2628
|
}
|
|
2706
|
-
class
|
|
2629
|
+
class K {
|
|
2707
2630
|
constructor({ data: t, config: e, api: i, readOnly: s, block: n }) {
|
|
2708
2631
|
var r;
|
|
2709
|
-
this.isCaptionEnabled = null, this.api = i, this.block = n, this.config = { endpoints: e.endpoints, additionalRequestData: e.additionalRequestData, additionalRequestHeaders: e.additionalRequestHeaders, field: e.field, types: e.types, captionPlaceholder: this.api.i18n.t((r = e.captionPlaceholder) != null ? r : "Caption"), buttonContent: e.buttonContent, uploader: e.uploader, actions: e.actions, features: e.features || {} }, this.uploader = new
|
|
2632
|
+
this.isCaptionEnabled = null, this.api = i, this.block = n, this.userStore = e == null ? void 0 : e.userStore, this.config = { endpoints: e.endpoints, additionalRequestData: e.additionalRequestData, additionalRequestHeaders: e.additionalRequestHeaders, field: e.field, types: e.types, captionPlaceholder: this.api.i18n.t((r = e.captionPlaceholder) != null ? r : "Caption"), buttonContent: e.buttonContent, uploader: e.uploader, actions: e.actions, features: e.features || {}, userStore: e.userStore }, this.uploader = new Ce({ config: this.config, onUpload: (o) => this.onUpload(o), onError: (o) => this.uploadingFailed(o) }), this.ui = new fe({ api: i, config: this.config, onSelectFile: () => {
|
|
2710
2633
|
this.uploader.uploadSelectedFile({ onPreview: (o) => {
|
|
2711
2634
|
this.ui.showPreloader(o);
|
|
2635
|
+
}, noSelectedFile: () => {
|
|
2636
|
+
this.noSelectedFile();
|
|
2712
2637
|
} });
|
|
2713
2638
|
}, readOnly: s }), this._data = { caption: "", withBorder: !1, withBackground: !1, stretched: !1, file: { url: "" } }, this.data = t;
|
|
2714
2639
|
}
|
|
2640
|
+
noSelectedFile() {
|
|
2641
|
+
this.api.blocks.delete(this.api.blocks.getCurrentBlockIndex());
|
|
2642
|
+
}
|
|
2643
|
+
deleteCurrentBlock() {
|
|
2644
|
+
this.api.blocks.delete(this.api.blocks.getCurrentBlockIndex());
|
|
2645
|
+
}
|
|
2715
2646
|
static get isReadOnlySupported() {
|
|
2716
2647
|
return !0;
|
|
2717
2648
|
}
|
|
2718
2649
|
static get toolbox() {
|
|
2719
|
-
return { icon:
|
|
2650
|
+
return { icon: At, title: "Image" };
|
|
2720
2651
|
}
|
|
2721
2652
|
static get tunes() {
|
|
2722
2653
|
return [{ name: "withBorder", icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.9919 9.5H19.0015"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.5 5H14.5096"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M14.625 5H15C17.2091 5 19 6.79086 19 9V9.375"/><path stroke="currentColor" stroke-width="2" d="M9.375 5L9 5C6.79086 5 5 6.79086 5 9V9.375"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.3725 5H9.38207"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 9.5H5.00957"/><path stroke="currentColor" stroke-width="2" d="M9.375 19H9C6.79086 19 5 17.2091 5 15V14.625"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.3725 19H9.38207"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 14.55H5.00957"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M16 13V16M16 19V16M19 16H16M16 16H13"/></svg>', title: "With border", toggle: !0 }, { name: "stretched", icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 9L20 12L17 15"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 12H20"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 9L4 12L7 15"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 12H10"/></svg>', title: "Stretch image", toggle: !0 }, { name: "withBackground", icon: '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 19V19C9.13623 19 8.20435 19 7.46927 18.6955C6.48915 18.2895 5.71046 17.5108 5.30448 16.5307C5 15.7956 5 14.8638 5 13V12C5 9.19108 5 7.78661 5.67412 6.77772C5.96596 6.34096 6.34096 5.96596 6.77772 5.67412C7.78661 5 9.19108 5 12 5H13.5C14.8956 5 15.5933 5 16.1611 5.17224C17.4395 5.56004 18.44 6.56046 18.8278 7.83886C19 8.40666 19 9.10444 19 10.5V10.5"/><path stroke="currentColor" stroke-linecap="round" stroke-width="2" d="M16 13V16M16 19V16M19 16H16M16 16H13"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6.5 17.5L17.5 6.5"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.9919 10.5H19.0015"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.9919 19H11.0015"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13L13 5"/></svg>', title: "With background", toggle: !0 }];
|
|
@@ -2734,7 +2665,7 @@ class Y {
|
|
|
2734
2665
|
}
|
|
2735
2666
|
renderSettings() {
|
|
2736
2667
|
var n;
|
|
2737
|
-
const t =
|
|
2668
|
+
const t = K.tunes.concat(this.config.actions || []), e = { border: "withBorder", background: "withBackground", stretch: "stretched", caption: "caption" };
|
|
2738
2669
|
((n = this.config.features) == null ? void 0 : n.caption) === "optional" && t.push({ name: "caption", icon: Ot, title: "With caption", toggle: !0 });
|
|
2739
2670
|
const i = t.filter((r) => {
|
|
2740
2671
|
var a, d;
|
|
@@ -2746,8 +2677,7 @@ class Y {
|
|
|
2746
2677
|
return r.name === "caption" && (o = (a = this.isCaptionEnabled) != null ? a : o), o;
|
|
2747
2678
|
};
|
|
2748
2679
|
return i.map((r) => ({ icon: r.icon, label: this.api.i18n.t(r.title), name: r.name, toggle: r.toggle, isActive: s(r), onActivate: () => {
|
|
2749
|
-
if (typeof r.action == "function")
|
|
2750
|
-
return void r.action(r.name);
|
|
2680
|
+
if (typeof r.action == "function") return void r.action(r.name);
|
|
2751
2681
|
let o = !s(r);
|
|
2752
2682
|
r.name === "caption" && (this.isCaptionEnabled = !this.isCaptionEnabled, o = this.isCaptionEnabled), this.tuneToggled(r.name, o);
|
|
2753
2683
|
} }));
|
|
@@ -2756,7 +2686,7 @@ class Y {
|
|
|
2756
2686
|
this.ui.nodes.fileButton.click();
|
|
2757
2687
|
}
|
|
2758
2688
|
static get pasteConfig() {
|
|
2759
|
-
return { tags: [{ img: { src: !0 } }],
|
|
2689
|
+
return { tags: [{ img: { src: !0 } }], files: { mimeTypes: ["image/*"] } };
|
|
2760
2690
|
}
|
|
2761
2691
|
async onPaste(t) {
|
|
2762
2692
|
switch (t.type) {
|
|
@@ -2770,11 +2700,6 @@ class Y {
|
|
|
2770
2700
|
this.uploadUrl(e.src);
|
|
2771
2701
|
break;
|
|
2772
2702
|
}
|
|
2773
|
-
case "pattern": {
|
|
2774
|
-
const e = t.detail.data;
|
|
2775
|
-
this.uploadUrl(e);
|
|
2776
|
-
break;
|
|
2777
|
-
}
|
|
2778
2703
|
case "file": {
|
|
2779
2704
|
const e = t.detail.file;
|
|
2780
2705
|
this.uploadFile(e);
|
|
@@ -2784,7 +2709,7 @@ class Y {
|
|
|
2784
2709
|
}
|
|
2785
2710
|
set data(t) {
|
|
2786
2711
|
var e;
|
|
2787
|
-
this.image = t.file, this._data.caption = t.caption || "", this.ui.fillCaption(this._data.caption),
|
|
2712
|
+
this.image = t.file, this._data.caption = t.caption || "", this.ui.fillCaption(this._data.caption), K.tunes.forEach(({ name: i }) => {
|
|
2788
2713
|
const s = t[i] !== void 0 && (t[i] === !0 || t[i] === "true");
|
|
2789
2714
|
this.setTune(i, s);
|
|
2790
2715
|
}), (t.caption || ((e = this.config.features) == null ? void 0 : e.caption) === !0) && this.setTune("caption", !0);
|
|
@@ -2799,7 +2724,8 @@ class Y {
|
|
|
2799
2724
|
t.success && t.file ? this.image = t.file : this.uploadingFailed("incorrect response: " + JSON.stringify(t));
|
|
2800
2725
|
}
|
|
2801
2726
|
uploadingFailed(t) {
|
|
2802
|
-
|
|
2727
|
+
let e = this.api.i18n.t("Couldn’t upload image. Please try another.");
|
|
2728
|
+
t && (e = this.api.i18n.t(t)), this.api.notifier.show({ message: e, style: "error" }), this.ui.hidePreloader(), this.deleteCurrentBlock();
|
|
2803
2729
|
}
|
|
2804
2730
|
tuneToggled(t, e) {
|
|
2805
2731
|
t === "caption" ? (this.ui.applyTune(t, e), e == 0 && (this._data.caption = "", this.ui.fillCaption(""))) : this.setTune(t, e);
|
|
@@ -2819,41 +2745,243 @@ class Y {
|
|
|
2819
2745
|
this.ui.showPreloader(t), this.uploader.uploadByUrl(t);
|
|
2820
2746
|
}
|
|
2821
2747
|
}
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2748
|
+
class ve {
|
|
2749
|
+
constructor({ api: t, data: e, config: i, block: s }) {
|
|
2750
|
+
var n, r, o, a, d, l, h, p, u, g, m, f, v, L, w, _, B;
|
|
2751
|
+
this.settings = [], this.api = t, this.block = s, this.data = { floatLeft: (n = e == null ? void 0 : e.floatLeft) != null ? n : !1, floatRight: (r = e == null ? void 0 : e.floatRight) != null ? r : !1, center: (o = e == null ? void 0 : e.center) != null ? o : !1, sizeSmall: (a = e == null ? void 0 : e.sizeSmall) != null ? a : !1, sizeMiddle: (d = e == null ? void 0 : e.sizeMiddle) != null ? d : !1, sizeLarge: (l = e == null ? void 0 : e.sizeLarge) != null ? l : !1, resize: (p = (h = e == null ? void 0 : e.resize) != null ? h : i == null ? void 0 : i.resize) != null ? p : !1, resizeSize: (u = e == null ? void 0 : e.resizeSize) != null ? u : 0, crop: (m = (g = e == null ? void 0 : e.crop) != null ? g : i == null ? void 0 : i.crop) != null ? m : !1, cropperFrameHeight: (f = e == null ? void 0 : e.cropperFrameHeight) != null ? f : 0, cropperFrameWidth: (v = e == null ? void 0 : e.cropperFrameWidth) != null ? v : 0, cropperFrameLeft: (L = e == null ? void 0 : e.cropperFrameLeft) != null ? L : 0, cropperFrameTop: (w = e == null ? void 0 : e.cropperFrameTop) != null ? w : 0, cropperImageHeight: (_ = e == null ? void 0 : e.cropperImageHeight) != null ? _ : 0, cropperImageWidth: (B = e == null ? void 0 : e.cropperImageWidth) != null ? B : 0, cropperInterface: void 0 }, this.wrapper = void 0, this.buttons = [], this.styles = { settingsButton: "cdx-settings-button", settingsButtonActive: "cdx-settings-button--active", settingsButtonModifier: "", settingsButtonModifierActive: "" };
|
|
2752
|
+
}
|
|
2753
|
+
static get isTune() {
|
|
2754
|
+
return !0;
|
|
2755
|
+
}
|
|
2756
|
+
static get sanitize() {
|
|
2757
|
+
return { floatLeft: {}, floatRight: {}, center: {}, sizeSmall: {}, sizeMiddle: {}, sizeLarge: {}, resize: {}, resizeSize: {}, crop: {}, cropperFrameHeight: {}, cropperFrameWidth: {}, cropperFrameLeft: {}, cropperFrameTop: {}, cropperImageHeight: {}, cropperImageWidth: {}, cropperInterface: {} };
|
|
2758
|
+
}
|
|
2759
|
+
get CSS() {
|
|
2760
|
+
return { wrapper: "cdx-image-tool-tune", button: this.styles.settingsButton, buttonActive: this.styles.settingsButtonActive, buttonModifier: this.styles.settingsButtonModifier || "", buttonModifierActive: this.styles.settingsButtonModifierActive || "", isFloatLeft: "cdx-image-tool-tune--floatLeft", isFloatRight: "cdx-image-tool-tune--floatRight", isCenter: "cdx-image-tool-tune--center", isSizeSmall: "cdx-image-tool-tune--sizeSmall", isSizeMiddle: "cdx-image-tool-tune--sizeMiddle", isSizeLarge: "cdx-image-tool-tune--sizeLarge", isResize: "cdx-image-tool-tune--resize", isCrop: "cdx-image-tool-tune--crop" };
|
|
2761
|
+
}
|
|
2762
|
+
get view() {
|
|
2763
|
+
return this.wrapper || (this.wrapper = this.createView()), this.wrapper;
|
|
2764
|
+
}
|
|
2765
|
+
tuneClicked(t, e) {
|
|
2766
|
+
var n;
|
|
2767
|
+
t.preventDefault(), t.stopPropagation();
|
|
2768
|
+
const i = e.dataset.tune || "", s = (n = this.settings.find((r) => r.name === i)) == null ? void 0 : n.group;
|
|
2769
|
+
this.buttons.forEach((r) => {
|
|
2770
|
+
var o;
|
|
2771
|
+
((o = this.settings.find((a) => a.name === r.dataset.tune)) == null ? void 0 : o.group) === s && r !== e && r.classList.remove(this.CSS.buttonActive);
|
|
2772
|
+
}), e.classList.toggle(this.CSS.buttonActive), this.setTune(i);
|
|
2773
|
+
}
|
|
2774
|
+
setTune(t) {
|
|
2775
|
+
switch (t) {
|
|
2776
|
+
case "floatLeft":
|
|
2777
|
+
this.data.floatLeft = !this.data.floatLeft, this.data.floatRight = !1, this.data.center = !1;
|
|
2778
|
+
break;
|
|
2779
|
+
case "floatRight":
|
|
2780
|
+
this.data.floatLeft = !1, this.data.floatRight = !this.data.floatRight, this.data.center = !1;
|
|
2781
|
+
break;
|
|
2782
|
+
case "center":
|
|
2783
|
+
this.data.center = !this.data.center, this.data.floatLeft = !1, this.data.floatRight = !1;
|
|
2784
|
+
break;
|
|
2785
|
+
case "sizeSmall":
|
|
2786
|
+
this.data.sizeSmall = !this.data.sizeSmall, this.data.sizeMiddle = !1, this.data.sizeLarge = !1, this.data.resize = !1, this.data.crop = !1;
|
|
2787
|
+
break;
|
|
2788
|
+
case "sizeMiddle":
|
|
2789
|
+
this.data.sizeSmall = !1, this.data.sizeMiddle = !this.data.sizeMiddle, this.data.sizeLarge = !1, this.data.resize = !1, this.data.crop = !1;
|
|
2790
|
+
break;
|
|
2791
|
+
case "sizeLarge":
|
|
2792
|
+
this.data.sizeSmall = !1, this.data.sizeMiddle = !1, this.data.sizeLarge = !this.data.sizeLarge, this.data.resize = !1, this.data.crop = !1;
|
|
2793
|
+
break;
|
|
2794
|
+
case "resize":
|
|
2795
|
+
this.data.sizeSmall = !1, this.data.sizeMiddle = !1, this.data.sizeLarge = !1, this.data.resize = !this.data.resize, this.data.crop = !1;
|
|
2796
|
+
break;
|
|
2797
|
+
case "crop":
|
|
2798
|
+
this.data.crop = !this.data.crop, this.data.sizeSmall = !1, this.data.sizeMiddle = !1, this.data.sizeLarge = !1, this.data.resize = !1, this.data.resizeSize = 0;
|
|
2799
|
+
break;
|
|
2800
|
+
default:
|
|
2801
|
+
this.data.floatLeft = !1, this.data.floatRight = !1, this.data.sizeSmall = !1, this.data.sizeMiddle = !1, this.data.sizeLarge = !1, this.data.resize = !1, this.data.crop = !1;
|
|
2802
|
+
}
|
|
2803
|
+
this.data.resize || (this.data.resizeSize = 0), this.data.crop || (this.data.cropperFrameHeight = 0, this.data.cropperFrameWidth = 0, this.data.cropperFrameLeft = 0, this.data.cropperFrameTop = 0, this.data.cropperImageHeight = 0, this.data.cropperImageWidth = 0);
|
|
2804
|
+
const e = this.block.holder.querySelector(".ce-block__content");
|
|
2805
|
+
this.apply(e), this.block.dispatchChange();
|
|
2806
|
+
}
|
|
2807
|
+
apply(t) {
|
|
2808
|
+
this.data.floatLeft ? t.classList.add(this.CSS.isFloatLeft) : t.classList.remove(this.CSS.isFloatLeft), this.data.floatRight ? t.classList.add(this.CSS.isFloatRight) : t.classList.remove(this.CSS.isFloatRight), this.data.center ? t.classList.add(this.CSS.isCenter) : t.classList.remove(this.CSS.isCenter), this.data.sizeSmall ? t.classList.add(this.CSS.isSizeSmall) : t.classList.remove(this.CSS.isSizeSmall), this.data.sizeMiddle ? t.classList.add(this.CSS.isSizeMiddle) : t.classList.remove(this.CSS.isSizeMiddle), this.data.sizeLarge ? t.classList.add(this.CSS.isSizeLarge) : t.classList.remove(this.CSS.isSizeLarge), this.data.resize ? (t.classList.add(this.CSS.isResize), this.data.resizeSize > 0 && (t.getElementsByClassName("cdx-block")[0].style.width = this.data.resizeSize + "px"), this.resize(t)) : (t.classList.remove(this.CSS.isResize), this.unresize(t)), this.data.crop ? (t.classList.add(this.CSS.isCrop), this.crop(t), this.data.cropperFrameHeight > 0 && this.data.cropperFrameWidth > 0 && this.applyCrop(t)) : (t.classList.remove(this.CSS.isCrop), this.uncrop(t));
|
|
2809
|
+
}
|
|
2810
|
+
crop(t) {
|
|
2811
|
+
if (this.api.readOnly.isEnabled) return;
|
|
2812
|
+
const e = t.getElementsByClassName("image-tool__image")[0], i = document.createElement("div");
|
|
2813
|
+
i.classList.add("crop-btn", "btn-crop-action"), i.innerHTML = this.api.i18n.t("Crop"), i.addEventListener("click", () => {
|
|
2814
|
+
e.removeChild(i), this.appendCrop(t);
|
|
2815
|
+
}), e.appendChild(i);
|
|
2816
|
+
}
|
|
2817
|
+
appendCrop(t) {
|
|
2818
|
+
if (this.api.readOnly.isEnabled) return;
|
|
2819
|
+
this.uncrop(t);
|
|
2820
|
+
const e = t.getElementsByClassName("cdx-block")[0], i = e.getElementsByTagName("img")[0];
|
|
2821
|
+
e.classList.add("isCropping"), this.data.cropperInterface = new Cropper(i);
|
|
2822
|
+
const s = document.createElement("div");
|
|
2823
|
+
s.classList.add("crop-save", "btn-crop-action"), s.innerHTML = this.api.i18n.t("Apply"), s.addEventListener("click", () => {
|
|
2824
|
+
this.data.cropperInterface && (this.data.cropperFrameHeight = this.data.cropperInterface.getCropBoxData().height, this.data.cropperFrameWidth = this.data.cropperInterface.getCropBoxData().width, this.data.cropperFrameLeft = this.data.cropperInterface.getCanvasData().left - this.data.cropperInterface.getCropBoxData().left, this.data.cropperFrameTop = this.data.cropperInterface.getCanvasData().top - this.data.cropperInterface.getCropBoxData().top, this.data.cropperImageHeight = this.data.cropperInterface.getImageData().height, this.data.cropperImageWidth = this.data.cropperInterface.getImageData().width), this.applyCrop(t);
|
|
2825
|
+
}), t.getElementsByClassName("image-tool__image")[0].appendChild(s), t.classList.add("isCropping");
|
|
2826
|
+
}
|
|
2827
|
+
applyCrop(t) {
|
|
2828
|
+
const e = t.getElementsByClassName("cdx-block")[0];
|
|
2829
|
+
if (e) {
|
|
2830
|
+
e.style.minWidth = this.data.cropperFrameWidth + "px", e.style.maxWidth = this.data.cropperFrameWidth + "px";
|
|
2831
|
+
const n = e.getElementsByTagName("img")[0];
|
|
2832
|
+
n.style.width = this.data.cropperImageWidth + "px", n.style.height = this.data.cropperImageHeight + "px";
|
|
2833
|
+
const r = t.getElementsByClassName("image-tool__image")[0];
|
|
2834
|
+
r.style.width = this.data.cropperFrameWidth + "px", r.style.height = this.data.cropperFrameHeight + "px";
|
|
2835
|
+
const o = r.getElementsByTagName("img")[0];
|
|
2836
|
+
o && (o.style.left = this.data.cropperFrameLeft + "px", o.style.top = this.data.cropperFrameTop + "px", o.classList.add("isCropped")), e.classList.remove("isCropping");
|
|
2837
|
+
const a = t.getElementsByClassName("btn-crop-action")[0];
|
|
2838
|
+
a && r.removeChild(a);
|
|
2839
|
+
}
|
|
2840
|
+
if (this.data.cropperInterface && (this.data.cropperInterface.destroy(), this.data.cropperInterface = void 0), this.api.readOnly.isEnabled) return;
|
|
2841
|
+
const i = document.createElement("div");
|
|
2842
|
+
i.classList.add("crop-btn", "btn-crop-action"), i.innerHTML = this.api.i18n.t("Crop");
|
|
2843
|
+
const s = t.getElementsByClassName("image-tool__image")[0];
|
|
2844
|
+
s && (i.addEventListener("click", () => {
|
|
2845
|
+
s.removeChild(i), this.appendCrop(t);
|
|
2846
|
+
}), s.appendChild(i)), t.classList.remove("isCropping"), this.block.dispatchChange();
|
|
2847
|
+
}
|
|
2848
|
+
uncrop(t) {
|
|
2849
|
+
if (this.api.readOnly.isEnabled) return;
|
|
2850
|
+
const e = t.getElementsByClassName("image-tool__image")[0], i = t.getElementsByClassName("btn-crop-action")[0];
|
|
2851
|
+
i && e && e.removeChild(i);
|
|
2852
|
+
const s = t.getElementsByClassName("btn-crop-action")[0];
|
|
2853
|
+
s && e && e.removeChild(s);
|
|
2854
|
+
const n = t.getElementsByClassName("cdx-block")[0];
|
|
2855
|
+
if (n) {
|
|
2856
|
+
const r = n.getElementsByTagName("img")[0];
|
|
2857
|
+
r && r.classList.remove("isCropped"), n.classList.remove("isCropping"), n.style.minWidth = "", n.style.maxWidth = "";
|
|
2858
|
+
}
|
|
2859
|
+
if (e) {
|
|
2860
|
+
e.style.width = "", e.style.height = "";
|
|
2861
|
+
const r = e.getElementsByTagName("img")[0];
|
|
2862
|
+
r && (r.style.left = "", r.style.top = "", r.style.width = "", r.style.height = "");
|
|
2863
|
+
}
|
|
2864
|
+
t.classList.remove("isCropping"), this.data.cropperInterface && (this.data.cropperInterface.destroy(), this.data.cropperInterface = void 0), this.data.cropperFrameHeight = 0, this.data.cropperFrameWidth = 0, this.data.cropperFrameLeft = 0, this.data.cropperFrameTop = 0, this.data.cropperImageHeight = 0, this.data.cropperImageWidth = 0;
|
|
2865
|
+
}
|
|
2866
|
+
resize(t) {
|
|
2867
|
+
if (this.api.readOnly.isEnabled) return;
|
|
2868
|
+
const e = document.createElement("div");
|
|
2869
|
+
e.classList.add("resizable");
|
|
2870
|
+
const i = document.createElement("div");
|
|
2871
|
+
i.classList.add("resizers");
|
|
2872
|
+
const s = document.createElement("div");
|
|
2873
|
+
s.classList.add("resizer", "top-right"), s.addEventListener("mousedown", (r) => {
|
|
2874
|
+
this.resizeClick(t.getElementsByClassName("cdx-block")[0], s, r);
|
|
2875
|
+
});
|
|
2876
|
+
const n = document.createElement("div");
|
|
2877
|
+
n.classList.add("resizer", "bottom-right"), n.addEventListener("mousedown", (r) => {
|
|
2878
|
+
this.resizeClick(t.getElementsByClassName("cdx-block")[0], n, r);
|
|
2879
|
+
}), i.appendChild(s), i.appendChild(n), e.appendChild(i), t.getElementsByClassName("cdx-block")[0].appendChild(e);
|
|
2880
|
+
}
|
|
2881
|
+
resizeClick(t, e, i) {
|
|
2882
|
+
const s = document.getElementsByClassName("codex-editor")[0].clientWidth;
|
|
2883
|
+
let n = 0, r = 0;
|
|
2884
|
+
const o = (d) => {
|
|
2885
|
+
const l = d.clientX - n, h = r + l;
|
|
2886
|
+
h > 50 && h < s && (t.style.width = h + "px");
|
|
2887
|
+
}, a = () => {
|
|
2888
|
+
const d = parseInt(window.getComputedStyle(t).width, 10);
|
|
2889
|
+
d > 0 && (this.data.resizeSize = d), document.removeEventListener("mousemove", o), document.removeEventListener("mouseup", a), this.block.dispatchChange();
|
|
2890
|
+
};
|
|
2891
|
+
document.addEventListener("mousemove", o), document.addEventListener("mouseup", a), n = i.clientX, r = parseInt(window.getComputedStyle(t).width, 10);
|
|
2892
|
+
}
|
|
2893
|
+
unresize(t) {
|
|
2894
|
+
const e = t.getElementsByClassName("resizable")[0];
|
|
2895
|
+
e && t.getElementsByClassName("cdx-block")[0].removeChild(e), t.getElementsByClassName("cdx-block")[0].style.width = "auto";
|
|
2896
|
+
}
|
|
2897
|
+
unwrap(t) {
|
|
2898
|
+
this.buttons.forEach((n) => {
|
|
2899
|
+
n.classList.remove(this.CSS.buttonActive);
|
|
2900
|
+
}), t.classList.remove(this.CSS.isFloatLeft), t.classList.remove(this.CSS.isFloatRight), t.classList.remove(this.CSS.isCenter), t.classList.remove(this.CSS.isSizeSmall), t.classList.remove(this.CSS.isSizeMiddle), t.classList.remove(this.CSS.isSizeLarge), t.classList.remove(this.CSS.isResize), t.classList.remove(this.CSS.isCrop);
|
|
2901
|
+
const e = t.getElementsByClassName("cdx-block")[0];
|
|
2902
|
+
e.getElementsByTagName("img")[0].classList.remove("isCropped"), e.classList.remove("isCropping"), e.style.minWidth = "", e.style.maxWidth = "";
|
|
2903
|
+
const i = t.getElementsByClassName("image-tool__image")[0];
|
|
2904
|
+
i.style.width = "", i.style.height = "";
|
|
2905
|
+
const s = i.getElementsByTagName("img")[0];
|
|
2906
|
+
return s.style.left = "", s.style.top = "", s.style.width = "", s.style.height = "", this.unresize(t), this.uncrop(t), this.data.cropperInterface && (this.data.cropperInterface.destroy(), this.data.cropperInterface = void 0), this.data.cropperFrameHeight = 0, this.data.cropperFrameWidth = 0, this.data.cropperFrameLeft = 0, this.data.cropperFrameTop = 0, this.data.cropperImageHeight = 0, this.data.cropperImageWidth = 0, t;
|
|
2907
|
+
}
|
|
2908
|
+
save() {
|
|
2909
|
+
return this.data;
|
|
2910
|
+
}
|
|
2911
|
+
wrap(t) {
|
|
2912
|
+
return this.wrapper || (this.wrapper = this.createView()), this.apply(t), t;
|
|
2913
|
+
}
|
|
2914
|
+
tuneNameToI18nKey(t) {
|
|
2915
|
+
return { crop: "Crop", resize: "Resize" }[t];
|
|
2916
|
+
}
|
|
2917
|
+
createView() {
|
|
2918
|
+
this.buttons = this.settings.map((e) => {
|
|
2919
|
+
const i = document.createElement("div"), s = document.createElement("span"), n = document.createElement("span");
|
|
2920
|
+
return i.classList.add(this.CSS.button), n.style.fontSize = "8px", s.innerHTML = e.icon, n.innerHTML = e.label, i.appendChild(s), i.appendChild(n), i.dataset.tune = e.name, i.title = e.label, i.addEventListener("click", (r) => this.tuneClicked(r, i)), this.api.tooltip.onHover(i, this.api.i18n.t(this.tuneNameToI18nKey(e.name))), i;
|
|
2921
|
+
});
|
|
2922
|
+
const t = document.createElement("div");
|
|
2923
|
+
return this.buttons.forEach((e) => {
|
|
2924
|
+
t.appendChild(e);
|
|
2925
|
+
}), t.classList.add(this.CSS.wrapper), t;
|
|
2926
|
+
}
|
|
2927
|
+
isTuneActive(t) {
|
|
2928
|
+
return !!this.data[t];
|
|
2929
|
+
}
|
|
2930
|
+
render() {
|
|
2931
|
+
return this.buttons.forEach((t) => {
|
|
2932
|
+
const e = t.dataset.tune || "";
|
|
2933
|
+
t.classList.toggle(this.CSS.buttonActive, this.isTuneActive(e));
|
|
2934
|
+
}), this.view;
|
|
2935
|
+
}
|
|
2936
|
+
destroy() {
|
|
2937
|
+
this.wrapper = void 0, this.buttons = [];
|
|
2938
|
+
}
|
|
2939
|
+
_toggleTune(t) {
|
|
2940
|
+
this.setTune(t);
|
|
2941
|
+
}
|
|
2942
|
+
}
|
|
2943
|
+
const ke = { class: "ebl-editor", id: "holder" }, we = Nt({ name: "EblEditor", inheritAttrs: !1, __name: "Editor", props: { readOnly: { type: Boolean, default: !1 }, placeholder: { default: "Enter something" }, data: { default: () => ({ blocks: [] }) }, locale: { default: {} }, userStore: {} }, emits: ["onReady", "onChange"], setup(c, { expose: t, emit: e }) {
|
|
2944
|
+
const i = zt("EblEditorSettings");
|
|
2945
|
+
let s = e;
|
|
2946
|
+
const n = c;
|
|
2826
2947
|
let r = null;
|
|
2827
|
-
|
|
2828
|
-
|
|
2829
|
-
|
|
2948
|
+
const o = ["indent", "blockAlignment"];
|
|
2949
|
+
function a() {
|
|
2950
|
+
return new Promise((d, l) => {
|
|
2951
|
+
if (r === null) return d(!1);
|
|
2952
|
+
r.save().then((h) => h.blocks.length > 0 ? d(!0) : d(!1));
|
|
2830
2953
|
});
|
|
2831
2954
|
}
|
|
2832
2955
|
return Ft(() => {
|
|
2833
|
-
const
|
|
2834
|
-
r = new
|
|
2835
|
-
|
|
2956
|
+
const d = Pt(n.data);
|
|
2957
|
+
r = new qt({ holder: "holder", autofocus: !0, defaultBlock: "paragraph", placeholder: n.placeholder, tunes: o, tools: { inlineCode: $, underline: nt, Color: { class: pe }, marker: { class: W }, indent: { class: st }, alert: { class: H, inlineToolbar: !0 }, List: { class: V, inlineToolbar: !0, config: { defaultStyle: "unordered" } }, h1: { class: te, inlineToolbar: !0 }, h2: { class: ee, inlineToolbar: !0 }, h3: { class: ie, inlineToolbar: !0 }, h4: { class: se, inlineToolbar: !0 }, h5: { class: ne, inlineToolbar: !0 }, h6: { class: re, inlineToolbar: !0 }, paragraph: { class: at, inlineToolbar: !0 }, blockAlignment: { class: ot, inlineToolbar: !0 }, code: { class: j, config: { lang: "javascript", theme: "catppuccin-latte" } }, quote: { class: oe, inlineToolbar: !0 }, delimiter: ae, table: { class: me, inlineToolbar: !0, config: { rows: 2, cols: 3 } }, image: { class: K, inlineToolbar: !0, tunes: o.concat(["imageResize"]), config: { types: ".png,.jpeg,.jpg,.gif,.webp", userStore: n.userStore, endpoints: { byFile: i == null ? void 0 : i.fileUploadEndpoint, byUrl: i == null ? void 0 : i.urlUploadEndpoint }, features: { caption: !1, stretch: !1, border: !1, background: !1 } } }, imageResize: { class: ve, config: { resize: !0, crop: !1 } } }, data: d, readOnly: n.readOnly, i18n: n.locale, onChange: (l, h) => {
|
|
2958
|
+
s("onChange", l, h);
|
|
2836
2959
|
}, onReady: () => {
|
|
2837
|
-
new
|
|
2838
|
-
} }).initialize(
|
|
2960
|
+
new Qt("holder", n.readOnly, r, "1px solid #999"), new he({ editor: r, config: { debounceTimer: 200, maxLength: 100 }, onUpdate: () => {
|
|
2961
|
+
} }).initialize(d), s("onReady");
|
|
2839
2962
|
} });
|
|
2840
|
-
}),
|
|
2963
|
+
}), Wt(() => {
|
|
2841
2964
|
r !== null && (r.destroy(), r = null);
|
|
2842
|
-
}), (
|
|
2843
|
-
|
|
2965
|
+
}), t({ validate: a, getData: function() {
|
|
2966
|
+
return new Promise((d, l) => {
|
|
2967
|
+
if (r === null) return d(null);
|
|
2968
|
+
r.save().then((h) => d(h));
|
|
2969
|
+
});
|
|
2970
|
+
} }), (d, l) => (jt(), $t("div", ke, [Ut("button", { onClick: a }, "保存")]));
|
|
2971
|
+
} }), _t = [we];
|
|
2844
2972
|
let Rt = [];
|
|
2845
|
-
for (let
|
|
2846
|
-
const t =
|
|
2973
|
+
for (let c in _t) {
|
|
2974
|
+
const t = Jt(_t[c]);
|
|
2847
2975
|
Rt.push(t);
|
|
2848
2976
|
}
|
|
2849
|
-
const
|
|
2850
|
-
t[
|
|
2851
|
-
} }))(Rt),
|
|
2977
|
+
const Me = { messages: { ui: { blockTunes: { toggler: { "Click to tune": "可拖拽和点击" } }, toolbar: { toolbox: { Add: "添加", Filter: "过滤", "Nothing found": "无内容" }, popover: { Filter: "过滤", "Nothing found": "无内容" } }, popover: { Filter: "筛选", "Nothing found": "未找到任何内容", "Convert to": "转化为" } }, toolNames: { Text: "段落", H1: "一级标题", H2: "二级标题", H3: "三级标题", H4: "四级标题", H5: "五级标题", H6: "六级标题", "Ordered List": "有序列表", "Unordered List": "无序列表", Checklist: "任务列表", Quote: "引用", Code: "代码块", Delimiter: "分割线", Link: "链接", Bold: "加粗", Italic: "倾斜", Alert: "高亮块", indent: "缩进", Marker: "突出显示", Color: "文本颜色", Underline: "下划线", InlineCode: "行内代码", Table: "表格", Image: "图片" }, tools: { image: { "Couldn’t upload image. Please try another.": "上传图片失败,请稍后重试。" }, table: { "Add row above": "在下面插入行", "Add row below": "在下面插入行", "Delete row": "删除行", "Add column to left": "在左边插入列", "Add column to right": "在右边插入列", "Delete column": "删除列", "With headings": "使用标题行", "Without headings": "不使用标题行" }, marker: { Marker: "突出显示" }, link: { "Add a link": "添加链接", Save: "保存", "Pasted link is not valid.": "链接地址无效" }, List: { Unordered: "无序", Ordered: "有序", Checklist: "任务列表", "Counter type": "计数器类型", Numeric: "阿拉伯数字", "Lower Roman": "小写罗马数字", "Upper Roman": "大写罗马数字", "Lower Alpha": "小写字母", "Upper Alpha": "大写字母", "Start with": "从" }, paragraph: { "Enter something": "请输入内容" }, stub: { "The block can not be displayed correctly.": "该模块不能放置在这里" }, code: { "Enter your code": "输入代码", Copied: "已复制" }, convertTo: { "Convert to": "转化为" }, alert: { "alert-primary": "主要样式", "alert-secondary": "次要样式", "alert-info": "信息", "alert-success": "成功", "alert-warning": "警告", "alert-danger": "危险", "alert-light": "浅色", "alert-dark": "深色", "align-left": "左对齐", "align-center": "居中", "align-right": "右对齐" } }, blockTunes: { delete: { Delete: "删除", "Click to delete": "点击删除" }, moveUp: { "Move up": "向上移" }, moveDown: { "Move down": "向下移" }, filter: { Filter: "过滤" }, blockAlignment: { "left align": "左对齐", "center align": "居中对齐", "right align": "右对齐", "justify align": "两端对齐" }, indent: { "Indent right": "向右缩进", "Indent left": "向左缩进" } } } }, Dt = /* @__PURE__ */ ((c = []) => ({ version: "1.1.2", install: (t, e) => {
|
|
2978
|
+
t[dt] || (t[dt] = !0, c.forEach((i) => t.use(i)), e && t.provide("EblEditorSettings", e));
|
|
2979
|
+
} }))(Rt), _e = Dt.install, Ie = Dt.version;
|
|
2852
2980
|
export {
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2981
|
+
we as EblEditor,
|
|
2982
|
+
Dt as default,
|
|
2983
|
+
_e as install,
|
|
2984
|
+
Ie as version,
|
|
2985
|
+
Me as zhCn
|
|
2858
2986
|
};
|
|
2859
2987
|
//# sourceMappingURL=index.mjs.map
|