@aquera/nile-elements 1.2.8-beta-1.1 → 1.2.8-beta-1.3
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/README.md +5 -0
- package/demo/index.html +33 -93
- package/demo/nxtgen.css +0 -6
- package/demo/variables.css +0 -4
- package/dist/index.js +411 -699
- package/dist/nile-calendar/nile-calendar.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.esm.js +46 -234
- package/dist/nile-calendar/nile-calendar.esm.js +106 -220
- 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 +32 -18
- package/dist/nile-rich-text-editor/nile-rich-text-editor.esm.js +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.esm.js +3 -3
- package/dist/src/nile-calendar/nile-calendar.css.js +44 -232
- package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.d.ts +0 -15
- package/dist/src/nile-calendar/nile-calendar.js +101 -340
- package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js +30 -16
- 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.d.ts +1 -0
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js +12 -0
- package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js.map +1 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.js +19 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
- package/dist/src/version.js +2 -2
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-calendar/nile-calendar.css.ts +44 -232
- package/src/nile-calendar/nile-calendar.ts +115 -369
- package/src/nile-rich-text-editor/nile-rich-text-editor.css.ts +30 -16
- package/src/nile-rich-text-editor/nile-rich-text-editor.ts +12 -0
- package/src/nile-virtual-select/nile-virtual-select.ts +26 -2
- package/vscode-html-custom-data.json +27 -47
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-rich-text-editor.cjs.js","sources":["../../../src/nile-rich-text-editor/nile-rich-text-editor.ts"],"sourcesContent":["import { LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport './nile-rte-toolbar';\nimport './nile-rte-toolbar-item';\nimport './nile-rte-select';\nimport './nile-rte-color';\nimport './nile-rte-divider';\nimport './nile-rte-preview';\nimport './nile-rte-mentions';\nimport './nile-rte-link';\n\nimport {\n closestBlock,\n nearestElement,\n rgbToHex,\n toggleInlineTag,\n setBlockTag,\n setAlignment,\n setFontFamily,\n setForeColor,\n setBackColor,\n toggleList,\n} from './utils/index';\n\nimport { styles } from './nile-rich-text-editor.css';\n\ntype MentionsConfig = Record<string, { key: string; label: string }[]>;\n\nconst DEFAULT_ICONS: Record<string, string> = {\n bold: 'format_bold',\n italic: 'format_italic',\n underline: 'format_underline',\n link: 'link_2',\n left: 'format_align_left',\n center: 'format_align_middle',\n right: 'format_align_right',\n justify: 'format_align_justify',\n ul: 'format_list_bulleted',\n ol: 'format_list_numbered',\n clear: 'format_clear',\n};\n\n@customElement('nile-rich-text-editor')\nexport class NileRichTextEditor extends LitElement {\n protected createRenderRoot() {\n return this;\n }\n\n @property({ type: String, attribute: true, reflect: true }) value = '';\n @property({ type: Boolean, attribute: true, reflect: true }) noStyles = false;\n @property({ type: Boolean, attribute: 'singlelineeditor', reflect: true }) singleLineEditor =\n false;\n\n @property({\n attribute: 'mentions',\n reflect: true,\n converter: {\n fromAttribute: (value: string): MentionsConfig => {\n try {\n const parsed = JSON.parse(value);\n const out: MentionsConfig = {};\n for (const trig of Object.keys(parsed)) {\n const arr = parsed[trig];\n if (Array.isArray(arr)) {\n out[trig] = arr\n .filter(\n i =>\n i &&\n typeof i.key === 'string' &&\n typeof i.label === 'string'\n )\n .map(i => ({ key: i.key, label: i.label }));\n }\n }\n return out;\n } catch {\n return {};\n }\n },\n toAttribute: (v: MentionsConfig) => JSON.stringify(v),\n },\n })\n mentions: MentionsConfig = {};\n\n @state() private content = '';\n private editorEl!: HTMLElement;\n private previewEl: HTMLElement | null = null;\n private toolbarEl: HTMLElement | null = null;\n\n private lastRange: Range | null = null;\n\n private buttonMap = new Map<string, HTMLElement[]>();\n private headingSelect: HTMLSelectElement | null = null;\n private fontSelect: HTMLSelectElement | null = null;\n private colorInput: HTMLInputElement | null = null;\n private bgColorInput: HTMLInputElement | null = null;\n private colorSwatchEl: HTMLElement | null = null;\n private bgSwatchEl: HTMLElement | null = null;\n private containerEl: HTMLElement | null = null;\n\n private mentionsEl: HTMLElement | null = null;\n\n private injectCss(cssText: string) {\n if (this.querySelector('style[data-rte-style]')) return;\n const style = document.createElement('style');\n style.setAttribute('data-rte-style', 'true');\n style.textContent = cssText;\n this.insertBefore(style, this.firstChild);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.injectCss(styles.cssText);\n this.ensureStructure();\n\n if (this.value && !this.editorEl.innerHTML.trim()) {\n this.editorEl.innerHTML = this.value;\n }\n this.content = this.editorEl.innerHTML;\n\n if (this.toolbarEl) this.wireAuthoredToolbar(this.toolbarEl);\n this.mentionsEl = this.querySelector('nile-rte-mentions');\n if (this.mentionsEl) {\n (this.mentionsEl as any).attach?.(this.editorEl, this as HTMLElement);\n (this.mentionsEl as any).setExternalConfig?.(this.mentions);\n }\n\n this.wireEditor();\n document.addEventListener('selectionchange', this.onSelectionChange, {\n passive: true,\n });\n this.updateToolbarState();\n this.syncPreview();\n }\n\n private ensureStructure() {\n this.toolbarEl = this.querySelector('nile-rte-toolbar');\n this.previewEl = this.querySelector('nile-rte-preview');\n\n // container for toolbar + editor\n this.containerEl = this.querySelector('.rte-container') as HTMLElement;\n if (!this.containerEl) {\n this.containerEl = document.createElement('div');\n this.containerEl.className = 'rte-container';\n this.appendChild(this.containerEl);\n }\n\n // ensure editor\n this.ensureEditor();\n\n // put toolbar + editor inside container\n if (this.toolbarEl && this.toolbarEl.parentElement !== this.containerEl) {\n this.containerEl.appendChild(this.toolbarEl);\n }\n if (this.editorEl.parentElement !== this.containerEl) {\n this.containerEl.appendChild(this.editorEl);\n }\n\n if (this.previewEl) {\n if (this.previewEl.parentElement !== this) {\n this.appendChild(this.previewEl);\n }\n\n if (this.previewEl.previousElementSibling !== this.containerEl) {\n this.insertBefore(this.previewEl, this.containerEl.nextSibling);\n }\n }\n }\n\n private updateContentWithMention(mentionDetail: any) {\n this.updateContent();\n this.dispatchEvent(\n new CustomEvent('nile-change', {\n detail: {\n content: this.content,\n mention: mentionDetail,\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n disconnectedCallback(): void {\n document.removeEventListener('selectionchange', this.onSelectionChange);\n\n if (this.mentionsEl && (this.mentionsEl as any).detach) {\n (this.mentionsEl as any).detach();\n }\n super.disconnectedCallback();\n }\n protected updated(changed: Map<string, any>) {\n if (changed.has('value')) {\n if (this.editorEl && this.value !== this.editorEl.innerHTML) {\n this.editorEl.innerHTML = this.value || '<p><br></p>';\n this.content = this.editorEl.innerHTML;\n this.syncPreview();\n }\n }\n if (changed.has('singleLineEditor')) {\n if (this.editorEl) {\n this.editorEl.classList.toggle('single-line', this.singleLineEditor);\n }\n if (this.previewEl) {\n this.previewEl.classList.toggle('single-line', this.singleLineEditor);\n }\n }\n }\n\n private ensureEditor() {\n this.editorEl = this.querySelector('.editor') as HTMLElement;\n if (!this.editorEl) {\n const editor = document.createElement('article');\n editor.className = 'editor';\n editor.setAttribute('contenteditable', 'true');\n this.editorEl = editor;\n }\n if (!this.editorEl.innerHTML.trim()) {\n this.editorEl.innerHTML = '<p><br></p>';\n }\n }\n\n private unwrapMention(span: HTMLElement, preserveText = true) {\n const parent = span.parentNode;\n if (!parent) return;\n\n const txt = preserveText\n ? (span.textContent ?? '').replace(/\\u200B/g, '')\n : '';\n const textNode = document.createTextNode(txt);\n parent.insertBefore(textNode, span);\n parent.removeChild(span);\n const r = document.createRange();\n r.setStartAfter(textNode);\n r.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(r);\n }\n\n private scrubBrokenMentions() {\n if (!this.editorEl) return;\n const mentions = this.editorEl.querySelectorAll('span.mention');\n\n mentions.forEach(m => {\n const span = m as HTMLElement;\n const key = span.getAttribute('data-mention-key');\n const label = span.getAttribute('data-mention-label');\n const trigger = span.getAttribute('data-mention-trigger') || '';\n const text = (span.textContent ?? '').replace(/\\u200B/g, '').trim();\n\n const looksValid =\n !!key &&\n !!label &&\n text.length > 0 &&\n text.startsWith(trigger) &&\n text.includes(label);\n\n if (!text || !looksValid) {\n this.unwrapMention(span, true);\n return;\n }\n });\n }\n\n private wireEditor() {\n this.editorEl.addEventListener('input', () => {\n this.ensureAtLeastOneParagraph();\n this.scrubBrokenMentions();\n this.updateContent();\n this.updateToolbarState();\n });\n this.editorEl.addEventListener('mouseup', () => {\n this.saveSelection();\n this.updateToolbarState();\n });\n this.editorEl.addEventListener('keyup', e => {\n this.saveSelection();\n\n if (\n [\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n ].includes(e.key)\n ) {\n this.updateToolbarState();\n }\n });\n this.editorEl.addEventListener('keydown', this.onEditorKeydown);\n }\n\n private onEditorKeydown = (e: KeyboardEvent) => {\n if (this.singleLineEditor && e.key === 'Enter' && e.shiftKey) {\n e.preventDefault();\n return;\n }\n if (e.ctrlKey && e.key.toLowerCase() === 'i') {\n e.preventDefault();\n toggleInlineTag(this.editorEl, 'em');\n this.updateContent();\n this.updateToolbarState();\n }\n\n if (this.singleLineEditor && e.key === 'Enter') {\n e.preventDefault();\n return;\n }\n if (e.key !== 'Tab') return;\n\n e.preventDefault();\n this.focusAndRestore();\n\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n\n if (e.shiftKey) {\n if (range.collapsed && range.startContainer.nodeType === Node.TEXT_NODE) {\n const t = range.startContainer as Text;\n const off = range.startOffset;\n const before = t.data.slice(0, off);\n\n const removed = before.replace(/(\\t|[ \\u00a0]{2})$/, '');\n if (removed.length !== before.length) {\n t.data = removed + t.data.slice(off);\n const r = document.createRange();\n r.setStart(t, removed.length);\n r.collapse(true);\n sel.removeAllRanges();\n sel.addRange(r);\n this.updateContent();\n this.updateToolbarState();\n }\n }\n return;\n }\n\n range.deleteContents();\n const tabNode = document.createTextNode('\\t');\n range.insertNode(tabNode);\n\n const r = document.createRange();\n r.setStartAfter(tabNode);\n r.collapse(true);\n sel.removeAllRanges();\n sel.addRange(r);\n\n this.updateContent();\n this.updateToolbarState();\n };\n\n private wireAuthoredToolbar(tb: HTMLElement) {\n this.buttonMap.clear();\n this.headingSelect = null;\n this.fontSelect = null;\n this.colorInput = null;\n\n Array.from(tb.children).forEach(child => {\n const tag = child.tagName.toLowerCase();\n\n if (tag === 'nile-rte-select' && child.getAttribute('type') === 'align') {\n child.addEventListener('change', (e: any) => {\n this.focusAndRestore();\n const alignment = e.detail as 'left' | 'center' | 'right' | 'justify';\n setAlignment(this.editorEl, alignment);\n this.updateContent();\n this.updateToolbarState();\n });\n return;\n }\n if (tag === 'nile-rte-link') {\n (child as any).editorEl = this.editorEl;\n child.addEventListener('link-changed', () => {\n this.updateContent();\n this.updateToolbarState();\n });\n return;\n }\n\n if (tag === 'nile-rte-toolbar-item') {\n let btn = child.querySelector(\n ':scope > nile-button'\n ) as HTMLElement | null;\n\n const cmd = child.getAttribute('name') || '';\n const label = child.getAttribute('label') || cmd;\n const iconAttr = child.getAttribute('icon');\n const authoredHasContent = child.innerHTML.trim().length > 0;\n\n if (!btn) {\n btn = document.createElement('nile-button');\n (btn as any).variant = 'tertiary';\n (btn as any).size = 'small';\n }\n\n if (iconAttr) {\n btn.innerHTML = `<nile-icon name=\"${iconAttr}\" aria-label=\"${label}\"></nile-icon>`;\n child.innerHTML = '';\n } else if (!authoredHasContent) {\n const defaultIcon = DEFAULT_ICONS[cmd];\n if (defaultIcon) {\n btn.innerHTML = `<nile-icon name=\"${defaultIcon}\" size=\"20\" color=\"black\" aria-label=\"${label}\"></nile-icon>`;\n } else {\n btn.textContent = label || cmd;\n }\n child.innerHTML = '';\n } else {\n btn.innerHTML = child.innerHTML;\n child.innerHTML = '';\n }\n\n if (!btn.isConnected) {\n const tooltip = document.createElement('nile-tooltip');\n tooltip.setAttribute('content', label);\n tooltip.appendChild(btn);\n child.appendChild(tooltip);\n }\n\n btn.setAttribute('aria-label', label);\n btn.addEventListener('mousedown', e => e.preventDefault());\n btn.addEventListener('click', () => this.onToolbarCommand(cmd));\n\n const arr = this.buttonMap.get(cmd) ?? [];\n arr.push(btn);\n this.buttonMap.set(cmd, arr);\n\n return;\n }\n if (tag === 'nile-rte-select') {\n const type = child.getAttribute('type') || '';\n\n child.addEventListener('change', (e: any) => {\n this.focusAndRestore();\n\n const val = e.detail as string;\n\n if (type === 'heading') {\n setBlockTag(this.editorEl, val as any);\n } else if (type === 'font') {\n setFontFamily(this.editorEl, val);\n }\n\n this.updateContent();\n this.updateToolbarState();\n });\n\n return;\n }\n\n if (tag === 'nile-rte-color') {\n child.addEventListener('change', (e: any) => {\n this.focusAndRestore();\n const { mode, value } = e.detail;\n\n if (mode === 'backColor') {\n setBackColor(this.editorEl, value);\n } else {\n setForeColor(this.editorEl, value);\n }\n\n this.updateContent();\n this.updateToolbarState();\n });\n return;\n }\n });\n }\n private onSelectionChange = () => {\n if (!this.editorEl) return;\n const sel = document.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n if (this.editorEl.contains(range.commonAncestorContainer)) {\n this.lastRange = range.cloneRange();\n this.updateToolbarState();\n }\n };\n private saveSelection() {\n const sel = window.getSelection();\n if (sel && sel.rangeCount) this.lastRange = sel.getRangeAt(0).cloneRange();\n }\n private restoreSelection() {\n if (!this.lastRange) return;\n const sel = document.getSelection();\n if (!sel) return;\n sel.removeAllRanges();\n sel.addRange(this.lastRange);\n }\n private focusAndRestore() {\n this.editorEl?.focus();\n this.restoreSelection();\n }\n private getCleanContent(): string {\n const clone = this.editorEl.cloneNode(true) as HTMLElement;\n clone.querySelectorAll<HTMLElement>('*').forEach(el => {\n el.removeAttribute('style');\n });\n \n return clone.innerHTML;\n }\n \n private insertList(type: 'ul' | 'ol') {\n this.restoreSelection();\n if (!this.lastRange) return;\n\n const list = document.createElement(type);\n\n // grab the selected fragment\n const frag = this.lastRange.extractContents();\n const temp = document.createElement('div');\n temp.appendChild(frag);\n\n // wrap each top-level node in an <li>\n Array.from(temp.childNodes).forEach(n => {\n // skip empty whitespace text nodes\n if (n.nodeType === Node.TEXT_NODE && !n.textContent?.trim()) return;\n const li = document.createElement('li');\n li.appendChild(n);\n list.appendChild(li);\n });\n\n this.lastRange.insertNode(list);\n this.afterListEdit(list);\n }\n\n private afterListEdit(node: Node) {\n const range = document.createRange();\n range.setStartAfter(node);\n range.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n\n this.saveSelection();\n this.updateContent();\n this.updateToolbarState();\n }\n\n private ensureAtLeastOneParagraph() {\n const el = this.editorEl;\n if (!el) return;\n\n const onlyWhitespace =\n (el.textContent ?? '').replace(/\\u200B/g, '').trim() === '';\n if (el.childNodes.length === 0 || onlyWhitespace) {\n el.innerHTML = '<p><br></p>';\n return;\n }\n\n const hasBlock = el.querySelector(\n 'p,h1,h2,h3,h4,h5,h6,ul,ol,table,blockquote,pre'\n );\n if (!hasBlock) {\n const p = document.createElement('p');\n while (el.firstChild) p.appendChild(el.firstChild);\n if (!p.hasChildNodes()) p.appendChild(document.createElement('br'));\n el.appendChild(p);\n return;\n }\n\n el.querySelectorAll('p').forEach(p => {\n if ((p.textContent ?? '').replace(/\\u200B/g, '') === '') {\n if (!p.innerHTML.toLowerCase().includes('<br')) p.innerHTML = '<br>';\n }\n });\n }\n\n // ---------- Toolbar/commands ----------\n private onToolbarCommand(cmd: string) {\n this.focusAndRestore();\n switch (cmd) {\n case 'bold':\n toggleInlineTag(this.editorEl, 'strong');\n break;\n case 'italic':\n toggleInlineTag(this.editorEl, 'em');\n break;\n case 'underline':\n toggleInlineTag(this.editorEl, 'u');\n break;\n case 'left':\n setAlignment(this.editorEl, 'left');\n break;\n case 'center':\n setAlignment(this.editorEl, 'center');\n break;\n case 'right':\n setAlignment(this.editorEl, 'right');\n break;\n case 'justify':\n setAlignment(this.editorEl, 'justify');\n break;\n case 'ul':\n toggleList(this.editorEl, 'ul');\n this.updateContent();\n this.updateToolbarState();\n break;\n case 'ol':\n toggleList(this.editorEl, 'ol');\n this.updateContent();\n this.updateToolbarState();\n break;\n\n case 'link':\n break;\n case 'clear':\n const walker = document.createTreeWalker(\n this.editorEl,\n NodeFilter.SHOW_ELEMENT\n );\n const toUnwrap: HTMLElement[] = [];\n while (walker.nextNode()) {\n const el = walker.currentNode as HTMLElement;\n el.removeAttribute('style');\n if (\n ['B', 'STRONG', 'I', 'EM', 'U', 'SPAN', 'FONT'].includes(el.tagName)\n ) {\n toUnwrap.push(el);\n }\n }\n for (const el of toUnwrap) {\n while (el.firstChild) el.parentNode?.insertBefore(el.firstChild, el);\n el.remove();\n }\n this.ensureAtLeastOneParagraph();\n break;\n\n default:\n break;\n }\n this.updateContent();\n this.updateToolbarState();\n }\n\n private setBtnActive(cmd: string, active: boolean) {\n const arr = this.buttonMap.get(cmd);\n if (!arr) return;\n for (const btn of arr) btn.toggleAttribute('data-active', !!active);\n }\n\n private updateToolbarState() {\n if (!this.editorEl) return;\n const sel = document.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n if (!this.editorEl.contains(range.commonAncestorContainer)) return;\n\n const startElm = nearestElement(range.startContainer) || this.editorEl;\n const comp = getComputedStyle(startElm);\n const block =\n closestBlock(range.startContainer, this.editorEl) || this.editorEl;\n\n const isBold = (() => {\n let n: Node | null = startElm;\n while (n && n !== this.editorEl) {\n if (n instanceof HTMLElement) {\n const t = n.tagName.toLowerCase();\n if (t === 'strong' || t === 'b') return true;\n const w = getComputedStyle(n).fontWeight;\n if (parseInt(w, 10) >= 600) return true;\n }\n n = n.parentNode;\n }\n return false;\n })();\n\n const isItalic = (() => {\n let n: Node | null = startElm;\n while (n && n !== this.editorEl) {\n if (n instanceof HTMLElement) {\n const t = n.tagName.toLowerCase();\n if (t === 'em' || t === 'i') return true;\n if (getComputedStyle(n).fontStyle === 'italic') return true;\n }\n n = n.parentNode;\n }\n return false;\n })();\n\n const isUnderline = (() => {\n let n: Node | null = startElm;\n while (n && n !== this.editorEl) {\n if (n instanceof HTMLElement) {\n const tdl = getComputedStyle(n).textDecorationLine;\n if (tdl && tdl.includes('underline')) return true;\n if (n.tagName.toLowerCase() === 'u') return true;\n }\n n = n.parentNode;\n }\n return false;\n })();\n\n const inLink = !!startElm.closest('a');\n\n const align = (block.style.textAlign ||\n getComputedStyle(block).textAlign ||\n 'start') as string;\n const alignNorm = align === 'start' ? 'left' : align;\n\n const inLi = !!startElm.closest('li');\n const listType = inLi\n ? startElm.closest('ul,ol')?.tagName.toLowerCase() || ''\n : '';\n\n this.setBtnActive('bold', isBold);\n this.setBtnActive('italic', isItalic);\n this.setBtnActive('underline', isUnderline);\n this.setBtnActive('link', inLink);\n\n this.setBtnActive(\n 'left',\n alignNorm === 'left' &&\n !['center', 'right', 'justify'].includes(alignNorm)\n );\n this.setBtnActive('center', alignNorm === 'center');\n this.setBtnActive('right', alignNorm === 'right');\n this.setBtnActive('justify', alignNorm === 'justify');\n\n this.setBtnActive('ul', listType === 'ul');\n this.setBtnActive('ol', listType === 'ol');\n\n if (this.headingSelect) {\n const tag = block.tagName.toLowerCase();\n const v = ['h1', 'h2', 'h3'].includes(tag) ? tag : 'p';\n if (this.headingSelect.value !== v) this.headingSelect.value = v;\n }\n\n if (this.fontSelect) {\n const ff = (comp.fontFamily || '')\n .replace(/[\"']/g, '')\n .split(',')[0]\n .trim()\n .toLowerCase();\n if (ff) {\n for (const opt of Array.from(this.fontSelect.options)) {\n if (opt.value.toLowerCase() === ff) {\n this.fontSelect.value = opt.value;\n break;\n }\n }\n }\n }\n\n if (this.colorInput) {\n const hex = rgbToHex(comp.color);\n if (hex && this.colorInput.value.toLowerCase() !== hex.toLowerCase()) {\n this.colorInput.value = hex;\n }\n if (this.colorSwatchEl)\n this.colorSwatchEl.style.backgroundColor = this.colorInput.value;\n }\n\n if (this.bgColorInput) {\n const bg = getComputedStyle(startElm).backgroundColor;\n if (\n bg &&\n !/transparent|rgba\\(\\s*0\\s*,\\s*0\\s*,\\s*0\\s*,\\s*0\\s*\\)/i.test(bg)\n ) {\n const bgHex = rgbToHex(bg);\n if (\n bgHex &&\n this.bgColorInput.value.toLowerCase() !== bgHex.toLowerCase()\n ) {\n this.bgColorInput.value = bgHex;\n }\n }\n if (this.bgSwatchEl)\n this.bgSwatchEl.style.backgroundColor = this.bgColorInput.value;\n }\n }\n\n private syncPreview() {\n this.updateContent();\n }\n\n private updateContent() {\n if (!this.editorEl) return;\n this.ensureAtLeastOneParagraph();\n const clone = this.editorEl.cloneNode(true) as HTMLElement;\n \n if (!this.noStyles) {\n const origWalker = document.createTreeWalker(\n this.editorEl,\n NodeFilter.SHOW_ELEMENT\n );\n const cloneWalker = document.createTreeWalker(\n clone,\n NodeFilter.SHOW_ELEMENT\n );\n \n const importantProps = [\n 'font-weight',\n 'font-style',\n 'text-decoration',\n 'color',\n 'background-color',\n 'font-size',\n 'font-family',\n 'text-align',\n 'line-height',\n 'letter-spacing',\n 'white-space',\n 'vertical-align',\n 'list-style-position',\n 'padding-inline-start',\n ];\n \n while (origWalker.nextNode() && cloneWalker.nextNode()) {\n const origEl = origWalker.currentNode as HTMLElement;\n const cloneEl = cloneWalker.currentNode as HTMLElement;\n const computed = window.getComputedStyle(origEl);\n \n const cssText = importantProps\n .map(prop => `${prop}:${computed.getPropertyValue(prop)}`)\n .join(';');\n \n if (cssText.trim()) {\n cloneEl.setAttribute('style', cssText);\n }\n }\n } else {\n clone.querySelectorAll<HTMLElement>('[style]').forEach(el =>\n el.removeAttribute('style')\n );\n }\n this.content = clone.innerHTML; \n if (this.previewEl) this.previewEl.innerHTML = this.content;\n \n this.dispatchEvent(\n new CustomEvent('nile-change', {\n detail: { content: this.content },\n bubbles: true,\n composed: true,\n })\n );\n }\n \n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-rich-text-editor': NileRichTextEditor;\n }\n}\n"],"names":["DEFAULT_ICONS","bold","italic","underline","link","left","center","right","justify","ul","ol","clear","_export","NileRichTextEditor","g","this","value","noStyles","singleLineEditor","mentions","content","previewEl","toolbarEl","lastRange","buttonMap","Map","headingSelect","fontSelect","colorInput","bgColorInput","colorSwatchEl","bgSwatchEl","containerEl","mentionsEl","onEditorKeydown","e","key","shiftKey","preventDefault","ctrlKey","toLowerCase","toggleInlineTag","editorEl","updateContent","updateToolbarState","focusAndRestore","sel","window","getSelection","rangeCount","range","getRangeAt","collapsed","startContainer","nodeType","Node","TEXT_NODE","t","off","startOffset","before","data","slice","removed","replace","length","r","document","createRange","setStart","collapse","removeAllRanges","addRange","deleteContents","tabNode","createTextNode","insertNode","setStartAfter","onSelectionChange","contains","commonAncestorContainer","cloneRange","_this","_inherits","_i","_createClass","createRenderRoot","injectCss","cssText","querySelector","style","createElement","setAttribute","textContent","insertBefore","firstChild","connectedCallback","super","styles","ensureStructure","innerHTML","trim","wireAuthoredToolbar","attach","setExternalConfig","wireEditor","addEventListener","passive","syncPreview","className","appendChild","ensureEditor","parentElement","previousElementSibling","nextSibling","updateContentWithMention","mentionDetail","dispatchEvent","CustomEvent","detail","mention","bubbles","composed","disconnectedCallback","removeEventListener","detach","updated","changed","has","classList","toggle","editor","unwrapMention","span","preserveText","parent","parentNode","txt","textNode","removeChild","scrubBrokenMentions","_this2","querySelectorAll","forEach","m","_i$textContent","getAttribute","label","trigger","text","looksValid","startsWith","includes","ensureAtLeastOneParagraph","saveSelection","tb","Array","from","children","child","tag","tagName","_this4$buttonMap$get","btn","cmd","iconAttr","authoredHasContent","variant","size","defaultIcon","isConnected","tooltip","onToolbarCommand","arr","get","push","set","_t$detail","mode","setBackColor","setForeColor","type","val","setBlockTag","setFontFamily","alignment","setAlignment","restoreSelection","focus","getCleanContent","clone","cloneNode","el","removeAttribute","insertList","list","frag","extractContents","temp","childNodes","n","li","afterListEdit","node","_t$textContent3","onlyWhitespace","p","hasChildNodes","_t$textContent4","toggleList","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","toUnwrap","nextNode","currentNode","_i7","_i6","remove","setBtnActive","active","_iterator","_createForOfIteratorHelper","s","_step","done","toggleAttribute","err","f","_this5","_s$closest","startElm","nearestElement","comp","getComputedStyle","block","closestBlock","isBold","HTMLElement","w","fontWeight","parseInt","isItalic","fontStyle","isUnderline","tdl","textDecorationLine","inLink","closest","align","textAlign","alignNorm","listType","v","ff","fontFamily","split","_i12","_Array$from","options","opt","hex","rgbToHex","color","backgroundColor","bg","test","bgHex","origWalker","cloneWalker","importantProps","_loop","origEl","cloneEl","computed","map","prop","getPropertyValue","join","LitElement","__decorate","property","String","attribute","reflect","prototype","Boolean","converter","fromAttribute","parsed","JSON","parse","out","_i17","_Object$keys","Object","keys","trig","isArray","filter","i","_unused","toAttribute","stringify","state","customElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nile-rich-text-editor.cjs.js","sources":["../../../src/nile-rich-text-editor/nile-rich-text-editor.ts"],"sourcesContent":["import { LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport './nile-rte-toolbar';\nimport './nile-rte-toolbar-item';\nimport './nile-rte-select';\nimport './nile-rte-color';\nimport './nile-rte-divider';\nimport './nile-rte-preview';\nimport './nile-rte-mentions';\nimport './nile-rte-link';\n\nimport {\n closestBlock,\n nearestElement,\n rgbToHex,\n toggleInlineTag,\n setBlockTag,\n setAlignment,\n setFontFamily,\n setForeColor,\n setBackColor,\n toggleList,\n} from './utils/index';\n\nimport { styles } from './nile-rich-text-editor.css';\n\ntype MentionsConfig = Record<string, { key: string; label: string }[]>;\n\nconst DEFAULT_ICONS: Record<string, string> = {\n bold: 'format_bold',\n italic: 'format_italic',\n underline: 'format_underline',\n link: 'link_2',\n left: 'format_align_left',\n center: 'format_align_middle',\n right: 'format_align_right',\n justify: 'format_align_justify',\n ul: 'format_list_bulleted',\n ol: 'format_list_numbered',\n clear: 'format_clear',\n};\n\n@customElement('nile-rich-text-editor')\nexport class NileRichTextEditor extends LitElement {\n protected createRenderRoot() {\n return this;\n }\n\n @property({ type: String, attribute: true, reflect: true }) value = '';\n @property({ type: Boolean, attribute: true, reflect: true }) noStyles = false;\n @property({ type: Boolean, attribute: 'singlelineeditor', reflect: true }) singleLineEditor =\n false;\n @property({ type: String }) placeholder = '';\n\n\n @property({\n attribute: 'mentions',\n reflect: true,\n converter: {\n fromAttribute: (value: string): MentionsConfig => {\n try {\n const parsed = JSON.parse(value);\n const out: MentionsConfig = {};\n for (const trig of Object.keys(parsed)) {\n const arr = parsed[trig];\n if (Array.isArray(arr)) {\n out[trig] = arr\n .filter(\n i =>\n i &&\n typeof i.key === 'string' &&\n typeof i.label === 'string'\n )\n .map(i => ({ key: i.key, label: i.label }));\n }\n }\n return out;\n } catch {\n return {};\n }\n },\n toAttribute: (v: MentionsConfig) => JSON.stringify(v),\n },\n })\n mentions: MentionsConfig = {};\n\n @state() private content = '';\n private editorEl!: HTMLElement;\n private previewEl: HTMLElement | null = null;\n private toolbarEl: HTMLElement | null = null;\n\n private lastRange: Range | null = null;\n\n private buttonMap = new Map<string, HTMLElement[]>();\n private headingSelect: HTMLSelectElement | null = null;\n private fontSelect: HTMLSelectElement | null = null;\n private colorInput: HTMLInputElement | null = null;\n private bgColorInput: HTMLInputElement | null = null;\n private colorSwatchEl: HTMLElement | null = null;\n private bgSwatchEl: HTMLElement | null = null;\n private containerEl: HTMLElement | null = null;\n\n private mentionsEl: HTMLElement | null = null;\n\n private injectCss(cssText: string) {\n if (this.querySelector('style[data-rte-style]')) return;\n const style = document.createElement('style');\n style.setAttribute('data-rte-style', 'true');\n style.textContent = cssText;\n this.insertBefore(style, this.firstChild);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.injectCss(styles.cssText);\n this.ensureStructure();\n if (this.placeholder && this.editorEl) {\n this.editorEl.dataset.placeholder = this.placeholder;\n }\n\n\n if (this.value && !this.editorEl.innerHTML.trim()) {\n this.editorEl.innerHTML = this.value;\n }\n this.content = this.editorEl.innerHTML;\n\n if (this.toolbarEl) this.wireAuthoredToolbar(this.toolbarEl);\n this.mentionsEl = this.querySelector('nile-rte-mentions');\n if (this.mentionsEl) {\n (this.mentionsEl as any).attach?.(this.editorEl, this as HTMLElement);\n (this.mentionsEl as any).setExternalConfig?.(this.mentions);\n }\n\n this.wireEditor();\n document.addEventListener('selectionchange', this.onSelectionChange, {\n passive: true,\n });\n this.updateToolbarState();\n this.syncPreview();\n }\n\n private ensureStructure() {\n this.toolbarEl = this.querySelector('nile-rte-toolbar');\n this.previewEl = this.querySelector('nile-rte-preview');\n\n // container for toolbar + editor\n this.containerEl = this.querySelector('.rte-container') as HTMLElement;\n if (!this.containerEl) {\n this.containerEl = document.createElement('div');\n this.containerEl.className = 'rte-container';\n this.appendChild(this.containerEl);\n }\n\n // ensure editor\n this.ensureEditor();\n\n // put toolbar + editor inside container\n if (this.toolbarEl && this.toolbarEl.parentElement !== this.containerEl) {\n this.containerEl.appendChild(this.toolbarEl);\n }\n if (this.editorEl.parentElement !== this.containerEl) {\n this.containerEl.appendChild(this.editorEl);\n }\n\n if (this.previewEl) {\n if (this.previewEl.parentElement !== this) {\n this.appendChild(this.previewEl);\n }\n\n if (this.previewEl.previousElementSibling !== this.containerEl) {\n this.insertBefore(this.previewEl, this.containerEl.nextSibling);\n }\n }\n }\n\n private updateContentWithMention(mentionDetail: any) {\n this.updateContent();\n this.dispatchEvent(\n new CustomEvent('nile-change', {\n detail: {\n content: this.content,\n mention: mentionDetail,\n },\n bubbles: true,\n composed: true,\n })\n );\n }\n\n disconnectedCallback(): void {\n document.removeEventListener('selectionchange', this.onSelectionChange);\n\n if (this.mentionsEl && (this.mentionsEl as any).detach) {\n (this.mentionsEl as any).detach();\n }\n super.disconnectedCallback();\n }\n protected updated(changed: Map<string, any>) {\n if (changed.has('value')) {\n if (this.editorEl && this.value !== this.editorEl.innerHTML) {\n this.editorEl.innerHTML = this.value || '<p><br></p>';\n this.content = this.editorEl.innerHTML;\n this.syncPreview();\n }\n }\n if (changed.has('singleLineEditor')) {\n if (this.editorEl) {\n this.editorEl.classList.toggle('single-line', this.singleLineEditor);\n }\n if (this.previewEl) {\n this.previewEl.classList.toggle('single-line', this.singleLineEditor);\n }\n }\n }\n\n private ensureEditor() {\n this.editorEl = this.querySelector('.editor') as HTMLElement;\n if (!this.editorEl) {\n const editor = document.createElement('article');\n editor.className = 'editor';\n editor.setAttribute('contenteditable', 'true');\n this.editorEl = editor;\n }\n if (this.placeholder) {\n this.editorEl.dataset.placeholder = this.placeholder;\n }\n \n if (!this.editorEl.innerHTML.trim()) {\n this.editorEl.innerHTML = '<p><br></p>';\n }\n }\n\n private unwrapMention(span: HTMLElement, preserveText = true) {\n const parent = span.parentNode;\n if (!parent) return;\n\n const txt = preserveText\n ? (span.textContent ?? '').replace(/\\u200B/g, '')\n : '';\n const textNode = document.createTextNode(txt);\n parent.insertBefore(textNode, span);\n parent.removeChild(span);\n const r = document.createRange();\n r.setStartAfter(textNode);\n r.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(r);\n }\n\n private scrubBrokenMentions() {\n if (!this.editorEl) return;\n const mentions = this.editorEl.querySelectorAll('span.mention');\n\n mentions.forEach(m => {\n const span = m as HTMLElement;\n const key = span.getAttribute('data-mention-key');\n const label = span.getAttribute('data-mention-label');\n const trigger = span.getAttribute('data-mention-trigger') || '';\n const text = (span.textContent ?? '').replace(/\\u200B/g, '').trim();\n\n const looksValid =\n !!key &&\n !!label &&\n text.length > 0 &&\n text.startsWith(trigger) &&\n text.includes(label);\n\n if (!text || !looksValid) {\n this.unwrapMention(span, true);\n return;\n }\n });\n }\n\n private wireEditor() {\n this.editorEl.addEventListener('input', () => {\n this.ensureAtLeastOneParagraph();\n this.scrubBrokenMentions();\n this.updateContent();\n this.updateToolbarState();\n });\n this.editorEl.addEventListener('mouseup', () => {\n this.saveSelection();\n this.updateToolbarState();\n });\n this.editorEl.addEventListener('keyup', e => {\n this.saveSelection();\n\n if (\n [\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n 'Home',\n 'End',\n ].includes(e.key)\n ) {\n this.updateToolbarState();\n }\n });\n this.editorEl.addEventListener('keydown', this.onEditorKeydown);\n }\n\n private onEditorKeydown = (e: KeyboardEvent) => {\n if (this.singleLineEditor && e.key === 'Enter' && e.shiftKey) {\n e.preventDefault();\n return;\n }\n if (e.ctrlKey && e.key.toLowerCase() === 'i') {\n e.preventDefault();\n toggleInlineTag(this.editorEl, 'em');\n this.updateContent();\n this.updateToolbarState();\n }\n\n if (this.singleLineEditor && e.key === 'Enter') {\n e.preventDefault();\n return;\n }\n if (e.key !== 'Tab') return;\n\n e.preventDefault();\n this.focusAndRestore();\n\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n\n if (e.shiftKey) {\n if (range.collapsed && range.startContainer.nodeType === Node.TEXT_NODE) {\n const t = range.startContainer as Text;\n const off = range.startOffset;\n const before = t.data.slice(0, off);\n\n const removed = before.replace(/(\\t|[ \\u00a0]{2})$/, '');\n if (removed.length !== before.length) {\n t.data = removed + t.data.slice(off);\n const r = document.createRange();\n r.setStart(t, removed.length);\n r.collapse(true);\n sel.removeAllRanges();\n sel.addRange(r);\n this.updateContent();\n this.updateToolbarState();\n }\n }\n return;\n }\n\n range.deleteContents();\n const tabNode = document.createTextNode('\\t');\n range.insertNode(tabNode);\n\n const r = document.createRange();\n r.setStartAfter(tabNode);\n r.collapse(true);\n sel.removeAllRanges();\n sel.addRange(r);\n\n this.updateContent();\n this.updateToolbarState();\n };\n\n private wireAuthoredToolbar(tb: HTMLElement) {\n this.buttonMap.clear();\n this.headingSelect = null;\n this.fontSelect = null;\n this.colorInput = null;\n\n Array.from(tb.children).forEach(child => {\n const tag = child.tagName.toLowerCase();\n\n if (tag === 'nile-rte-select' && child.getAttribute('type') === 'align') {\n child.addEventListener('change', (e: any) => {\n this.focusAndRestore();\n const alignment = e.detail as 'left' | 'center' | 'right' | 'justify';\n setAlignment(this.editorEl, alignment);\n this.updateContent();\n this.updateToolbarState();\n });\n return;\n }\n if (tag === 'nile-rte-link') {\n (child as any).editorEl = this.editorEl;\n child.addEventListener('link-changed', () => {\n this.updateContent();\n this.updateToolbarState();\n });\n return;\n }\n\n if (tag === 'nile-rte-toolbar-item') {\n let btn = child.querySelector(\n ':scope > nile-button'\n ) as HTMLElement | null;\n\n const cmd = child.getAttribute('name') || '';\n const label = child.getAttribute('label') || cmd;\n const iconAttr = child.getAttribute('icon');\n const authoredHasContent = child.innerHTML.trim().length > 0;\n\n if (!btn) {\n btn = document.createElement('nile-button');\n (btn as any).variant = 'tertiary';\n (btn as any).size = 'small';\n }\n\n if (iconAttr) {\n btn.innerHTML = `<nile-icon name=\"${iconAttr}\" aria-label=\"${label}\"></nile-icon>`;\n child.innerHTML = '';\n } else if (!authoredHasContent) {\n const defaultIcon = DEFAULT_ICONS[cmd];\n if (defaultIcon) {\n btn.innerHTML = `<nile-icon name=\"${defaultIcon}\" size=\"20\" color=\"black\" aria-label=\"${label}\"></nile-icon>`;\n } else {\n btn.textContent = label || cmd;\n }\n child.innerHTML = '';\n } else {\n btn.innerHTML = child.innerHTML;\n child.innerHTML = '';\n }\n\n if (!btn.isConnected) {\n const tooltip = document.createElement('nile-tooltip');\n tooltip.setAttribute('content', label);\n tooltip.appendChild(btn);\n child.appendChild(tooltip);\n }\n\n btn.setAttribute('aria-label', label);\n btn.addEventListener('mousedown', e => e.preventDefault());\n btn.addEventListener('click', () => this.onToolbarCommand(cmd));\n\n const arr = this.buttonMap.get(cmd) ?? [];\n arr.push(btn);\n this.buttonMap.set(cmd, arr);\n\n return;\n }\n if (tag === 'nile-rte-select') {\n const type = child.getAttribute('type') || '';\n\n child.addEventListener('change', (e: any) => {\n this.focusAndRestore();\n\n const val = e.detail as string;\n\n if (type === 'heading') {\n setBlockTag(this.editorEl, val as any);\n } else if (type === 'font') {\n setFontFamily(this.editorEl, val);\n }\n\n this.updateContent();\n this.updateToolbarState();\n });\n\n return;\n }\n\n if (tag === 'nile-rte-color') {\n child.addEventListener('change', (e: any) => {\n this.focusAndRestore();\n const { mode, value } = e.detail;\n\n if (mode === 'backColor') {\n setBackColor(this.editorEl, value);\n } else {\n setForeColor(this.editorEl, value);\n }\n\n this.updateContent();\n this.updateToolbarState();\n });\n return;\n }\n });\n }\n private onSelectionChange = () => {\n if (!this.editorEl) return;\n const sel = document.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n if (this.editorEl.contains(range.commonAncestorContainer)) {\n this.lastRange = range.cloneRange();\n this.updateToolbarState();\n }\n };\n private saveSelection() {\n const sel = window.getSelection();\n if (sel && sel.rangeCount) this.lastRange = sel.getRangeAt(0).cloneRange();\n }\n private restoreSelection() {\n if (!this.lastRange) return;\n const sel = document.getSelection();\n if (!sel) return;\n sel.removeAllRanges();\n sel.addRange(this.lastRange);\n }\n private focusAndRestore() {\n this.editorEl?.focus();\n this.restoreSelection();\n }\n private getCleanContent(): string {\n const clone = this.editorEl.cloneNode(true) as HTMLElement;\n clone.querySelectorAll<HTMLElement>('*').forEach(el => {\n el.removeAttribute('style');\n });\n \n return clone.innerHTML;\n }\n \n private insertList(type: 'ul' | 'ol') {\n this.restoreSelection();\n if (!this.lastRange) return;\n\n const list = document.createElement(type);\n\n // grab the selected fragment\n const frag = this.lastRange.extractContents();\n const temp = document.createElement('div');\n temp.appendChild(frag);\n\n // wrap each top-level node in an <li>\n Array.from(temp.childNodes).forEach(n => {\n // skip empty whitespace text nodes\n if (n.nodeType === Node.TEXT_NODE && !n.textContent?.trim()) return;\n const li = document.createElement('li');\n li.appendChild(n);\n list.appendChild(li);\n });\n\n this.lastRange.insertNode(list);\n this.afterListEdit(list);\n }\n\n private afterListEdit(node: Node) {\n const range = document.createRange();\n range.setStartAfter(node);\n range.collapse(true);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n\n this.saveSelection();\n this.updateContent();\n this.updateToolbarState();\n }\n\n private ensureAtLeastOneParagraph() {\n const el = this.editorEl;\n if (!el) return;\n\n const onlyWhitespace =\n (el.textContent ?? '').replace(/\\u200B/g, '').trim() === '';\n if (el.childNodes.length === 0 || onlyWhitespace) {\n el.innerHTML = '<p><br></p>';\n return;\n }\n\n const hasBlock = el.querySelector(\n 'p,h1,h2,h3,h4,h5,h6,ul,ol,table,blockquote,pre'\n );\n if (!hasBlock) {\n const p = document.createElement('p');\n while (el.firstChild) p.appendChild(el.firstChild);\n if (!p.hasChildNodes()) p.appendChild(document.createElement('br'));\n el.appendChild(p);\n return;\n }\n\n el.querySelectorAll('p').forEach(p => {\n if ((p.textContent ?? '').replace(/\\u200B/g, '') === '') {\n if (!p.innerHTML.toLowerCase().includes('<br')) p.innerHTML = '<br>';\n }\n });\n }\n\n // ---------- Toolbar/commands ----------\n private onToolbarCommand(cmd: string) {\n this.focusAndRestore();\n switch (cmd) {\n case 'bold':\n toggleInlineTag(this.editorEl, 'strong');\n break;\n case 'italic':\n toggleInlineTag(this.editorEl, 'em');\n break;\n case 'underline':\n toggleInlineTag(this.editorEl, 'u');\n break;\n case 'left':\n setAlignment(this.editorEl, 'left');\n break;\n case 'center':\n setAlignment(this.editorEl, 'center');\n break;\n case 'right':\n setAlignment(this.editorEl, 'right');\n break;\n case 'justify':\n setAlignment(this.editorEl, 'justify');\n break;\n case 'ul':\n toggleList(this.editorEl, 'ul');\n this.updateContent();\n this.updateToolbarState();\n break;\n case 'ol':\n toggleList(this.editorEl, 'ol');\n this.updateContent();\n this.updateToolbarState();\n break;\n\n case 'link':\n break;\n case 'clear':\n const walker = document.createTreeWalker(\n this.editorEl,\n NodeFilter.SHOW_ELEMENT\n );\n const toUnwrap: HTMLElement[] = [];\n while (walker.nextNode()) {\n const el = walker.currentNode as HTMLElement;\n el.removeAttribute('style');\n if (\n ['B', 'STRONG', 'I', 'EM', 'U', 'SPAN', 'FONT'].includes(el.tagName)\n ) {\n toUnwrap.push(el);\n }\n }\n for (const el of toUnwrap) {\n while (el.firstChild) el.parentNode?.insertBefore(el.firstChild, el);\n el.remove();\n }\n this.ensureAtLeastOneParagraph();\n break;\n\n default:\n break;\n }\n this.updateContent();\n this.updateToolbarState();\n }\n\n private setBtnActive(cmd: string, active: boolean) {\n const arr = this.buttonMap.get(cmd);\n if (!arr) return;\n for (const btn of arr) btn.toggleAttribute('data-active', !!active);\n }\n\n private updateToolbarState() {\n if (!this.editorEl) return;\n const sel = document.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n if (!this.editorEl.contains(range.commonAncestorContainer)) return;\n\n const startElm = nearestElement(range.startContainer) || this.editorEl;\n const comp = getComputedStyle(startElm);\n const block =\n closestBlock(range.startContainer, this.editorEl) || this.editorEl;\n\n const isBold = (() => {\n let n: Node | null = startElm;\n while (n && n !== this.editorEl) {\n if (n instanceof HTMLElement) {\n const t = n.tagName.toLowerCase();\n if (t === 'strong' || t === 'b') return true;\n const w = getComputedStyle(n).fontWeight;\n if (parseInt(w, 10) >= 600) return true;\n }\n n = n.parentNode;\n }\n return false;\n })();\n\n const isItalic = (() => {\n let n: Node | null = startElm;\n while (n && n !== this.editorEl) {\n if (n instanceof HTMLElement) {\n const t = n.tagName.toLowerCase();\n if (t === 'em' || t === 'i') return true;\n if (getComputedStyle(n).fontStyle === 'italic') return true;\n }\n n = n.parentNode;\n }\n return false;\n })();\n\n const isUnderline = (() => {\n let n: Node | null = startElm;\n while (n && n !== this.editorEl) {\n if (n instanceof HTMLElement) {\n const tdl = getComputedStyle(n).textDecorationLine;\n if (tdl && tdl.includes('underline')) return true;\n if (n.tagName.toLowerCase() === 'u') return true;\n }\n n = n.parentNode;\n }\n return false;\n })();\n\n const inLink = !!startElm.closest('a');\n\n const align = (block.style.textAlign ||\n getComputedStyle(block).textAlign ||\n 'start') as string;\n const alignNorm = align === 'start' ? 'left' : align;\n\n const inLi = !!startElm.closest('li');\n const listType = inLi\n ? startElm.closest('ul,ol')?.tagName.toLowerCase() || ''\n : '';\n\n this.setBtnActive('bold', isBold);\n this.setBtnActive('italic', isItalic);\n this.setBtnActive('underline', isUnderline);\n this.setBtnActive('link', inLink);\n\n this.setBtnActive(\n 'left',\n alignNorm === 'left' &&\n !['center', 'right', 'justify'].includes(alignNorm)\n );\n this.setBtnActive('center', alignNorm === 'center');\n this.setBtnActive('right', alignNorm === 'right');\n this.setBtnActive('justify', alignNorm === 'justify');\n\n this.setBtnActive('ul', listType === 'ul');\n this.setBtnActive('ol', listType === 'ol');\n\n if (this.headingSelect) {\n const tag = block.tagName.toLowerCase();\n const v = ['h1', 'h2', 'h3'].includes(tag) ? tag : 'p';\n if (this.headingSelect.value !== v) this.headingSelect.value = v;\n }\n\n if (this.fontSelect) {\n const ff = (comp.fontFamily || '')\n .replace(/[\"']/g, '')\n .split(',')[0]\n .trim()\n .toLowerCase();\n if (ff) {\n for (const opt of Array.from(this.fontSelect.options)) {\n if (opt.value.toLowerCase() === ff) {\n this.fontSelect.value = opt.value;\n break;\n }\n }\n }\n }\n\n if (this.colorInput) {\n const hex = rgbToHex(comp.color);\n if (hex && this.colorInput.value.toLowerCase() !== hex.toLowerCase()) {\n this.colorInput.value = hex;\n }\n if (this.colorSwatchEl)\n this.colorSwatchEl.style.backgroundColor = this.colorInput.value;\n }\n\n if (this.bgColorInput) {\n const bg = getComputedStyle(startElm).backgroundColor;\n if (\n bg &&\n !/transparent|rgba\\(\\s*0\\s*,\\s*0\\s*,\\s*0\\s*,\\s*0\\s*\\)/i.test(bg)\n ) {\n const bgHex = rgbToHex(bg);\n if (\n bgHex &&\n this.bgColorInput.value.toLowerCase() !== bgHex.toLowerCase()\n ) {\n this.bgColorInput.value = bgHex;\n }\n }\n if (this.bgSwatchEl)\n this.bgSwatchEl.style.backgroundColor = this.bgColorInput.value;\n }\n }\n\n private syncPreview() {\n this.updateContent();\n }\n\n private updateContent() {\n if (!this.editorEl) return;\n this.ensureAtLeastOneParagraph();\n const isEmpty = (this.editorEl.textContent ?? '').trim() === '';\n this.editorEl.classList.toggle('empty', isEmpty);\n const clone = this.editorEl.cloneNode(true) as HTMLElement;\n \n if (!this.noStyles) {\n const origWalker = document.createTreeWalker(\n this.editorEl,\n NodeFilter.SHOW_ELEMENT\n );\n const cloneWalker = document.createTreeWalker(\n clone,\n NodeFilter.SHOW_ELEMENT\n );\n \n const importantProps = [\n 'font-weight',\n 'font-style',\n 'text-decoration',\n 'color',\n 'background-color',\n 'font-size',\n 'font-family',\n 'text-align',\n 'line-height',\n 'letter-spacing',\n 'white-space',\n 'vertical-align',\n 'list-style-position',\n 'padding-inline-start',\n ];\n \n while (origWalker.nextNode() && cloneWalker.nextNode()) {\n const origEl = origWalker.currentNode as HTMLElement;\n const cloneEl = cloneWalker.currentNode as HTMLElement;\n const computed = window.getComputedStyle(origEl);\n \n const cssText = importantProps\n .map(prop => `${prop}:${computed.getPropertyValue(prop)}`)\n .join(';');\n \n if (cssText.trim()) {\n cloneEl.setAttribute('style', cssText);\n }\n }\n } else {\n clone.querySelectorAll<HTMLElement>('[style]').forEach(el =>\n el.removeAttribute('style')\n );\n }\n this.content = clone.innerHTML; \n if (this.previewEl) this.previewEl.innerHTML = this.content;\n \n this.dispatchEvent(\n new CustomEvent('nile-change', {\n detail: { content: this.content },\n bubbles: true,\n composed: true,\n })\n );\n }\n \n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-rich-text-editor': NileRichTextEditor;\n }\n}\n"],"names":["DEFAULT_ICONS","bold","italic","underline","link","left","center","right","justify","ul","ol","clear","_export","NileRichTextEditor","g","constructor","this","value","noStyles","singleLineEditor","placeholder","mentions","content","previewEl","toolbarEl","lastRange","buttonMap","Map","headingSelect","fontSelect","colorInput","bgColorInput","colorSwatchEl","bgSwatchEl","containerEl","mentionsEl","onEditorKeydown","e","key","shiftKey","preventDefault","ctrlKey","toLowerCase","toggleInlineTag","editorEl","updateContent","updateToolbarState","focusAndRestore","sel","window","getSelection","rangeCount","range","getRangeAt","collapsed","startContainer","nodeType","Node","TEXT_NODE","t","off","startOffset","before","data","slice","removed","replace","length","r","document","createRange","setStart","collapse","removeAllRanges","addRange","deleteContents","tabNode","createTextNode","insertNode","setStartAfter","onSelectionChange","contains","commonAncestorContainer","cloneRange","_this","_inherits","_i","_createClass","createRenderRoot","injectCss","cssText","querySelector","style","createElement","setAttribute","textContent","insertBefore","firstChild","connectedCallback","super","styles","ensureStructure","dataset","innerHTML","trim","wireAuthoredToolbar","attach","setExternalConfig","wireEditor","addEventListener","passive","syncPreview","className","appendChild","ensureEditor","parentElement","previousElementSibling","nextSibling","updateContentWithMention","mentionDetail","dispatchEvent","CustomEvent","detail","mention","bubbles","composed","disconnectedCallback","removeEventListener","detach","updated","changed","has","classList","toggle","editor","unwrapMention","span","_t$textContent","preserveText","arguments","undefined","parent","parentNode","txt","textNode","removeChild","scrubBrokenMentions","querySelectorAll","forEach","m","_i$textContent","getAttribute","label","trigger","text","looksValid","startsWith","includes","ensureAtLeastOneParagraph","saveSelection","tb","Array","from","children","child","tag","tagName","_this4$buttonMap$get","btn","cmd","iconAttr","authoredHasContent","variant","size","defaultIcon","isConnected","tooltip","onToolbarCommand","arr","get","push","set","_t$detail","mode","setBackColor","setForeColor","type","val","setBlockTag","setFontFamily","alignment","setAlignment","restoreSelection","focus","getCleanContent","clone","cloneNode","el","removeAttribute","insertList","list","frag","extractContents","temp","childNodes","n","_t$textContent2","li","afterListEdit","node","onlyWhitespace","_t$textContent3","p","hasChildNodes","_t$textContent4","toggleList","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","toUnwrap","nextNode","currentNode","_i7","_i6","remove","setBtnActive","active","_iterator","s","_step","done","toggleAttribute","err","f","_this5","_s$closest","startElm","nearestElement","comp","getComputedStyle","block","closestBlock","isBold","HTMLElement","w","fontWeight","parseInt","isItalic","fontStyle","isUnderline","tdl","textDecorationLine","inLink","closest","align","textAlign","alignNorm","listType","v","ff","fontFamily","split","_i12","_Array$from","options","opt","hex","rgbToHex","color","backgroundColor","bg","test","bgHex","isEmpty","origWalker","cloneWalker","importantProps","_loop","origEl","cloneEl","computed","map","prop","getPropertyValue","join","LitElement","__decorate","property","String","attribute","reflect","prototype","Boolean","converter","fromAttribute","parsed","JSON","parse","out","_i16","_Object$keys","Object","keys","trig","isArray","filter","i","_unused","toAttribute","stringify","state","customElement"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["lit"],function(_export,_context){"use strict";var
|
|
1
|
+
System.register(["lit"],function(_export,_context){"use strict";var r,_templateObject,e;function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}));}return{setters:[function(_lit){r=_lit.css;}],execute:function execute(){_export("s",e=r(_templateObject||(_templateObject=_taggedTemplateLiteral(["\n .editor { all: revert; }\n\n nile-rich-text-editor {\n position: relative;\n display: block;\n font-family: inherit;\n }\n\n\n .rte-container {\n width: 100%;\n border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n box-sizing: border-box;\n }\n\n \n.rte-container nile-rte-toolbar {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px;\n border-bottom: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: 8px 8px 0 0;\n\n width: 100%; \n box-sizing: border-box; \n}\n\n\n .rte-container .editor {\n min-height: 160px;\n width: 100%;\n padding: 12px;\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: 0 0 8px 8px;\n outline: none;\n tab-size: 4;\n -moz-tab-size: 4;\n word-break: break-word;\n box-sizing: border-box;\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n }\n\n \nnile-rte-preview {\n display: block;\n width: 100%;\n margin-top: 16px; \n padding: 12px;\n border: 1px dashed var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n box-sizing: border-box;\n word-wrap: break-word;\n}\n\n\n\n nile-rte-toolbar-item nile-button::part(base) {\n width: 32px;\n height: 32px;\n padding: 0px 6px;\n border: none;\n }\n\n nile-rte-toolbar-item > button,\n nile-rte-toolbar button {\n border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: var(--nile-radius-radius-lg, var(--ng-radius-md));\n cursor: pointer;\n }\n\n nile-rte-toolbar-item > button nile-icon { pointer-events: none; }\n\n nile-rte-toolbar-item > button.active {\n border-color: #2563eb;\n background: var(--nile-colors-white-base);\n }\n\n \n .editor p { margin: 1em 0; }\n .editor h1, .preview h1 {\n font-size: 2em;\n margin: 0.67em 0;\n font-weight: bold;\n }\n .editor h2, .preview h2 {\n font-size: 1.5em;\n margin: 0.83em 0;\n font-weight: bold;\n }\n .editor h3 { font-size: 1.17em; }\n .editor h4 { font-size: 1em; }\n .editor h5 { font-size: 0.83em; }\n .editor h6 { font-size: 0.67em; }\n\n\n .editor.single-line {\n min-height: 50px;\n max-height: 50px;\n overflow-x: auto;\n white-space: nowrap;\n padding: 0px 12px 0px 12px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n nile-rte-preview.single-line {\n min-height: 50px;\n max-height: 50px;\n line-height: 1.2;\n padding: 0px 12px 0px 12px;\n overflow-x: auto;\n white-space: nowrap;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n nile-rte-divider { \n margin: 0 4px;\n display: inline-block;\n height: 24px;\n width: 1px;\n background: var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n }\n \n .editor ul,\n.editor ol {\n list-style-position: inside; \n padding: 0px;\n}\n\n\n \n \n\n nile-rte-toolbar-item nile-button[data-active]::part(base) {\n background-color: var(--nile-colors-primary-400, var(--ng-componentcolors-utility-blue-400));\n}\n\nnile-rte-toolbar-item nile-button[data-active]::part(base):hover {\n background-color: var(--nile-colors-primary-500, var(--ng-componentcolors-utility-blue-500)); \n}\n\n.editor.empty::before {\n content: attr(data-placeholder);\n color: var(--nile-colors-neutral-500, var(--ng-colors-text-secondary));\n position: absolute;\n font-family: var(var(--nile-font-family-sans-serif), var(--ng-font-family-body));\n pointer-events: none;\n user-select: none;\n padding-top: 16px;\n opacity: 0.7;\n}\n\n \n\n\n\n"]))));}};});
|
|
2
2
|
//# sourceMappingURL=nile-rich-text-editor.css.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-rich-text-editor.css.cjs.js","sources":["../../../src/nile-rich-text-editor/nile-rich-text-editor.css.ts"],"sourcesContent":[" \nimport { css } from 'lit';\n\nexport const styles = css`\n .editor { all: revert; }\n\n nile-rich-text-editor {\n position: relative;\n display: block;\n font-family: inherit;\n }\n\n\n .rte-container {\n width: 100%;\n border: 1px solid var(--nile-colors-neutral-400);\n border-radius: var(--nile-radius-radius-xl);\n background: var(--nile-colors-white-base);\n box-sizing: border-box;\n }\n\n \n.rte-container nile-rte-toolbar {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px;\n border-bottom: 1px solid var(--nile-colors-neutral-400);\n background: var(--nile-colors-white-base);\n border-radius: 8px 8px 0 0;\n\n width: 100%; \n box-sizing: border-box; \n}\n\n\n .rte-container .editor {\n min-height: 160px;\n width: 100%;\n padding: 12px;\n background: var(--nile-colors-white-base);\n border-radius: 0 0 8px 8px;\n outline: none;\n tab-size: 4;\n -moz-tab-size: 4;\n word-break: break-word;\n box-sizing: border-box;\n border-radius: var(--nile-radius-radius-xl);\n }\n\n \nnile-rte-preview {\n display: block;\n width: 100%;\n margin-top: 16px; \n padding: 12px;\n border: 1px dashed var(--nile-colors-neutral-400);\n border-radius: var(--nile-radius-radius-xl);\n background: var(--nile-colors-white-base);\n box-sizing: border-box;\n word-wrap: break-word;\n}\n\n\n\n nile-rte-toolbar-item nile-button::part(base) {\n width: 32px;\n height: 32px;\n padding: 0px 6px;\n border: none;\n }\n\n nile-rte-toolbar-item > button,\n nile-rte-toolbar button {\n border: 1px solid var(--nile-colors-neutral-400);\n background: var(--nile-colors-white-base);\n border-radius: var(--nile-radius-radius-lg);\n cursor: pointer;\n }\n\n nile-rte-toolbar-item > button nile-icon { pointer-events: none; }\n\n nile-rte-toolbar-item > button.active {\n border-color: #2563eb;\n background: var(--nile-colors-white-base);\n }\n\n \n .editor p { margin: 1em 0; }\n .editor h1, .preview h1 {\n font-size: 2em;\n margin: 0.67em 0;\n font-weight: bold;\n }\n .editor h2, .preview h2 {\n font-size: 1.5em;\n margin: 0.83em 0;\n font-weight: bold;\n }\n .editor h3 { font-size: 1.17em; }\n .editor h4 { font-size: 1em; }\n .editor h5 { font-size: 0.83em; }\n .editor h6 { font-size: 0.67em; }\n\n\n .editor.single-line {\n min-height: 50px;\n max-height: 50px;\n overflow-x: auto;\n white-space: nowrap;\n padding: 0px 12px 0px 12px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n nile-rte-preview.single-line {\n min-height: 50px;\n max-height: 50px;\n padding: 0px 12px 0px 12px;\n overflow-x: auto;\n white-space: nowrap;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n nile-rte-divider { \n margin: 0 4px;\n display: inline-block;\n height: 24px;\n width: 1px;\n background: var(--nile-colors-neutral-400);\n }\n \n .editor ul,\n.editor ol {\n list-style-position: inside; \n padding: 0px;\n}\n\n\n \n \n\n nile-rte-toolbar-item nile-button[data-active]::part(base) {\n background-color: var(--nile-colors-primary-400);\n}\n\nnile-rte-toolbar-item nile-button[data-active]::part(base):hover {\n background-color: var(--nile-colors-primary-500); \n}\n\n\n\n`;\n\nexport default [styles];\n"],"names":["styles","css","_templateObject","_taggedTemplateLiteral"],"mappings":"oTAGaA,CAAAA,CAASC,CAAG,CAAAC,eAAA,GAAAA,eAAA,CAAAC,sBAAA"}
|
|
1
|
+
{"version":3,"file":"nile-rich-text-editor.css.cjs.js","sources":["../../../src/nile-rich-text-editor/nile-rich-text-editor.css.ts"],"sourcesContent":[" \nimport { css } from 'lit';\n\nexport const styles = css`\n .editor { all: revert; }\n\n nile-rich-text-editor {\n position: relative;\n display: block;\n font-family: inherit;\n }\n\n\n .rte-container {\n width: 100%;\n border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n box-sizing: border-box;\n }\n\n \n.rte-container nile-rte-toolbar {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px;\n border-bottom: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: 8px 8px 0 0;\n\n width: 100%; \n box-sizing: border-box; \n}\n\n\n .rte-container .editor {\n min-height: 160px;\n width: 100%;\n padding: 12px;\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: 0 0 8px 8px;\n outline: none;\n tab-size: 4;\n -moz-tab-size: 4;\n word-break: break-word;\n box-sizing: border-box;\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n }\n\n \nnile-rte-preview {\n display: block;\n width: 100%;\n margin-top: 16px; \n padding: 12px;\n border: 1px dashed var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n box-sizing: border-box;\n word-wrap: break-word;\n}\n\n\n\n nile-rte-toolbar-item nile-button::part(base) {\n width: 32px;\n height: 32px;\n padding: 0px 6px;\n border: none;\n }\n\n nile-rte-toolbar-item > button,\n nile-rte-toolbar button {\n border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: var(--nile-radius-radius-lg, var(--ng-radius-md));\n cursor: pointer;\n }\n\n nile-rte-toolbar-item > button nile-icon { pointer-events: none; }\n\n nile-rte-toolbar-item > button.active {\n border-color: #2563eb;\n background: var(--nile-colors-white-base);\n }\n\n \n .editor p { margin: 1em 0; }\n .editor h1, .preview h1 {\n font-size: 2em;\n margin: 0.67em 0;\n font-weight: bold;\n }\n .editor h2, .preview h2 {\n font-size: 1.5em;\n margin: 0.83em 0;\n font-weight: bold;\n }\n .editor h3 { font-size: 1.17em; }\n .editor h4 { font-size: 1em; }\n .editor h5 { font-size: 0.83em; }\n .editor h6 { font-size: 0.67em; }\n\n\n .editor.single-line {\n min-height: 50px;\n max-height: 50px;\n overflow-x: auto;\n white-space: nowrap;\n padding: 0px 12px 0px 12px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n nile-rte-preview.single-line {\n min-height: 50px;\n max-height: 50px;\n line-height: 1.2;\n padding: 0px 12px 0px 12px;\n overflow-x: auto;\n white-space: nowrap;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n nile-rte-divider { \n margin: 0 4px;\n display: inline-block;\n height: 24px;\n width: 1px;\n background: var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n }\n \n .editor ul,\n.editor ol {\n list-style-position: inside; \n padding: 0px;\n}\n\n\n \n \n\n nile-rte-toolbar-item nile-button[data-active]::part(base) {\n background-color: var(--nile-colors-primary-400, var(--ng-componentcolors-utility-blue-400));\n}\n\nnile-rte-toolbar-item nile-button[data-active]::part(base):hover {\n background-color: var(--nile-colors-primary-500, var(--ng-componentcolors-utility-blue-500)); \n}\n\n.editor.empty::before {\n content: attr(data-placeholder);\n color: var(--nile-colors-neutral-500, var(--ng-colors-text-secondary));\n position: absolute;\n font-family: var(var(--nile-font-family-sans-serif), var(--ng-font-family-body));\n pointer-events: none;\n user-select: none;\n padding-top: 16px;\n opacity: 0.7;\n}\n\n \n\n\n\n`;\n\nexport default [styles];\n"],"names":["styles","css","_templateObject","_taggedTemplateLiteral"],"mappings":"oTAGaA,CAAAA,CAASC,CAAG,CAAAC,eAAA,GAAAA,eAAA,CAAAC,sBAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{css as
|
|
1
|
+
import{css as r}from"lit";const e=r`
|
|
2
2
|
.editor { all: revert; }
|
|
3
3
|
|
|
4
4
|
nile-rich-text-editor {
|
|
@@ -10,9 +10,9 @@ import{css as e}from"lit";const r=e`
|
|
|
10
10
|
|
|
11
11
|
.rte-container {
|
|
12
12
|
width: 100%;
|
|
13
|
-
border: 1px solid var(--nile-colors-neutral-400);
|
|
14
|
-
border-radius: var(--nile-radius-radius-xl);
|
|
15
|
-
background: var(--nile-colors-white-base);
|
|
13
|
+
border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));
|
|
14
|
+
border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));
|
|
15
|
+
background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
|
|
16
16
|
box-sizing: border-box;
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -22,8 +22,8 @@ import{css as e}from"lit";const r=e`
|
|
|
22
22
|
align-items: center;
|
|
23
23
|
gap: 6px;
|
|
24
24
|
padding: 8px;
|
|
25
|
-
border-bottom: 1px solid var(--nile-colors-neutral-400);
|
|
26
|
-
background: var(--nile-colors-white-base);
|
|
25
|
+
border-bottom: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));
|
|
26
|
+
background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
|
|
27
27
|
border-radius: 8px 8px 0 0;
|
|
28
28
|
|
|
29
29
|
width: 100%;
|
|
@@ -35,14 +35,14 @@ import{css as e}from"lit";const r=e`
|
|
|
35
35
|
min-height: 160px;
|
|
36
36
|
width: 100%;
|
|
37
37
|
padding: 12px;
|
|
38
|
-
background: var(--nile-colors-white-base);
|
|
38
|
+
background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
|
|
39
39
|
border-radius: 0 0 8px 8px;
|
|
40
40
|
outline: none;
|
|
41
41
|
tab-size: 4;
|
|
42
42
|
-moz-tab-size: 4;
|
|
43
43
|
word-break: break-word;
|
|
44
44
|
box-sizing: border-box;
|
|
45
|
-
border-radius: var(--nile-radius-radius-xl);
|
|
45
|
+
border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
|
|
@@ -51,9 +51,9 @@ nile-rte-preview {
|
|
|
51
51
|
width: 100%;
|
|
52
52
|
margin-top: 16px;
|
|
53
53
|
padding: 12px;
|
|
54
|
-
border: 1px dashed var(--nile-colors-neutral-400);
|
|
55
|
-
border-radius: var(--nile-radius-radius-xl);
|
|
56
|
-
background: var(--nile-colors-white-base);
|
|
54
|
+
border: 1px dashed var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));
|
|
55
|
+
border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));
|
|
56
|
+
background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
|
|
57
57
|
box-sizing: border-box;
|
|
58
58
|
word-wrap: break-word;
|
|
59
59
|
}
|
|
@@ -69,9 +69,9 @@ nile-rte-preview {
|
|
|
69
69
|
|
|
70
70
|
nile-rte-toolbar-item > button,
|
|
71
71
|
nile-rte-toolbar button {
|
|
72
|
-
border: 1px solid var(--nile-colors-neutral-400);
|
|
73
|
-
background: var(--nile-colors-white-base);
|
|
74
|
-
border-radius: var(--nile-radius-radius-lg);
|
|
72
|
+
border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));
|
|
73
|
+
background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
|
|
74
|
+
border-radius: var(--nile-radius-radius-lg, var(--ng-radius-md));
|
|
75
75
|
cursor: pointer;
|
|
76
76
|
}
|
|
77
77
|
|
|
@@ -112,6 +112,7 @@ nile-rte-preview {
|
|
|
112
112
|
nile-rte-preview.single-line {
|
|
113
113
|
min-height: 50px;
|
|
114
114
|
max-height: 50px;
|
|
115
|
+
line-height: 1.2;
|
|
115
116
|
padding: 0px 12px 0px 12px;
|
|
116
117
|
overflow-x: auto;
|
|
117
118
|
white-space: nowrap;
|
|
@@ -123,7 +124,7 @@ nile-rte-preview {
|
|
|
123
124
|
display: inline-block;
|
|
124
125
|
height: 24px;
|
|
125
126
|
width: 1px;
|
|
126
|
-
background: var(--nile-colors-neutral-400);
|
|
127
|
+
background: var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));
|
|
127
128
|
}
|
|
128
129
|
|
|
129
130
|
.editor ul,
|
|
@@ -137,13 +138,26 @@ nile-rte-preview {
|
|
|
137
138
|
|
|
138
139
|
|
|
139
140
|
nile-rte-toolbar-item nile-button[data-active]::part(base) {
|
|
140
|
-
background-color: var(--nile-colors-primary-400);
|
|
141
|
+
background-color: var(--nile-colors-primary-400, var(--ng-componentcolors-utility-blue-400));
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
nile-rte-toolbar-item nile-button[data-active]::part(base):hover {
|
|
144
|
-
background-color: var(--nile-colors-primary-500);
|
|
145
|
+
background-color: var(--nile-colors-primary-500, var(--ng-componentcolors-utility-blue-500));
|
|
145
146
|
}
|
|
146
147
|
|
|
148
|
+
.editor.empty::before {
|
|
149
|
+
content: attr(data-placeholder);
|
|
150
|
+
color: var(--nile-colors-neutral-500, var(--ng-colors-text-secondary));
|
|
151
|
+
position: absolute;
|
|
152
|
+
font-family: var(var(--nile-font-family-sans-serif), var(--ng-font-family-body));
|
|
153
|
+
pointer-events: none;
|
|
154
|
+
user-select: none;
|
|
155
|
+
padding-top: 16px;
|
|
156
|
+
opacity: 0.7;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
147
161
|
|
|
148
162
|
|
|
149
|
-
`;export{
|
|
163
|
+
`;export{e as s};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__decorate as t}from"tslib";import{LitElement as i}from"lit";import{property as s,state as e,customElement as n}from"lit/decorators.js";import"./nile-rte-toolbar.esm.js";import"./nile-rte-toolbar-item.esm.js";import"./nile-rte-select.esm.js";import"./nile-rte-color.esm.js";import"./nile-rte-divider.esm.js";import"./nile-rte-preview.esm.js";import"./nile-rte-mentions.esm.js";import"./nile-rte-link.esm.js";import{s as o,a as r,n as h,c as l}from"./utils/block-utils.esm.js";import{t as c,s as a,r as u}from"./utils/inline-utils.esm.js";import{s as f,a as d}from"./utils/color-utils.esm.js";import{t as m}from"./utils/list-utils.esm.js";import{s as p}from"./nile-rich-text-editor.css.esm.js";const 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:"format_clear"};let g=class extends i{constructor(){super(...arguments),this.value="",this.noStyles=!1,this.singleLineEditor=!1,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.containerEl=null,this.mentionsEl=null,this.onEditorKeydown=t=>{if(this.singleLineEditor&&"Enter"===t.key&&t.shiftKey)return void t.preventDefault();if(t.ctrlKey&&"i"===t.key.toLowerCase()&&(t.preventDefault(),c(this.editorEl,"em"),this.updateContent(),this.updateToolbarState()),this.singleLineEditor&&"Enter"===t.key)return void t.preventDefault();if("Tab"!==t.key)return;t.preventDefault(),this.focusAndRestore();const i=window.getSelection();if(!i||0===i.rangeCount)return;const s=i.getRangeAt(0);if(t.shiftKey){if(s.collapsed&&s.startContainer.nodeType===Node.TEXT_NODE){const 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);const s=document.createRange();s.setStart(t,o.length),s.collapse(!0),i.removeAllRanges(),i.addRange(s),this.updateContent(),this.updateToolbarState()}}return}s.deleteContents();const e=document.createTextNode("\t");s.insertNode(e);const n=document.createRange();n.setStartAfter(e),n.collapse(!0),i.removeAllRanges(),i.addRange(n),this.updateContent(),this.updateToolbarState()},this.onSelectionChange=()=>{if(!this.editorEl)return;const t=document.getSelection();if(!t||0===t.rangeCount)return;const i=t.getRangeAt(0);this.editorEl.contains(i.commonAncestorContainer)&&(this.lastRange=i.cloneRange(),this.updateToolbarState())}}createRenderRoot(){return this}injectCss(t){if(this.querySelector("style[data-rte-style]"))return;const i=document.createElement("style");i.setAttribute("data-rte-style","true"),i.textContent=t,this.insertBefore(i,this.firstChild)}connectedCallback(){super.connectedCallback(),this.injectCss(p.cssText),this.ensureStructure(),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(),document.addEventListener("selectionchange",this.onSelectionChange,{passive:!0}),this.updateToolbarState(),this.syncPreview()}ensureStructure(){this.toolbarEl=this.querySelector("nile-rte-toolbar"),this.previewEl=this.querySelector("nile-rte-preview"),this.containerEl=this.querySelector(".rte-container"),this.containerEl||(this.containerEl=document.createElement("div"),this.containerEl.className="rte-container",this.appendChild(this.containerEl)),this.ensureEditor(),this.toolbarEl&&this.toolbarEl.parentElement!==this.containerEl&&this.containerEl.appendChild(this.toolbarEl),this.editorEl.parentElement!==this.containerEl&&this.containerEl.appendChild(this.editorEl),this.previewEl&&(this.previewEl.parentElement!==this&&this.appendChild(this.previewEl),this.previewEl.previousElementSibling!==this.containerEl&&this.insertBefore(this.previewEl,this.containerEl.nextSibling))}updateContentWithMention(t){this.updateContent(),this.dispatchEvent(new CustomEvent("nile-change",{detail:{content:this.content,mention:t},bubbles:!0,composed:!0}))}disconnectedCallback(){document.removeEventListener("selectionchange",this.onSelectionChange),this.mentionsEl&&this.mentionsEl.detach&&this.mentionsEl.detach(),super.disconnectedCallback()}updated(t){t.has("value")&&this.editorEl&&this.value!==this.editorEl.innerHTML&&(this.editorEl.innerHTML=this.value||"<p><br></p>",this.content=this.editorEl.innerHTML,this.syncPreview()),t.has("singleLineEditor")&&(this.editorEl&&this.editorEl.classList.toggle("single-line",this.singleLineEditor),this.previewEl&&this.previewEl.classList.toggle("single-line",this.singleLineEditor))}ensureEditor(){if(this.editorEl=this.querySelector(".editor"),!this.editorEl){const t=document.createElement("article");t.className="editor",t.setAttribute("contenteditable","true"),this.editorEl=t}this.editorEl.innerHTML.trim()||(this.editorEl.innerHTML="<p><br></p>")}unwrapMention(t,i=!0){const s=t.parentNode;if(!s)return;const e=i?(t.textContent??"").replace(/\u200B/g,""):"",n=document.createTextNode(e);s.insertBefore(n,t),s.removeChild(t);const o=document.createRange();o.setStartAfter(n),o.collapse(!0);const r=window.getSelection();r?.removeAllRanges(),r?.addRange(o)}scrubBrokenMentions(){if(!this.editorEl)return;this.editorEl.querySelectorAll("span.mention").forEach((t=>{const i=t,s=i.getAttribute("data-mention-key"),e=i.getAttribute("data-mention-label"),n=i.getAttribute("data-mention-trigger")||"",o=(i.textContent??"").replace(/\u200B/g,"").trim(),r=!!s&&!!e&&o.length>0&&o.startsWith(n)&&o.includes(e);o&&r||this.unwrapMention(i,!0)}))}wireEditor(){this.editorEl.addEventListener("input",(()=>{this.ensureAtLeastOneParagraph(),this.scrubBrokenMentions(),this.updateContent(),this.updateToolbarState()})),this.editorEl.addEventListener("mouseup",(()=>{this.saveSelection(),this.updateToolbarState()})),this.editorEl.addEventListener("keyup",(t=>{this.saveSelection(),["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End"].includes(t.key)&&this.updateToolbarState()})),this.editorEl.addEventListener("keydown",this.onEditorKeydown)}wireAuthoredToolbar(t){this.buttonMap.clear(),this.headingSelect=null,this.fontSelect=null,this.colorInput=null,Array.from(t.children).forEach((t=>{const i=t.tagName.toLowerCase();if("nile-rte-select"!==i||"align"!==t.getAttribute("type")){if("nile-rte-link"===i)return t.editorEl=this.editorEl,void t.addEventListener("link-changed",(()=>{this.updateContent(),this.updateToolbarState()}));if("nile-rte-toolbar-item"===i){let i=t.querySelector(":scope > nile-button");const s=t.getAttribute("name")||"",e=t.getAttribute("label")||s,n=t.getAttribute("icon"),o=t.innerHTML.trim().length>0;if(i||(i=document.createElement("nile-button"),i.variant="tertiary",i.size="small"),n)i.innerHTML=`<nile-icon name="${n}" aria-label="${e}"></nile-icon>`,t.innerHTML="";else if(o)i.innerHTML=t.innerHTML,t.innerHTML="";else{const n=b[s];n?i.innerHTML=`<nile-icon name="${n}" size="20" color="black" aria-label="${e}"></nile-icon>`:i.textContent=e||s,t.innerHTML=""}if(!i.isConnected){const s=document.createElement("nile-tooltip");s.setAttribute("content",e),s.appendChild(i),t.appendChild(s)}i.setAttribute("aria-label",e),i.addEventListener("mousedown",(t=>t.preventDefault())),i.addEventListener("click",(()=>this.onToolbarCommand(s)));const r=this.buttonMap.get(s)??[];return r.push(i),void this.buttonMap.set(s,r)}if("nile-rte-select"!==i)"nile-rte-color"!==i||t.addEventListener("change",(t=>{this.focusAndRestore();const{mode:i,value:s}=t.detail;"backColor"===i?f(this.editorEl,s):d(this.editorEl,s),this.updateContent(),this.updateToolbarState()}));else{const i=t.getAttribute("type")||"";t.addEventListener("change",(t=>{this.focusAndRestore();const s=t.detail;"heading"===i?r(this.editorEl,s):"font"===i&&a(this.editorEl,s),this.updateContent(),this.updateToolbarState()}))}}else t.addEventListener("change",(t=>{this.focusAndRestore();const i=t.detail;o(this.editorEl,i),this.updateContent(),this.updateToolbarState()}))}))}saveSelection(){const t=window.getSelection();t&&t.rangeCount&&(this.lastRange=t.getRangeAt(0).cloneRange())}restoreSelection(){if(!this.lastRange)return;const t=document.getSelection();t&&(t.removeAllRanges(),t.addRange(this.lastRange))}focusAndRestore(){this.editorEl?.focus(),this.restoreSelection()}getCleanContent(){const t=this.editorEl.cloneNode(!0);return t.querySelectorAll("*").forEach((t=>{t.removeAttribute("style")})),t.innerHTML}insertList(t){if(this.restoreSelection(),!this.lastRange)return;const i=document.createElement(t),s=this.lastRange.extractContents(),e=document.createElement("div");e.appendChild(s),Array.from(e.childNodes).forEach((t=>{if(t.nodeType===Node.TEXT_NODE&&!t.textContent?.trim())return;const s=document.createElement("li");s.appendChild(t),i.appendChild(s)})),this.lastRange.insertNode(i),this.afterListEdit(i)}afterListEdit(t){const i=document.createRange();i.setStartAfter(t),i.collapse(!0);const s=window.getSelection();s?.removeAllRanges(),s?.addRange(i),this.saveSelection(),this.updateContent(),this.updateToolbarState()}ensureAtLeastOneParagraph(){const t=this.editorEl;if(!t)return;const i=""===(t.textContent??"").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")){const i=document.createElement("p");for(;t.firstChild;)i.appendChild(t.firstChild);return i.hasChildNodes()||i.appendChild(document.createElement("br")),void t.appendChild(i)}t.querySelectorAll("p").forEach((t=>{""===(t.textContent??"").replace(/\u200B/g,"")&&(t.innerHTML.toLowerCase().includes("<br")||(t.innerHTML="<br>"))}))}onToolbarCommand(t){switch(this.focusAndRestore(),t){case"bold":c(this.editorEl,"strong");break;case"italic":c(this.editorEl,"em");break;case"underline":c(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":m(this.editorEl,"ul"),this.updateContent(),this.updateToolbarState();break;case"ol":m(this.editorEl,"ol"),this.updateContent(),this.updateToolbarState();break;case"link":break;case"clear":const t=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),i=[];for(;t.nextNode();){const s=t.currentNode;s.removeAttribute("style"),["B","STRONG","I","EM","U","SPAN","FONT"].includes(s.tagName)&&i.push(s)}for(const t of i){for(;t.firstChild;)t.parentNode?.insertBefore(t.firstChild,t);t.remove()}this.ensureAtLeastOneParagraph()}this.updateContent(),this.updateToolbarState()}setBtnActive(t,i){const s=this.buttonMap.get(t);if(s)for(const t of s)t.toggleAttribute("data-active",!!i)}updateToolbarState(){if(!this.editorEl)return;const t=document.getSelection();if(!t||0===t.rangeCount)return;const i=t.getRangeAt(0);if(!this.editorEl.contains(i.commonAncestorContainer))return;const s=h(i.startContainer)||this.editorEl,e=getComputedStyle(s),n=l(i.startContainer,this.editorEl)||this.editorEl,o=(()=>{let t=s;for(;t&&t!==this.editorEl;){if(t instanceof HTMLElement){const i=t.tagName.toLowerCase();if("strong"===i||"b"===i)return!0;const s=getComputedStyle(t).fontWeight;if(parseInt(s,10)>=600)return!0}t=t.parentNode}return!1})(),r=(()=>{let t=s;for(;t&&t!==this.editorEl;){if(t instanceof HTMLElement){const i=t.tagName.toLowerCase();if("em"===i||"i"===i)return!0;if("italic"===getComputedStyle(t).fontStyle)return!0}t=t.parentNode}return!1})(),c=(()=>{let t=s;for(;t&&t!==this.editorEl;){if(t instanceof HTMLElement){const i=getComputedStyle(t).textDecorationLine;if(i&&i.includes("underline"))return!0;if("u"===t.tagName.toLowerCase())return!0}t=t.parentNode}return!1})(),a=!!s.closest("a"),f=n.style.textAlign||getComputedStyle(n).textAlign||"start",d="start"===f?"left":f,m=!!s.closest("li")&&s.closest("ul,ol")?.tagName.toLowerCase()||"";if(this.setBtnActive("bold",o),this.setBtnActive("italic",r),this.setBtnActive("underline",c),this.setBtnActive("link",a),this.setBtnActive("left","left"===d&&!["center","right","justify"].includes(d)),this.setBtnActive("center","center"===d),this.setBtnActive("right","right"===d),this.setBtnActive("justify","justify"===d),this.setBtnActive("ul","ul"===m),this.setBtnActive("ol","ol"===m),this.headingSelect){const t=n.tagName.toLowerCase(),i=["h1","h2","h3"].includes(t)?t:"p";this.headingSelect.value!==i&&(this.headingSelect.value=i)}if(this.fontSelect){const t=(e.fontFamily||"").replace(/["']/g,"").split(",")[0].trim().toLowerCase();if(t)for(const i of Array.from(this.fontSelect.options))if(i.value.toLowerCase()===t){this.fontSelect.value=i.value;break}}if(this.colorInput){const t=u(e.color);t&&this.colorInput.value.toLowerCase()!==t.toLowerCase()&&(this.colorInput.value=t),this.colorSwatchEl&&(this.colorSwatchEl.style.backgroundColor=this.colorInput.value)}if(this.bgColorInput){const t=getComputedStyle(s).backgroundColor;if(t&&!/transparent|rgba\(\s*0\s*,\s*0\s*,\s*0\s*,\s*0\s*\)/i.test(t)){const i=u(t);i&&this.bgColorInput.value.toLowerCase()!==i.toLowerCase()&&(this.bgColorInput.value=i)}this.bgSwatchEl&&(this.bgSwatchEl.style.backgroundColor=this.bgColorInput.value)}}syncPreview(){this.updateContent()}updateContent(){if(!this.editorEl)return;this.ensureAtLeastOneParagraph();const t=this.editorEl.cloneNode(!0);if(this.noStyles)t.querySelectorAll("[style]").forEach((t=>t.removeAttribute("style")));else{const 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","list-style-position","padding-inline-start"];for(;i.nextNode()&&s.nextNode();){const t=i.currentNode,n=s.currentNode,o=window.getComputedStyle(t),r=e.map((t=>`${t}:${o.getPropertyValue(t)}`)).join(";");r.trim()&&n.setAttribute("style",r)}}this.content=t.innerHTML,this.previewEl&&(this.previewEl.innerHTML=this.content),this.dispatchEvent(new CustomEvent("nile-change",{detail:{content:this.content},bubbles:!0,composed:!0}))}};t([s({type:String,attribute:!0,reflect:!0})],g.prototype,"value",void 0),t([s({type:Boolean,attribute:!0,reflect:!0})],g.prototype,"noStyles",void 0),t([s({type:Boolean,attribute:"singlelineeditor",reflect:!0})],g.prototype,"singleLineEditor",void 0),t([s({attribute:"mentions",reflect:!0,converter:{fromAttribute:t=>{try{const i=JSON.parse(t),s={};for(const t of Object.keys(i)){const e=i[t];Array.isArray(e)&&(s[t]=e.filter((t=>t&&"string"==typeof t.key&&"string"==typeof t.label)).map((t=>({key:t.key,label:t.label}))))}return s}catch{return{}}},toAttribute:t=>JSON.stringify(t)}})],g.prototype,"mentions",void 0),t([e()],g.prototype,"content",void 0),g=t([n("nile-rich-text-editor")],g);export{g as N};
|
|
1
|
+
import{__decorate as t}from"tslib";import{LitElement as i}from"lit";import{property as s,state as e,customElement as n}from"lit/decorators.js";import"./nile-rte-toolbar.esm.js";import"./nile-rte-toolbar-item.esm.js";import"./nile-rte-select.esm.js";import"./nile-rte-color.esm.js";import"./nile-rte-divider.esm.js";import"./nile-rte-preview.esm.js";import"./nile-rte-mentions.esm.js";import"./nile-rte-link.esm.js";import{s as o,a as r,n as h,c as l}from"./utils/block-utils.esm.js";import{t as c,s as a,r as u}from"./utils/inline-utils.esm.js";import{s as d,a as f}from"./utils/color-utils.esm.js";import{t as m}from"./utils/list-utils.esm.js";import{s as p}from"./nile-rich-text-editor.css.esm.js";const 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:"format_clear"};let g=class extends i{constructor(){super(...arguments),this.value="",this.noStyles=!1,this.singleLineEditor=!1,this.placeholder="",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.containerEl=null,this.mentionsEl=null,this.onEditorKeydown=t=>{if(this.singleLineEditor&&"Enter"===t.key&&t.shiftKey)return void t.preventDefault();if(t.ctrlKey&&"i"===t.key.toLowerCase()&&(t.preventDefault(),c(this.editorEl,"em"),this.updateContent(),this.updateToolbarState()),this.singleLineEditor&&"Enter"===t.key)return void t.preventDefault();if("Tab"!==t.key)return;t.preventDefault(),this.focusAndRestore();const i=window.getSelection();if(!i||0===i.rangeCount)return;const s=i.getRangeAt(0);if(t.shiftKey){if(s.collapsed&&s.startContainer.nodeType===Node.TEXT_NODE){const 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);const s=document.createRange();s.setStart(t,o.length),s.collapse(!0),i.removeAllRanges(),i.addRange(s),this.updateContent(),this.updateToolbarState()}}return}s.deleteContents();const e=document.createTextNode("\t");s.insertNode(e);const n=document.createRange();n.setStartAfter(e),n.collapse(!0),i.removeAllRanges(),i.addRange(n),this.updateContent(),this.updateToolbarState()},this.onSelectionChange=()=>{if(!this.editorEl)return;const t=document.getSelection();if(!t||0===t.rangeCount)return;const i=t.getRangeAt(0);this.editorEl.contains(i.commonAncestorContainer)&&(this.lastRange=i.cloneRange(),this.updateToolbarState())}}createRenderRoot(){return this}injectCss(t){if(this.querySelector("style[data-rte-style]"))return;const i=document.createElement("style");i.setAttribute("data-rte-style","true"),i.textContent=t,this.insertBefore(i,this.firstChild)}connectedCallback(){super.connectedCallback(),this.injectCss(p.cssText),this.ensureStructure(),this.placeholder&&this.editorEl&&(this.editorEl.dataset.placeholder=this.placeholder),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(),document.addEventListener("selectionchange",this.onSelectionChange,{passive:!0}),this.updateToolbarState(),this.syncPreview()}ensureStructure(){this.toolbarEl=this.querySelector("nile-rte-toolbar"),this.previewEl=this.querySelector("nile-rte-preview"),this.containerEl=this.querySelector(".rte-container"),this.containerEl||(this.containerEl=document.createElement("div"),this.containerEl.className="rte-container",this.appendChild(this.containerEl)),this.ensureEditor(),this.toolbarEl&&this.toolbarEl.parentElement!==this.containerEl&&this.containerEl.appendChild(this.toolbarEl),this.editorEl.parentElement!==this.containerEl&&this.containerEl.appendChild(this.editorEl),this.previewEl&&(this.previewEl.parentElement!==this&&this.appendChild(this.previewEl),this.previewEl.previousElementSibling!==this.containerEl&&this.insertBefore(this.previewEl,this.containerEl.nextSibling))}updateContentWithMention(t){this.updateContent(),this.dispatchEvent(new CustomEvent("nile-change",{detail:{content:this.content,mention:t},bubbles:!0,composed:!0}))}disconnectedCallback(){document.removeEventListener("selectionchange",this.onSelectionChange),this.mentionsEl&&this.mentionsEl.detach&&this.mentionsEl.detach(),super.disconnectedCallback()}updated(t){t.has("value")&&this.editorEl&&this.value!==this.editorEl.innerHTML&&(this.editorEl.innerHTML=this.value||"<p><br></p>",this.content=this.editorEl.innerHTML,this.syncPreview()),t.has("singleLineEditor")&&(this.editorEl&&this.editorEl.classList.toggle("single-line",this.singleLineEditor),this.previewEl&&this.previewEl.classList.toggle("single-line",this.singleLineEditor))}ensureEditor(){if(this.editorEl=this.querySelector(".editor"),!this.editorEl){const t=document.createElement("article");t.className="editor",t.setAttribute("contenteditable","true"),this.editorEl=t}this.placeholder&&(this.editorEl.dataset.placeholder=this.placeholder),this.editorEl.innerHTML.trim()||(this.editorEl.innerHTML="<p><br></p>")}unwrapMention(t,i=!0){const s=t.parentNode;if(!s)return;const e=i?(t.textContent??"").replace(/\u200B/g,""):"",n=document.createTextNode(e);s.insertBefore(n,t),s.removeChild(t);const o=document.createRange();o.setStartAfter(n),o.collapse(!0);const r=window.getSelection();r?.removeAllRanges(),r?.addRange(o)}scrubBrokenMentions(){if(!this.editorEl)return;this.editorEl.querySelectorAll("span.mention").forEach((t=>{const i=t,s=i.getAttribute("data-mention-key"),e=i.getAttribute("data-mention-label"),n=i.getAttribute("data-mention-trigger")||"",o=(i.textContent??"").replace(/\u200B/g,"").trim(),r=!!s&&!!e&&o.length>0&&o.startsWith(n)&&o.includes(e);o&&r||this.unwrapMention(i,!0)}))}wireEditor(){this.editorEl.addEventListener("input",(()=>{this.ensureAtLeastOneParagraph(),this.scrubBrokenMentions(),this.updateContent(),this.updateToolbarState()})),this.editorEl.addEventListener("mouseup",(()=>{this.saveSelection(),this.updateToolbarState()})),this.editorEl.addEventListener("keyup",(t=>{this.saveSelection(),["ArrowLeft","ArrowRight","ArrowUp","ArrowDown","Home","End"].includes(t.key)&&this.updateToolbarState()})),this.editorEl.addEventListener("keydown",this.onEditorKeydown)}wireAuthoredToolbar(t){this.buttonMap.clear(),this.headingSelect=null,this.fontSelect=null,this.colorInput=null,Array.from(t.children).forEach((t=>{const i=t.tagName.toLowerCase();if("nile-rte-select"!==i||"align"!==t.getAttribute("type")){if("nile-rte-link"===i)return t.editorEl=this.editorEl,void t.addEventListener("link-changed",(()=>{this.updateContent(),this.updateToolbarState()}));if("nile-rte-toolbar-item"===i){let i=t.querySelector(":scope > nile-button");const s=t.getAttribute("name")||"",e=t.getAttribute("label")||s,n=t.getAttribute("icon"),o=t.innerHTML.trim().length>0;if(i||(i=document.createElement("nile-button"),i.variant="tertiary",i.size="small"),n)i.innerHTML=`<nile-icon name="${n}" aria-label="${e}"></nile-icon>`,t.innerHTML="";else if(o)i.innerHTML=t.innerHTML,t.innerHTML="";else{const n=b[s];n?i.innerHTML=`<nile-icon name="${n}" size="20" color="black" aria-label="${e}"></nile-icon>`:i.textContent=e||s,t.innerHTML=""}if(!i.isConnected){const s=document.createElement("nile-tooltip");s.setAttribute("content",e),s.appendChild(i),t.appendChild(s)}i.setAttribute("aria-label",e),i.addEventListener("mousedown",(t=>t.preventDefault())),i.addEventListener("click",(()=>this.onToolbarCommand(s)));const r=this.buttonMap.get(s)??[];return r.push(i),void this.buttonMap.set(s,r)}if("nile-rte-select"!==i)"nile-rte-color"!==i||t.addEventListener("change",(t=>{this.focusAndRestore();const{mode:i,value:s}=t.detail;"backColor"===i?d(this.editorEl,s):f(this.editorEl,s),this.updateContent(),this.updateToolbarState()}));else{const i=t.getAttribute("type")||"";t.addEventListener("change",(t=>{this.focusAndRestore();const s=t.detail;"heading"===i?r(this.editorEl,s):"font"===i&&a(this.editorEl,s),this.updateContent(),this.updateToolbarState()}))}}else t.addEventListener("change",(t=>{this.focusAndRestore();const i=t.detail;o(this.editorEl,i),this.updateContent(),this.updateToolbarState()}))}))}saveSelection(){const t=window.getSelection();t&&t.rangeCount&&(this.lastRange=t.getRangeAt(0).cloneRange())}restoreSelection(){if(!this.lastRange)return;const t=document.getSelection();t&&(t.removeAllRanges(),t.addRange(this.lastRange))}focusAndRestore(){this.editorEl?.focus(),this.restoreSelection()}getCleanContent(){const t=this.editorEl.cloneNode(!0);return t.querySelectorAll("*").forEach((t=>{t.removeAttribute("style")})),t.innerHTML}insertList(t){if(this.restoreSelection(),!this.lastRange)return;const i=document.createElement(t),s=this.lastRange.extractContents(),e=document.createElement("div");e.appendChild(s),Array.from(e.childNodes).forEach((t=>{if(t.nodeType===Node.TEXT_NODE&&!t.textContent?.trim())return;const s=document.createElement("li");s.appendChild(t),i.appendChild(s)})),this.lastRange.insertNode(i),this.afterListEdit(i)}afterListEdit(t){const i=document.createRange();i.setStartAfter(t),i.collapse(!0);const s=window.getSelection();s?.removeAllRanges(),s?.addRange(i),this.saveSelection(),this.updateContent(),this.updateToolbarState()}ensureAtLeastOneParagraph(){const t=this.editorEl;if(!t)return;const i=""===(t.textContent??"").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")){const i=document.createElement("p");for(;t.firstChild;)i.appendChild(t.firstChild);return i.hasChildNodes()||i.appendChild(document.createElement("br")),void t.appendChild(i)}t.querySelectorAll("p").forEach((t=>{""===(t.textContent??"").replace(/\u200B/g,"")&&(t.innerHTML.toLowerCase().includes("<br")||(t.innerHTML="<br>"))}))}onToolbarCommand(t){switch(this.focusAndRestore(),t){case"bold":c(this.editorEl,"strong");break;case"italic":c(this.editorEl,"em");break;case"underline":c(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":m(this.editorEl,"ul"),this.updateContent(),this.updateToolbarState();break;case"ol":m(this.editorEl,"ol"),this.updateContent(),this.updateToolbarState();break;case"link":break;case"clear":const t=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),i=[];for(;t.nextNode();){const s=t.currentNode;s.removeAttribute("style"),["B","STRONG","I","EM","U","SPAN","FONT"].includes(s.tagName)&&i.push(s)}for(const t of i){for(;t.firstChild;)t.parentNode?.insertBefore(t.firstChild,t);t.remove()}this.ensureAtLeastOneParagraph()}this.updateContent(),this.updateToolbarState()}setBtnActive(t,i){const s=this.buttonMap.get(t);if(s)for(const t of s)t.toggleAttribute("data-active",!!i)}updateToolbarState(){if(!this.editorEl)return;const t=document.getSelection();if(!t||0===t.rangeCount)return;const i=t.getRangeAt(0);if(!this.editorEl.contains(i.commonAncestorContainer))return;const s=h(i.startContainer)||this.editorEl,e=getComputedStyle(s),n=l(i.startContainer,this.editorEl)||this.editorEl,o=(()=>{let t=s;for(;t&&t!==this.editorEl;){if(t instanceof HTMLElement){const i=t.tagName.toLowerCase();if("strong"===i||"b"===i)return!0;const s=getComputedStyle(t).fontWeight;if(parseInt(s,10)>=600)return!0}t=t.parentNode}return!1})(),r=(()=>{let t=s;for(;t&&t!==this.editorEl;){if(t instanceof HTMLElement){const i=t.tagName.toLowerCase();if("em"===i||"i"===i)return!0;if("italic"===getComputedStyle(t).fontStyle)return!0}t=t.parentNode}return!1})(),c=(()=>{let t=s;for(;t&&t!==this.editorEl;){if(t instanceof HTMLElement){const i=getComputedStyle(t).textDecorationLine;if(i&&i.includes("underline"))return!0;if("u"===t.tagName.toLowerCase())return!0}t=t.parentNode}return!1})(),a=!!s.closest("a"),d=n.style.textAlign||getComputedStyle(n).textAlign||"start",f="start"===d?"left":d,m=!!s.closest("li")&&s.closest("ul,ol")?.tagName.toLowerCase()||"";if(this.setBtnActive("bold",o),this.setBtnActive("italic",r),this.setBtnActive("underline",c),this.setBtnActive("link",a),this.setBtnActive("left","left"===f&&!["center","right","justify"].includes(f)),this.setBtnActive("center","center"===f),this.setBtnActive("right","right"===f),this.setBtnActive("justify","justify"===f),this.setBtnActive("ul","ul"===m),this.setBtnActive("ol","ol"===m),this.headingSelect){const t=n.tagName.toLowerCase(),i=["h1","h2","h3"].includes(t)?t:"p";this.headingSelect.value!==i&&(this.headingSelect.value=i)}if(this.fontSelect){const t=(e.fontFamily||"").replace(/["']/g,"").split(",")[0].trim().toLowerCase();if(t)for(const i of Array.from(this.fontSelect.options))if(i.value.toLowerCase()===t){this.fontSelect.value=i.value;break}}if(this.colorInput){const t=u(e.color);t&&this.colorInput.value.toLowerCase()!==t.toLowerCase()&&(this.colorInput.value=t),this.colorSwatchEl&&(this.colorSwatchEl.style.backgroundColor=this.colorInput.value)}if(this.bgColorInput){const t=getComputedStyle(s).backgroundColor;if(t&&!/transparent|rgba\(\s*0\s*,\s*0\s*,\s*0\s*,\s*0\s*\)/i.test(t)){const i=u(t);i&&this.bgColorInput.value.toLowerCase()!==i.toLowerCase()&&(this.bgColorInput.value=i)}this.bgSwatchEl&&(this.bgSwatchEl.style.backgroundColor=this.bgColorInput.value)}}syncPreview(){this.updateContent()}updateContent(){if(!this.editorEl)return;this.ensureAtLeastOneParagraph();const t=""===(this.editorEl.textContent??"").trim();this.editorEl.classList.toggle("empty",t);const i=this.editorEl.cloneNode(!0);if(this.noStyles)i.querySelectorAll("[style]").forEach((t=>t.removeAttribute("style")));else{const t=document.createTreeWalker(this.editorEl,NodeFilter.SHOW_ELEMENT),s=document.createTreeWalker(i,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","list-style-position","padding-inline-start"];for(;t.nextNode()&&s.nextNode();){const i=t.currentNode,n=s.currentNode,o=window.getComputedStyle(i),r=e.map((t=>`${t}:${o.getPropertyValue(t)}`)).join(";");r.trim()&&n.setAttribute("style",r)}}this.content=i.innerHTML,this.previewEl&&(this.previewEl.innerHTML=this.content),this.dispatchEvent(new CustomEvent("nile-change",{detail:{content:this.content},bubbles:!0,composed:!0}))}};t([s({type:String,attribute:!0,reflect:!0})],g.prototype,"value",void 0),t([s({type:Boolean,attribute:!0,reflect:!0})],g.prototype,"noStyles",void 0),t([s({type:Boolean,attribute:"singlelineeditor",reflect:!0})],g.prototype,"singleLineEditor",void 0),t([s({type:String})],g.prototype,"placeholder",void 0),t([s({attribute:"mentions",reflect:!0,converter:{fromAttribute:t=>{try{const i=JSON.parse(t),s={};for(const t of Object.keys(i)){const e=i[t];Array.isArray(e)&&(s[t]=e.filter((t=>t&&"string"==typeof t.key&&"string"==typeof t.label)).map((t=>({key:t.key,label:t.label}))))}return s}catch{return{}}},toAttribute:t=>JSON.stringify(t)}})],g.prototype,"mentions",void 0),t([e()],g.prototype,"content",void 0),g=t([n("nile-rich-text-editor")],g);export{g as N};
|