@aquera/nile-elements 0.1.67-beta-1.5 → 0.1.67-beta-1.6
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/demo/index.html +13 -6
- package/dist/index.js +51 -48
- package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js +1 -1
- package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js.map +1 -1
- package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js +1 -1
- package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js.map +1 -1
- package/dist/nile-rich-text-editor/nile-rich-text-editor.css.esm.js +11 -8
- package/dist/nile-rich-text-editor/nile-rich-text-editor.esm.js +1 -1
- package/dist/nile-rich-text-editor/nile-rte-select.cjs.js +1 -1
- package/dist/nile-rich-text-editor/nile-rte-select.cjs.js.map +1 -1
- package/dist/nile-rich-text-editor/nile-rte-select.esm.js +39 -39
- package/dist/nile-rich-text-editor/utils.cjs.js.map +1 -1
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js +11 -8
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js.map +1 -1
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js +33 -25
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js.map +1 -1
- package/dist/src/nile-rich-text-editor/nile-rte-select.js +62 -57
- package/dist/src/nile-rich-text-editor/nile-rte-select.js.map +1 -1
- package/dist/src/nile-rich-text-editor/rte-utils/content.d.ts +2 -0
- package/dist/src/nile-rich-text-editor/rte-utils/content.js +25 -0
- package/dist/src/nile-rich-text-editor/rte-utils/content.js.map +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/css.d.ts +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/css.js +9 -0
- package/dist/src/nile-rich-text-editor/rte-utils/css.js.map +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/dom.d.ts +2 -0
- package/dist/src/nile-rich-text-editor/rte-utils/dom.js +48 -0
- package/dist/src/nile-rich-text-editor/rte-utils/dom.js.map +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/formatting.d.ts +2 -0
- package/dist/src/nile-rich-text-editor/rte-utils/formatting.js +69 -0
- package/dist/src/nile-rich-text-editor/rte-utils/formatting.js.map +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/keys.d.ts +2 -0
- package/dist/src/nile-rich-text-editor/rte-utils/keys.js +38 -0
- package/dist/src/nile-rich-text-editor/rte-utils/keys.js.map +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/lists.d.ts +2 -0
- package/dist/src/nile-rich-text-editor/rte-utils/lists.js +28 -0
- package/dist/src/nile-rich-text-editor/rte-utils/lists.js.map +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/selection.d.ts +17 -0
- package/dist/src/nile-rich-text-editor/rte-utils/selection.js +39 -0
- package/dist/src/nile-rich-text-editor/rte-utils/selection.js.map +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/toolbar.d.ts +28 -0
- package/dist/src/nile-rich-text-editor/rte-utils/toolbar.js +161 -0
- package/dist/src/nile-rich-text-editor/rte-utils/toolbar.js.map +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/toolbarState.d.ts +13 -0
- package/dist/src/nile-rich-text-editor/rte-utils/toolbarState.js +119 -0
- package/dist/src/nile-rich-text-editor/rte-utils/toolbarState.js.map +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/vars.d.ts +1 -0
- package/dist/src/nile-rich-text-editor/rte-utils/vars.js +14 -0
- package/dist/src/nile-rich-text-editor/rte-utils/vars.js.map +1 -0
- package/dist/src/nile-rich-text-editor/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-rich-text-editor/nile-rich-text-editor.css.ts +11 -8
- package/src/nile-rich-text-editor/nile-rich-text-editor.ts +46 -26
- package/src/nile-rich-text-editor/nile-rte-select.ts +178 -173
- package/src/nile-rich-text-editor/utils.ts +342 -341
package/demo/index.html
CHANGED
@@ -172,11 +172,12 @@ h2{
|
|
172
172
|
<nile-rte-toolbar-item name="bold" label="Bold"></nile-rte-toolbar-item>
|
173
173
|
<nile-rte-toolbar-item name="italic" label="Italic"></nile-rte-toolbar-item>
|
174
174
|
<nile-rte-toolbar-item name="underline" label="Underline"></nile-rte-toolbar-item>
|
175
|
+
<nile-rte-divider></nile-rte-divider>
|
175
176
|
|
176
177
|
<nile-rte-color type="foreColor" label="Text" value="#000000"></nile-rte-color>
|
177
178
|
<nile-rte-color mode="background" label="Highlight" value="#ffffff"></nile-rte-color>
|
178
179
|
|
179
|
-
<nile-rte-select
|
180
|
+
<!-- <nile-rte-select
|
180
181
|
type="font"
|
181
182
|
label="Font"
|
182
183
|
options='[
|
@@ -187,7 +188,7 @@ h2{
|
|
187
188
|
{"value":"Courier New","label":"Courier New"},
|
188
189
|
{"value":"Monaco","label":"Monaco"}
|
189
190
|
]'>
|
190
|
-
</nile-rte-select>
|
191
|
+
</nile-rte-select> -->
|
191
192
|
|
192
193
|
<nile-rte-select
|
193
194
|
type="align"
|
@@ -195,14 +196,15 @@ h2{
|
|
195
196
|
{"value":"left" },
|
196
197
|
{"value":"center" },
|
197
198
|
{"value":"right" },
|
198
|
-
{"value":"justify"}
|
199
|
+
{"value":"justify" }
|
199
200
|
]'
|
200
201
|
label="Align"></nile-rte-select>
|
201
202
|
|
202
|
-
<nile-rte-toolbar-item name="ul" ></nile-rte-toolbar-item>
|
203
|
-
<nile-rte-toolbar-item name="ol" ></nile-rte-toolbar-item>
|
203
|
+
<!-- <nile-rte-toolbar-item name="ul" ></nile-rte-toolbar-item>
|
204
|
+
<nile-rte-toolbar-item name="ol" ></nile-rte-toolbar-item> -->
|
205
|
+
<nile-rte-divider></nile-rte-divider>
|
204
206
|
<nile-rte-toolbar-item name="clear" ></nile-rte-toolbar-item>
|
205
|
-
<nile-rte-toolbar-item name="link" ></nile-rte-toolbar-item>
|
207
|
+
<!-- <nile-rte-toolbar-item name="link" ></nile-rte-toolbar-item> -->
|
206
208
|
</nile-rte-toolbar>
|
207
209
|
|
208
210
|
<!-- Optional live preview -->
|
@@ -218,6 +220,11 @@ document.addEventListener('content-changed', e => {
|
|
218
220
|
});
|
219
221
|
</script>
|
220
222
|
<!-- <script type="module">
|
223
|
+
|
224
|
+
|
225
|
+
const rte = document.querySelector('nile-rich-text-editor');
|
226
|
+
rte.value = '<h2>Welcome</h2><p>This came from JS.</p>';
|
227
|
+
|
221
228
|
// Optional: listen to editor content changes (keep if you already use it)
|
222
229
|
document.addEventListener('content-changed', e => {
|
223
230
|
console.log('Received from anywhere', e.detail.content);
|
package/dist/index.js
CHANGED
@@ -12891,50 +12891,35 @@ class Xi{constructor(e){this._element=null;const t=e??window;this._node=t,e&&(th
|
|
12891
12891
|
></nile-icon>
|
12892
12892
|
</slot>
|
12893
12893
|
</div>
|
12894
|
-
`}let Yp=class extends Pe{constructor(){super(...arguments),this.errorMessage="",this.fileUrl="",this.uploadStatus=0,this.state=yp.DEFAULT,this.variant=hp.HORIZONTAL,this.inputFileName="",this.inputFileHtml=null,this.originalUrl="",this.isStringTruncated=!1,this.customFile=new File([],"Harsh",{type:"image/png"})}static get styles(){return[dp]}connectedCallback(){super.connectedCallback(),this.emit(Ap.NILE_INIT)}firstUpdated(e){super.firstUpdated(e)}updated(e){e.has("uploadStatus")&&this.uploadStatus?this.uploadStatus<100?this.createUploadState(this.inputFile,this.uploadStatus):this.createState(this.inputFile):e.has("inputFile")&&this.inputFile?(this.createState(this.inputFile),this.emit(Ap.NILE_RECEIVE)):e.has("fileUrl")&&this.fileUrl?(this.handleFileUrl(this.fileUrl),this.emit(Ap.NILE_RECEIVE)):e.has("errorMessage")&&this.createState(this.inputFile)}createUploadState(e,t){const M=this.variant===hp.HORIZONTAL;this.inputFileHtml=M?Ep(e,t):Up(e,t),this.requestUpdate()}async handleFileUrl(e){this.originalUrl=e;try{const t=await fetch(e),M=await t.blob(),i=this.inputFileName||e.split("/").pop()||Op.UNKNOWN_FILE_NAME,N=new File([M],i,{type:M.type});this.createState(N)}catch(e){const t=new File([],this.inputFileName||Op.UNKNOWN_FILE_NAME,{type:"application/octet-stream"});this.errorMessage=Op.FAILED_TO_LOAD,console.error(this.errorMessage),this.inputFileHtml=this.variant===hp.HORIZONTAL?mp(t,this.errorMessage,this.originalUrl,this):bp(t,this.errorMessage,this.originalUrl,this),this.requestUpdate()}}async createState(e){const t=this.variant===hp.HORIZONTAL;if(this.errorMessage)this.inputFileHtml=t?mp(e,this.errorMessage,this.originalUrl,this):bp(e,this.errorMessage,this.originalUrl,this);else if(e&&e.type.startsWith("image/"))try{const M=await(e=>new Promise(((t,M)=>{const i=new FileReader;e?i.readAsDataURL(e):M(Op.NO_FILE_SELECTED),i.onload=()=>{const e=i.result;t(e)},i.onerror=e=>{M(Op.UNABLE_TO_GENEARTE_URL)}})))(e);this.inputFileHtml=t?wp(M,e,this.originalUrl):Cp(M,e,this.originalUrl)}catch(M){this.inputFileHtml=t?kp(e,this.originalUrl):fp(e,this.originalUrl)}else this.inputFileHtml=t?kp(e,this.originalUrl):fp(e,this.originalUrl);this.requestUpdate()}getState(){return"horizontal"===this.variant?this.getHorizontalStates():this.getVerticalStates()}getHorizontalStates(){switch(this.state){case yp.UPLOADING:return Ep(this.customFile,2);case yp.PREVIEW:return wp("https://s6.imgcdn.dev/YINe6a.jpg",this.customFile,this.originalUrl);case yp.NO_PREVIEW:return kp(this.customFile,this.originalUrl);case yp.ERROR:return mp(this.customFile,Op.CUSTOM_ERROR,this.originalUrl,this);default:return this.inputFileHtml||R``}}getVerticalStates(){switch(this.state){case yp.UPLOADING:return Up(this.customFile,2);case yp.PREVIEW:return Cp("https://s6.imgcdn.dev/YINe6a.jpg",this.customFile,this.originalUrl);case yp.NO_PREVIEW:return fp(this.customFile,this.originalUrl);case yp.ERROR:return bp(this.customFile,Op.CUSTOM_ERROR,this.originalUrl,this);default:return this.inputFileHtml||R``}}render(){return this.state?this.getState():R`${this.inputFileHtml??R``}`}disconnectedCallback(){super.disconnectedCallback(),this.emit(Ap.NILE_DESTROY)}};e([ge({type:String})],Yp.prototype,"errorMessage",void 0),e([ge({type:Object})],Yp.prototype,"inputFile",void 0),e([ge({type:String})],Yp.prototype,"fileUrl",void 0),e([ge({type:Number})],Yp.prototype,"uploadStatus",void 0),e([ge({type:String})],Yp.prototype,"state",void 0),e([ge({type:String})],Yp.prototype,"variant",void 0),e([ge({type:String})],Yp.prototype,"inputFileName",void 0),Yp=e([le("nile-file-preview")],Yp);let vp=class extends re{createRenderRoot(){return this}shouldUpdate(){return!1}};vp=e([le("nile-rte-toolbar")],vp);let Zp=class extends re{constructor(){super(...arguments),this.name="",this.label=""}createRenderRoot(){return this}shouldUpdate(){return!1}};e([ge({type:String})],Zp.prototype,"name",void 0),e([ge({type:String})],Zp.prototype,"label",void 0),Zp=e([le("nile-rte-toolbar-item")],Zp);const Vp=new Set(["p","h1","h2","h3","h4","h5","h6"]);function Wp(e){return Vp.has(e)}let Pp=class extends re{constructor(){super(...arguments),this.type="",this.options="[]",this.label="",this.selectedValue=""}createRenderRoot(){return this}mapAlignIcon(e){return{left:"format_align_left",center:"format_align_middle",right:"format_align_right",justify:"format_align_justify"}[e]||"
|
12895
|
-
|
12896
|
-
|
12897
|
-
|
12898
|
-
|
12899
|
-
|
12900
|
-
|
12901
|
-
|
12902
|
-
|
12903
|
-
|
12904
|
-
|
12905
|
-
|
12906
|
-
|
12907
|
-
|
12908
|
-
|
12909
|
-
|
12910
|
-
|
12911
|
-
<nile-dropdown class="rte-default-dd">
|
12912
|
-
<nile-button
|
12913
|
-
slot="trigger"
|
12914
|
-
variant="tertiary"
|
12915
|
-
class="rte-default-trigger"
|
12916
|
-
style="font-family: ${t?.value||"inherit"}">
|
12917
|
-
${M} <nile-icon name="arrowdown"></nile-icon>
|
12918
|
-
</nile-button>
|
12919
|
-
<nile-menu class="rte-default-menu">
|
12920
|
-
${e.map((e=>R`
|
12921
|
-
<nile-menu-item
|
12922
|
-
style="font-family: ${e.value}"
|
12923
|
-
?active=${e.value===this.selectedValue}
|
12924
|
-
@click=${()=>this.onSelect(e.value)}>
|
12925
|
-
${e.label}
|
12926
|
-
</nile-menu-item>
|
12927
|
-
`))}
|
12928
|
-
</nile-menu>
|
12929
|
-
</nile-dropdown>
|
12930
|
-
`}const M=t?.label||this.label||"Select";return R`
|
12894
|
+
`}let Yp=class extends Pe{constructor(){super(...arguments),this.errorMessage="",this.fileUrl="",this.uploadStatus=0,this.state=yp.DEFAULT,this.variant=hp.HORIZONTAL,this.inputFileName="",this.inputFileHtml=null,this.originalUrl="",this.isStringTruncated=!1,this.customFile=new File([],"Harsh",{type:"image/png"})}static get styles(){return[dp]}connectedCallback(){super.connectedCallback(),this.emit(Ap.NILE_INIT)}firstUpdated(e){super.firstUpdated(e)}updated(e){e.has("uploadStatus")&&this.uploadStatus?this.uploadStatus<100?this.createUploadState(this.inputFile,this.uploadStatus):this.createState(this.inputFile):e.has("inputFile")&&this.inputFile?(this.createState(this.inputFile),this.emit(Ap.NILE_RECEIVE)):e.has("fileUrl")&&this.fileUrl?(this.handleFileUrl(this.fileUrl),this.emit(Ap.NILE_RECEIVE)):e.has("errorMessage")&&this.createState(this.inputFile)}createUploadState(e,t){const M=this.variant===hp.HORIZONTAL;this.inputFileHtml=M?Ep(e,t):Up(e,t),this.requestUpdate()}async handleFileUrl(e){this.originalUrl=e;try{const t=await fetch(e),M=await t.blob(),i=this.inputFileName||e.split("/").pop()||Op.UNKNOWN_FILE_NAME,N=new File([M],i,{type:M.type});this.createState(N)}catch(e){const t=new File([],this.inputFileName||Op.UNKNOWN_FILE_NAME,{type:"application/octet-stream"});this.errorMessage=Op.FAILED_TO_LOAD,console.error(this.errorMessage),this.inputFileHtml=this.variant===hp.HORIZONTAL?mp(t,this.errorMessage,this.originalUrl,this):bp(t,this.errorMessage,this.originalUrl,this),this.requestUpdate()}}async createState(e){const t=this.variant===hp.HORIZONTAL;if(this.errorMessage)this.inputFileHtml=t?mp(e,this.errorMessage,this.originalUrl,this):bp(e,this.errorMessage,this.originalUrl,this);else if(e&&e.type.startsWith("image/"))try{const M=await(e=>new Promise(((t,M)=>{const i=new FileReader;e?i.readAsDataURL(e):M(Op.NO_FILE_SELECTED),i.onload=()=>{const e=i.result;t(e)},i.onerror=e=>{M(Op.UNABLE_TO_GENEARTE_URL)}})))(e);this.inputFileHtml=t?wp(M,e,this.originalUrl):Cp(M,e,this.originalUrl)}catch(M){this.inputFileHtml=t?kp(e,this.originalUrl):fp(e,this.originalUrl)}else this.inputFileHtml=t?kp(e,this.originalUrl):fp(e,this.originalUrl);this.requestUpdate()}getState(){return"horizontal"===this.variant?this.getHorizontalStates():this.getVerticalStates()}getHorizontalStates(){switch(this.state){case yp.UPLOADING:return Ep(this.customFile,2);case yp.PREVIEW:return wp("https://s6.imgcdn.dev/YINe6a.jpg",this.customFile,this.originalUrl);case yp.NO_PREVIEW:return kp(this.customFile,this.originalUrl);case yp.ERROR:return mp(this.customFile,Op.CUSTOM_ERROR,this.originalUrl,this);default:return this.inputFileHtml||R``}}getVerticalStates(){switch(this.state){case yp.UPLOADING:return Up(this.customFile,2);case yp.PREVIEW:return Cp("https://s6.imgcdn.dev/YINe6a.jpg",this.customFile,this.originalUrl);case yp.NO_PREVIEW:return fp(this.customFile,this.originalUrl);case yp.ERROR:return bp(this.customFile,Op.CUSTOM_ERROR,this.originalUrl,this);default:return this.inputFileHtml||R``}}render(){return this.state?this.getState():R`${this.inputFileHtml??R``}`}disconnectedCallback(){super.disconnectedCallback(),this.emit(Ap.NILE_DESTROY)}};e([ge({type:String})],Yp.prototype,"errorMessage",void 0),e([ge({type:Object})],Yp.prototype,"inputFile",void 0),e([ge({type:String})],Yp.prototype,"fileUrl",void 0),e([ge({type:Number})],Yp.prototype,"uploadStatus",void 0),e([ge({type:String})],Yp.prototype,"state",void 0),e([ge({type:String})],Yp.prototype,"variant",void 0),e([ge({type:String})],Yp.prototype,"inputFileName",void 0),Yp=e([le("nile-file-preview")],Yp);let vp=class extends re{createRenderRoot(){return this}shouldUpdate(){return!1}};vp=e([le("nile-rte-toolbar")],vp);let Zp=class extends re{constructor(){super(...arguments),this.name="",this.label=""}createRenderRoot(){return this}shouldUpdate(){return!1}};e([ge({type:String})],Zp.prototype,"name",void 0),e([ge({type:String})],Zp.prototype,"label",void 0),Zp=e([le("nile-rte-toolbar-item")],Zp);const Vp=new Set(["p","h1","h2","h3","h4","h5","h6"]);function Wp(e){return Vp.has(e)}let Pp=class extends re{constructor(){super(...arguments),this.type="",this.options="[]",this.label="",this.selectedValue=""}createRenderRoot(){return this}mapAlignIcon(e){return{left:"format_align_left",center:"format_align_middle",right:"format_align_right",justify:"format_align_justify"}[e]||"format_align_left"}get parsedOptions(){const e=this.optionsObj??this.options;let t=(()=>{if(Array.isArray(e))return e;try{return JSON.parse(String(e))}catch{return[]}})().map((e=>{const t=e?.value??e;return{value:t,label:e?.label??e?.value??e,icon:e?.icon??("align"===this.type?this.mapAlignIcon(String(t)):void 0)}}));if("heading"===this.type){t.length;t=t.filter((e=>Wp(e.value))),t.length,this.selectedValue&&!Wp(this.selectedValue)&&(this.selectedValue="")}return t}ensureDefault(){if(!this.selectedValue){const e=this.parsedOptions[0];e&&(this.selectedValue=e.value)}}onSelect(e){"heading"!==this.type||Wp(e)?(this.selectedValue=e,this.dispatchEvent(new CustomEvent("change",{detail:e,bubbles:!0,composed:!0}))):console.warn(`[nile-rte-select] Ignoring invalid heading value: ${e}`)}connectedCallback(){super.connectedCallback(),this.injectLocalStyles()}injectLocalStyles(){if(this.querySelector("style[data-rte-select-style]"))return;const e=document.createElement("style");e.setAttribute("data-rte-select-style","true"),e.textContent="\n nile-menu.rte-align-menu::part(menu__items-wrapper) {\n display: flex;\n }\n nile-menu.rte-align-menu,\n nile-menu.rte-default-menu {\n margin-top: 0px;\n }\n nile-button.rte-align-trigger::part(base),\n nile-button.rte-default-trigger::part(base) {\n min-width: 32px;\n height: 32px;\n padding: 0px 6px;\n box-shadow: none;\n }\n nile-button.rte-align-trigger::part(base) {\n \n\n border: none;\n}\n ",this.insertBefore(e,this.firstChild)}render(){const e=this.parsedOptions;this.ensureDefault();const t=e.find((e=>e.value===this.selectedValue));if("align"===this.type){const M=t?.icon?R`<nile-icon name="${t.icon}"></nile-icon>`:this.label||"Align";return R`
|
12895
|
+
<nile-dropdown class="rte-align-dd">
|
12896
|
+
<nile-button slot="trigger" variant="tertiary" class="rte-align-trigger">
|
12897
|
+
${M}
|
12898
|
+
</nile-button>
|
12899
|
+
<nile-menu class="rte-align-menu">
|
12900
|
+
${e.map((e=>R`
|
12901
|
+
<nile-menu-item
|
12902
|
+
class="rte-align-item"
|
12903
|
+
?active=${e.value===this.selectedValue}
|
12904
|
+
@click=${()=>this.onSelect(e.value)}>
|
12905
|
+
<nile-icon name="${e.icon}"></nile-icon>
|
12906
|
+
</nile-menu-item>
|
12907
|
+
`))}
|
12908
|
+
</nile-menu>
|
12909
|
+
</nile-dropdown>
|
12910
|
+
`}if("font"===this.type){const M=t?.label||this.label||"Font";return R`
|
12931
12911
|
<nile-dropdown class="rte-default-dd">
|
12932
|
-
<nile-button
|
12912
|
+
<nile-button
|
12913
|
+
slot="trigger"
|
12914
|
+
variant="tertiary"
|
12915
|
+
class="rte-default-trigger"
|
12916
|
+
style="font-family: ${t?.value||"inherit"}">
|
12933
12917
|
${M} <nile-icon name="arrowdown"></nile-icon>
|
12934
12918
|
</nile-button>
|
12935
12919
|
<nile-menu class="rte-default-menu">
|
12936
12920
|
${e.map((e=>R`
|
12937
12921
|
<nile-menu-item
|
12922
|
+
style="font-family: ${e.value}"
|
12938
12923
|
?active=${e.value===this.selectedValue}
|
12939
12924
|
@click=${()=>this.onSelect(e.value)}>
|
12940
12925
|
${e.label}
|
@@ -12942,7 +12927,22 @@ class Xi{constructor(e){this._element=null;const t=e??window;this._node=t,e&&(th
|
|
12942
12927
|
`))}
|
12943
12928
|
</nile-menu>
|
12944
12929
|
</nile-dropdown>
|
12945
|
-
`}};e([ge({type:String})],Pp.prototype,"type",void 0),e([ge({type:String})],Pp.prototype,"options",void 0),e([ge({attribute:!1})],Pp.prototype,"optionsObj",void 0),e([ge({type:String})],Pp.prototype,"label",void 0),e([ce()],Pp.prototype,"selectedValue",void 0),Pp=e([le("nile-rte-select")],Pp);let Rp=class extends re{constructor(){super(...arguments),this.type="foreColor",this.label="Text Color",this.value="#000000"}createRenderRoot(){return this}shouldUpdate(){return!1}};e([ge({type:String})],Rp.prototype,"type",void 0),e([ge({type:String})],Rp.prototype,"label",void 0),e([ge({type:String})],Rp.prototype,"value",void 0),Rp=e([le("nile-rte-color")],Rp);let Gp=class extends re{createRenderRoot(){return this}shouldUpdate(){return!1}};Gp=e([le("nile-rte-divider")],Gp);let _p=class extends re{createRenderRoot(){return this}shouldUpdate(){return!1}};_p=e([le("nile-rte-preview")],_p);let Bp=class extends re{constructor(){super(...arguments),this.mentions={},this.mentionFormat={},this.itemsFormats={},this.mentionColors={},this.externalConfig={},this.itemsConfig={},this.itemsColors={},this.editorEl=null,this.hostEl=null,this.dropdownEl=null,this.menuEl=null,this.lastRange=null,this.mentionOpen=!1,this.mentionTrigger=null,this.mentionQuery="",this.mentionSuggestions=[],this.mentionFiltered=[],this.mentionX=0,this.mentionY=0,this.triggerBtn=null,this.mo=null,this.onSelectionChange=()=>{if(!this.editorEl)return;const e=document.getSelection();if(!e||0===e.rangeCount)return;const t=e.getRangeAt(0);this.editorEl.contains(t.commonAncestorContainer)&&(this.lastRange=t.cloneRange())},this.saveSelection=()=>{const e=window.getSelection();e&&e.rangeCount&&(this.lastRange=e.getRangeAt(0).cloneRange())},this.onEditorInput=()=>{this.mentionOpen&&this.handleMention()},this.onEditorKeyUp=e=>{this.saveSelection();const t=e.key,M=this.config;!this.mentionOpen&&t&&M[t]?this.openMention(t):this.mentionOpen&&this.handleMention()},this.onEditorKeyDown=e=>{if(!this.mentionOpen)return;const t=e.key;"ArrowDown"===t||"ArrowUp"===t||"Enter"===t?(e.preventDefault(),"Enter"===t&&this.mentionFiltered.length&&this.selectMention(this.mentionFiltered[0])):"Escape"===t&&(e.preventDefault(),this.closeMention())},this.repositionMention=()=>{if(!this.mentionOpen||!this.hostEl||!this.triggerBtn)return;const e=this.getCaretClientRect();if(!e)return;const t=this.hostEl.getBoundingClientRect();this.mentionX=e.left-t.left,this.mentionY=e.bottom-t.top,this.triggerBtn.style.left=`${this.mentionX}px`,this.triggerBtn.style.top=`${this.mentionY}px`}}createRenderRoot(){return this}getTriggerFormat(e){const t=this.itemsFormats[e]||{},M=this.mentionFormat[e]||{};return{prefix:t.prefix??M.prefix??"",suffix:t.suffix??M.suffix??""}}formatLabel(e,t){const{prefix:M,suffix:i}=this.getTriggerFormat(e);return`${M??""}${t}${i??""}`}get config(){return{...this.externalConfig,...this.mentions,...this.itemsConfig}}attach(e,t){this.editorEl=e,this.hostEl=t,this.injectStyles(),this.ensureMentionDropdown(),this.rebuildConfigFromChildren(),this.mo=new MutationObserver((()=>this.rebuildConfigFromChildren())),this.mo.observe(this,{childList:!0,subtree:!0,attributes:!0}),this.editorEl.addEventListener("input",this.onEditorInput),this.editorEl.addEventListener("mouseup",this.saveSelection),this.editorEl.addEventListener("keyup",this.onEditorKeyUp),this.editorEl.addEventListener("keydown",this.onEditorKeyDown),this.editorEl.addEventListener("scroll",this.repositionMention),document.addEventListener("selectionchange",this.onSelectionChange,!0)}detach(){this.mo&&(this.mo.disconnect(),this.mo=null),this.editorEl&&(this.editorEl.removeEventListener("input",this.onEditorInput),this.editorEl.removeEventListener("mouseup",this.saveSelection),this.editorEl.removeEventListener("keyup",this.onEditorKeyUp),this.editorEl.removeEventListener("keydown",this.onEditorKeyDown),this.editorEl.removeEventListener("scroll",this.repositionMention)),document.removeEventListener("selectionchange",this.onSelectionChange,!0)}setExternalConfig(e){this.externalConfig=e||{}}disconnectedCallback(){this.detach(),super.disconnectedCallback()}rebuildConfigFromChildren(){const e={},t={},M={},i=Array.from(this.querySelectorAll("nile-rte-mentions-item"));for(const N of i){const i=N.mentionsCharacter??N.getAttribute("mentionscharacter")??"";if(!i||"string"!=typeof i)continue;let o=N.mentionsData??(()=>{const e=N.getAttribute("mentionsdata");if(!e)return null;try{const t=JSON.parse(e);return Array.isArray(t)?t.filter((e=>e&&"string"==typeof e.key&&"string"==typeof e.label)):[]}catch{return[]}})();const n=N.mentionsColor??N.getAttribute("mentionscolor")??"",s=N.mentionsPrefix??N.getAttribute("mentionsprefix")??"",r=N.mentionsSuffix??N.getAttribute("mentionssuffix")??"";Array.isArray(o)||(o=[]),e[i]=o,n&&(t[i]=String(n)),(s||r)&&(M[i]={prefix:s,suffix:r})}this.itemsConfig=e,this.itemsColors=t,this.itemsFormats=M}injectStyles(){if(this.querySelector("style[data-mentions-style]"))return;const e=document.createElement("style");e.setAttribute("data-mentions-style","true"),e.textContent="\n .mention-dropdown {\n position: absolute; z-index: 1000; list-style: none; margin: 0; padding: 4px;\n border: 1px solid #e5e7eb; border-radius: 6px; background: #fff;\n box-shadow: 0 4px 10px rgba(0,0,0,.08); max-height: 180px; overflow: auto; font-size: 14px;\n }\n .mention-dropdown li { padding: 6px 8px; cursor: pointer; border-radius: 4px; }\n .mention-dropdown li:hover { background: #f1f5f9; }\n .mention { background: #eef2ff; padding: 0 3px; border-radius: 3px; }\n nile-menu.mentions-menu::part(menu__items-wrapper){\n max-height: 260px;\n }\n\n ",this.insertBefore(e,this.firstChild)}getTriggerColor(e){return this.itemsColors[e]??this.mentionColors[e]}ensureMentionDropdown(){if(this.dropdownEl||!this.hostEl)return;const e=document.createElement("nile-dropdown");e.style.zIndex="1000";const t=document.createElement("nile-button");t.setAttribute("slot","trigger"),t.style.position="absolute",t.style.width="1px",t.style.height="1px",t.style.border="0",t.style.padding="0",t.style.opacity="0",t.style.pointerEvents="none",e.appendChild(t),this.triggerBtn=t;const M=document.createElement("nile-menu");M.classList.add("mentions-menu"),e.appendChild(M),this.hostEl.appendChild(e),this.dropdownEl=e,this.menuEl=M}restoreSelection(){if(!this.lastRange)return;const e=document.getSelection();e&&(e.removeAllRanges(),e.addRange(this.lastRange))}focusAndRestore(){this.editorEl?.focus(),this.restoreSelection()}getCaretClientRect(){const e=document.getSelection();if(!e||0===e.rangeCount)return null;const t=e.getRangeAt(0).cloneRange();t.collapse(!1);const M=t.getClientRects();if(M&&M.length>0)return M[0];const i=document.createElement("span");i.setAttribute("data-caret-marker","1"),i.textContent="",t.insertNode(i);const N=i.getBoundingClientRect(),o=document.createRange();return o.setStartAfter(i),o.collapse(!0),e.removeAllRanges(),e.addRange(o),i.remove(),N||null}openMention(e){if(this.saveSelection(),!this.editorEl||!this.dropdownEl||!this.hostEl)return;const t=this.getCaretClientRect();if(!t)return;const M=this.hostEl.getBoundingClientRect();this.mentionX=t.left-M.left,this.mentionY=t.bottom-M.top,this.mentionTrigger=e,this.mentionSuggestions=this.config[e]||[],this.mentionQuery="",this.updateMentionFiltered(),this.mentionOpen=!0,this.renderMentionList()}closeMention(){this.mentionOpen=!1,this.mentionTrigger=null,this.mentionQuery="",this.mentionFiltered=[],this.dropdownEl?.removeAttribute("open")}handleMention(){if(!this.mentionOpen||!this.mentionTrigger)return;const e=window.getSelection();if(!e||!e.anchorNode)return;let t=e.anchorNode;if(t.nodeType!==Node.TEXT_NODE){const M=t.childNodes?.[e.anchorOffset]||t.firstChild;M?.nodeType===Node.TEXT_NODE&&(t=M)}const M=t&&t.nodeType===Node.TEXT_NODE&&t.textContent||"",i=M.lastIndexOf(this.mentionTrigger);i>=0?(this.mentionQuery=M.substring(i+1),this.updateMentionFiltered(),this.renderMentionList()):this.closeMention()}updateMentionFiltered(){const e=this.mentionQuery.toLowerCase();this.mentionFiltered=(this.mentionSuggestions||[]).filter((t=>t.label.toLowerCase().startsWith(e)))}renderMentionList(){if(this.dropdownEl&&this.menuEl&&this.triggerBtn)if(this.triggerBtn.style.position="absolute",this.triggerBtn.style.left=`${this.mentionX}px`,this.triggerBtn.style.top=`${this.mentionY}px`,this.menuEl.innerHTML="",this.mentionOpen&&this.mentionFiltered.length){for(const e of this.mentionFiltered){const t=document.createElement("nile-menu-item");this.formatLabel(this.mentionTrigger,e.label),t.textContent=e.label,t.addEventListener("mousedown",(t=>{t.preventDefault(),this.selectMention(e)})),this.menuEl.appendChild(t)}this.dropdownEl.setAttribute("open","")}else this.dropdownEl.removeAttribute("open")}selectMention(e){if(this.restoreSelection(),!this.lastRange||!this.mentionTrigger||!this.editorEl)return;let t=this.lastRange.startContainer,M=this.lastRange.startOffset;if(t.nodeType!==Node.TEXT_NODE){const e=t.childNodes[M];if(e?.nodeType!==Node.TEXT_NODE)return;t=e,M=0}const i=t,N=(i.textContent||"").lastIndexOf(this.mentionTrigger,M);if(N<0)return;const o=N+1+this.mentionQuery.length,n=document.createRange();n.setStart(i,N),n.setEnd(i,o),n.deleteContents();const s=document.createElement("span");s.classList.add("mention");const r=this.formatLabel(this.mentionTrigger,e.label),a=!(!this.getTriggerFormat(this.mentionTrigger).prefix&&!this.getTriggerFormat(this.mentionTrigger).suffix);s.textContent=a?r:`${this.mentionTrigger}${e.label}`;const l=this.getTriggerColor(this.mentionTrigger);l&&(s.style.backgroundColor=l),n.insertNode(s);const D=document.createTextNode(" ");s.after(D);const u=window.getSelection(),g=document.createRange();g.setStartAfter(D),g.collapse(!0),u?.removeAllRanges(),u?.addRange(g),this.lastRange=g.cloneRange(),this.closeMention(),this.editorEl.dispatchEvent(new InputEvent("input",{bubbles:!0}))}};function Fp(e,t){for(;e&&e!==t;){if(e instanceof HTMLElement){const t=getComputedStyle(e).display;if(e.tagName.match(/^(P|DIV|H1|H2|H3|H4|H5|H6|LI)$/)||"block"===t||"list-item"===t)return e}e=e?.parentNode||null}return t}function $p(e){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i);if(!t)return"#000000";return`#${Number(t[1]).toString(16).padStart(2,"0")}${Number(t[2]).toString(16).padStart(2,"0")}${Number(t[3]).toString(16).padStart(2,"0")}`}function Jp(e,t,M){const i=document.createElement(t);M&&Object.entries(M).forEach((([e,t])=>i.setAttribute(e,t)));try{e.surroundContents(i)}catch{const t=e.extractContents();i.appendChild(t),e.insertNode(i)}}function Hp(e,t,M){const i=document.getSelection();if(!i||0===i.rangeCount)return;const N=i.getRangeAt(0);if(N.collapsed){const e=document.createElement(t);M&&Object.entries(M).forEach((([t,M])=>e.setAttribute(t,M))),e.appendChild(document.createTextNode("")),N.insertNode(e);const o=document.createRange();return o.setStart(e.firstChild,1),o.collapse(!0),i.removeAllRanges(),void i.addRange(o)}let o=N.startContainer,n=null;for(;o&&o!==e;){if(o instanceof HTMLElement&&o.tagName.toLowerCase()===t){n=o;break}o=o.parentNode}n?function(e){const t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}}(n):Jp(N,t,M)}function Xp(e,t){const M=document.getSelection();if(!M||0===M.rangeCount)return;const i=Fp(M.getRangeAt(0).startContainer,e);i&&(i.style.textAlign="justify"===t?"justify":t)}function qp(e,t,M){for(;t&&t!==e;){if(t instanceof HTMLSpanElement&&t.hasAttribute(M))return t;t=t.parentNode}return null}function Kp(e,t,M,i){const N=window.getSelection();if(!N||0===N.rangeCount)return;const o=N.getRangeAt(0);if(!e.contains(o.commonAncestorContainer))return;const n=o.cloneRange();if(n.collapsed){const o=qp(e,n.startContainer,i);if(o)return o.style[t]=M,void tS(e,i,t);const s=document.createElement("span");s.setAttribute(i,"1"),s.style[t]=M,s.appendChild(document.createTextNode("")),n.insertNode(s);const r=document.createRange();return r.setStart(s.firstChild,1),r.collapse(!0),N.removeAllRanges(),N.addRange(r),void tS(e,i,t)}const s=qp(e,n.startContainer,i),r=qp(e,n.endContainer,i);if(s&&s===r){if(function(e,t){const M=document.createRange();return M.selectNodeContents(t),e.compareBoundaryPoints(Range.START_TO_START,M)<=0&&e.compareBoundaryPoints(Range.END_TO_END,M)>=0}(n,s))s.style[t]=M;else{const e=function(e,t,M,i,N){const o=e.style[i],n=document.createRange();n.setStart(e,0),n.setEnd(t.startContainer,t.startOffset);const s=document.createRange();s.setStart(t.endContainer,t.endOffset),s.setEnd(e,e.childNodes.length);const r=document.createDocumentFragment(),a=e=>{const t=document.createElement("span");return t.setAttribute(M,"1"),t.style[i]=e,t};if(eS(n)){const e=a(o);e.appendChild(n.cloneContents()),r.appendChild(e)}const l=a(N);if(l.appendChild(t.cloneContents()),r.appendChild(l),eS(s)){const e=a(o);e.appendChild(s.cloneContents()),r.appendChild(e)}return e.replaceWith(r),l}(s,n,i,t,M),N=window.getSelection(),o=document.createRange();o.selectNodeContents(e),N?.removeAllRanges(),N?.addRange(o)}return void tS(e,i,t)}const a=(()=>{let e=n.commonAncestorContainer;for(;e&&!(e instanceof HTMLElement);)e=e.parentNode;return e})(),l=document.createTreeWalker(a||e,NodeFilter.SHOW_TEXT,{acceptNode:e=>{if(!e.nodeValue||!e.nodeValue.trim())return NodeFilter.FILTER_REJECT;const t=document.createRange();t.selectNodeContents(e);return n.compareBoundaryPoints(Range.END_TO_START,t)<0&&n.compareBoundaryPoints(Range.START_TO_END,t)>0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),D=[];let u;for(;u=l.nextNode();)D.push(u);D.forEach((N=>{let o=0,s=N.length;N===n.startContainer&&(o=n.startOffset),N===n.endContainer&&(s=n.endOffset),o>0&&(N=N.splitText(o)),s<N.length&&N.splitText(s);const r=qp(e,N,i);if(r)return void(r.style[t]=M);const a=document.createElement("span");a.setAttribute(i,"1"),a.style[t]=M;N.parentElement.replaceChild(a,N),a.appendChild(N)})),tS(e,i,t),N.removeAllRanges(),N.addRange(n)}function eS(e){if(e.collapsed)return!1;return(e.cloneContents().textContent||"").length>0}function tS(e,t,M){const i=Array.from(e.querySelectorAll(`span[${t}]`)),N=e=>e.style[M];i.forEach((e=>{Array.from(e.querySelectorAll(`span[${t}]`)).forEach((t=>{if(N(t)===N(e)){for(;t.firstChild;)e.insertBefore(t.firstChild,t);t.remove()}}));const M=e.previousSibling;if(M instanceof HTMLSpanElement&&M.hasAttribute(t)&&N(M)===N(e)){for(;e.firstChild;)M.appendChild(e.firstChild);return void e.remove()}const i=e.nextSibling;if(i instanceof HTMLSpanElement&&i.hasAttribute(t)&&N(i)===N(e)){for(;i.firstChild;)e.appendChild(i.firstChild);i.remove()}}))}e([ge({attribute:"mentions",converter:{fromAttribute:e=>{try{const t=JSON.parse(e),M={};for(const e of Object.keys(t)){const i=t[e];Array.isArray(i)&&(M[e]=i.filter((e=>e&&"string"==typeof e.key&&"string"==typeof e.label)).map((e=>({key:e.key,label:e.label}))))}return M}catch{return{}}},toAttribute:e=>JSON.stringify(e)}})],Bp.prototype,"mentions",void 0),e([ge({attribute:"mentionformat",converter:{fromAttribute:e=>{try{const t=JSON.parse(e);return t&&"object"==typeof t?t:{}}catch{return{}}},toAttribute:e=>JSON.stringify(e??{})}})],Bp.prototype,"mentionFormat",void 0),e([ce()],Bp.prototype,"itemsFormats",void 0),e([ge({attribute:"mentioncolors",converter:{fromAttribute:e=>{try{const t=JSON.parse(e);return t&&"object"==typeof t?t:{}}catch{return{}}},toAttribute:e=>JSON.stringify(e??{})}})],Bp.prototype,"mentionColors",void 0),e([ce()],Bp.prototype,"externalConfig",void 0),e([ce()],Bp.prototype,"itemsConfig",void 0),e([ce()],Bp.prototype,"itemsColors",void 0),Bp=e([le("nile-rte-mentions")],Bp);const MS=n`
|
12930
|
+
`}const M=t?.label||this.label||"Select";return R`
|
12931
|
+
<nile-dropdown class="rte-default-dd">
|
12932
|
+
<nile-button slot="trigger" variant="tertiary" class="rte-default-trigger">
|
12933
|
+
${M} <nile-icon name="arrowdown"></nile-icon>
|
12934
|
+
</nile-button>
|
12935
|
+
<nile-menu class="rte-default-menu">
|
12936
|
+
${e.map((e=>R`
|
12937
|
+
<nile-menu-item
|
12938
|
+
?active=${e.value===this.selectedValue}
|
12939
|
+
@click=${()=>this.onSelect(e.value)}>
|
12940
|
+
${e.label}
|
12941
|
+
</nile-menu-item>
|
12942
|
+
`))}
|
12943
|
+
</nile-menu>
|
12944
|
+
</nile-dropdown>
|
12945
|
+
`}};e([ge({type:String})],Pp.prototype,"type",void 0),e([ge({type:String})],Pp.prototype,"options",void 0),e([ge({attribute:!1})],Pp.prototype,"optionsObj",void 0),e([ge({type:String})],Pp.prototype,"label",void 0),e([ce()],Pp.prototype,"selectedValue",void 0),Pp=e([le("nile-rte-select")],Pp);let Rp=class extends re{constructor(){super(...arguments),this.type="foreColor",this.label="Text Color",this.value="#000000"}createRenderRoot(){return this}shouldUpdate(){return!1}};e([ge({type:String})],Rp.prototype,"type",void 0),e([ge({type:String})],Rp.prototype,"label",void 0),e([ge({type:String})],Rp.prototype,"value",void 0),Rp=e([le("nile-rte-color")],Rp);let Gp=class extends re{createRenderRoot(){return this}shouldUpdate(){return!1}};Gp=e([le("nile-rte-divider")],Gp);let _p=class extends re{createRenderRoot(){return this}shouldUpdate(){return!1}};_p=e([le("nile-rte-preview")],_p);let Bp=class extends re{constructor(){super(...arguments),this.mentions={},this.mentionFormat={},this.itemsFormats={},this.mentionColors={},this.externalConfig={},this.itemsConfig={},this.itemsColors={},this.editorEl=null,this.hostEl=null,this.dropdownEl=null,this.menuEl=null,this.lastRange=null,this.mentionOpen=!1,this.mentionTrigger=null,this.mentionQuery="",this.mentionSuggestions=[],this.mentionFiltered=[],this.mentionX=0,this.mentionY=0,this.triggerBtn=null,this.mo=null,this.onSelectionChange=()=>{if(!this.editorEl)return;const e=document.getSelection();if(!e||0===e.rangeCount)return;const t=e.getRangeAt(0);this.editorEl.contains(t.commonAncestorContainer)&&(this.lastRange=t.cloneRange())},this.saveSelection=()=>{const e=window.getSelection();e&&e.rangeCount&&(this.lastRange=e.getRangeAt(0).cloneRange())},this.onEditorInput=()=>{this.mentionOpen&&this.handleMention()},this.onEditorKeyUp=e=>{this.saveSelection();const t=e.key,M=this.config;!this.mentionOpen&&t&&M[t]?this.openMention(t):this.mentionOpen&&this.handleMention()},this.onEditorKeyDown=e=>{if(!this.mentionOpen)return;const t=e.key;"ArrowDown"===t||"ArrowUp"===t||"Enter"===t?(e.preventDefault(),"Enter"===t&&this.mentionFiltered.length&&this.selectMention(this.mentionFiltered[0])):"Escape"===t&&(e.preventDefault(),this.closeMention())},this.repositionMention=()=>{if(!this.mentionOpen||!this.hostEl||!this.triggerBtn)return;const e=this.getCaretClientRect();if(!e)return;const t=this.hostEl.getBoundingClientRect();this.mentionX=e.left-t.left,this.mentionY=e.bottom-t.top,this.triggerBtn.style.left=`${this.mentionX}px`,this.triggerBtn.style.top=`${this.mentionY}px`}}createRenderRoot(){return this}getTriggerFormat(e){const t=this.itemsFormats[e]||{},M=this.mentionFormat[e]||{};return{prefix:t.prefix??M.prefix??"",suffix:t.suffix??M.suffix??""}}formatLabel(e,t){const{prefix:M,suffix:i}=this.getTriggerFormat(e);return`${M??""}${t}${i??""}`}get config(){return{...this.externalConfig,...this.mentions,...this.itemsConfig}}attach(e,t){this.editorEl=e,this.hostEl=t,this.injectStyles(),this.ensureMentionDropdown(),this.rebuildConfigFromChildren(),this.mo=new MutationObserver((()=>this.rebuildConfigFromChildren())),this.mo.observe(this,{childList:!0,subtree:!0,attributes:!0}),this.editorEl.addEventListener("input",this.onEditorInput),this.editorEl.addEventListener("mouseup",this.saveSelection),this.editorEl.addEventListener("keyup",this.onEditorKeyUp),this.editorEl.addEventListener("keydown",this.onEditorKeyDown),this.editorEl.addEventListener("scroll",this.repositionMention),document.addEventListener("selectionchange",this.onSelectionChange,!0)}detach(){this.mo&&(this.mo.disconnect(),this.mo=null),this.editorEl&&(this.editorEl.removeEventListener("input",this.onEditorInput),this.editorEl.removeEventListener("mouseup",this.saveSelection),this.editorEl.removeEventListener("keyup",this.onEditorKeyUp),this.editorEl.removeEventListener("keydown",this.onEditorKeyDown),this.editorEl.removeEventListener("scroll",this.repositionMention)),document.removeEventListener("selectionchange",this.onSelectionChange,!0)}setExternalConfig(e){this.externalConfig=e||{}}disconnectedCallback(){this.detach(),super.disconnectedCallback()}rebuildConfigFromChildren(){const e={},t={},M={},i=Array.from(this.querySelectorAll("nile-rte-mentions-item"));for(const N of i){const i=N.mentionsCharacter??N.getAttribute("mentionscharacter")??"";if(!i||"string"!=typeof i)continue;let o=N.mentionsData??(()=>{const e=N.getAttribute("mentionsdata");if(!e)return null;try{const t=JSON.parse(e);return Array.isArray(t)?t.filter((e=>e&&"string"==typeof e.key&&"string"==typeof e.label)):[]}catch{return[]}})();const n=N.mentionsColor??N.getAttribute("mentionscolor")??"",s=N.mentionsPrefix??N.getAttribute("mentionsprefix")??"",r=N.mentionsSuffix??N.getAttribute("mentionssuffix")??"";Array.isArray(o)||(o=[]),e[i]=o,n&&(t[i]=String(n)),(s||r)&&(M[i]={prefix:s,suffix:r})}this.itemsConfig=e,this.itemsColors=t,this.itemsFormats=M}injectStyles(){if(this.querySelector("style[data-mentions-style]"))return;const e=document.createElement("style");e.setAttribute("data-mentions-style","true"),e.textContent="\n .mention-dropdown {\n position: absolute; z-index: 1000; list-style: none; margin: 0; padding: 4px;\n border: 1px solid #e5e7eb; border-radius: 6px; background: #fff;\n box-shadow: 0 4px 10px rgba(0,0,0,.08); max-height: 180px; overflow: auto; font-size: 14px;\n }\n .mention-dropdown li { padding: 6px 8px; cursor: pointer; border-radius: 4px; }\n .mention-dropdown li:hover { background: #f1f5f9; }\n .mention { background: #eef2ff; padding: 0 3px; border-radius: 3px; }\n nile-menu.mentions-menu::part(menu__items-wrapper){\n max-height: 260px;\n }\n\n ",this.insertBefore(e,this.firstChild)}getTriggerColor(e){return this.itemsColors[e]??this.mentionColors[e]}ensureMentionDropdown(){if(this.dropdownEl||!this.hostEl)return;const e=document.createElement("nile-dropdown");e.style.zIndex="1000";const t=document.createElement("nile-button");t.setAttribute("slot","trigger"),t.style.position="absolute",t.style.width="1px",t.style.height="1px",t.style.border="0",t.style.padding="0",t.style.opacity="0",t.style.pointerEvents="none",e.appendChild(t),this.triggerBtn=t;const M=document.createElement("nile-menu");M.classList.add("mentions-menu"),e.appendChild(M),this.hostEl.appendChild(e),this.dropdownEl=e,this.menuEl=M}restoreSelection(){if(!this.lastRange)return;const e=document.getSelection();e&&(e.removeAllRanges(),e.addRange(this.lastRange))}focusAndRestore(){this.editorEl?.focus(),this.restoreSelection()}getCaretClientRect(){const e=document.getSelection();if(!e||0===e.rangeCount)return null;const t=e.getRangeAt(0).cloneRange();t.collapse(!1);const M=t.getClientRects();if(M&&M.length>0)return M[0];const i=document.createElement("span");i.setAttribute("data-caret-marker","1"),i.textContent="",t.insertNode(i);const N=i.getBoundingClientRect(),o=document.createRange();return o.setStartAfter(i),o.collapse(!0),e.removeAllRanges(),e.addRange(o),i.remove(),N||null}openMention(e){if(this.saveSelection(),!this.editorEl||!this.dropdownEl||!this.hostEl)return;const t=this.getCaretClientRect();if(!t)return;const M=this.hostEl.getBoundingClientRect();this.mentionX=t.left-M.left,this.mentionY=t.bottom-M.top,this.mentionTrigger=e,this.mentionSuggestions=this.config[e]||[],this.mentionQuery="",this.updateMentionFiltered(),this.mentionOpen=!0,this.renderMentionList()}closeMention(){this.mentionOpen=!1,this.mentionTrigger=null,this.mentionQuery="",this.mentionFiltered=[],this.dropdownEl?.removeAttribute("open")}handleMention(){if(!this.mentionOpen||!this.mentionTrigger)return;const e=window.getSelection();if(!e||!e.anchorNode)return;let t=e.anchorNode;if(t.nodeType!==Node.TEXT_NODE){const M=t.childNodes?.[e.anchorOffset]||t.firstChild;M?.nodeType===Node.TEXT_NODE&&(t=M)}const M=t&&t.nodeType===Node.TEXT_NODE&&t.textContent||"",i=M.lastIndexOf(this.mentionTrigger);i>=0?(this.mentionQuery=M.substring(i+1),this.updateMentionFiltered(),this.renderMentionList()):this.closeMention()}updateMentionFiltered(){const e=this.mentionQuery.toLowerCase();this.mentionFiltered=(this.mentionSuggestions||[]).filter((t=>t.label.toLowerCase().startsWith(e)))}renderMentionList(){if(this.dropdownEl&&this.menuEl&&this.triggerBtn)if(this.triggerBtn.style.position="absolute",this.triggerBtn.style.left=`${this.mentionX}px`,this.triggerBtn.style.top=`${this.mentionY}px`,this.menuEl.innerHTML="",this.mentionOpen&&this.mentionFiltered.length){for(const e of this.mentionFiltered){const t=document.createElement("nile-menu-item");this.formatLabel(this.mentionTrigger,e.label),t.textContent=e.label,t.addEventListener("mousedown",(t=>{t.preventDefault(),this.selectMention(e)})),this.menuEl.appendChild(t)}this.dropdownEl.setAttribute("open","")}else this.dropdownEl.removeAttribute("open")}selectMention(e){if(this.restoreSelection(),!this.lastRange||!this.mentionTrigger||!this.editorEl)return;let t=this.lastRange.startContainer,M=this.lastRange.startOffset;if(t.nodeType!==Node.TEXT_NODE){const e=t.childNodes[M];if(e?.nodeType!==Node.TEXT_NODE)return;t=e,M=0}const i=t,N=(i.textContent||"").lastIndexOf(this.mentionTrigger,M);if(N<0)return;const o=N+1+this.mentionQuery.length,n=document.createRange();n.setStart(i,N),n.setEnd(i,o),n.deleteContents();const s=document.createElement("span");s.classList.add("mention");const r=this.formatLabel(this.mentionTrigger,e.label),a=!(!this.getTriggerFormat(this.mentionTrigger).prefix&&!this.getTriggerFormat(this.mentionTrigger).suffix);s.textContent=a?r:`${this.mentionTrigger}${e.label}`;const l=this.getTriggerColor(this.mentionTrigger);l&&(s.style.backgroundColor=l),n.insertNode(s);const D=document.createTextNode(" ");s.after(D);const u=window.getSelection(),g=document.createRange();g.setStartAfter(D),g.collapse(!0),u?.removeAllRanges(),u?.addRange(g),this.lastRange=g.cloneRange(),this.closeMention(),this.editorEl.dispatchEvent(new InputEvent("input",{bubbles:!0}))}};function Fp(e,t){for(;e&&e!==t;){if(e instanceof HTMLElement){const t=getComputedStyle(e).display;if(e.tagName.match(/^(P|DIV|H1|H2|H3|H4|H5|H6|LI)$/)||"block"===t||"list-item"===t)return e}e=e?.parentNode||null}return t}function $p(e){const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i);if(!t)return"#000000";return`#${Number(t[1]).toString(16).padStart(2,"0")}${Number(t[2]).toString(16).padStart(2,"0")}${Number(t[3]).toString(16).padStart(2,"0")}`}function Jp(e,t,M){const i=document.createElement(t);M&&Object.entries(M).forEach((([e,t])=>i.setAttribute(e,t)));try{e.surroundContents(i)}catch{const t=e.extractContents();i.appendChild(t),e.insertNode(i)}}function Hp(e,t,M){const i=document.getSelection();if(!i||0===i.rangeCount)return;const N=i.getRangeAt(0);if(N.collapsed){const e=document.createElement(t);M&&Object.entries(M).forEach((([t,M])=>e.setAttribute(t,M))),e.appendChild(document.createTextNode("")),N.insertNode(e);const o=document.createRange();return o.setStart(e.firstChild,1),o.collapse(!0),i.removeAllRanges(),void i.addRange(o)}let o=N.startContainer,n=null;for(;o&&o!==e;){if(o instanceof HTMLElement&&o.tagName.toLowerCase()===t){n=o;break}o=o.parentNode}n?function(e){const t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e)}}(n):Jp(N,t,M)}function Xp(e,t){const M=document.getSelection();if(!M||0===M.rangeCount)return;const i=Fp(M.getRangeAt(0).startContainer,e);i&&(i.style.textAlign="justify"===t?"justify":t)}function qp(e,t,M){for(;t&&t!==e;){if(t instanceof HTMLSpanElement&&t.hasAttribute(M))return t;t=t.parentNode}return null}function Kp(e,t,M,i){const N=window.getSelection();if(!N||0===N.rangeCount)return;const o=N.getRangeAt(0);if(!e.contains(o.commonAncestorContainer))return;const n=o.cloneRange();if(n.collapsed){const o=qp(e,n.startContainer,i);if(o)return o.style[t]=M,void tS(e,i,t);const s=document.createElement("span");s.setAttribute(i,"1"),s.style[t]=M,s.appendChild(document.createTextNode("")),n.insertNode(s);const r=document.createRange();return r.setStart(s.firstChild,1),r.collapse(!0),N.removeAllRanges(),N.addRange(r),void tS(e,i,t)}const s=qp(e,n.startContainer,i),r=qp(e,n.endContainer,i);if(s&&s===r){if(function(e,t){const M=document.createRange();return M.selectNodeContents(t),e.compareBoundaryPoints(Range.START_TO_START,M)<=0&&e.compareBoundaryPoints(Range.END_TO_END,M)>=0}(n,s))s.style[t]=M;else{const e=function(e,t,M,i,N){const o=e.style[i],n=document.createRange();n.setStart(e,0),n.setEnd(t.startContainer,t.startOffset);const s=document.createRange();s.setStart(t.endContainer,t.endOffset),s.setEnd(e,e.childNodes.length);const r=document.createDocumentFragment(),a=e=>{const t=document.createElement("span");return t.setAttribute(M,"1"),t.style[i]=e,t};if(eS(n)){const e=a(o);e.appendChild(n.cloneContents()),r.appendChild(e)}const l=a(N);if(l.appendChild(t.cloneContents()),r.appendChild(l),eS(s)){const e=a(o);e.appendChild(s.cloneContents()),r.appendChild(e)}return e.replaceWith(r),l}(s,n,i,t,M),N=window.getSelection(),o=document.createRange();o.selectNodeContents(e),N?.removeAllRanges(),N?.addRange(o)}return void tS(e,i,t)}const a=(()=>{let e=n.commonAncestorContainer;for(;e&&!(e instanceof HTMLElement);)e=e.parentNode;return e})(),l=document.createTreeWalker(a||e,NodeFilter.SHOW_TEXT,{acceptNode:e=>{if(!e.nodeValue||!e.nodeValue.trim())return NodeFilter.FILTER_REJECT;const t=document.createRange();t.selectNodeContents(e);return n.compareBoundaryPoints(Range.END_TO_START,t)<0&&n.compareBoundaryPoints(Range.START_TO_END,t)>0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),D=[];let u;for(;u=l.nextNode();)D.push(u);D.forEach((N=>{let o=0,s=N.length;N===n.startContainer&&(o=n.startOffset),N===n.endContainer&&(s=n.endOffset),o>0&&(N=N.splitText(o)),s<N.length&&N.splitText(s);const r=qp(e,N,i);if(r)return void(r.style[t]=M);const a=document.createElement("span");a.setAttribute(i,"1"),a.style[t]=M;N.parentElement.replaceChild(a,N),a.appendChild(N)})),tS(e,i,t),N.removeAllRanges(),N.addRange(n)}function eS(e){if(e.collapsed)return!1;return(e.cloneContents().textContent||"").length>0}function tS(e,t,M){const i=Array.from(e.querySelectorAll(`span[${t}]`)),N=e=>e.style[M];i.forEach((e=>{Array.from(e.querySelectorAll(`span[${t}]`)).forEach((t=>{if(N(t)===N(e)){for(;t.firstChild;)e.insertBefore(t.firstChild,t);t.remove()}}));const M=e.previousSibling;if(M instanceof HTMLSpanElement&&M.hasAttribute(t)&&N(M)===N(e)){for(;e.firstChild;)M.appendChild(e.firstChild);return void e.remove()}const i=e.nextSibling;if(i instanceof HTMLSpanElement&&i.hasAttribute(t)&&N(i)===N(e)){for(;i.firstChild;)e.appendChild(i.firstChild);i.remove()}}))}e([ge({attribute:"mentions",converter:{fromAttribute:e=>{try{const t=JSON.parse(e),M={};for(const e of Object.keys(t)){const i=t[e];Array.isArray(i)&&(M[e]=i.filter((e=>e&&"string"==typeof e.key&&"string"==typeof e.label)).map((e=>({key:e.key,label:e.label}))))}return M}catch{return{}}},toAttribute:e=>JSON.stringify(e)}})],Bp.prototype,"mentions",void 0),e([ge({attribute:"mentionformat",converter:{fromAttribute:e=>{try{const t=JSON.parse(e);return t&&"object"==typeof t?t:{}}catch{return{}}},toAttribute:e=>JSON.stringify(e??{})}})],Bp.prototype,"mentionFormat",void 0),e([ce()],Bp.prototype,"itemsFormats",void 0),e([ge({attribute:"mentioncolors",converter:{fromAttribute:e=>{try{const t=JSON.parse(e);return t&&"object"==typeof t?t:{}}catch{return{}}},toAttribute:e=>JSON.stringify(e??{})}})],Bp.prototype,"mentionColors",void 0),e([ce()],Bp.prototype,"externalConfig",void 0),e([ce()],Bp.prototype,"itemsConfig",void 0),e([ce()],Bp.prototype,"itemsColors",void 0),Bp=e([le("nile-rte-mentions")],Bp);const MS=n`
|
12946
12946
|
.editor * {
|
12947
12947
|
all: revert;
|
12948
12948
|
}
|
@@ -12960,7 +12960,7 @@ nile-rte-toolbar-item > nile-button::part(base) {
|
|
12960
12960
|
|
12961
12961
|
|
12962
12962
|
.toolbar, nile-rte-toolbar {
|
12963
|
-
display:flex; align-items:center; gap:
|
12963
|
+
display:flex; align-items:center; gap:6px; padding:8px;
|
12964
12964
|
border:1px solid #e5e7eb; border-bottom:none; border-radius:8px 8px 0 0; background:#fff;
|
12965
12965
|
}
|
12966
12966
|
|
@@ -13007,14 +13007,17 @@ font-weight: bold;}
|
|
13007
13007
|
display: inline-flex;
|
13008
13008
|
align-items: center;
|
13009
13009
|
justify-content: center;
|
13010
|
-
|
13011
|
-
padding: 0 8px;
|
13012
|
-
border: 1px solid var(--nile-color-border, #d9d9d9);
|
13010
|
+
/* border: 1px solid var(--nile-color-border, #d9d9d9); */
|
13013
13011
|
border-radius: 6px;
|
13014
13012
|
background: #fff;
|
13015
13013
|
cursor: pointer;
|
13016
|
-
|
13014
|
+
border:none;
|
13015
|
+
|
13017
13016
|
|
13017
|
+
}
|
13018
|
+
nile-button.rte-color-trigger::part(base){
|
13019
|
+
width:32px; height:32px; padding:0px 6px;
|
13020
|
+
}
|
13018
13021
|
.rte-color-trigger .glyph-stack {
|
13019
13022
|
display: grid; /* stack vertically */
|
13020
13023
|
grid-auto-rows: max-content;
|
@@ -13026,17 +13029,17 @@ font-weight: bold;}
|
|
13026
13029
|
.rte-color-trigger .glyph {
|
13027
13030
|
font-size: 14px;
|
13028
13031
|
line-height: 1;
|
13029
|
-
margin-bottom: 2px;
|
13032
|
+
margin-bottom: 2px;
|
13030
13033
|
}
|
13031
13034
|
|
13032
13035
|
.rte-color-trigger .underline {
|
13033
13036
|
width: 18px;
|
13034
13037
|
height: 3px;
|
13035
13038
|
border-radius: 2px;
|
13036
|
-
background: currentColor;
|
13039
|
+
background: currentColor;
|
13037
13040
|
}
|
13038
13041
|
|
13039
|
-
|
13042
|
+
|
13040
13043
|
.rte-color-trigger .swatch-box {
|
13041
13044
|
width: 18px;
|
13042
13045
|
height: 16px;
|
@@ -13045,7 +13048,7 @@ font-weight: bold;}
|
|
13045
13048
|
background: currentColor; /* overridden via JS */
|
13046
13049
|
}
|
13047
13050
|
|
13048
|
-
`,iS={bold:"format_bold",italic:"format_italic",underline:"format_underline",link:"link_2",left:"format_align_left",center:"format_align_middle",right:"format_align_right",justify:"format_align_justify",ul:"nile-ul",ol:"nile-ol",clear:"error"};let NS=class extends re{constructor(){super(...arguments),this.value="",this.mentions={},this.content="",this.previewEl=null,this.toolbarEl=null,this.lastRange=null,this.buttonMap=new Map,this.headingSelect=null,this.fontSelect=null,this.colorInput=null,this.bgColorInput=null,this.colorSwatchEl=null,this.bgSwatchEl=null,this.mentionsEl=null,this.onEditorKeydown=e=>{if("Tab"!==e.key)return;e.preventDefault(),this.focusAndRestore();const t=window.getSelection();if(!t||0===t.rangeCount)return;const M=t.getRangeAt(0);if(e.shiftKey){if(M.collapsed&&M.startContainer.nodeType===Node.TEXT_NODE){const e=M.startContainer,i=M.startOffset,N=e.data.slice(0,i),o=N.replace(/(\t|[ \u00a0]{2})$/,"");if(o.length!==N.length){e.data=o+e.data.slice(i);const M=document.createRange();M.setStart(e,o.length),M.collapse(!0),t.removeAllRanges(),t.addRange(M),this.updateContent(),this.updateToolbarState()}}return}M.deleteContents();const i=document.createTextNode("\t");M.insertNode(i);const N=document.createRange();N.setStartAfter(i),N.collapse(!0),t.removeAllRanges(),t.addRange(N),this.updateContent(),this.updateToolbarState()},this.onSelectionChange=()=>{if(!this.editorEl)return;const e=document.getSelection();if(!e||0===e.rangeCount)return;const t=e.getRangeAt(0);this.editorEl.contains(t.commonAncestorContainer)&&(this.lastRange=t.cloneRange(),this.updateToolbarState())}}createRenderRoot(){return this}shouldUpdate(){return!1}injectCss(e){if(this.querySelector("style[data-rte-style]"))return;const t=document.createElement("style");t.setAttribute("data-rte-style","true"),t.textContent=e,this.insertBefore(t,this.firstChild)}connectedCallback(){super.connectedCallback(),this.injectCss(MS.cssText),this.toolbarEl=this.querySelector("nile-rte-toolbar"),this.previewEl=this.querySelector("nile-rte-preview"),this.ensureEditor(),this.value&&!this.editorEl.innerHTML.trim()&&(this.editorEl.innerHTML=this.value),this.content=this.editorEl.innerHTML,this.toolbarEl&&this.wireAuthoredToolbar(this.toolbarEl),this.mentionsEl=this.querySelector("nile-rte-mentions"),this.mentionsEl&&(this.mentionsEl.attach?.(this.editorEl,this),this.mentionsEl.setExternalConfig?.(this.mentions)),this.wireEditor(),this.updateToolbarState(),this.syncPreview(),document.addEventListener("selectionchange",this.onSelectionChange,!0)}disconnectedCallback(){document.removeEventListener("selectionchange",this.onSelectionChange,!0),this.mentionsEl&&this.mentionsEl.detach&&this.mentionsEl.detach(),super.disconnectedCallback()}ensureEditor(){if(this.editorEl=this.querySelector(".editor"),!this.editorEl){const e=document.createElement("article");e.className="editor",e.setAttribute("contenteditable","true"),this.toolbarEl?.nextSibling?this.insertBefore(e,this.toolbarEl.nextSibling):this.previewEl?this.insertBefore(e,this.previewEl):this.appendChild(e),this.editorEl=e}this.editorEl.innerHTML.trim()||(this.editorEl.innerHTML="<p><br></p>"),this.ensureAtLeastOneParagraph()}wireEditor(){this.editorEl.addEventListener("input",(()=>{this.ensureAtLeastOneParagraph(),this.updateContent()})),this.editorEl.addEventListener("mouseup",(()=>this.saveSelection())),this.editorEl.addEventListener("keyup",(()=>this.saveSelection())),this.editorEl.addEventListener("keydown",this.onEditorKeydown)}wireAuthoredToolbar(e){this.buttonMap.clear(),this.headingSelect=null,this.fontSelect=null,this.colorInput=null,Array.from(e.children).forEach((e=>{const t=e.tagName.toLowerCase();if("nile-rte-select"!==t||"align"!==e.getAttribute("type")){if("nile-rte-toolbar-item"===t){let t=e.querySelector(":scope > nile-button");const M=e.getAttribute("name")||"",i=e.getAttribute("label")||M,N=e.getAttribute("icon"),o=e.innerHTML.trim().length>0;if(t||(t=document.createElement("nile-button"),t.variant="tertiary",t.size="small"),N)t.innerHTML=`<nile-icon name="${N}" aria-label="${i}"></nile-icon>`,e.innerHTML="";else if(o)t.innerHTML=e.innerHTML,e.innerHTML="";else{const N=iS[M];N?t.innerHTML=`<nile-icon name="${N}" size="20" color="black" aria-label="${i}"></nile-icon>`:t.textContent=i||M,e.innerHTML=""}t.isConnected||e.appendChild(t),t.setAttribute("aria-label",i),t.addEventListener("mousedown",(e=>e.preventDefault())),t.addEventListener("click",(()=>this.onToolbarCommand(M)));const n=this.buttonMap.get(M)??[];return n.push(t),void this.buttonMap.set(M,n)}if("nile-rte-select"!==t){if("nile-rte-color"===t){const t=e.getAttribute("label")??"Text color",M=e.getAttribute("value")??"#000000",i=e.getAttribute("mode")??"text";let N=e.querySelector(':scope > input[type="color"]');N||(N=document.createElement("input"),N.type="color",N.style.position="absolute",N.style.opacity="0",N.style.pointerEvents="none",e.appendChild(N)),N.title=t,N.value=M;let o=e.querySelector(":scope > button.rte-color-trigger");o||(o=document.createElement("button"),o.type="button",o.className="rte-color-trigger",o.setAttribute("aria-label",t),o.innerHTML="background"===i?'\n <span class="swatch-box" aria-hidden="true"></span>\n ':'\n <span class="glyph-stack" aria-hidden="true">\n <span class="glyph">A</span>\n <span class="underline"></span>\n </span>\n ',e.appendChild(o));const n=o.querySelector(".underline"),s=o.querySelector(".swatch-box");"background"===i?(this.bgColorInput=N,this.bgSwatchEl=s,this.bgSwatchEl&&(this.bgSwatchEl.style.backgroundColor=N.value)):(this.colorInput=N,this.colorSwatchEl=n,this.colorSwatchEl&&(this.colorSwatchEl.style.backgroundColor=N.value)),o.addEventListener("click",(e=>{e.preventDefault(),this.focusAndRestore(),N.click()})),N.addEventListener("input",(()=>{var e,t;this.focusAndRestore(),"background"===i?(e=this.editorEl,t=N.value,Kp(e,"backgroundColor",t,"data-rte-bg"),this.bgSwatchEl&&(this.bgSwatchEl.style.backgroundColor=N.value)):(!function(e,t){Kp(e,"color",t,"data-rte-color")}(this.editorEl,N.value),this.colorSwatchEl&&(this.colorSwatchEl.style.backgroundColor=N.value)),this.updateContent(),this.updateToolbarState()})),o.addEventListener("mousedown",(e=>e.preventDefault())),N.addEventListener("mousedown",(e=>e.preventDefault()))}}else{const t=e.getAttribute("type")||"";e.addEventListener("change",(e=>{this.focusAndRestore();const M=e.detail;"heading"===t?function(e,t){const M=document.getSelection();if(!M||0===M.rangeCount)return;const i=Fp(M.getRangeAt(0).startContainer,e);if(!i)return;if(i.tagName.toLowerCase()===t)return;const N=document.createElement(t);for(;i.firstChild;)N.appendChild(i.firstChild);i.replaceWith(N);const o=document.createRange();o.selectNodeContents(N),o.collapse(!0),M.removeAllRanges(),M.addRange(o)}(this.editorEl,M):"font"===t&&function(e,t){const M=document.getSelection();if(!M||0===M.rangeCount)return;const i=M.getRangeAt(0);if(i.collapsed){const e=document.createElement("span");e.style.fontFamily=t,e.appendChild(document.createTextNode("")),i.insertNode(e);const N=document.createRange();return N.setStart(e.firstChild,1),N.collapse(!0),M.removeAllRanges(),void M.addRange(N)}Jp(i,"span",{style:`font-family:${t}`})}(this.editorEl,M),this.updateContent(),this.updateToolbarState()}))}}else e.addEventListener("change",(e=>{this.focusAndRestore();const t=e.detail;Xp(this.editorEl,t),this.updateContent(),this.updateToolbarState()}))}))}saveSelection(){const e=window.getSelection();e&&e.rangeCount&&(this.lastRange=e.getRangeAt(0).cloneRange())}restoreSelection(){if(!this.lastRange)return;const e=document.getSelection();e&&(e.removeAllRanges(),e.addRange(this.lastRange))}focusAndRestore(){this.editorEl?.focus(),this.restoreSelection()}insertList(e){if(this.restoreSelection(),!this.lastRange)return;const t=document.createElement(e),M=this.lastRange.extractContents(),i=document.createElement("div");i.appendChild(M),Array.from(i.childNodes).forEach((e=>{if(e.nodeType===Node.TEXT_NODE&&!e.textContent?.trim())return;const M=document.createElement("li");M.appendChild(e),t.appendChild(M)})),this.lastRange.insertNode(t),this.afterListEdit(t)}afterListEdit(e){const t=document.createRange();t.setStartAfter(e),t.collapse(!0);const M=window.getSelection();M?.removeAllRanges(),M?.addRange(t),this.saveSelection(),this.updateContent(),this.updateToolbarState()}ensureAtLeastOneParagraph(){const e=this.editorEl;if(!e)return;const t=""===(e.textContent??"").replace(/\u200B/g,"").trim();if(0===e.childNodes.length||t)return void(e.innerHTML="<p><br></p>");if(!e.querySelector("p,h1,h2,h3,h4,h5,h6,ul,ol,table,blockquote,pre")){const t=document.createElement("p");for(;e.firstChild;)t.appendChild(e.firstChild);return t.hasChildNodes()||t.appendChild(document.createElement("br")),void e.appendChild(t)}e.querySelectorAll("p").forEach((e=>{""===(e.textContent??"").replace(/\u200B/g,"")&&(e.innerHTML.toLowerCase().includes("<br")||(e.innerHTML="<br>"))}))}onToolbarCommand(e){switch(this.focusAndRestore(),e){case"bold":Hp(this.editorEl,"strong");break;case"italic":Hp(this.editorEl,"em");break;case"underline":Hp(this.editorEl,"u");break;case"left":Xp(this.editorEl,"left");break;case"center":Xp(this.editorEl,"center");break;case"right":Xp(this.editorEl,"right");break;case"justify":Xp(this.editorEl,"justify");break;case"ul":this.insertList("ul");break;case"ol":this.insertList("ol");break;case"link":!function(e,t){const M=document.getSelection();if(!M||0===M.rangeCount)return;const i=M.getRangeAt(0);let N=i.startContainer,o=null;for(;N&&N!==e;){if(N instanceof HTMLAnchorElement){o=N;break}N=N.parentNode}const n=t??("undefined"!=typeof window&&window.prompt("Enter URL",o?.href||"https://")||"");if(!n)return;if(o)return void(o.href=n);if(i.collapsed){const e=document.createElement("a");e.href=n,e.textContent=n,i.insertNode(e);const t=document.createRange();return t.setStartAfter(e),t.collapse(!0),M.removeAllRanges(),void M.addRange(t)}const s=document.createElement("a");s.href=n;try{i.surroundContents(s)}catch{const e=i.extractContents();s.appendChild(e),i.insertNode(s)}}(this.editorEl);break;case"clear":const e=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),t=[];for(;e.nextNode();){const M=e.currentNode;M.removeAttribute("style"),["B","STRONG","I","EM","U","SPAN","FONT"].includes(M.tagName)&&t.push(M)}for(const e of t){for(;e.firstChild;)e.parentNode?.insertBefore(e.firstChild,e);e.remove()}this.ensureAtLeastOneParagraph()}this.updateContent(),this.updateToolbarState()}setBtnActive(e,t){const M=this.buttonMap.get(e);if(M)for(const e of M)e.toggleAttribute("data-active",!!t)}updateToolbarState(){if(!this.editorEl)return;const e=document.getSelection();if(!e||0===e.rangeCount)return;const t=e.getRangeAt(0);if(!this.editorEl.contains(t.commonAncestorContainer))return;const M=function(e){for(;e&&!(e instanceof HTMLElement);)e=e.parentNode;return e}(t.startContainer)||this.editorEl,i=getComputedStyle(M),N=Fp(t.startContainer,this.editorEl)||this.editorEl,o=(()=>{let e=M;for(;e&&e!==this.editorEl;){if(e instanceof HTMLElement){const t=e.tagName.toLowerCase();if("strong"===t||"b"===t)return!0;const M=getComputedStyle(e).fontWeight;if(parseInt(M,10)>=600)return!0}e=e.parentNode}return!1})(),n=(()=>{let e=M;for(;e&&e!==this.editorEl;){if(e instanceof HTMLElement){const t=e.tagName.toLowerCase();if("em"===t||"i"===t)return!0;if("italic"===getComputedStyle(e).fontStyle)return!0}e=e.parentNode}return!1})(),s=(()=>{let e=M;for(;e&&e!==this.editorEl;){if(e instanceof HTMLElement){const t=getComputedStyle(e).textDecorationLine;if(t&&t.includes("underline"))return!0;if("u"===e.tagName.toLowerCase())return!0}e=e.parentNode}return!1})(),r=!!M.closest("a"),a=N.style.textAlign||getComputedStyle(N).textAlign||"start",l="start"===a?"left":a,D=!!M.closest("li")&&M.closest("ul,ol")?.tagName.toLowerCase()||"";if(this.setBtnActive("bold",o),this.setBtnActive("italic",n),this.setBtnActive("underline",s),this.setBtnActive("link",r),this.setBtnActive("left","left"===l&&!["center","right","justify"].includes(l)),this.setBtnActive("center","center"===l),this.setBtnActive("right","right"===l),this.setBtnActive("justify","justify"===l),this.setBtnActive("ul","ul"===D),this.setBtnActive("ol","ol"===D),this.headingSelect){const e=N.tagName.toLowerCase(),t=["h1","h2","h3"].includes(e)?e:"p";this.headingSelect.value!==t&&(this.headingSelect.value=t)}if(this.fontSelect){const e=(i.fontFamily||"").replace(/["']/g,"").split(",")[0].trim().toLowerCase();if(e)for(const t of Array.from(this.fontSelect.options))if(t.value.toLowerCase()===e){this.fontSelect.value=t.value;break}}if(this.colorInput){const e=$p(i.color);e&&this.colorInput.value.toLowerCase()!==e.toLowerCase()&&(this.colorInput.value=e),this.colorSwatchEl&&(this.colorSwatchEl.style.backgroundColor=this.colorInput.value)}if(this.bgColorInput){const e=getComputedStyle(M).backgroundColor;if(e&&!/transparent|rgba\(\s*0\s*,\s*0\s*,\s*0\s*,\s*0\s*\)/i.test(e)){const t=$p(e);t&&this.bgColorInput.value.toLowerCase()!==t.toLowerCase()&&(this.bgColorInput.value=t)}this.bgSwatchEl&&(this.bgSwatchEl.style.backgroundColor=this.bgColorInput.value)}}syncPreview(){this.updateContent()}updateContent(){if(!this.editorEl)return;this.ensureAtLeastOneParagraph();const e=this.editorEl.cloneNode(!0),t=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),M=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);for(;t.nextNode()&&M.nextNode();){const e=t.currentNode,i=M.currentNode,N=window.getComputedStyle(e),o=Array.from(N).map((e=>`${e}:${N.getPropertyValue(e)}`)).join(";");i.setAttribute("style",o)}this.content=e.innerHTML,this.previewEl&&(this.previewEl.innerHTML=this.content),this.dispatchEvent(new CustomEvent("content-changed",{detail:{content:this.content},bubbles:!0,composed:!0}))}};e([ge({type:String})],NS.prototype,"value",void 0),e([ge({attribute:"mentions",converter:{fromAttribute:e=>{try{const t=JSON.parse(e),M={};for(const e of Object.keys(t)){const i=t[e];Array.isArray(i)&&(M[e]=i.filter((e=>e&&"string"==typeof e.key&&"string"==typeof e.label)).map((e=>({key:e.key,label:e.label}))))}return M}catch{return{}}},toAttribute:e=>JSON.stringify(e)}})],NS.prototype,"mentions",void 0),e([ce()],NS.prototype,"content",void 0),NS=e([le("nile-rich-text-editor")],NS);
|
13051
|
+
`,iS={bold:"format_bold",italic:"format_italic",underline:"format_underline",link:"link_2",left:"format_align_left",center:"format_align_middle",right:"format_align_right",justify:"format_align_justify",ul:"format_list_bulleted",ol:"format_list_numbered",clear:"error"};let NS=class extends re{constructor(){super(...arguments),this.value="",this.mentions={},this.content="",this.previewEl=null,this.toolbarEl=null,this.lastRange=null,this.buttonMap=new Map,this.headingSelect=null,this.fontSelect=null,this.colorInput=null,this.bgColorInput=null,this.colorSwatchEl=null,this.bgSwatchEl=null,this.mentionsEl=null,this.onEditorKeydown=e=>{if("Tab"!==e.key)return;e.preventDefault(),this.focusAndRestore();const t=window.getSelection();if(!t||0===t.rangeCount)return;const M=t.getRangeAt(0);if(e.shiftKey){if(M.collapsed&&M.startContainer.nodeType===Node.TEXT_NODE){const e=M.startContainer,i=M.startOffset,N=e.data.slice(0,i),o=N.replace(/(\t|[ \u00a0]{2})$/,"");if(o.length!==N.length){e.data=o+e.data.slice(i);const M=document.createRange();M.setStart(e,o.length),M.collapse(!0),t.removeAllRanges(),t.addRange(M),this.updateContent(),this.updateToolbarState()}}return}M.deleteContents();const i=document.createTextNode("\t");M.insertNode(i);const N=document.createRange();N.setStartAfter(i),N.collapse(!0),t.removeAllRanges(),t.addRange(N),this.updateContent(),this.updateToolbarState()},this.onSelectionChange=()=>{if(!this.editorEl)return;const e=document.getSelection();if(!e||0===e.rangeCount)return;const t=e.getRangeAt(0);this.editorEl.contains(t.commonAncestorContainer)&&(this.lastRange=t.cloneRange(),this.updateToolbarState())}}createRenderRoot(){return this}shouldUpdate(){return!1}injectCss(e){if(this.querySelector("style[data-rte-style]"))return;const t=document.createElement("style");t.setAttribute("data-rte-style","true"),t.textContent=e,this.insertBefore(t,this.firstChild)}connectedCallback(){super.connectedCallback(),this.injectCss(MS.cssText),this.toolbarEl=this.querySelector("nile-rte-toolbar"),this.previewEl=this.querySelector("nile-rte-preview"),this.ensureEditor(),this.value&&!this.editorEl.innerHTML.trim()&&(this.editorEl.innerHTML=this.value),this.content=this.editorEl.innerHTML,this.toolbarEl&&this.wireAuthoredToolbar(this.toolbarEl),this.mentionsEl=this.querySelector("nile-rte-mentions"),this.mentionsEl&&(this.mentionsEl.attach?.(this.editorEl,this),this.mentionsEl.setExternalConfig?.(this.mentions)),this.wireEditor(),this.updateToolbarState(),this.syncPreview(),document.addEventListener("selectionchange",this.onSelectionChange,!0)}disconnectedCallback(){document.removeEventListener("selectionchange",this.onSelectionChange,!0),this.mentionsEl&&this.mentionsEl.detach&&this.mentionsEl.detach(),super.disconnectedCallback()}ensureEditor(){if(this.editorEl=this.querySelector(".editor"),!this.editorEl){const e=document.createElement("article");e.className="editor",e.setAttribute("contenteditable","true"),this.toolbarEl?.nextSibling?this.insertBefore(e,this.toolbarEl.nextSibling):this.previewEl?this.insertBefore(e,this.previewEl):this.appendChild(e),this.editorEl=e}this.editorEl.innerHTML.trim()||(this.editorEl.innerHTML="<p><br></p>"),this.ensureAtLeastOneParagraph()}wireEditor(){this.editorEl.addEventListener("input",(()=>{this.ensureAtLeastOneParagraph(),this.updateContent()})),this.editorEl.addEventListener("mouseup",(()=>this.saveSelection())),this.editorEl.addEventListener("keyup",(()=>this.saveSelection())),this.editorEl.addEventListener("keydown",this.onEditorKeydown)}wireAuthoredToolbar(e){this.buttonMap.clear(),this.headingSelect=null,this.fontSelect=null,this.colorInput=null,Array.from(e.children).forEach((e=>{const t=e.tagName.toLowerCase();if("nile-rte-select"!==t||"align"!==e.getAttribute("type")){if("nile-rte-toolbar-item"===t){let t=e.querySelector(":scope > nile-button");const M=e.getAttribute("name")||"",i=e.getAttribute("label")||M,N=e.getAttribute("icon"),o=e.innerHTML.trim().length>0;if(t||(t=document.createElement("nile-button"),t.variant="tertiary",t.size="small"),N)t.innerHTML=`<nile-icon name="${N}" aria-label="${i}"></nile-icon>`,e.innerHTML="";else if(o)t.innerHTML=e.innerHTML,e.innerHTML="";else{const N=iS[M];N?t.innerHTML=`<nile-icon name="${N}" size="20" color="black" aria-label="${i}"></nile-icon>`:t.textContent=i||M,e.innerHTML=""}t.isConnected||e.appendChild(t),t.setAttribute("aria-label",i),t.addEventListener("mousedown",(e=>e.preventDefault())),t.addEventListener("click",(()=>this.onToolbarCommand(M)));const n=this.buttonMap.get(M)??[];return n.push(t),void this.buttonMap.set(M,n)}if("nile-rte-select"!==t){if("nile-rte-color"===t){const t=e.getAttribute("label")??"Text color",M=e.getAttribute("value")??"#000000",i=e.getAttribute("mode")??"text";let N=e.querySelector(':scope > input[type="color"]');N||(N=document.createElement("input"),N.type="color",N.style.position="absolute",N.style.opacity="0",N.style.pointerEvents="none",e.appendChild(N)),N.title=t,N.value=M;let o=e.querySelector(":scope > nile-button");if(!o){const M=document.createElement("nile-button");M.variant="ghost",M.className="rte-color-trigger",M.setAttribute("aria-label",t),M.innerHTML="background"===i?'<span class="swatch-box" aria-hidden="true"></span>':'\n <span class="glyph-stack" aria-hidden="true">\n <span class="glyph">A</span>\n <span class="underline"></span>\n </span>\n ',e.appendChild(M),o=M}const n=o.querySelector(".underline"),s=o.querySelector(".swatch-box");"background"===i?(this.bgColorInput=N,this.bgSwatchEl=s,this.bgSwatchEl&&(this.bgSwatchEl.style.backgroundColor=N.value)):(this.colorInput=N,this.colorSwatchEl=n,this.colorSwatchEl&&(this.colorSwatchEl.style.backgroundColor=N.value)),o.addEventListener("click",(e=>{e.preventDefault(),this.focusAndRestore(),N.click()})),N.addEventListener("input",(()=>{var e,t;this.focusAndRestore(),"background"===i?(e=this.editorEl,t=N.value,Kp(e,"backgroundColor",t,"data-rte-bg"),this.bgSwatchEl&&(this.bgSwatchEl.style.backgroundColor=N.value)):(!function(e,t){Kp(e,"color",t,"data-rte-color")}(this.editorEl,N.value),this.colorSwatchEl&&(this.colorSwatchEl.style.backgroundColor=N.value)),this.updateContent(),this.updateToolbarState()})),o.addEventListener("mousedown",(e=>e.preventDefault())),N.addEventListener("mousedown",(e=>e.preventDefault()))}}else{const t=e.getAttribute("type")||"";e.addEventListener("change",(e=>{this.focusAndRestore();const M=e.detail;"heading"===t?function(e,t){const M=document.getSelection();if(!M||0===M.rangeCount)return;const i=Fp(M.getRangeAt(0).startContainer,e);if(!i)return;if(i.tagName.toLowerCase()===t)return;const N=document.createElement(t);for(;i.firstChild;)N.appendChild(i.firstChild);i.replaceWith(N);const o=document.createRange();o.selectNodeContents(N),o.collapse(!0),M.removeAllRanges(),M.addRange(o)}(this.editorEl,M):"font"===t&&function(e,t){const M=document.getSelection();if(!M||0===M.rangeCount)return;const i=M.getRangeAt(0);if(i.collapsed){const e=document.createElement("span");e.style.fontFamily=t,e.appendChild(document.createTextNode("")),i.insertNode(e);const N=document.createRange();return N.setStart(e.firstChild,1),N.collapse(!0),M.removeAllRanges(),void M.addRange(N)}Jp(i,"span",{style:`font-family:${t}`})}(this.editorEl,M),this.updateContent(),this.updateToolbarState()}))}}else e.addEventListener("change",(e=>{this.focusAndRestore();const t=e.detail;Xp(this.editorEl,t),this.updateContent(),this.updateToolbarState()}))}))}saveSelection(){const e=window.getSelection();e&&e.rangeCount&&(this.lastRange=e.getRangeAt(0).cloneRange())}restoreSelection(){if(!this.lastRange)return;const e=document.getSelection();e&&(e.removeAllRanges(),e.addRange(this.lastRange))}focusAndRestore(){this.editorEl?.focus(),this.restoreSelection()}insertList(e){if(this.restoreSelection(),!this.lastRange)return;const t=document.createElement(e),M=this.lastRange.extractContents(),i=document.createElement("div");i.appendChild(M),Array.from(i.childNodes).forEach((e=>{if(e.nodeType===Node.TEXT_NODE&&!e.textContent?.trim())return;const M=document.createElement("li");M.appendChild(e),t.appendChild(M)})),this.lastRange.insertNode(t),this.afterListEdit(t)}afterListEdit(e){const t=document.createRange();t.setStartAfter(e),t.collapse(!0);const M=window.getSelection();M?.removeAllRanges(),M?.addRange(t),this.saveSelection(),this.updateContent(),this.updateToolbarState()}ensureAtLeastOneParagraph(){const e=this.editorEl;if(!e)return;const t=""===(e.textContent??"").replace(/\u200B/g,"").trim();if(0===e.childNodes.length||t)return void(e.innerHTML="<p><br></p>");if(!e.querySelector("p,h1,h2,h3,h4,h5,h6,ul,ol,table,blockquote,pre")){const t=document.createElement("p");for(;e.firstChild;)t.appendChild(e.firstChild);return t.hasChildNodes()||t.appendChild(document.createElement("br")),void e.appendChild(t)}e.querySelectorAll("p").forEach((e=>{""===(e.textContent??"").replace(/\u200B/g,"")&&(e.innerHTML.toLowerCase().includes("<br")||(e.innerHTML="<br>"))}))}onToolbarCommand(e){switch(this.focusAndRestore(),e){case"bold":Hp(this.editorEl,"strong");break;case"italic":Hp(this.editorEl,"em");break;case"underline":Hp(this.editorEl,"u");break;case"left":Xp(this.editorEl,"left");break;case"center":Xp(this.editorEl,"center");break;case"right":Xp(this.editorEl,"right");break;case"justify":Xp(this.editorEl,"justify");break;case"ul":this.insertList("ul");break;case"ol":this.insertList("ol");break;case"link":!function(e,t){const M=document.getSelection();if(!M||0===M.rangeCount)return;const i=M.getRangeAt(0);let N=i.startContainer,o=null;for(;N&&N!==e;){if(N instanceof HTMLAnchorElement){o=N;break}N=N.parentNode}const n=t??("undefined"!=typeof window&&window.prompt("Enter URL",o?.href||"https://")||"");if(!n)return;if(o)return void(o.href=n);if(i.collapsed){const e=document.createElement("a");e.href=n,e.textContent=n,i.insertNode(e);const t=document.createRange();return t.setStartAfter(e),t.collapse(!0),M.removeAllRanges(),void M.addRange(t)}const s=document.createElement("a");s.href=n;try{i.surroundContents(s)}catch{const e=i.extractContents();s.appendChild(e),i.insertNode(s)}}(this.editorEl);break;case"clear":const e=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),t=[];for(;e.nextNode();){const M=e.currentNode;M.removeAttribute("style"),["B","STRONG","I","EM","U","SPAN","FONT"].includes(M.tagName)&&t.push(M)}for(const e of t){for(;e.firstChild;)e.parentNode?.insertBefore(e.firstChild,e);e.remove()}this.ensureAtLeastOneParagraph()}this.updateContent(),this.updateToolbarState()}setBtnActive(e,t){const M=this.buttonMap.get(e);if(M)for(const e of M)e.toggleAttribute("data-active",!!t)}updateToolbarState(){if(!this.editorEl)return;const e=document.getSelection();if(!e||0===e.rangeCount)return;const t=e.getRangeAt(0);if(!this.editorEl.contains(t.commonAncestorContainer))return;const M=function(e){for(;e&&!(e instanceof HTMLElement);)e=e.parentNode;return e}(t.startContainer)||this.editorEl,i=getComputedStyle(M),N=Fp(t.startContainer,this.editorEl)||this.editorEl,o=(()=>{let e=M;for(;e&&e!==this.editorEl;){if(e instanceof HTMLElement){const t=e.tagName.toLowerCase();if("strong"===t||"b"===t)return!0;const M=getComputedStyle(e).fontWeight;if(parseInt(M,10)>=600)return!0}e=e.parentNode}return!1})(),n=(()=>{let e=M;for(;e&&e!==this.editorEl;){if(e instanceof HTMLElement){const t=e.tagName.toLowerCase();if("em"===t||"i"===t)return!0;if("italic"===getComputedStyle(e).fontStyle)return!0}e=e.parentNode}return!1})(),s=(()=>{let e=M;for(;e&&e!==this.editorEl;){if(e instanceof HTMLElement){const t=getComputedStyle(e).textDecorationLine;if(t&&t.includes("underline"))return!0;if("u"===e.tagName.toLowerCase())return!0}e=e.parentNode}return!1})(),r=!!M.closest("a"),a=N.style.textAlign||getComputedStyle(N).textAlign||"start",l="start"===a?"left":a,D=!!M.closest("li")&&M.closest("ul,ol")?.tagName.toLowerCase()||"";if(this.setBtnActive("bold",o),this.setBtnActive("italic",n),this.setBtnActive("underline",s),this.setBtnActive("link",r),this.setBtnActive("left","left"===l&&!["center","right","justify"].includes(l)),this.setBtnActive("center","center"===l),this.setBtnActive("right","right"===l),this.setBtnActive("justify","justify"===l),this.setBtnActive("ul","ul"===D),this.setBtnActive("ol","ol"===D),this.headingSelect){const e=N.tagName.toLowerCase(),t=["h1","h2","h3"].includes(e)?e:"p";this.headingSelect.value!==t&&(this.headingSelect.value=t)}if(this.fontSelect){const e=(i.fontFamily||"").replace(/["']/g,"").split(",")[0].trim().toLowerCase();if(e)for(const t of Array.from(this.fontSelect.options))if(t.value.toLowerCase()===e){this.fontSelect.value=t.value;break}}if(this.colorInput){const e=$p(i.color);e&&this.colorInput.value.toLowerCase()!==e.toLowerCase()&&(this.colorInput.value=e),this.colorSwatchEl&&(this.colorSwatchEl.style.backgroundColor=this.colorInput.value)}if(this.bgColorInput){const e=getComputedStyle(M).backgroundColor;if(e&&!/transparent|rgba\(\s*0\s*,\s*0\s*,\s*0\s*,\s*0\s*\)/i.test(e)){const t=$p(e);t&&this.bgColorInput.value.toLowerCase()!==t.toLowerCase()&&(this.bgColorInput.value=t)}this.bgSwatchEl&&(this.bgSwatchEl.style.backgroundColor=this.bgColorInput.value)}}syncPreview(){this.updateContent()}updateContent(){if(!this.editorEl)return;this.ensureAtLeastOneParagraph();const e=this.editorEl.cloneNode(!0),t=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),M=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT),i=["font-weight","font-style","text-decoration","color","background-color","font-size","font-family","text-align","line-height","letter-spacing","white-space","vertical-align"];for(;t.nextNode()&&M.nextNode();){const e=t.currentNode,N=M.currentNode,o=window.getComputedStyle(e),n=i.map((e=>`${e}:${o.getPropertyValue(e)}`)).join(";");n.trim()&&N.setAttribute("style",n)}this.content=e.innerHTML,this.previewEl&&(this.previewEl.innerHTML=this.content),this.dispatchEvent(new CustomEvent("content-changed",{detail:{content:this.content},bubbles:!0,composed:!0}))}};e([ge({type:String})],NS.prototype,"value",void 0),e([ge({attribute:"mentions",converter:{fromAttribute:e=>{try{const t=JSON.parse(e),M={};for(const e of Object.keys(t)){const i=t[e];Array.isArray(i)&&(M[e]=i.filter((e=>e&&"string"==typeof e.key&&"string"==typeof e.label)).map((e=>({key:e.key,label:e.label}))))}return M}catch{return{}}},toAttribute:e=>JSON.stringify(e)}})],NS.prototype,"mentions",void 0),e([ce()],NS.prototype,"content",void 0),NS=e([le("nile-rich-text-editor")],NS);
|
13049
13052
|
/**
|
13050
13053
|
* @license
|
13051
13054
|
* Copyright 2021 Google LLC
|
@@ -1,2 +1,2 @@
|
|
1
|
-
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}System.register(["tslib","lit","lit/decorators.js","./nile-rte-toolbar.cjs.js","./nile-rte-toolbar-item.cjs.js","./nile-rte-select.cjs.js","./nile-rte-color.cjs.js","./nile-rte-divider.cjs.js","./nile-rte-preview.cjs.js","./nile-rte-mentions.cjs.js","./utils.cjs.js","./nile-rich-text-editor.css.cjs.js"],function(_export,_context){"use strict";var t,i,s,e,n,o,r,h,l,c,a,u,d,f,m,p,b,g;function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var n=0,F=function F(){};return{s:F,n:function(_n5){function n(){return _n5.apply(this,arguments);}n.toString=function(){return _n5.toString();};return n;}(function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]};}),e:function e(r){throw r;},f:F};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var o,a=!0,u=!1;return{s:function s(){t=t.call(r);},n:function n(){var r=t.next();return a=r.done,r;},e:function e(r){u=!0,o=r;},f:function f(){try{a||null==t["return"]||t["return"]();}finally{if(u)throw o;}}};}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o);}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e;}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+"";}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t);}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e));}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t);}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e;}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}function _superPropGet(t,o,e,r){var p=_get(_getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t);}:p;}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=_superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value;}},_get.apply(null,arguments);}function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=_getPrototypeOf(t)););return t;}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t);},_getPrototypeOf(t);}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e);}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t;},_setPrototypeOf(t,e);}return{setters:[function(_tslib){t=_tslib.__decorate;},function(_lit){i=_lit.LitElement;},function(_litDecoratorsJs){s=_litDecoratorsJs.property;e=_litDecoratorsJs.state;n=_litDecoratorsJs.customElement;},function(_nileRteToolbarCjsJs){},function(_nileRteToolbarItemCjsJs){},function(_nileRteSelectCjsJs){},function(_nileRteColorCjsJs){},function(_nileRteDividerCjsJs){},function(_nileRtePreviewCjsJs){},function(_nileRteMentionsCjsJs){},function(_utilsCjsJs){o=_utilsCjsJs.s;r=_utilsCjsJs.a;h=_utilsCjsJs.b;l=_utilsCjsJs.c;c=_utilsCjsJs.d;a=_utilsCjsJs.i;u=_utilsCjsJs.t;d=_utilsCjsJs.n;f=_utilsCjsJs.e;m=_utilsCjsJs.r;},function(_nileRichTextEditorCssCjsJs){p=_nileRichTextEditorCssCjsJs.s;}],execute:function execute(){b={bold:"format_bold",italic:"format_italic",underline:"format_underline",link:"link_2",left:"format_align_left",center:"format_align_middle",right:"format_align_right",justify:"format_align_justify",ul:"nile-ul",ol:"nile-ol",clear:"error"};_export("N",g=/*#__PURE__*/function(_i){function g(){var _this;_classCallCheck(this,g);_this=_callSuper(this,g,arguments),_this.value="",_this.mentions={},_this.content="",_this.previewEl=null,_this.toolbarEl=null,_this.lastRange=null,_this.buttonMap=new Map(),_this.headingSelect=null,_this.fontSelect=null,_this.colorInput=null,_this.bgColorInput=null,_this.colorSwatchEl=null,_this.bgSwatchEl=null,_this.mentionsEl=null,_this.onEditorKeydown=function(t){if("Tab"!==t.key)return;t.preventDefault(),_this.focusAndRestore();var i=window.getSelection();if(!i||0===i.rangeCount)return;var s=i.getRangeAt(0);if(t.shiftKey){if(s.collapsed&&s.startContainer.nodeType===Node.TEXT_NODE){var _t=s.startContainer,_e=s.startOffset,_n=_t.data.slice(0,_e),_o=_n.replace(/(\t|[ \u00a0]{2})$/,"");if(_o.length!==_n.length){_t.data=_o+_t.data.slice(_e);var _s=document.createRange();_s.setStart(_t,_o.length),_s.collapse(!0),i.removeAllRanges(),i.addRange(_s),_this.updateContent(),_this.updateToolbarState();}}return;}s.deleteContents();var e=document.createTextNode("\t");s.insertNode(e);var n=document.createRange();n.setStartAfter(e),n.collapse(!0),i.removeAllRanges(),i.addRange(n),_this.updateContent(),_this.updateToolbarState();},_this.onSelectionChange=function(){if(!_this.editorEl)return;var t=document.getSelection();if(!t||0===t.rangeCount)return;var i=t.getRangeAt(0);_this.editorEl.contains(i.commonAncestorContainer)&&(_this.lastRange=i.cloneRange(),_this.updateToolbarState());};return _this;}_inherits(g,_i);return _createClass(g,[{key:"createRenderRoot",value:function createRenderRoot(){return this;}},{key:"shouldUpdate",value:function shouldUpdate(){return!1;}},{key:"injectCss",value:function injectCss(t){if(this.querySelector("style[data-rte-style]"))return;var i=document.createElement("style");i.setAttribute("data-rte-style","true"),i.textContent=t,this.insertBefore(i,this.firstChild);}},{key:"connectedCallback",value:function connectedCallback(){var _this$mentionsEl$atta,_this$mentionsEl,_this$mentionsEl$setE,_this$mentionsEl2;_superPropGet(g,"connectedCallback",this,3)([]),this.injectCss(p.cssText),this.toolbarEl=this.querySelector("nile-rte-toolbar"),this.previewEl=this.querySelector("nile-rte-preview"),this.ensureEditor(),this.value&&!this.editorEl.innerHTML.trim()&&(this.editorEl.innerHTML=this.value),this.content=this.editorEl.innerHTML,this.toolbarEl&&this.wireAuthoredToolbar(this.toolbarEl),this.mentionsEl=this.querySelector("nile-rte-mentions"),this.mentionsEl&&((_this$mentionsEl$atta=(_this$mentionsEl=this.mentionsEl).attach)!==null&&_this$mentionsEl$atta!==void 0&&_this$mentionsEl$atta.call(_this$mentionsEl,this.editorEl,this),(_this$mentionsEl$setE=(_this$mentionsEl2=this.mentionsEl).setExternalConfig)!==null&&_this$mentionsEl$setE!==void 0&&_this$mentionsEl$setE.call(_this$mentionsEl2,this.mentions)),this.wireEditor(),this.updateToolbarState(),this.syncPreview(),document.addEventListener("selectionchange",this.onSelectionChange,!0);}},{key:"disconnectedCallback",value:function disconnectedCallback(){document.removeEventListener("selectionchange",this.onSelectionChange,!0),this.mentionsEl&&this.mentionsEl.detach&&this.mentionsEl.detach(),_superPropGet(g,"disconnectedCallback",this,3)([]);}},{key:"ensureEditor",value:function ensureEditor(){if(this.editorEl=this.querySelector(".editor"),!this.editorEl){var _this$toolbarEl;var _t2=document.createElement("article");_t2.className="editor",_t2.setAttribute("contenteditable","true"),(_this$toolbarEl=this.toolbarEl)!==null&&_this$toolbarEl!==void 0&&_this$toolbarEl.nextSibling?this.insertBefore(_t2,this.toolbarEl.nextSibling):this.previewEl?this.insertBefore(_t2,this.previewEl):this.appendChild(_t2),this.editorEl=_t2;}this.editorEl.innerHTML.trim()||(this.editorEl.innerHTML="<p><br></p>"),this.ensureAtLeastOneParagraph();}},{key:"wireEditor",value:function wireEditor(){var _this2=this;this.editorEl.addEventListener("input",function(){_this2.ensureAtLeastOneParagraph(),_this2.updateContent();}),this.editorEl.addEventListener("mouseup",function(){return _this2.saveSelection();}),this.editorEl.addEventListener("keyup",function(){return _this2.saveSelection();}),this.editorEl.addEventListener("keydown",this.onEditorKeydown);}},{key:"wireAuthoredToolbar",value:function wireAuthoredToolbar(t){var _this3=this;this.buttonMap.clear(),this.headingSelect=null,this.fontSelect=null,this.colorInput=null,Array.from(t.children).forEach(function(t){var i=t.tagName.toLowerCase();if("nile-rte-select"!==i||"align"!==t.getAttribute("type")){if("nile-rte-toolbar-item"===i){var _this3$buttonMap$get;var _i2=t.querySelector(":scope > nile-button");var _s2=t.getAttribute("name")||"",_e2=t.getAttribute("label")||_s2,_n2=t.getAttribute("icon"),_o2=t.innerHTML.trim().length>0;if(_i2||(_i2=document.createElement("nile-button"),_i2.variant="tertiary",_i2.size="small"),_n2)_i2.innerHTML="<nile-icon name=\"".concat(_n2,"\" aria-label=\"").concat(_e2,"\"></nile-icon>"),t.innerHTML="";else if(_o2)_i2.innerHTML=t.innerHTML,t.innerHTML="";else{var _n3=b[_s2];_n3?_i2.innerHTML="<nile-icon name=\"".concat(_n3,"\" size=\"20\" color=\"black\" aria-label=\"").concat(_e2,"\"></nile-icon>"):_i2.textContent=_e2||_s2,t.innerHTML="";}_i2.isConnected||t.appendChild(_i2),_i2.setAttribute("aria-label",_e2),_i2.addEventListener("mousedown",function(t){return t.preventDefault();}),_i2.addEventListener("click",function(){return _this3.onToolbarCommand(_s2);});var _r=(_this3$buttonMap$get=_this3.buttonMap.get(_s2))!==null&&_this3$buttonMap$get!==void 0?_this3$buttonMap$get:[];return _r.push(_i2),void _this3.buttonMap.set(_s2,_r);}if("nile-rte-select"!==i){if("nile-rte-color"===i){var _t$getAttribute,_t$getAttribute2,_t$getAttribute3;var _i3=(_t$getAttribute=t.getAttribute("label"))!==null&&_t$getAttribute!==void 0?_t$getAttribute:"Text color",_s3=(_t$getAttribute2=t.getAttribute("value"))!==null&&_t$getAttribute2!==void 0?_t$getAttribute2:"#000000",_e3=(_t$getAttribute3=t.getAttribute("mode"))!==null&&_t$getAttribute3!==void 0?_t$getAttribute3:"text";var _n4=t.querySelector(':scope > input[type="color"]');_n4||(_n4=document.createElement("input"),_n4.type="color",_n4.style.position="absolute",_n4.style.opacity="0",_n4.style.pointerEvents="none",t.appendChild(_n4)),_n4.title=_i3,_n4.value=_s3;var _o3=t.querySelector(":scope > button.rte-color-trigger");_o3||(_o3=document.createElement("button"),_o3.type="button",_o3.className="rte-color-trigger",_o3.setAttribute("aria-label",_i3),_o3.innerHTML="background"===_e3?'\n <span class="swatch-box" aria-hidden="true"></span>\n ':'\n <span class="glyph-stack" aria-hidden="true">\n <span class="glyph">A</span>\n <span class="underline"></span>\n </span>\n ',t.appendChild(_o3));var _r2=_o3.querySelector(".underline"),_h=_o3.querySelector(".swatch-box");"background"===_e3?(_this3.bgColorInput=_n4,_this3.bgSwatchEl=_h,_this3.bgSwatchEl&&(_this3.bgSwatchEl.style.backgroundColor=_n4.value)):(_this3.colorInput=_n4,_this3.colorSwatchEl=_r2,_this3.colorSwatchEl&&(_this3.colorSwatchEl.style.backgroundColor=_n4.value)),_o3.addEventListener("click",function(t){t.preventDefault(),_this3.focusAndRestore(),_n4.click();}),_n4.addEventListener("input",function(){_this3.focusAndRestore(),"background"===_e3?(l(_this3.editorEl,_n4.value),_this3.bgSwatchEl&&(_this3.bgSwatchEl.style.backgroundColor=_n4.value)):(c(_this3.editorEl,_n4.value),_this3.colorSwatchEl&&(_this3.colorSwatchEl.style.backgroundColor=_n4.value)),_this3.updateContent(),_this3.updateToolbarState();}),_o3.addEventListener("mousedown",function(t){return t.preventDefault();}),_n4.addEventListener("mousedown",function(t){return t.preventDefault();});}}else{var _i4=t.getAttribute("type")||"";t.addEventListener("change",function(t){_this3.focusAndRestore();var s=t.detail;"heading"===_i4?r(_this3.editorEl,s):"font"===_i4&&h(_this3.editorEl,s),_this3.updateContent(),_this3.updateToolbarState();});}}else t.addEventListener("change",function(t){_this3.focusAndRestore();var i=t.detail;o(_this3.editorEl,i),_this3.updateContent(),_this3.updateToolbarState();});});}},{key:"saveSelection",value:function saveSelection(){var t=window.getSelection();t&&t.rangeCount&&(this.lastRange=t.getRangeAt(0).cloneRange());}},{key:"restoreSelection",value:function restoreSelection(){if(!this.lastRange)return;var t=document.getSelection();t&&(t.removeAllRanges(),t.addRange(this.lastRange));}},{key:"focusAndRestore",value:function focusAndRestore(){var _this$editorEl;(_this$editorEl=this.editorEl)!==null&&_this$editorEl!==void 0&&_this$editorEl.focus(),this.restoreSelection();}},{key:"insertList",value:function insertList(t){if(this.restoreSelection(),!this.lastRange)return;var i=document.createElement(t),s=this.lastRange.extractContents(),e=document.createElement("div");e.appendChild(s),Array.from(e.childNodes).forEach(function(t){var _t$textContent;if(t.nodeType===Node.TEXT_NODE&&!((_t$textContent=t.textContent)!==null&&_t$textContent!==void 0&&_t$textContent.trim()))return;var s=document.createElement("li");s.appendChild(t),i.appendChild(s);}),this.lastRange.insertNode(i),this.afterListEdit(i);}},{key:"afterListEdit",value:function afterListEdit(t){var i=document.createRange();i.setStartAfter(t),i.collapse(!0);var s=window.getSelection();s!==null&&s!==void 0&&s.removeAllRanges(),s!==null&&s!==void 0&&s.addRange(i),this.saveSelection(),this.updateContent(),this.updateToolbarState();}},{key:"ensureAtLeastOneParagraph",value:function ensureAtLeastOneParagraph(){var _t$textContent2;var t=this.editorEl;if(!t)return;var i=""===((_t$textContent2=t.textContent)!==null&&_t$textContent2!==void 0?_t$textContent2:"").replace(/\u200B/g,"").trim();if(0===t.childNodes.length||i)return void(t.innerHTML="<p><br></p>");if(!t.querySelector("p,h1,h2,h3,h4,h5,h6,ul,ol,table,blockquote,pre")){var _i5=document.createElement("p");for(;t.firstChild;)_i5.appendChild(t.firstChild);return _i5.hasChildNodes()||_i5.appendChild(document.createElement("br")),void t.appendChild(_i5);}t.querySelectorAll("p").forEach(function(t){var _t$textContent3;""===((_t$textContent3=t.textContent)!==null&&_t$textContent3!==void 0?_t$textContent3:"").replace(/\u200B/g,"")&&(t.innerHTML.toLowerCase().includes("<br")||(t.innerHTML="<br>"));});}},{key:"onToolbarCommand",value:function onToolbarCommand(t){switch(this.focusAndRestore(),t){case"bold":u(this.editorEl,"strong");break;case"italic":u(this.editorEl,"em");break;case"underline":u(this.editorEl,"u");break;case"left":o(this.editorEl,"left");break;case"center":o(this.editorEl,"center");break;case"right":o(this.editorEl,"right");break;case"justify":o(this.editorEl,"justify");break;case"ul":this.insertList("ul");break;case"ol":this.insertList("ol");break;case"link":a(this.editorEl);break;case"clear":var _t3=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),_i6=[];for(;_t3.nextNode();){var _s4=_t3.currentNode;_s4.removeAttribute("style"),["B","STRONG","I","EM","U","SPAN","FONT"].includes(_s4.tagName)&&_i6.push(_s4);}for(var _i8=0,_i7=_i6;_i8<_i7.length;_i8++){var _t4=_i7[_i8];for(;_t4.firstChild;){var _t4$parentNode;(_t4$parentNode=_t4.parentNode)===null||_t4$parentNode===void 0||_t4$parentNode.insertBefore(_t4.firstChild,_t4);}_t4.remove();}this.ensureAtLeastOneParagraph();}this.updateContent(),this.updateToolbarState();}},{key:"setBtnActive",value:function setBtnActive(t,i){var s=this.buttonMap.get(t);if(s){var _iterator=_createForOfIteratorHelper(s),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var _t5=_step.value;_t5.toggleAttribute("data-active",!!i);}}catch(err){_iterator.e(err);}finally{_iterator.f();}}}},{key:"updateToolbarState",value:function updateToolbarState(){var _this4=this,_s$closest;if(!this.editorEl)return;var t=document.getSelection();if(!t||0===t.rangeCount)return;var i=t.getRangeAt(0);if(!this.editorEl.contains(i.commonAncestorContainer))return;var s=d(i.startContainer)||this.editorEl,e=getComputedStyle(s),n=f(i.startContainer,this.editorEl)||this.editorEl,o=function(){var t=s;for(;t&&t!==_this4.editorEl;){if(t instanceof HTMLElement){var _i9=t.tagName.toLowerCase();if("strong"===_i9||"b"===_i9)return!0;var _s5=getComputedStyle(t).fontWeight;if(parseInt(_s5,10)>=600)return!0;}t=t.parentNode;}return!1;}(),r=function(){var t=s;for(;t&&t!==_this4.editorEl;){if(t instanceof HTMLElement){var _i10=t.tagName.toLowerCase();if("em"===_i10||"i"===_i10)return!0;if("italic"===getComputedStyle(t).fontStyle)return!0;}t=t.parentNode;}return!1;}(),h=function(){var t=s;for(;t&&t!==_this4.editorEl;){if(t instanceof HTMLElement){var _i11=getComputedStyle(t).textDecorationLine;if(_i11&&_i11.includes("underline"))return!0;if("u"===t.tagName.toLowerCase())return!0;}t=t.parentNode;}return!1;}(),l=!!s.closest("a"),c=n.style.textAlign||getComputedStyle(n).textAlign||"start",a="start"===c?"left":c,u=!!s.closest("li")&&((_s$closest=s.closest("ul,ol"))===null||_s$closest===void 0?void 0:_s$closest.tagName.toLowerCase())||"";if(this.setBtnActive("bold",o),this.setBtnActive("italic",r),this.setBtnActive("underline",h),this.setBtnActive("link",l),this.setBtnActive("left","left"===a&&!["center","right","justify"].includes(a)),this.setBtnActive("center","center"===a),this.setBtnActive("right","right"===a),this.setBtnActive("justify","justify"===a),this.setBtnActive("ul","ul"===u),this.setBtnActive("ol","ol"===u),this.headingSelect){var _t6=n.tagName.toLowerCase(),_i12=["h1","h2","h3"].includes(_t6)?_t6:"p";this.headingSelect.value!==_i12&&(this.headingSelect.value=_i12);}if(this.fontSelect){var _t7=(e.fontFamily||"").replace(/["']/g,"").split(",")[0].trim().toLowerCase();if(_t7)for(var _i13=0,_Array$from=Array.from(this.fontSelect.options);_i13<_Array$from.length;_i13++){var _i14=_Array$from[_i13];if(_i14.value.toLowerCase()===_t7){this.fontSelect.value=_i14.value;break;}}}if(this.colorInput){var _t8=m(e.color);_t8&&this.colorInput.value.toLowerCase()!==_t8.toLowerCase()&&(this.colorInput.value=_t8),this.colorSwatchEl&&(this.colorSwatchEl.style.backgroundColor=this.colorInput.value);}if(this.bgColorInput){var _t9=getComputedStyle(s).backgroundColor;if(_t9&&!/transparent|rgba\(\s*0\s*,\s*0\s*,\s*0\s*,\s*0\s*\)/i.test(_t9)){var _i15=m(_t9);_i15&&this.bgColorInput.value.toLowerCase()!==_i15.toLowerCase()&&(this.bgColorInput.value=_i15);}this.bgSwatchEl&&(this.bgSwatchEl.style.backgroundColor=this.bgColorInput.value);}}},{key:"syncPreview",value:function syncPreview(){this.updateContent();}},{key:"updateContent",value:function updateContent(){if(!this.editorEl)return;this.ensureAtLeastOneParagraph();var t=this.editorEl.cloneNode(!0),i=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),s=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT);var _loop=function _loop(){var t=i.currentNode,e=s.currentNode,n=window.getComputedStyle(t),o=Array.from(n).map(function(t){return"".concat(t,":").concat(n.getPropertyValue(t));}).join(";");e.setAttribute("style",o);};for(;i.nextNode()&&s.nextNode();){_loop();}this.content=t.innerHTML,this.previewEl&&(this.previewEl.innerHTML=this.content),this.dispatchEvent(new CustomEvent("content-changed",{detail:{content:this.content},bubbles:!0,composed:!0}));}}]);}(i));t([s({type:String})],g.prototype,"value",void 0),t([s({attribute:"mentions",converter:{fromAttribute:function fromAttribute(t){try{var _i16=JSON.parse(t),_s6={};for(var _i17=0,_Object$keys=Object.keys(_i16);_i17<_Object$keys.length;_i17++){var _t10=_Object$keys[_i17];var _e4=_i16[_t10];Array.isArray(_e4)&&(_s6[_t10]=_e4.filter(function(t){return t&&"string"==typeof t.key&&"string"==typeof t.label;}).map(function(t){return{key:t.key,label:t.label};}));}return _s6;}catch(_unused){return{};}},toAttribute:function toAttribute(t){return JSON.stringify(t);}}})],g.prototype,"mentions",void 0),t([e()],g.prototype,"content",void 0),_export("N",g=t([n("nile-rich-text-editor")],g));}};});
|
1
|
+
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o;}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o;},_typeof(o);}System.register(["tslib","lit","lit/decorators.js","./nile-rte-toolbar.cjs.js","./nile-rte-toolbar-item.cjs.js","./nile-rte-select.cjs.js","./nile-rte-color.cjs.js","./nile-rte-divider.cjs.js","./nile-rte-preview.cjs.js","./nile-rte-mentions.cjs.js","./utils.cjs.js","./nile-rich-text-editor.css.cjs.js"],function(_export,_context){"use strict";var t,i,s,e,n,o,r,h,l,c,a,u,d,f,m,p,b,g;function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var n=0,F=function F(){};return{s:F,n:function(_n5){function n(){return _n5.apply(this,arguments);}n.toString=function(){return _n5.toString();};return n;}(function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]};}),e:function e(r){throw r;},f:F};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var o,a=!0,u=!1;return{s:function s(){t=t.call(r);},n:function n(){var r=t.next();return a=r.done,r;},e:function e(r){u=!0,o=r;},f:function f(){try{a||null==t["return"]||t["return"]();}finally{if(u)throw o;}}};}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function");}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o);}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e;}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+"";}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return("string"===r?String:Number)(t);}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e));}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t);}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e;}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}function _superPropGet(t,o,e,r){var p=_get(_getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&"function"==typeof p?function(t){return p.apply(e,t);}:p;}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=_superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value;}},_get.apply(null,arguments);}function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=_getPrototypeOf(t)););return t;}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t);},_getPrototypeOf(t);}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e);}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t;},_setPrototypeOf(t,e);}return{setters:[function(_tslib){t=_tslib.__decorate;},function(_lit){i=_lit.LitElement;},function(_litDecoratorsJs){s=_litDecoratorsJs.property;e=_litDecoratorsJs.state;n=_litDecoratorsJs.customElement;},function(_nileRteToolbarCjsJs){},function(_nileRteToolbarItemCjsJs){},function(_nileRteSelectCjsJs){},function(_nileRteColorCjsJs){},function(_nileRteDividerCjsJs){},function(_nileRtePreviewCjsJs){},function(_nileRteMentionsCjsJs){},function(_utilsCjsJs){o=_utilsCjsJs.s;r=_utilsCjsJs.a;h=_utilsCjsJs.b;l=_utilsCjsJs.c;c=_utilsCjsJs.d;a=_utilsCjsJs.i;u=_utilsCjsJs.t;d=_utilsCjsJs.n;f=_utilsCjsJs.e;m=_utilsCjsJs.r;},function(_nileRichTextEditorCssCjsJs){p=_nileRichTextEditorCssCjsJs.s;}],execute:function execute(){b={bold:"format_bold",italic:"format_italic",underline:"format_underline",link:"link_2",left:"format_align_left",center:"format_align_middle",right:"format_align_right",justify:"format_align_justify",ul:"format_list_bulleted",ol:"format_list_numbered",clear:"error"};_export("N",g=/*#__PURE__*/function(_i){function g(){var _this;_classCallCheck(this,g);_this=_callSuper(this,g,arguments),_this.value="",_this.mentions={},_this.content="",_this.previewEl=null,_this.toolbarEl=null,_this.lastRange=null,_this.buttonMap=new Map(),_this.headingSelect=null,_this.fontSelect=null,_this.colorInput=null,_this.bgColorInput=null,_this.colorSwatchEl=null,_this.bgSwatchEl=null,_this.mentionsEl=null,_this.onEditorKeydown=function(t){if("Tab"!==t.key)return;t.preventDefault(),_this.focusAndRestore();var i=window.getSelection();if(!i||0===i.rangeCount)return;var s=i.getRangeAt(0);if(t.shiftKey){if(s.collapsed&&s.startContainer.nodeType===Node.TEXT_NODE){var _t=s.startContainer,_e=s.startOffset,_n=_t.data.slice(0,_e),_o=_n.replace(/(\t|[ \u00a0]{2})$/,"");if(_o.length!==_n.length){_t.data=_o+_t.data.slice(_e);var _s=document.createRange();_s.setStart(_t,_o.length),_s.collapse(!0),i.removeAllRanges(),i.addRange(_s),_this.updateContent(),_this.updateToolbarState();}}return;}s.deleteContents();var e=document.createTextNode("\t");s.insertNode(e);var n=document.createRange();n.setStartAfter(e),n.collapse(!0),i.removeAllRanges(),i.addRange(n),_this.updateContent(),_this.updateToolbarState();},_this.onSelectionChange=function(){if(!_this.editorEl)return;var t=document.getSelection();if(!t||0===t.rangeCount)return;var i=t.getRangeAt(0);_this.editorEl.contains(i.commonAncestorContainer)&&(_this.lastRange=i.cloneRange(),_this.updateToolbarState());};return _this;}_inherits(g,_i);return _createClass(g,[{key:"createRenderRoot",value:function createRenderRoot(){return this;}},{key:"shouldUpdate",value:function shouldUpdate(){return!1;}},{key:"injectCss",value:function injectCss(t){if(this.querySelector("style[data-rte-style]"))return;var i=document.createElement("style");i.setAttribute("data-rte-style","true"),i.textContent=t,this.insertBefore(i,this.firstChild);}},{key:"connectedCallback",value:function connectedCallback(){var _this$mentionsEl$atta,_this$mentionsEl,_this$mentionsEl$setE,_this$mentionsEl2;_superPropGet(g,"connectedCallback",this,3)([]),this.injectCss(p.cssText),this.toolbarEl=this.querySelector("nile-rte-toolbar"),this.previewEl=this.querySelector("nile-rte-preview"),this.ensureEditor(),this.value&&!this.editorEl.innerHTML.trim()&&(this.editorEl.innerHTML=this.value),this.content=this.editorEl.innerHTML,this.toolbarEl&&this.wireAuthoredToolbar(this.toolbarEl),this.mentionsEl=this.querySelector("nile-rte-mentions"),this.mentionsEl&&((_this$mentionsEl$atta=(_this$mentionsEl=this.mentionsEl).attach)!==null&&_this$mentionsEl$atta!==void 0&&_this$mentionsEl$atta.call(_this$mentionsEl,this.editorEl,this),(_this$mentionsEl$setE=(_this$mentionsEl2=this.mentionsEl).setExternalConfig)!==null&&_this$mentionsEl$setE!==void 0&&_this$mentionsEl$setE.call(_this$mentionsEl2,this.mentions)),this.wireEditor(),this.updateToolbarState(),this.syncPreview(),document.addEventListener("selectionchange",this.onSelectionChange,!0);}},{key:"disconnectedCallback",value:function disconnectedCallback(){document.removeEventListener("selectionchange",this.onSelectionChange,!0),this.mentionsEl&&this.mentionsEl.detach&&this.mentionsEl.detach(),_superPropGet(g,"disconnectedCallback",this,3)([]);}},{key:"ensureEditor",value:function ensureEditor(){if(this.editorEl=this.querySelector(".editor"),!this.editorEl){var _this$toolbarEl;var _t2=document.createElement("article");_t2.className="editor",_t2.setAttribute("contenteditable","true"),(_this$toolbarEl=this.toolbarEl)!==null&&_this$toolbarEl!==void 0&&_this$toolbarEl.nextSibling?this.insertBefore(_t2,this.toolbarEl.nextSibling):this.previewEl?this.insertBefore(_t2,this.previewEl):this.appendChild(_t2),this.editorEl=_t2;}this.editorEl.innerHTML.trim()||(this.editorEl.innerHTML="<p><br></p>"),this.ensureAtLeastOneParagraph();}},{key:"wireEditor",value:function wireEditor(){var _this2=this;this.editorEl.addEventListener("input",function(){_this2.ensureAtLeastOneParagraph(),_this2.updateContent();}),this.editorEl.addEventListener("mouseup",function(){return _this2.saveSelection();}),this.editorEl.addEventListener("keyup",function(){return _this2.saveSelection();}),this.editorEl.addEventListener("keydown",this.onEditorKeydown);}},{key:"wireAuthoredToolbar",value:function wireAuthoredToolbar(t){var _this3=this;this.buttonMap.clear(),this.headingSelect=null,this.fontSelect=null,this.colorInput=null,Array.from(t.children).forEach(function(t){var i=t.tagName.toLowerCase();if("nile-rte-select"!==i||"align"!==t.getAttribute("type")){if("nile-rte-toolbar-item"===i){var _this3$buttonMap$get;var _i2=t.querySelector(":scope > nile-button");var _s2=t.getAttribute("name")||"",_e2=t.getAttribute("label")||_s2,_n2=t.getAttribute("icon"),_o2=t.innerHTML.trim().length>0;if(_i2||(_i2=document.createElement("nile-button"),_i2.variant="tertiary",_i2.size="small"),_n2)_i2.innerHTML="<nile-icon name=\"".concat(_n2,"\" aria-label=\"").concat(_e2,"\"></nile-icon>"),t.innerHTML="";else if(_o2)_i2.innerHTML=t.innerHTML,t.innerHTML="";else{var _n3=b[_s2];_n3?_i2.innerHTML="<nile-icon name=\"".concat(_n3,"\" size=\"20\" color=\"black\" aria-label=\"").concat(_e2,"\"></nile-icon>"):_i2.textContent=_e2||_s2,t.innerHTML="";}_i2.isConnected||t.appendChild(_i2),_i2.setAttribute("aria-label",_e2),_i2.addEventListener("mousedown",function(t){return t.preventDefault();}),_i2.addEventListener("click",function(){return _this3.onToolbarCommand(_s2);});var _r=(_this3$buttonMap$get=_this3.buttonMap.get(_s2))!==null&&_this3$buttonMap$get!==void 0?_this3$buttonMap$get:[];return _r.push(_i2),void _this3.buttonMap.set(_s2,_r);}if("nile-rte-select"!==i){if("nile-rte-color"===i){var _t$getAttribute,_t$getAttribute2,_t$getAttribute3;var _i3=(_t$getAttribute=t.getAttribute("label"))!==null&&_t$getAttribute!==void 0?_t$getAttribute:"Text color",_s3=(_t$getAttribute2=t.getAttribute("value"))!==null&&_t$getAttribute2!==void 0?_t$getAttribute2:"#000000",_e3=(_t$getAttribute3=t.getAttribute("mode"))!==null&&_t$getAttribute3!==void 0?_t$getAttribute3:"text";var _n4=t.querySelector(':scope > input[type="color"]');_n4||(_n4=document.createElement("input"),_n4.type="color",_n4.style.position="absolute",_n4.style.opacity="0",_n4.style.pointerEvents="none",t.appendChild(_n4)),_n4.title=_i3,_n4.value=_s3;var _o3=t.querySelector(":scope > nile-button");if(!_o3){var _s4=document.createElement("nile-button");_s4.variant="ghost",_s4.className="rte-color-trigger",_s4.setAttribute("aria-label",_i3),_s4.innerHTML="background"===_e3?'<span class="swatch-box" aria-hidden="true"></span>':'\n <span class="glyph-stack" aria-hidden="true">\n <span class="glyph">A</span>\n <span class="underline"></span>\n </span>\n ',t.appendChild(_s4),_o3=_s4;}var _r2=_o3.querySelector(".underline"),_h=_o3.querySelector(".swatch-box");"background"===_e3?(_this3.bgColorInput=_n4,_this3.bgSwatchEl=_h,_this3.bgSwatchEl&&(_this3.bgSwatchEl.style.backgroundColor=_n4.value)):(_this3.colorInput=_n4,_this3.colorSwatchEl=_r2,_this3.colorSwatchEl&&(_this3.colorSwatchEl.style.backgroundColor=_n4.value)),_o3.addEventListener("click",function(t){t.preventDefault(),_this3.focusAndRestore(),_n4.click();}),_n4.addEventListener("input",function(){_this3.focusAndRestore(),"background"===_e3?(l(_this3.editorEl,_n4.value),_this3.bgSwatchEl&&(_this3.bgSwatchEl.style.backgroundColor=_n4.value)):(c(_this3.editorEl,_n4.value),_this3.colorSwatchEl&&(_this3.colorSwatchEl.style.backgroundColor=_n4.value)),_this3.updateContent(),_this3.updateToolbarState();}),_o3.addEventListener("mousedown",function(t){return t.preventDefault();}),_n4.addEventListener("mousedown",function(t){return t.preventDefault();});}}else{var _i4=t.getAttribute("type")||"";t.addEventListener("change",function(t){_this3.focusAndRestore();var s=t.detail;"heading"===_i4?r(_this3.editorEl,s):"font"===_i4&&h(_this3.editorEl,s),_this3.updateContent(),_this3.updateToolbarState();});}}else t.addEventListener("change",function(t){_this3.focusAndRestore();var i=t.detail;o(_this3.editorEl,i),_this3.updateContent(),_this3.updateToolbarState();});});}},{key:"saveSelection",value:function saveSelection(){var t=window.getSelection();t&&t.rangeCount&&(this.lastRange=t.getRangeAt(0).cloneRange());}},{key:"restoreSelection",value:function restoreSelection(){if(!this.lastRange)return;var t=document.getSelection();t&&(t.removeAllRanges(),t.addRange(this.lastRange));}},{key:"focusAndRestore",value:function focusAndRestore(){var _this$editorEl;(_this$editorEl=this.editorEl)!==null&&_this$editorEl!==void 0&&_this$editorEl.focus(),this.restoreSelection();}},{key:"insertList",value:function insertList(t){if(this.restoreSelection(),!this.lastRange)return;var i=document.createElement(t),s=this.lastRange.extractContents(),e=document.createElement("div");e.appendChild(s),Array.from(e.childNodes).forEach(function(t){var _t$textContent;if(t.nodeType===Node.TEXT_NODE&&!((_t$textContent=t.textContent)!==null&&_t$textContent!==void 0&&_t$textContent.trim()))return;var s=document.createElement("li");s.appendChild(t),i.appendChild(s);}),this.lastRange.insertNode(i),this.afterListEdit(i);}},{key:"afterListEdit",value:function afterListEdit(t){var i=document.createRange();i.setStartAfter(t),i.collapse(!0);var s=window.getSelection();s!==null&&s!==void 0&&s.removeAllRanges(),s!==null&&s!==void 0&&s.addRange(i),this.saveSelection(),this.updateContent(),this.updateToolbarState();}},{key:"ensureAtLeastOneParagraph",value:function ensureAtLeastOneParagraph(){var _t$textContent2;var t=this.editorEl;if(!t)return;var i=""===((_t$textContent2=t.textContent)!==null&&_t$textContent2!==void 0?_t$textContent2:"").replace(/\u200B/g,"").trim();if(0===t.childNodes.length||i)return void(t.innerHTML="<p><br></p>");if(!t.querySelector("p,h1,h2,h3,h4,h5,h6,ul,ol,table,blockquote,pre")){var _i5=document.createElement("p");for(;t.firstChild;)_i5.appendChild(t.firstChild);return _i5.hasChildNodes()||_i5.appendChild(document.createElement("br")),void t.appendChild(_i5);}t.querySelectorAll("p").forEach(function(t){var _t$textContent3;""===((_t$textContent3=t.textContent)!==null&&_t$textContent3!==void 0?_t$textContent3:"").replace(/\u200B/g,"")&&(t.innerHTML.toLowerCase().includes("<br")||(t.innerHTML="<br>"));});}},{key:"onToolbarCommand",value:function onToolbarCommand(t){switch(this.focusAndRestore(),t){case"bold":u(this.editorEl,"strong");break;case"italic":u(this.editorEl,"em");break;case"underline":u(this.editorEl,"u");break;case"left":o(this.editorEl,"left");break;case"center":o(this.editorEl,"center");break;case"right":o(this.editorEl,"right");break;case"justify":o(this.editorEl,"justify");break;case"ul":this.insertList("ul");break;case"ol":this.insertList("ol");break;case"link":a(this.editorEl);break;case"clear":var _t3=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),_i6=[];for(;_t3.nextNode();){var _s5=_t3.currentNode;_s5.removeAttribute("style"),["B","STRONG","I","EM","U","SPAN","FONT"].includes(_s5.tagName)&&_i6.push(_s5);}for(var _i8=0,_i7=_i6;_i8<_i7.length;_i8++){var _t4=_i7[_i8];for(;_t4.firstChild;){var _t4$parentNode;(_t4$parentNode=_t4.parentNode)===null||_t4$parentNode===void 0||_t4$parentNode.insertBefore(_t4.firstChild,_t4);}_t4.remove();}this.ensureAtLeastOneParagraph();}this.updateContent(),this.updateToolbarState();}},{key:"setBtnActive",value:function setBtnActive(t,i){var s=this.buttonMap.get(t);if(s){var _iterator=_createForOfIteratorHelper(s),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var _t5=_step.value;_t5.toggleAttribute("data-active",!!i);}}catch(err){_iterator.e(err);}finally{_iterator.f();}}}},{key:"updateToolbarState",value:function updateToolbarState(){var _this4=this,_s$closest;if(!this.editorEl)return;var t=document.getSelection();if(!t||0===t.rangeCount)return;var i=t.getRangeAt(0);if(!this.editorEl.contains(i.commonAncestorContainer))return;var s=d(i.startContainer)||this.editorEl,e=getComputedStyle(s),n=f(i.startContainer,this.editorEl)||this.editorEl,o=function(){var t=s;for(;t&&t!==_this4.editorEl;){if(t instanceof HTMLElement){var _i9=t.tagName.toLowerCase();if("strong"===_i9||"b"===_i9)return!0;var _s6=getComputedStyle(t).fontWeight;if(parseInt(_s6,10)>=600)return!0;}t=t.parentNode;}return!1;}(),r=function(){var t=s;for(;t&&t!==_this4.editorEl;){if(t instanceof HTMLElement){var _i10=t.tagName.toLowerCase();if("em"===_i10||"i"===_i10)return!0;if("italic"===getComputedStyle(t).fontStyle)return!0;}t=t.parentNode;}return!1;}(),h=function(){var t=s;for(;t&&t!==_this4.editorEl;){if(t instanceof HTMLElement){var _i11=getComputedStyle(t).textDecorationLine;if(_i11&&_i11.includes("underline"))return!0;if("u"===t.tagName.toLowerCase())return!0;}t=t.parentNode;}return!1;}(),l=!!s.closest("a"),c=n.style.textAlign||getComputedStyle(n).textAlign||"start",a="start"===c?"left":c,u=!!s.closest("li")&&((_s$closest=s.closest("ul,ol"))===null||_s$closest===void 0?void 0:_s$closest.tagName.toLowerCase())||"";if(this.setBtnActive("bold",o),this.setBtnActive("italic",r),this.setBtnActive("underline",h),this.setBtnActive("link",l),this.setBtnActive("left","left"===a&&!["center","right","justify"].includes(a)),this.setBtnActive("center","center"===a),this.setBtnActive("right","right"===a),this.setBtnActive("justify","justify"===a),this.setBtnActive("ul","ul"===u),this.setBtnActive("ol","ol"===u),this.headingSelect){var _t6=n.tagName.toLowerCase(),_i12=["h1","h2","h3"].includes(_t6)?_t6:"p";this.headingSelect.value!==_i12&&(this.headingSelect.value=_i12);}if(this.fontSelect){var _t7=(e.fontFamily||"").replace(/["']/g,"").split(",")[0].trim().toLowerCase();if(_t7)for(var _i13=0,_Array$from=Array.from(this.fontSelect.options);_i13<_Array$from.length;_i13++){var _i14=_Array$from[_i13];if(_i14.value.toLowerCase()===_t7){this.fontSelect.value=_i14.value;break;}}}if(this.colorInput){var _t8=m(e.color);_t8&&this.colorInput.value.toLowerCase()!==_t8.toLowerCase()&&(this.colorInput.value=_t8),this.colorSwatchEl&&(this.colorSwatchEl.style.backgroundColor=this.colorInput.value);}if(this.bgColorInput){var _t9=getComputedStyle(s).backgroundColor;if(_t9&&!/transparent|rgba\(\s*0\s*,\s*0\s*,\s*0\s*,\s*0\s*\)/i.test(_t9)){var _i15=m(_t9);_i15&&this.bgColorInput.value.toLowerCase()!==_i15.toLowerCase()&&(this.bgColorInput.value=_i15);}this.bgSwatchEl&&(this.bgSwatchEl.style.backgroundColor=this.bgColorInput.value);}}},{key:"syncPreview",value:function syncPreview(){this.updateContent();}},{key:"updateContent",value:function updateContent(){if(!this.editorEl)return;this.ensureAtLeastOneParagraph();var t=this.editorEl.cloneNode(!0),i=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),s=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT),e=["font-weight","font-style","text-decoration","color","background-color","font-size","font-family","text-align","line-height","letter-spacing","white-space","vertical-align"];var _loop=function _loop(){var t=i.currentNode,n=s.currentNode,o=window.getComputedStyle(t),r=e.map(function(t){return"".concat(t,":").concat(o.getPropertyValue(t));}).join(";");r.trim()&&n.setAttribute("style",r);};for(;i.nextNode()&&s.nextNode();){_loop();}this.content=t.innerHTML,this.previewEl&&(this.previewEl.innerHTML=this.content),this.dispatchEvent(new CustomEvent("content-changed",{detail:{content:this.content},bubbles:!0,composed:!0}));}}]);}(i));t([s({type:String})],g.prototype,"value",void 0),t([s({attribute:"mentions",converter:{fromAttribute:function fromAttribute(t){try{var _i16=JSON.parse(t),_s7={};for(var _i17=0,_Object$keys=Object.keys(_i16);_i17<_Object$keys.length;_i17++){var _t10=_Object$keys[_i17];var _e4=_i16[_t10];Array.isArray(_e4)&&(_s7[_t10]=_e4.filter(function(t){return t&&"string"==typeof t.key&&"string"==typeof t.label;}).map(function(t){return{key:t.key,label:t.label};}));}return _s7;}catch(_unused){return{};}},toAttribute:function toAttribute(t){return JSON.stringify(t);}}})],g.prototype,"mentions",void 0),t([e()],g.prototype,"content",void 0),_export("N",g=t([n("nile-rich-text-editor")],g));}};});
|
2
2
|
//# sourceMappingURL=nile-rich-text-editor.cjs.js.map
|