@aquera/nile-elements 0.1.67-beta-1.5 → 0.1.67-beta-1.7

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.
Files changed (223) hide show
  1. package/demo/index.html +24 -11
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +130 -58
  5. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  6. package/dist/nile-avatar/nile-avatar.test.cjs.js.map +1 -1
  7. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  8. package/dist/nile-badge/index.cjs.js +1 -1
  9. package/dist/nile-badge/index.esm.js +1 -1
  10. package/dist/nile-badge/nile-badge.cjs.js +1 -1
  11. package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
  12. package/dist/nile-badge/nile-badge.esm.js +1 -1
  13. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  14. package/dist/nile-badge/nile-badge.test.cjs.js.map +1 -1
  15. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  16. package/dist/nile-button/index.cjs.js +1 -1
  17. package/dist/nile-button/index.esm.js +1 -1
  18. package/dist/nile-button/nile-button.cjs.js +1 -1
  19. package/dist/nile-button/nile-button.cjs.js.map +1 -1
  20. package/dist/nile-button/nile-button.esm.js +1 -1
  21. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  22. package/dist/nile-button/nile-button.test.cjs.js.map +1 -1
  23. package/dist/nile-button/nile-button.test.esm.js +1 -1
  24. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  25. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
  26. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  27. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  28. package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
  29. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  30. package/dist/nile-dialog/index.cjs.js +1 -1
  31. package/dist/nile-dialog/index.esm.js +1 -1
  32. package/dist/nile-dialog/nile-dialog.cjs.js +1 -1
  33. package/dist/nile-dialog/nile-dialog.cjs.js.map +1 -1
  34. package/dist/nile-dialog/nile-dialog.esm.js +2 -2
  35. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  36. package/dist/nile-dialog/nile-dialog.test.cjs.js.map +1 -1
  37. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  38. package/dist/nile-drawer/index.cjs.js +1 -1
  39. package/dist/nile-drawer/index.esm.js +1 -1
  40. package/dist/nile-drawer/nile-drawer.cjs.js +1 -1
  41. package/dist/nile-drawer/nile-drawer.cjs.js.map +1 -1
  42. package/dist/nile-drawer/nile-drawer.esm.js +1 -1
  43. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  44. package/dist/nile-drawer/nile-drawer.test.cjs.js.map +1 -1
  45. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  46. package/dist/nile-icon/icons/svg/format_clear.cjs.js +2 -0
  47. package/dist/nile-icon/icons/svg/format_clear.cjs.js.map +1 -0
  48. package/dist/nile-icon/icons/svg/format_clear.esm.js +1 -0
  49. package/dist/nile-icon/icons/svg/format_list_bulleted.cjs.js +2 -0
  50. package/dist/nile-icon/icons/svg/format_list_bulleted.cjs.js.map +1 -0
  51. package/dist/nile-icon/icons/svg/format_list_bulleted.esm.js +1 -0
  52. package/dist/nile-icon/icons/svg/format_list_numbered.cjs.js +2 -0
  53. package/dist/nile-icon/icons/svg/format_list_numbered.cjs.js.map +1 -0
  54. package/dist/nile-icon/icons/svg/format_list_numbered.esm.js +1 -0
  55. package/dist/nile-icon/icons/svg/index.cjs.js +1 -1
  56. package/dist/nile-icon/icons/svg/index.esm.js +1 -1
  57. package/dist/nile-icon/index.cjs.js +1 -1
  58. package/dist/nile-icon/index.cjs.js.map +1 -1
  59. package/dist/nile-icon/index.esm.js +2 -2
  60. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  61. package/dist/nile-icon/nile-icon.test.cjs.js.map +1 -1
  62. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  63. package/dist/nile-icon-button/index.cjs.js +1 -1
  64. package/dist/nile-icon-button/index.esm.js +1 -1
  65. package/dist/nile-icon-button/nile-icon-button.cjs.js +1 -1
  66. package/dist/nile-icon-button/nile-icon-button.cjs.js.map +1 -1
  67. package/dist/nile-icon-button/nile-icon-button.esm.js +1 -1
  68. package/dist/nile-input/index.cjs.js +1 -1
  69. package/dist/nile-input/index.esm.js +1 -1
  70. package/dist/nile-input/nile-input.cjs.js +1 -1
  71. package/dist/nile-input/nile-input.cjs.js.map +1 -1
  72. package/dist/nile-input/nile-input.esm.js +1 -1
  73. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  74. package/dist/nile-input/nile-input.test.cjs.js.map +1 -1
  75. package/dist/nile-input/nile-input.test.esm.js +1 -1
  76. package/dist/nile-menu-item/index.cjs.js +1 -1
  77. package/dist/nile-menu-item/index.esm.js +1 -1
  78. package/dist/nile-menu-item/nile-menu-item.cjs.js +1 -1
  79. package/dist/nile-menu-item/nile-menu-item.cjs.js.map +1 -1
  80. package/dist/nile-menu-item/nile-menu-item.esm.js +1 -1
  81. package/dist/nile-option/index.cjs.js +1 -1
  82. package/dist/nile-option/index.esm.js +1 -1
  83. package/dist/nile-option/nile-option.cjs.js +1 -1
  84. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  85. package/dist/nile-option/nile-option.esm.js +1 -1
  86. package/dist/nile-rich-text-editor/index.cjs.js +1 -1
  87. package/dist/nile-rich-text-editor/index.esm.js +1 -1
  88. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js +1 -1
  89. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js.map +1 -1
  90. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js +1 -1
  91. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js.map +1 -1
  92. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.esm.js +14 -13
  93. package/dist/nile-rich-text-editor/nile-rich-text-editor.esm.js +1 -1
  94. package/dist/nile-rich-text-editor/nile-rte-color.cjs.js +1 -1
  95. package/dist/nile-rich-text-editor/nile-rte-color.cjs.js.map +1 -1
  96. package/dist/nile-rich-text-editor/nile-rte-color.esm.js +54 -1
  97. package/dist/nile-rich-text-editor/nile-rte-link.cjs.js +2 -0
  98. package/dist/nile-rich-text-editor/nile-rte-link.cjs.js.map +1 -0
  99. package/dist/nile-rich-text-editor/nile-rte-link.esm.js +19 -0
  100. package/dist/nile-rich-text-editor/nile-rte-select.cjs.js +1 -1
  101. package/dist/nile-rich-text-editor/nile-rte-select.cjs.js.map +1 -1
  102. package/dist/nile-rich-text-editor/nile-rte-select.esm.js +39 -39
  103. package/dist/nile-rich-text-editor/utils.cjs.js +1 -1
  104. package/dist/nile-rich-text-editor/utils.cjs.js.map +1 -1
  105. package/dist/nile-rich-text-editor/utils.esm.js +1 -1
  106. package/dist/nile-select/index.cjs.js +1 -1
  107. package/dist/nile-select/index.esm.js +1 -1
  108. package/dist/nile-select/nile-select.cjs.js +1 -1
  109. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  110. package/dist/nile-select/nile-select.esm.js +1 -1
  111. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  112. package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
  113. package/dist/nile-select/nile-select.test.esm.js +1 -1
  114. package/dist/nile-tab/index.cjs.js +1 -1
  115. package/dist/nile-tab/index.esm.js +1 -1
  116. package/dist/nile-tab/nile-tab.cjs.js +1 -1
  117. package/dist/nile-tab/nile-tab.cjs.js.map +1 -1
  118. package/dist/nile-tab/nile-tab.esm.js +1 -1
  119. package/dist/nile-tab-group/index.cjs.js +1 -1
  120. package/dist/nile-tab-group/index.esm.js +1 -1
  121. package/dist/nile-tab-group/nile-tab-group.cjs.js +1 -1
  122. package/dist/nile-tab-group/nile-tab-group.cjs.js.map +1 -1
  123. package/dist/nile-tab-group/nile-tab-group.esm.js +1 -1
  124. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  125. package/dist/nile-tab-group/nile-tab-group.test.cjs.js.map +1 -1
  126. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  127. package/dist/nile-tag/index.cjs.js +1 -1
  128. package/dist/nile-tag/index.esm.js +1 -1
  129. package/dist/nile-tag/nile-tag.cjs.js +1 -1
  130. package/dist/nile-tag/nile-tag.cjs.js.map +1 -1
  131. package/dist/nile-tag/nile-tag.esm.js +1 -1
  132. package/dist/nile-toast/index.cjs.js +1 -1
  133. package/dist/nile-toast/index.esm.js +1 -1
  134. package/dist/nile-toast/nile-toast.cjs.js +1 -1
  135. package/dist/nile-toast/nile-toast.cjs.js.map +1 -1
  136. package/dist/nile-toast/nile-toast.esm.js +1 -1
  137. package/dist/nile-tree/index.cjs.js +1 -1
  138. package/dist/nile-tree/index.esm.js +1 -1
  139. package/dist/nile-tree/nile-tree.cjs.js +1 -1
  140. package/dist/nile-tree/nile-tree.cjs.js.map +1 -1
  141. package/dist/nile-tree/nile-tree.esm.js +1 -1
  142. package/dist/nile-tree-item/index.cjs.js +1 -1
  143. package/dist/nile-tree-item/index.esm.js +1 -1
  144. package/dist/nile-tree-item/nile-tree-item.cjs.js +1 -1
  145. package/dist/nile-tree-item/nile-tree-item.cjs.js.map +1 -1
  146. package/dist/nile-tree-item/nile-tree-item.esm.js +1 -1
  147. package/dist/nile-virtual-select/index.cjs.js +1 -1
  148. package/dist/nile-virtual-select/index.esm.js +1 -1
  149. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +1 -1
  150. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  151. package/dist/nile-virtual-select/nile-virtual-select.esm.js +1 -1
  152. package/dist/src/nile-icon/icons/svg/format_clear.d.ts +5 -0
  153. package/dist/src/nile-icon/icons/svg/format_clear.js +5 -0
  154. package/dist/src/nile-icon/icons/svg/format_clear.js.map +1 -0
  155. package/dist/src/nile-icon/icons/svg/format_list_bulleted.d.ts +5 -0
  156. package/dist/src/nile-icon/icons/svg/format_list_bulleted.js +5 -0
  157. package/dist/src/nile-icon/icons/svg/format_list_bulleted.js.map +1 -0
  158. package/dist/src/nile-icon/icons/svg/format_list_numbered.d.ts +5 -0
  159. package/dist/src/nile-icon/icons/svg/format_list_numbered.js +5 -0
  160. package/dist/src/nile-icon/icons/svg/format_list_numbered.js.map +1 -0
  161. package/dist/src/nile-icon/icons/svg/index.d.ts +3 -0
  162. package/dist/src/nile-icon/icons/svg/index.js +3 -0
  163. package/dist/src/nile-icon/icons/svg/index.js.map +1 -1
  164. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js +14 -13
  165. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js.map +1 -1
  166. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.d.ts +1 -0
  167. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js +38 -90
  168. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js.map +1 -1
  169. package/dist/src/nile-rich-text-editor/nile-rte-color.d.ts +11 -3
  170. package/dist/src/nile-rich-text-editor/nile-rte-color.js +171 -6
  171. package/dist/src/nile-rich-text-editor/nile-rte-color.js.map +1 -1
  172. package/dist/src/nile-rich-text-editor/nile-rte-link.d.ts +19 -0
  173. package/dist/src/nile-rich-text-editor/nile-rte-link.js +172 -0
  174. package/dist/src/nile-rich-text-editor/nile-rte-link.js.map +1 -0
  175. package/dist/src/nile-rich-text-editor/nile-rte-select.js +62 -57
  176. package/dist/src/nile-rich-text-editor/nile-rte-select.js.map +1 -1
  177. package/dist/src/nile-rich-text-editor/rte-utils/content.d.ts +2 -0
  178. package/dist/src/nile-rich-text-editor/rte-utils/content.js +25 -0
  179. package/dist/src/nile-rich-text-editor/rte-utils/content.js.map +1 -0
  180. package/dist/src/nile-rich-text-editor/rte-utils/css.d.ts +1 -0
  181. package/dist/src/nile-rich-text-editor/rte-utils/css.js +9 -0
  182. package/dist/src/nile-rich-text-editor/rte-utils/css.js.map +1 -0
  183. package/dist/src/nile-rich-text-editor/rte-utils/dom.d.ts +2 -0
  184. package/dist/src/nile-rich-text-editor/rte-utils/dom.js +48 -0
  185. package/dist/src/nile-rich-text-editor/rte-utils/dom.js.map +1 -0
  186. package/dist/src/nile-rich-text-editor/rte-utils/formatting.d.ts +2 -0
  187. package/dist/src/nile-rich-text-editor/rte-utils/formatting.js +69 -0
  188. package/dist/src/nile-rich-text-editor/rte-utils/formatting.js.map +1 -0
  189. package/dist/src/nile-rich-text-editor/rte-utils/keys.d.ts +2 -0
  190. package/dist/src/nile-rich-text-editor/rte-utils/keys.js +38 -0
  191. package/dist/src/nile-rich-text-editor/rte-utils/keys.js.map +1 -0
  192. package/dist/src/nile-rich-text-editor/rte-utils/lists.d.ts +2 -0
  193. package/dist/src/nile-rich-text-editor/rte-utils/lists.js +28 -0
  194. package/dist/src/nile-rich-text-editor/rte-utils/lists.js.map +1 -0
  195. package/dist/src/nile-rich-text-editor/rte-utils/selection.d.ts +17 -0
  196. package/dist/src/nile-rich-text-editor/rte-utils/selection.js +39 -0
  197. package/dist/src/nile-rich-text-editor/rte-utils/selection.js.map +1 -0
  198. package/dist/src/nile-rich-text-editor/rte-utils/toolbar.d.ts +28 -0
  199. package/dist/src/nile-rich-text-editor/rte-utils/toolbar.js +161 -0
  200. package/dist/src/nile-rich-text-editor/rte-utils/toolbar.js.map +1 -0
  201. package/dist/src/nile-rich-text-editor/rte-utils/toolbarState.d.ts +13 -0
  202. package/dist/src/nile-rich-text-editor/rte-utils/toolbarState.js +119 -0
  203. package/dist/src/nile-rich-text-editor/rte-utils/toolbarState.js.map +1 -0
  204. package/dist/src/nile-rich-text-editor/rte-utils/vars.d.ts +1 -0
  205. package/dist/src/nile-rich-text-editor/rte-utils/vars.js +14 -0
  206. package/dist/src/nile-rich-text-editor/rte-utils/vars.js.map +1 -0
  207. package/dist/src/nile-rich-text-editor/sanatize.d.ts +1 -0
  208. package/dist/src/nile-rich-text-editor/sanatize.js +40 -0
  209. package/dist/src/nile-rich-text-editor/sanatize.js.map +1 -0
  210. package/dist/src/nile-rich-text-editor/utils.js.map +1 -1
  211. package/dist/tsconfig.tsbuildinfo +1 -1
  212. package/package.json +1 -1
  213. package/src/nile-icon/icons/svg/format_clear.ts +5 -0
  214. package/src/nile-icon/icons/svg/format_list_bulleted.ts +5 -0
  215. package/src/nile-icon/icons/svg/format_list_numbered.ts +5 -0
  216. package/src/nile-icon/icons/svg/index.ts +3 -0
  217. package/src/nile-rich-text-editor/nile-rich-text-editor.css.ts +14 -13
  218. package/src/nile-rich-text-editor/nile-rich-text-editor.ts +56 -90
  219. package/src/nile-rich-text-editor/nile-rte-color.ts +182 -6
  220. package/src/nile-rich-text-editor/nile-rte-link.ts +161 -0
  221. package/src/nile-rich-text-editor/nile-rte-select.ts +178 -173
  222. package/src/nile-rich-text-editor/utils.ts +342 -341
  223. package/vscode-html-custom-data.json +33 -3
@@ -1,47 +1,32 @@
1
- import{__decorate as t}from"tslib";import{LitElement as e,html as n}from"lit";import{property as i,state as l,customElement as r}from"lit/decorators.js";const s=new Set(["p","h1","h2","h3","h4","h5","h6"]);function a(t){return s.has(t)}let o=class extends e{constructor(){super(...arguments),this.type="",this.options="[]",this.label="",this.selectedValue=""}createRenderRoot(){return this}mapAlignIcon(t){return{left:"format_align_left",center:"format_align_middle",right:"format_align_right",justify:"format_align_justify"}[t]||"align-left"}get parsedOptions(){const t=this.optionsObj??this.options;let e=(()=>{if(Array.isArray(t))return t;try{return JSON.parse(String(t))}catch{return[]}})().map((t=>{const e=t?.value??t;return{value:e,label:t?.label??t?.value??t,icon:t?.icon??("align"===this.type?this.mapAlignIcon(String(e)):void 0)}}));if("heading"===this.type){e.length;e=e.filter((t=>a(t.value))),e.length,this.selectedValue&&!a(this.selectedValue)&&(this.selectedValue="")}return e}ensureDefault(){if(!this.selectedValue){const t=this.parsedOptions[0];t&&(this.selectedValue=t.value)}}onSelect(t){"heading"!==this.type||a(t)?(this.selectedValue=t,this.dispatchEvent(new CustomEvent("change",{detail:t,bubbles:!0,composed:!0}))):console.warn(`[nile-rte-select] Ignoring invalid heading value: ${t}`)}connectedCallback(){super.connectedCallback(),this.injectLocalStyles()}injectLocalStyles(){if(this.querySelector("style[data-rte-select-style]"))return;const t=document.createElement("style");t.setAttribute("data-rte-select-style","true"),t.textContent="\n nile-menu.rte-align-menu::part(menu__items-wrapper) {\n display: flex;\n }\n nile-menu.rte-align-menu,\n nile-menu.rte-default-menu {\n margin-top: 0px;\n }\n nile-button.rte-align-trigger::part(base),\n nile-button.rte-default-trigger::part(base) {\n min-width: 32px;\n height: 32px;\n padding: 0px 6px;\n box-shadow: none;\n }\n ",this.insertBefore(t,this.firstChild)}render(){const t=this.parsedOptions;this.ensureDefault();const e=t.find((t=>t.value===this.selectedValue));if("align"===this.type){const i=e?.icon?n`<nile-icon name="${e.icon}"></nile-icon>`:this.label||"Align";return n`
2
- <nile-dropdown class="rte-align-dd">
3
- <nile-button slot="trigger" variant="tertiary" class="rte-align-trigger">
4
- ${i}
5
- </nile-button>
6
- <nile-menu class="rte-align-menu">
7
- ${t.map((t=>n`
8
- <nile-menu-item
9
- class="rte-align-item"
10
- ?active=${t.value===this.selectedValue}
11
- @click=${()=>this.onSelect(t.value)}>
12
- <nile-icon name="${t.icon}"></nile-icon>
13
- </nile-menu-item>
14
- `))}
15
- </nile-menu>
16
- </nile-dropdown>
17
- `}if("font"===this.type){const i=e?.label||this.label||"Font";return n`
18
- <nile-dropdown class="rte-default-dd">
19
- <nile-button
20
- slot="trigger"
21
- variant="tertiary"
22
- class="rte-default-trigger"
23
- style="font-family: ${e?.value||"inherit"}">
24
- ${i} <nile-icon name="arrowdown"></nile-icon>
25
- </nile-button>
26
- <nile-menu class="rte-default-menu">
27
- ${t.map((t=>n`
28
- <nile-menu-item
29
- style="font-family: ${t.value}"
30
- ?active=${t.value===this.selectedValue}
31
- @click=${()=>this.onSelect(t.value)}>
32
- ${t.label}
33
- </nile-menu-item>
34
- `))}
35
- </nile-menu>
36
- </nile-dropdown>
37
- `}const i=e?.label||this.label||"Select";return n`
1
+ import{__decorate as t}from"tslib";import{LitElement as e,html as n}from"lit";import{property as i,state as r,customElement as l}from"lit/decorators.js";const s=new Set(["p","h1","h2","h3","h4","h5","h6"]);function a(t){return s.has(t)}let o=class extends e{constructor(){super(...arguments),this.type="",this.options="[]",this.label="",this.selectedValue=""}createRenderRoot(){return this}mapAlignIcon(t){return{left:"format_align_left",center:"format_align_middle",right:"format_align_right",justify:"format_align_justify"}[t]||"format_align_left"}get parsedOptions(){const t=this.optionsObj??this.options;let e=(()=>{if(Array.isArray(t))return t;try{return JSON.parse(String(t))}catch{return[]}})().map((t=>{const e=t?.value??t;return{value:e,label:t?.label??t?.value??t,icon:t?.icon??("align"===this.type?this.mapAlignIcon(String(e)):void 0)}}));if("heading"===this.type){e.length;e=e.filter((t=>a(t.value))),e.length,this.selectedValue&&!a(this.selectedValue)&&(this.selectedValue="")}return e}ensureDefault(){if(!this.selectedValue){const t=this.parsedOptions[0];t&&(this.selectedValue=t.value)}}onSelect(t){"heading"!==this.type||a(t)?(this.selectedValue=t,this.dispatchEvent(new CustomEvent("change",{detail:t,bubbles:!0,composed:!0}))):console.warn(`[nile-rte-select] Ignoring invalid heading value: ${t}`)}connectedCallback(){super.connectedCallback(),this.injectLocalStyles()}injectLocalStyles(){if(this.querySelector("style[data-rte-select-style]"))return;const t=document.createElement("style");t.setAttribute("data-rte-select-style","true"),t.textContent="\n nile-menu.rte-align-menu::part(menu__items-wrapper) {\n display: flex;\n }\n nile-menu.rte-align-menu,\n nile-menu.rte-default-menu {\n margin-top: 0px;\n }\n nile-button.rte-align-trigger::part(base),\n nile-button.rte-default-trigger::part(base) {\n min-width: 32px;\n height: 32px;\n padding: 0px 6px;\n box-shadow: none;\n }\n nile-button.rte-align-trigger::part(base) {\n \n\n border: none;\n}\n ",this.insertBefore(t,this.firstChild)}render(){const t=this.parsedOptions;this.ensureDefault();const e=t.find((t=>t.value===this.selectedValue));if("align"===this.type){const i=e?.icon?n`<nile-icon name="${e.icon}"></nile-icon>`:this.label||"Align";return n`
2
+ <nile-dropdown class="rte-align-dd">
3
+ <nile-button slot="trigger" variant="tertiary" class="rte-align-trigger">
4
+ ${i}
5
+ </nile-button>
6
+ <nile-menu class="rte-align-menu">
7
+ ${t.map((t=>n`
8
+ <nile-menu-item
9
+ class="rte-align-item"
10
+ ?active=${t.value===this.selectedValue}
11
+ @click=${()=>this.onSelect(t.value)}>
12
+ <nile-icon name="${t.icon}"></nile-icon>
13
+ </nile-menu-item>
14
+ `))}
15
+ </nile-menu>
16
+ </nile-dropdown>
17
+ `}if("font"===this.type){const i=e?.label||this.label||"Font";return n`
38
18
  <nile-dropdown class="rte-default-dd">
39
- <nile-button slot="trigger" variant="tertiary" class="rte-default-trigger">
19
+ <nile-button
20
+ slot="trigger"
21
+ variant="tertiary"
22
+ class="rte-default-trigger"
23
+ style="font-family: ${e?.value||"inherit"}">
40
24
  ${i} <nile-icon name="arrowdown"></nile-icon>
41
25
  </nile-button>
42
26
  <nile-menu class="rte-default-menu">
43
27
  ${t.map((t=>n`
44
28
  <nile-menu-item
29
+ style="font-family: ${t.value}"
45
30
  ?active=${t.value===this.selectedValue}
46
31
  @click=${()=>this.onSelect(t.value)}>
47
32
  ${t.label}
@@ -49,4 +34,19 @@ import{__decorate as t}from"tslib";import{LitElement as e,html as n}from"lit";im
49
34
  `))}
50
35
  </nile-menu>
51
36
  </nile-dropdown>
52
- `}};t([i({type:String})],o.prototype,"type",void 0),t([i({type:String})],o.prototype,"options",void 0),t([i({attribute:!1})],o.prototype,"optionsObj",void 0),t([i({type:String})],o.prototype,"label",void 0),t([l()],o.prototype,"selectedValue",void 0),o=t([r("nile-rte-select")],o);
37
+ `}const i=e?.label||this.label||"Select";return n`
38
+ <nile-dropdown class="rte-default-dd">
39
+ <nile-button slot="trigger" variant="tertiary" class="rte-default-trigger">
40
+ ${i} <nile-icon name="arrowdown"></nile-icon>
41
+ </nile-button>
42
+ <nile-menu class="rte-default-menu">
43
+ ${t.map((t=>n`
44
+ <nile-menu-item
45
+ ?active=${t.value===this.selectedValue}
46
+ @click=${()=>this.onSelect(t.value)}>
47
+ ${t.label}
48
+ </nile-menu-item>
49
+ `))}
50
+ </nile-menu>
51
+ </nile-dropdown>
52
+ `}};t([i({type:String})],o.prototype,"type",void 0),t([i({type:String})],o.prototype,"options",void 0),t([i({attribute:!1})],o.prototype,"optionsObj",void 0),t([i({type:String})],o.prototype,"label",void 0),t([r()],o.prototype,"selectedValue",void 0),o=t([l("nile-rte-select")],o);
@@ -1,2 +1,2 @@
1
- System.register([],function(_export,_context){"use strict";function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1;}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r;}finally{try{if(!f&&null!=t["return"]&&(u=t["return"](),Object(u)!==u))return;}finally{if(o)throw n;}}return a;}}function _arrayWithHoles(r){if(Array.isArray(r))return r;}function n(n,t){for(;n&&n!==t;){var _n;if(n instanceof HTMLElement){var _t=getComputedStyle(n).display;if(n.tagName.match(/^(P|DIV|H1|H2|H3|H4|H5|H6|LI)$/)||"block"===_t||"list-item"===_t)return n;}n=((_n=n)===null||_n===void 0?void 0:_n.parentNode)||null;}return t;}function t(n){for(;n&&!(n instanceof HTMLElement);)n=n.parentNode;return n;}function o(n){var t=n.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i);if(!t)return"#000000";return"#".concat(Number(t[1]).toString(16).padStart(2,"0")).concat(Number(t[2]).toString(16).padStart(2,"0")).concat(Number(t[3]).toString(16).padStart(2,"0"));}function e(n,t,o){var e=document.createElement(t);o&&Object.entries(o).forEach(function(_ref){var _ref2=_slicedToArray(_ref,2),n=_ref2[0],t=_ref2[1];return e.setAttribute(n,t);});try{n.surroundContents(e);}catch(_unused){var _t2=n.extractContents();e.appendChild(_t2),n.insertNode(e);}}function c(n,t,o){var c=document.getSelection();if(!c||0===c.rangeCount)return;var r=c.getRangeAt(0);if(r.collapsed){var _n2=document.createElement(t);o&&Object.entries(o).forEach(function(_ref3){var _ref4=_slicedToArray(_ref3,2),t=_ref4[0],o=_ref4[1];return _n2.setAttribute(t,o);}),_n2.appendChild(document.createTextNode("​")),r.insertNode(_n2);var _e=document.createRange();return _e.setStart(_n2.firstChild,1),_e.collapse(!0),c.removeAllRanges(),void c.addRange(_e);}var u=r.startContainer,i=null;for(;u&&u!==n;){if(u instanceof HTMLElement&&u.tagName.toLowerCase()===t){i=u;break;}u=u.parentNode;}i?function(n){var t=n.parentNode;if(t){for(;n.firstChild;)t.insertBefore(n.firstChild,n);t.removeChild(n);}}(i):e(r,t,o);}function r(t,o){var e=document.getSelection();if(!e||0===e.rangeCount)return;var c=n(e.getRangeAt(0).startContainer,t);if(!c)return;if(c.tagName.toLowerCase()===o)return;var r=document.createElement(o);for(;c.firstChild;)r.appendChild(c.firstChild);c.replaceWith(r);var u=document.createRange();u.selectNodeContents(r),u.collapse(!0),e.removeAllRanges(),e.addRange(u);}function u(t,o){var e=document.getSelection();if(!e||0===e.rangeCount)return;var c=n(e.getRangeAt(0).startContainer,t);c&&(c.style.textAlign="justify"===o?"justify":o);}function i(n,t){var o=document.getSelection();if(!o||0===o.rangeCount)return;var c=o.getRangeAt(0);if(c.collapsed){var _n3=document.createElement("span");_n3.style.fontFamily=t,_n3.appendChild(document.createTextNode("​")),c.insertNode(_n3);var _e2=document.createRange();return _e2.setStart(_n3.firstChild,1),_e2.collapse(!0),o.removeAllRanges(),void o.addRange(_e2);}e(c,"span",{style:"font-family:".concat(t)});}function s(n,t,o){for(;t&&t!==n;){if(t instanceof HTMLSpanElement&&t.hasAttribute(o))return t;t=t.parentNode;}return null;}function f(n,t,o,e){var c=window.getSelection();if(!c||0===c.rangeCount)return;var r=c.getRangeAt(0);if(!n.contains(r.commonAncestorContainer))return;var u=r.cloneRange();if(u.collapsed){var _r=s(n,u.startContainer,e);if(_r)return _r.style[t]=o,void a(n,e,t);var _i=document.createElement("span");_i.setAttribute(e,"1"),_i.style[t]=o,_i.appendChild(document.createTextNode("​")),u.insertNode(_i);var _f=document.createRange();return _f.setStart(_i.firstChild,1),_f.collapse(!0),c.removeAllRanges(),c.addRange(_f),void a(n,e,t);}var i=s(n,u.startContainer,e),f=s(n,u.endContainer,e);if(i&&i===f){if(function(n,t){var o=document.createRange();return o.selectNodeContents(t),n.compareBoundaryPoints(Range.START_TO_START,o)<=0&&n.compareBoundaryPoints(Range.END_TO_END,o)>=0;}(u,i))i.style[t]=o;else{var _n4=function(n,t,o,e,c){var r=n.style[e],u=document.createRange();u.setStart(n,0),u.setEnd(t.startContainer,t.startOffset);var i=document.createRange();i.setStart(t.endContainer,t.endOffset),i.setEnd(n,n.childNodes.length);var s=document.createDocumentFragment(),f=function f(n){var t=document.createElement("span");return t.setAttribute(o,"1"),t.style[e]=n,t;};if(d(u)){var _n5=f(r);_n5.appendChild(u.cloneContents()),s.appendChild(_n5);}var a=f(c);if(a.appendChild(t.cloneContents()),s.appendChild(a),d(i)){var _n6=f(r);_n6.appendChild(i.cloneContents()),s.appendChild(_n6);}return n.replaceWith(s),a;}(i,u,e,t,o),_c=window.getSelection(),_r2=document.createRange();_r2.selectNodeContents(_n4),_c!==null&&_c!==void 0&&_c.removeAllRanges(),_c===null||_c===void 0?void 0:_c.addRange(_r2);}return void a(n,e,t);}var m=function(){var n=u.commonAncestorContainer;for(;n&&!(n instanceof HTMLElement);)n=n.parentNode;return n;}(),l=document.createTreeWalker(m||n,NodeFilter.SHOW_TEXT,{acceptNode:function acceptNode(n){if(!n.nodeValue||!n.nodeValue.trim())return NodeFilter.FILTER_REJECT;var t=document.createRange();t.selectNodeContents(n);return u.compareBoundaryPoints(Range.END_TO_START,t)<0&&u.compareBoundaryPoints(Range.START_TO_END,t)>0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;}}),p=[];var H;for(;H=l.nextNode();)p.push(H);p.forEach(function(c){var r=0,i=c.length;c===u.startContainer&&(r=u.startOffset),c===u.endContainer&&(i=u.endOffset),r>0&&(c=c.splitText(r)),i<c.length&&c.splitText(i);var f=s(n,c,e);if(f)return void(f.style[t]=o);var d=document.createElement("span");d.setAttribute(e,"1"),d.style[t]=o;c.parentElement.replaceChild(d,c),d.appendChild(c);}),a(n,e,t),c.removeAllRanges(),c.addRange(u);}function d(n){if(n.collapsed)return!1;return(n.cloneContents().textContent||"").length>0;}function a(n,t,o){var e=Array.from(n.querySelectorAll("span[".concat(t,"]"))),c=function c(n){return n.style[o];};e.forEach(function(n){Array.from(n.querySelectorAll("span[".concat(t,"]"))).forEach(function(t){if(c(t)===c(n)){for(;t.firstChild;)n.insertBefore(t.firstChild,t);t.remove();}});var o=n.previousSibling;if(o instanceof HTMLSpanElement&&o.hasAttribute(t)&&c(o)===c(n)){for(;n.firstChild;)o.appendChild(n.firstChild);return void n.remove();}var e=n.nextSibling;if(e instanceof HTMLSpanElement&&e.hasAttribute(t)&&c(e)===c(n)){for(;e.firstChild;)n.appendChild(e.firstChild);e.remove();}});}function m(n,t){f(n,"color",t,"data-rte-color");}function l(n,t){f(n,"backgroundColor",t,"data-rte-bg");}function p(n,t){var _r3;var o=document.getSelection();if(!o||0===o.rangeCount)return;var e=o.getRangeAt(0);var c=e.startContainer,r=null;for(;c&&c!==n;){if(c instanceof HTMLAnchorElement){r=c;break;}c=c.parentNode;}var u=t!==null&&t!==void 0?t:"undefined"!=typeof window&&window.prompt("Enter URL",((_r3=r)===null||_r3===void 0?void 0:_r3.href)||"https://")||"";if(!u)return;if(r)return void(r.href=u);if(e.collapsed){var _n7=document.createElement("a");_n7.href=u,_n7.textContent=u,e.insertNode(_n7);var _t3=document.createRange();return _t3.setStartAfter(_n7),_t3.collapse(!0),o.removeAllRanges(),void o.addRange(_t3);}var i=document.createElement("a");i.href=u;try{e.surroundContents(i);}catch(_unused2){var _n8=e.extractContents();i.appendChild(_n8),e.insertNode(i);}}_export({a:r,b:i,c:l,d:m,e:n,i:p,n:t,r:o,s:u,t:c});return{setters:[],execute:function execute(){}};});
1
+ System.register([],function(_export,_context){"use strict";function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0;}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n;}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1;}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r;}finally{try{if(!f&&null!=t["return"]&&(u=t["return"](),Object(u)!==u))return;}finally{if(o)throw n;}}return a;}}function _arrayWithHoles(r){if(Array.isArray(r))return r;}function n(n,t){for(;n&&n!==t;){var _n;if(n instanceof HTMLElement){var _t=getComputedStyle(n).display;if(n.tagName.match(/^(P|DIV|H1|H2|H3|H4|H5|H6|LI)$/)||"block"===_t||"list-item"===_t)return n;}n=((_n=n)===null||_n===void 0?void 0:_n.parentNode)||null;}return t;}function t(n){for(;n&&!(n instanceof HTMLElement);)n=n.parentNode;return n;}function o(n){var t=n.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i);if(!t)return"#000000";return"#".concat(Number(t[1]).toString(16).padStart(2,"0")).concat(Number(t[2]).toString(16).padStart(2,"0")).concat(Number(t[3]).toString(16).padStart(2,"0"));}function e(n,t,o){var e=document.createElement(t);o&&Object.entries(o).forEach(function(_ref){var _ref2=_slicedToArray(_ref,2),n=_ref2[0],t=_ref2[1];return e.setAttribute(n,t);});try{n.surroundContents(e);}catch(_unused){var _t2=n.extractContents();e.appendChild(_t2),n.insertNode(e);}}function c(n,t,o){var c=document.getSelection();if(!c||0===c.rangeCount)return;var r=c.getRangeAt(0);if(r.collapsed){var _n2=document.createElement(t);o&&Object.entries(o).forEach(function(_ref3){var _ref4=_slicedToArray(_ref3,2),t=_ref4[0],o=_ref4[1];return _n2.setAttribute(t,o);}),_n2.appendChild(document.createTextNode("​")),r.insertNode(_n2);var _e=document.createRange();return _e.setStart(_n2.firstChild,1),_e.collapse(!0),c.removeAllRanges(),void c.addRange(_e);}var u=r.startContainer,s=null;for(;u&&u!==n;){if(u instanceof HTMLElement&&u.tagName.toLowerCase()===t){s=u;break;}u=u.parentNode;}s?function(n){var t=n.parentNode;if(t){for(;n.firstChild;)t.insertBefore(n.firstChild,n);t.removeChild(n);}}(s):e(r,t,o);}function r(t,o){var e=document.getSelection();if(!e||0===e.rangeCount)return;var c=n(e.getRangeAt(0).startContainer,t);if(!c)return;if(c.tagName.toLowerCase()===o)return;var r=document.createElement(o);for(;c.firstChild;)r.appendChild(c.firstChild);c.replaceWith(r);var u=document.createRange();u.selectNodeContents(r),u.collapse(!0),e.removeAllRanges(),e.addRange(u);}function u(t,o){var e=document.getSelection();if(!e||0===e.rangeCount)return;var c=n(e.getRangeAt(0).startContainer,t);c&&(c.style.textAlign="justify"===o?"justify":o);}function s(n,t){var o=document.getSelection();if(!o||0===o.rangeCount)return;var c=o.getRangeAt(0);if(c.collapsed){var _n3=document.createElement("span");_n3.style.fontFamily=t,_n3.appendChild(document.createTextNode("​")),c.insertNode(_n3);var _e2=document.createRange();return _e2.setStart(_n3.firstChild,1),_e2.collapse(!0),o.removeAllRanges(),void o.addRange(_e2);}e(c,"span",{style:"font-family:".concat(t)});}function i(n,t,o){for(;t&&t!==n;){if(t instanceof HTMLSpanElement&&t.hasAttribute(o))return t;t=t.parentNode;}return null;}function f(n,t,o,e){var c=window.getSelection();if(!c||0===c.rangeCount)return;var r=c.getRangeAt(0);if(!n.contains(r.commonAncestorContainer))return;var u=r.cloneRange();if(u.collapsed){var _r=i(n,u.startContainer,e);if(_r)return _r.style[t]=o,void a(n,e,t);var _s=document.createElement("span");_s.setAttribute(e,"1"),_s.style[t]=o,_s.appendChild(document.createTextNode("​")),u.insertNode(_s);var _f=document.createRange();return _f.setStart(_s.firstChild,1),_f.collapse(!0),c.removeAllRanges(),c.addRange(_f),void a(n,e,t);}var s=i(n,u.startContainer,e),f=i(n,u.endContainer,e);if(s&&s===f){if(function(n,t){var o=document.createRange();return o.selectNodeContents(t),n.compareBoundaryPoints(Range.START_TO_START,o)<=0&&n.compareBoundaryPoints(Range.END_TO_END,o)>=0;}(u,s))s.style[t]=o;else{var _n4=function(n,t,o,e,c){var r=n.style[e],u=document.createRange();u.setStart(n,0),u.setEnd(t.startContainer,t.startOffset);var s=document.createRange();s.setStart(t.endContainer,t.endOffset),s.setEnd(n,n.childNodes.length);var i=document.createDocumentFragment(),f=function f(n){var t=document.createElement("span");return t.setAttribute(o,"1"),t.style[e]=n,t;};if(d(u)){var _n5=f(r);_n5.appendChild(u.cloneContents()),i.appendChild(_n5);}var a=f(c);if(a.appendChild(t.cloneContents()),i.appendChild(a),d(s)){var _n6=f(r);_n6.appendChild(s.cloneContents()),i.appendChild(_n6);}return n.replaceWith(i),a;}(s,u,e,t,o),_c=window.getSelection(),_r2=document.createRange();_r2.selectNodeContents(_n4),_c!==null&&_c!==void 0&&_c.removeAllRanges(),_c===null||_c===void 0?void 0:_c.addRange(_r2);}return void a(n,e,t);}var m=function(){var n=u.commonAncestorContainer;for(;n&&!(n instanceof HTMLElement);)n=n.parentNode;return n;}(),l=document.createTreeWalker(m||n,NodeFilter.SHOW_TEXT,{acceptNode:function acceptNode(n){if(!n.nodeValue||!n.nodeValue.trim())return NodeFilter.FILTER_REJECT;var t=document.createRange();t.selectNodeContents(n);return u.compareBoundaryPoints(Range.END_TO_START,t)<0&&u.compareBoundaryPoints(Range.START_TO_END,t)>0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT;}}),p=[];var H;for(;H=l.nextNode();)p.push(H);p.forEach(function(c){var r=0,s=c.length;c===u.startContainer&&(r=u.startOffset),c===u.endContainer&&(s=u.endOffset),r>0&&(c=c.splitText(r)),s<c.length&&c.splitText(s);var f=i(n,c,e);if(f)return void(f.style[t]=o);var d=document.createElement("span");d.setAttribute(e,"1"),d.style[t]=o;c.parentElement.replaceChild(d,c),d.appendChild(c);}),a(n,e,t),c.removeAllRanges(),c.addRange(u);}function d(n){if(n.collapsed)return!1;return(n.cloneContents().textContent||"").length>0;}function a(n,t,o){var e=Array.from(n.querySelectorAll("span[".concat(t,"]"))),c=function c(n){return n.style[o];};e.forEach(function(n){Array.from(n.querySelectorAll("span[".concat(t,"]"))).forEach(function(t){if(c(t)===c(n)){for(;t.firstChild;)n.insertBefore(t.firstChild,t);t.remove();}});var o=n.previousSibling;if(o instanceof HTMLSpanElement&&o.hasAttribute(t)&&c(o)===c(n)){for(;n.firstChild;)o.appendChild(n.firstChild);return void n.remove();}var e=n.nextSibling;if(e instanceof HTMLSpanElement&&e.hasAttribute(t)&&c(e)===c(n)){for(;e.firstChild;)n.appendChild(e.firstChild);e.remove();}});}function m(n,t){f(n,"color",t,"data-rte-color");}function l(n,t){f(n,"backgroundColor",t,"data-rte-bg");}_export({a:r,b:s,c:l,d:m,e:n,n:t,r:o,s:u,t:c});return{setters:[],execute:function execute(){}};});
2
2
  //# sourceMappingURL=utils.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.cjs.js","sources":["../../../src/nile-rich-text-editor/utils.ts"],"sourcesContent":["// src/nile-rich-text-editor/utils.ts\nexport function closestBlock(node: Node | null, root: HTMLElement): HTMLElement | null {\n while (node && node !== root) {\n if (node instanceof HTMLElement) {\n const display = getComputedStyle(node).display;\n if (node.tagName.match(/^(P|DIV|H1|H2|H3|H4|H5|H6|LI)$/) || display === 'block' || display === 'list-item') {\n return node;\n }\n }\n node = node?.parentNode || null;\n }\n return root;\n}\n\nexport function nearestElement(n: Node | null): HTMLElement | null {\n while (n && !(n instanceof HTMLElement)) n = n.parentNode as Node | null;\n return n as HTMLElement | null;\n}\n\nexport function rgbToHex(rgb: string): string {\n const m = rgb.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/i);\n if (!m) return '#000000';\n const r = Number(m[1]).toString(16).padStart(2,'0');\n const g = Number(m[2]).toString(16).padStart(2,'0');\n const b = Number(m[3]).toString(16).padStart(2,'0');\n return `#${r}${g}${b}`;\n}\n\nexport function unwrap(node: HTMLElement) {\n const p = node.parentNode; if (!p) return;\n while (node.firstChild) p.insertBefore(node.firstChild, node);\n p.removeChild(node);\n}\n\nexport function surroundInline(range: Range, tag: string, attrs?: Record<string,string>) {\n const wrap = document.createElement(tag);\n if (attrs) Object.entries(attrs).forEach(([k,v]) => wrap.setAttribute(k, v));\n try { range.surroundContents(wrap); }\n catch {\n const frag = range.extractContents();\n wrap.appendChild(frag);\n range.insertNode(wrap);\n }\n}\n\nexport function toggleInlineTag(root: HTMLElement, tag: 'strong'|'em'|'u'|'span', attrs?: Record<string,string>) {\n const sel = document.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n\n if (range.collapsed) {\n const elm = document.createElement(tag);\n if (attrs) Object.entries(attrs).forEach(([k,v]) => elm.setAttribute(k,v));\n elm.appendChild(document.createTextNode('\\u200b'));\n range.insertNode(elm);\n const r = document.createRange();\n r.setStart(elm.firstChild!, 1);\n r.collapse(true);\n sel.removeAllRanges(); sel.addRange(r);\n return;\n }\n\n let n: Node | null = range.startContainer;\n let target: HTMLElement | null = null;\n while (n && n !== root) {\n if (n instanceof HTMLElement && n.tagName.toLowerCase() === tag) { target = n; break; }\n n = n.parentNode;\n }\n if (target) unwrap(target); else surroundInline(range, tag, attrs);\n}\n\nexport function setBlockTag(root: HTMLElement, tag: 'p'|'h1'|'h2'|'h3') {\n const sel = document.getSelection(); if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n const block = closestBlock(range.startContainer, root); if (!block) return;\n if (block.tagName.toLowerCase() === tag) return;\n const nb = document.createElement(tag);\n while (block.firstChild) nb.appendChild(block.firstChild);\n block.replaceWith(nb);\n const r = document.createRange(); r.selectNodeContents(nb); r.collapse(true);\n sel.removeAllRanges(); sel.addRange(r);\n}\n\nexport function setAlignment(root: HTMLElement, align: 'left'|'center'|'right'|'justify') {\n const sel = document.getSelection(); if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n const block = closestBlock(range.startContainer, root); if (!block) return;\n block.style.textAlign = align === 'justify' ? 'justify' : align;\n}\n\nexport function setFontFamily(root: HTMLElement, family: string) {\n const sel = document.getSelection(); if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n if (range.collapsed) {\n const span = document.createElement('span');\n span.style.fontFamily = family;\n span.appendChild(document.createTextNode('\\u200b'));\n range.insertNode(span);\n const r = document.createRange(); r.setStart(span.firstChild!, 1); r.collapse(true);\n sel.removeAllRanges(); sel.addRange(r);\n return;\n }\n surroundInline(range, 'span', { style: `font-family:${family}` });\n}\n\n\nfunction enclosingStyledSpan(\neditor: HTMLElement,\nnode: Node | null,\ndataAttr: 'data-rte-color' | 'data-rte-bg'\n): HTMLSpanElement | null {\nwhile (node && node !== editor) {\n if (node instanceof HTMLSpanElement && node.hasAttribute(dataAttr)) {\n return node;\n }\n node = node.parentNode;\n}\nreturn null;\n}\n\n\nfunction applyInlineStyle(\neditor: HTMLElement,\ncssProp: 'color' | 'backgroundColor',\nvalue: string,\ndataAttr: 'data-rte-color' | 'data-rte-bg'\n) {\nconst sel = window.getSelection();\nif (!sel || sel.rangeCount === 0) return;\nconst r0 = sel.getRangeAt(0);\nif (!editor.contains(r0.commonAncestorContainer)) return;\n\nconst range = r0.cloneRange();\n\n \nif (range.collapsed) {\n const enclosing = enclosingStyledSpan(editor, range.startContainer, dataAttr);\n if (enclosing) {\n (enclosing.style as any)[cssProp] = value;\n mergeAdjacentStyledSpans(editor, dataAttr, cssProp);\n return;\n }\n\n const s = document.createElement('span');\n s.setAttribute(dataAttr, '1');\n (s.style as any)[cssProp] = value;\n s.appendChild(document.createTextNode('\\u200B')); \n range.insertNode(s);\n\n\n const caret = document.createRange();\n caret.setStart(s.firstChild!, 1);\n caret.collapse(true);\n sel.removeAllRanges(); sel.addRange(caret);\n\n mergeAdjacentStyledSpans(editor, dataAttr, cssProp);\n return;\n}\n\n\nconst leftEdge = enclosingStyledSpan(editor, range.startContainer, dataAttr);\nconst rightEdge = enclosingStyledSpan(editor, range.endContainer, dataAttr);\nif (leftEdge && leftEdge === rightEdge) {\n \n if (rangeCoversWholeNode(range, leftEdge)) {\n (leftEdge.style as any)[cssProp] = value;\n } else {\n \n const mid = splitAndRecolorWithinSpan(\n leftEdge,\n range,\n dataAttr,\n cssProp,\n value\n );\n\n\n const sel = window.getSelection();\n const r = document.createRange();\n r.selectNodeContents(mid);\n sel?.removeAllRanges();\n sel?.addRange(r);\n }\n mergeAdjacentStyledSpans(editor, dataAttr, cssProp);\n return;\n}\n\n \n const commonEl = (() => {\n let n: Node | null = range.commonAncestorContainer;\n while (n && !(n instanceof HTMLElement)) n = n.parentNode;\n return n as HTMLElement | null;\n })();\n\nconst walker = document.createTreeWalker(\n commonEl || editor,\n NodeFilter.SHOW_TEXT,\n {\n acceptNode: (n) => {\n if (!n.nodeValue || !n.nodeValue.trim()) return NodeFilter.FILTER_REJECT;\n const nodeRange = document.createRange();\n nodeRange.selectNodeContents(n);\n const intersects =\n range.compareBoundaryPoints(Range.END_TO_START, nodeRange) < 0 &&\n range.compareBoundaryPoints(Range.START_TO_END, nodeRange) > 0;\n return intersects ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }\n }\n);\n\nconst toProcess: Text[] = [];\nlet t: Node | null;\nwhile ((t = walker.nextNode())) toProcess.push(t as Text);\n\ntoProcess.forEach((text) => {\n \n let start = 0, end = text.length;\n if (text === range.startContainer) start = range.startOffset;\n if (text === range.endContainer) end = range.endOffset;\n if (start > 0) text = text.splitText(start);\n if (end < text.length) text.splitText(end);\n\n // If this slice already sits in a styled span → update it, don’t nest.\n const existing = enclosingStyledSpan(editor, text, dataAttr);\n if (existing) {\n (existing.style as any)[cssProp] = value;\n return;\n }\n\n // Create a new, single-purpose span\n const span = document.createElement('span');\n span.setAttribute(dataAttr, '1');\n (span.style as any)[cssProp] = value;\n const parent = text.parentElement!;\n parent.replaceChild(span, text);\n span.appendChild(text);\n});\n\nmergeAdjacentStyledSpans(editor, dataAttr, cssProp);\n\n// restore selection\nsel.removeAllRanges(); sel.addRange(range);\n}\n\n// Is the range covering the entire node's contents?\nfunction rangeCoversWholeNode(range: Range, node: Node): boolean {\nconst all = document.createRange();\nall.selectNodeContents(node);\nreturn (\n range.compareBoundaryPoints(Range.START_TO_START, all) <= 0 &&\n range.compareBoundaryPoints(Range.END_TO_END, all) >= 0\n);\n}\n\nfunction hasRangeContent(r: Range): boolean {\nif (r.collapsed) return false;\nconst text = r.cloneContents().textContent || '';\nreturn text.length > 0;\n}\n\n// Split one styled span into [left][middle][right]; recolor only middle\nfunction splitAndRecolorWithinSpan(\nspan: HTMLSpanElement,\nrange: Range,\ndataAttr: 'data-rte-color' | 'data-rte-bg',\ncssProp: 'color' | 'backgroundColor',\nnewValue: string\n): HTMLSpanElement {\nconst oldValue = (span.style as any)[cssProp];\n\nconst left = document.createRange();\nleft.setStart(span, 0);\nleft.setEnd(range.startContainer, range.startOffset);\n\nconst right = document.createRange();\nright.setStart(range.endContainer, range.endOffset);\nright.setEnd(span, span.childNodes.length);\n\n// Build replacement fragment\nconst frag = document.createDocumentFragment();\n\n// helper to make a styled clone shell\nconst makeShell = (val: string) => {\n const s = document.createElement('span');\n s.setAttribute(dataAttr, '1');\n (s.style as any)[cssProp] = val;\n return s;\n};\n\nif (hasRangeContent(left)) {\n const sLeft = makeShell(oldValue);\n sLeft.appendChild(left.cloneContents());\n frag.appendChild(sLeft);\n}\n\nconst mid = makeShell(newValue);\nmid.appendChild(range.cloneContents());\nfrag.appendChild(mid);\n\nif (hasRangeContent(right)) {\n const sRight = makeShell(oldValue);\n sRight.appendChild(right.cloneContents());\n frag.appendChild(sRight);\n}\n\n// Replace original span\nspan.replaceWith(frag);\nreturn mid; // return the middle span so caller can restore selection\n}\n\n\nfunction mergeAdjacentStyledSpans(\nroot: HTMLElement,\ndataAttr: 'data-rte-color' | 'data-rte-bg',\ncssProp: 'color' | 'backgroundColor'\n) {\nconst spans = Array.from(root.querySelectorAll<HTMLSpanElement>(`span[${dataAttr}]`));\n\nconst valOf = (el: HTMLElement) => (el.style as any)[cssProp];\n\nspans.forEach((s) => {\n\n const nested = Array.from(s.querySelectorAll<HTMLSpanElement>(`span[${dataAttr}]`));\n nested.forEach((child) => {\n if (valOf(child) === valOf(s)) {\n while (child.firstChild) s.insertBefore(child.firstChild, child);\n child.remove();\n }\n });\n\n \n const prev = s.previousSibling;\n if (prev instanceof HTMLSpanElement &&\n prev.hasAttribute(dataAttr) &&\n valOf(prev) === valOf(s)) {\n while (s.firstChild) prev.appendChild(s.firstChild);\n s.remove();\n return; // s is gone, next checks not needed\n }\n\n // 3) Merge with next sibling if identical\n const next = s.nextSibling;\n if (next instanceof HTMLSpanElement &&\n next.hasAttribute(dataAttr) &&\n valOf(next) === valOf(s)) {\n while (next.firstChild) s.appendChild(next.firstChild);\n next.remove();\n }\n});\n}\n\n\nexport function setForeColor(editor: HTMLElement, hex: string) {\napplyInlineStyle(editor, 'color', hex, 'data-rte-color');\n}\nexport function setBackColor(editor: HTMLElement, hex: string) {\napplyInlineStyle(editor, 'backgroundColor', hex, 'data-rte-bg');\n}\n\n\nexport function toggleList(root: HTMLElement, kind: 'ul'|'ol') {\n const sel = document.getSelection(); if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n const block = closestBlock(range.startContainer, root); if (!block) return;\n\n let li = block.closest('li');\n if (li) {\n const list = li.closest('ul,ol') as HTMLElement | null;\n if (!list) return;\n if (list.tagName.toLowerCase() === kind) {\n const parent = list.parentElement!;\n const frag = document.createDocumentFragment();\n for (const child of Array.from(list.children)) {\n if (child.tagName.toLowerCase() === 'li') {\n const p = document.createElement('p');\n while (child.firstChild) p.appendChild(child.firstChild);\n frag.appendChild(p);\n }\n }\n parent.replaceChild(frag, list);\n } else {\n const newList = document.createElement(kind);\n while (list.firstChild) newList.appendChild(list.firstChild);\n list.replaceWith(newList);\n }\n return;\n }\n\n const list = document.createElement(kind);\n const item = document.createElement('li'); list.appendChild(item);\n while (block.firstChild) item.appendChild(block.firstChild);\n block.replaceWith(list);\n}\n\nexport function insertOrEditLink(root: HTMLElement, href?: string) {\n const sel = document.getSelection(); if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n\n let n: Node | null = range.startContainer;\n let a: HTMLAnchorElement | null = null;\n while (n && n !== root) { if (n instanceof HTMLAnchorElement) { a = n; break; } n = n.parentNode; }\n\n const url = href ?? (typeof window !== 'undefined' ? window.prompt('Enter URL', a?.href || 'https://') || '' : '');\n if (!url) return;\n\n if (a) { a.href = url; return; }\n\n if (range.collapsed) {\n const link = document.createElement('a'); link.href = url; link.textContent = url; range.insertNode(link);\n const r = document.createRange(); r.setStartAfter(link); r.collapse(true);\n sel.removeAllRanges(); sel.addRange(r);\n return;\n }\n\n const link = document.createElement('a'); link.href = url;\n try { range.surroundContents(link); }\n catch { const frag = range.extractContents(); link.appendChild(frag); range.insertNode(link); }\n}\n"],"names":["closestBlock","node","root","_n","HTMLElement","display","getComputedStyle","tagName","match","parentNode","nearestElement","n","rgbToHex","rgb","m","concat","Number","toString","padStart","surroundInline","range","tag","attrs","wrap","document","createElement","Object","entries","forEach","_ref","_ref2","_slicedToArray","k","v","setAttribute","surroundContents","_unused","frag","extractContents","appendChild","insertNode","toggleInlineTag","sel","getSelection","rangeCount","getRangeAt","collapsed","elm","_ref3","_ref4","createTextNode","r","createRange","setStart","firstChild","collapse","removeAllRanges","addRange","startContainer","target","toLowerCase","p","insertBefore","removeChild","unwrap","setBlockTag","block","nb","replaceWith","selectNodeContents","setAlignment","align","style","textAlign","setFontFamily","family","span","fontFamily","enclosingStyledSpan","editor","dataAttr","HTMLSpanElement","hasAttribute","applyInlineStyle","cssProp","value","window","r0","contains","commonAncestorContainer","cloneRange","enclosing","mergeAdjacentStyledSpans","s","caret","leftEdge","rightEdge","endContainer","all","compareBoundaryPoints","Range","START_TO_START","END_TO_END","rangeCoversWholeNode","mid","newValue","oldValue","left","setEnd","startOffset","right","endOffset","childNodes","length","createDocumentFragment","makeShell","val","hasRangeContent","sLeft","cloneContents","sRight","splitAndRecolorWithinSpan","commonEl","walker","createTreeWalker","NodeFilter","SHOW_TEXT","acceptNode","nodeValue","trim","FILTER_REJECT","nodeRange","END_TO_START","START_TO_END","FILTER_ACCEPT","toProcess","t","nextNode","push","text","start","end","splitText","existing","parentElement","replaceChild","textContent","spans","Array","from","querySelectorAll","valOf","el","child","remove","prev","previousSibling","next","nextSibling","setForeColor","hex","setBackColor","insertOrEditLink","href","_r3","a","HTMLAnchorElement","url","prompt","link","setStartAfter","_unused2"],"mappings":"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"}
1
+ {"version":3,"file":"utils.cjs.js","sources":["../../../src/nile-rich-text-editor/utils.ts"],"sourcesContent":["// src/nile-rich-text-editor/utils.ts\nexport function closestBlock(node: Node | null, root: HTMLElement): HTMLElement | null {\n while (node && node !== root) {\n if (node instanceof HTMLElement) {\n const display = getComputedStyle(node).display;\n if (node.tagName.match(/^(P|DIV|H1|H2|H3|H4|H5|H6|LI)$/) || display === 'block' || display === 'list-item') {\n return node;\n }\n }\n node = node?.parentNode || null;\n }\n return root;\n }\n \n export function nearestElement(n: Node | null): HTMLElement | null {\n while (n && !(n instanceof HTMLElement)) n = n.parentNode as Node | null;\n return n as HTMLElement | null;\n }\n \n export function rgbToHex(rgb: string): string {\n const m = rgb.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/i);\n if (!m) return '#000000';\n const r = Number(m[1]).toString(16).padStart(2,'0');\n const g = Number(m[2]).toString(16).padStart(2,'0');\n const b = Number(m[3]).toString(16).padStart(2,'0');\n return `#${r}${g}${b}`;\n }\n \n export function unwrap(node: HTMLElement) {\n const p = node.parentNode; if (!p) return;\n while (node.firstChild) p.insertBefore(node.firstChild, node);\n p.removeChild(node);\n }\n \n export function surroundInline(range: Range, tag: string, attrs?: Record<string,string>) {\n const wrap = document.createElement(tag);\n if (attrs) Object.entries(attrs).forEach(([k,v]) => wrap.setAttribute(k, v));\n try { range.surroundContents(wrap); }\n catch {\n const frag = range.extractContents();\n wrap.appendChild(frag);\n range.insertNode(wrap);\n }\n }\n \n export function toggleInlineTag(root: HTMLElement, tag: 'strong'|'em'|'u'|'span', attrs?: Record<string,string>) {\n const sel = document.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n \n if (range.collapsed) {\n const elm = document.createElement(tag);\n if (attrs) Object.entries(attrs).forEach(([k,v]) => elm.setAttribute(k,v));\n elm.appendChild(document.createTextNode('\\u200b'));\n range.insertNode(elm);\n const r = document.createRange();\n r.setStart(elm.firstChild!, 1);\n r.collapse(true);\n sel.removeAllRanges(); sel.addRange(r);\n return;\n }\n \n let n: Node | null = range.startContainer;\n let target: HTMLElement | null = null;\n while (n && n !== root) {\n if (n instanceof HTMLElement && n.tagName.toLowerCase() === tag) { target = n; break; }\n n = n.parentNode;\n }\n if (target) unwrap(target); else surroundInline(range, tag, attrs);\n }\n \n export function setBlockTag(root: HTMLElement, tag: 'p'|'h1'|'h2'|'h3') {\n const sel = document.getSelection(); if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n const block = closestBlock(range.startContainer, root); if (!block) return;\n if (block.tagName.toLowerCase() === tag) return;\n const nb = document.createElement(tag);\n while (block.firstChild) nb.appendChild(block.firstChild);\n block.replaceWith(nb);\n const r = document.createRange(); r.selectNodeContents(nb); r.collapse(true);\n sel.removeAllRanges(); sel.addRange(r);\n }\n \n export function setAlignment(root: HTMLElement, align: 'left'|'center'|'right'|'justify') {\n const sel = document.getSelection(); if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n const block = closestBlock(range.startContainer, root); if (!block) return;\n block.style.textAlign = align === 'justify' ? 'justify' : align;\n }\n \n export function setFontFamily(root: HTMLElement, family: string) {\n const sel = document.getSelection(); if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n if (range.collapsed) {\n const span = document.createElement('span');\n span.style.fontFamily = family;\n span.appendChild(document.createTextNode('\\u200b'));\n range.insertNode(span);\n const r = document.createRange(); r.setStart(span.firstChild!, 1); r.collapse(true);\n sel.removeAllRanges(); sel.addRange(r);\n return;\n }\n surroundInline(range, 'span', { style: `font-family:${family}` });\n }\n\n \nfunction enclosingStyledSpan(\n editor: HTMLElement,\n node: Node | null,\n dataAttr: 'data-rte-color' | 'data-rte-bg'\n): HTMLSpanElement | null {\n while (node && node !== editor) {\n if (node instanceof HTMLSpanElement && node.hasAttribute(dataAttr)) {\n return node;\n }\n node = node.parentNode;\n }\n return null;\n}\n\n \nfunction applyInlineStyle(\n editor: HTMLElement,\n cssProp: 'color' | 'backgroundColor',\n value: string,\n dataAttr: 'data-rte-color' | 'data-rte-bg'\n) {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) return;\n const r0 = sel.getRangeAt(0);\n if (!editor.contains(r0.commonAncestorContainer)) return;\n\n const range = r0.cloneRange();\n\n \n if (range.collapsed) {\n const enclosing = enclosingStyledSpan(editor, range.startContainer, dataAttr);\n if (enclosing) {\n (enclosing.style as any)[cssProp] = value;\n mergeAdjacentStyledSpans(editor, dataAttr, cssProp);\n return;\n }\n\n const s = document.createElement('span');\n s.setAttribute(dataAttr, '1');\n (s.style as any)[cssProp] = value;\n s.appendChild(document.createTextNode('\\u200B')); \n range.insertNode(s);\n\n \n const caret = document.createRange();\n caret.setStart(s.firstChild!, 1);\n caret.collapse(true);\n sel.removeAllRanges(); sel.addRange(caret);\n\n mergeAdjacentStyledSpans(editor, dataAttr, cssProp);\n return;\n }\n\n \n const leftEdge = enclosingStyledSpan(editor, range.startContainer, dataAttr);\n const rightEdge = enclosingStyledSpan(editor, range.endContainer, dataAttr);\n if (leftEdge && leftEdge === rightEdge) {\n \n if (rangeCoversWholeNode(range, leftEdge)) {\n (leftEdge.style as any)[cssProp] = value;\n } else {\n \n const mid = splitAndRecolorWithinSpan(\n leftEdge,\n range,\n dataAttr,\n cssProp,\n value\n );\n \n \n const sel = window.getSelection();\n const r = document.createRange();\n r.selectNodeContents(mid);\n sel?.removeAllRanges();\n sel?.addRange(r);\n }\n mergeAdjacentStyledSpans(editor, dataAttr, cssProp);\n return;\n }\n\n \n const commonEl = (() => {\n let n: Node | null = range.commonAncestorContainer;\n while (n && !(n instanceof HTMLElement)) n = n.parentNode;\n return n as HTMLElement | null;\n })();\n\n const walker = document.createTreeWalker(\n commonEl || editor,\n NodeFilter.SHOW_TEXT,\n {\n acceptNode: (n) => {\n if (!n.nodeValue || !n.nodeValue.trim()) return NodeFilter.FILTER_REJECT;\n const nodeRange = document.createRange();\n nodeRange.selectNodeContents(n);\n const intersects =\n range.compareBoundaryPoints(Range.END_TO_START, nodeRange) < 0 &&\n range.compareBoundaryPoints(Range.START_TO_END, nodeRange) > 0;\n return intersects ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n }\n }\n );\n\n const toProcess: Text[] = [];\n let t: Node | null;\n while ((t = walker.nextNode())) toProcess.push(t as Text);\n\n toProcess.forEach((text) => {\n \n let start = 0, end = text.length;\n if (text === range.startContainer) start = range.startOffset;\n if (text === range.endContainer) end = range.endOffset;\n if (start > 0) text = text.splitText(start);\n if (end < text.length) text.splitText(end);\n\n // If this slice already sits in a styled span → update it, don’t nest.\n const existing = enclosingStyledSpan(editor, text, dataAttr);\n if (existing) {\n (existing.style as any)[cssProp] = value;\n return;\n }\n\n // Create a new, single-purpose span\n const span = document.createElement('span');\n span.setAttribute(dataAttr, '1');\n (span.style as any)[cssProp] = value;\n const parent = text.parentElement!;\n parent.replaceChild(span, text);\n span.appendChild(text);\n });\n\n mergeAdjacentStyledSpans(editor, dataAttr, cssProp);\n\n // restore selection\n sel.removeAllRanges(); sel.addRange(range);\n}\n\n // Is the range covering the entire node's contents?\nfunction rangeCoversWholeNode(range: Range, node: Node): boolean {\n const all = document.createRange();\n all.selectNodeContents(node);\n return (\n range.compareBoundaryPoints(Range.START_TO_START, all) <= 0 &&\n range.compareBoundaryPoints(Range.END_TO_END, all) >= 0\n );\n}\n\nfunction hasRangeContent(r: Range): boolean {\n if (r.collapsed) return false;\n const text = r.cloneContents().textContent || '';\n return text.length > 0;\n}\n\n// Split one styled span into [left][middle][right]; recolor only middle\nfunction splitAndRecolorWithinSpan(\n span: HTMLSpanElement,\n range: Range,\n dataAttr: 'data-rte-color' | 'data-rte-bg',\n cssProp: 'color' | 'backgroundColor',\n newValue: string\n): HTMLSpanElement {\n const oldValue = (span.style as any)[cssProp];\n\n const left = document.createRange();\n left.setStart(span, 0);\n left.setEnd(range.startContainer, range.startOffset);\n\n const right = document.createRange();\n right.setStart(range.endContainer, range.endOffset);\n right.setEnd(span, span.childNodes.length);\n\n // Build replacement fragment\n const frag = document.createDocumentFragment();\n\n // helper to make a styled clone shell\n const makeShell = (val: string) => {\n const s = document.createElement('span');\n s.setAttribute(dataAttr, '1');\n (s.style as any)[cssProp] = val;\n return s;\n };\n\n if (hasRangeContent(left)) {\n const sLeft = makeShell(oldValue);\n sLeft.appendChild(left.cloneContents());\n frag.appendChild(sLeft);\n }\n\n const mid = makeShell(newValue);\n mid.appendChild(range.cloneContents());\n frag.appendChild(mid);\n\n if (hasRangeContent(right)) {\n const sRight = makeShell(oldValue);\n sRight.appendChild(right.cloneContents());\n frag.appendChild(sRight);\n }\n\n // Replace original span\n span.replaceWith(frag);\n return mid; // return the middle span so caller can restore selection\n}\n\n\nfunction mergeAdjacentStyledSpans(\n root: HTMLElement,\n dataAttr: 'data-rte-color' | 'data-rte-bg',\n cssProp: 'color' | 'backgroundColor'\n) {\n const spans = Array.from(root.querySelectorAll<HTMLSpanElement>(`span[${dataAttr}]`));\n\n const valOf = (el: HTMLElement) => (el.style as any)[cssProp];\n\n spans.forEach((s) => {\n \n const nested = Array.from(s.querySelectorAll<HTMLSpanElement>(`span[${dataAttr}]`));\n nested.forEach((child) => {\n if (valOf(child) === valOf(s)) {\n while (child.firstChild) s.insertBefore(child.firstChild, child);\n child.remove();\n }\n });\n\n \n const prev = s.previousSibling;\n if (prev instanceof HTMLSpanElement &&\n prev.hasAttribute(dataAttr) &&\n valOf(prev) === valOf(s)) {\n while (s.firstChild) prev.appendChild(s.firstChild);\n s.remove();\n return; // s is gone, next checks not needed\n }\n\n // 3) Merge with next sibling if identical\n const next = s.nextSibling;\n if (next instanceof HTMLSpanElement &&\n next.hasAttribute(dataAttr) &&\n valOf(next) === valOf(s)) {\n while (next.firstChild) s.appendChild(next.firstChild);\n next.remove();\n }\n });\n}\n\n\nexport function setForeColor(editor: HTMLElement, hex: string) {\n applyInlineStyle(editor, 'color', hex, 'data-rte-color');\n}\nexport function setBackColor(editor: HTMLElement, hex: string) {\n applyInlineStyle(editor, 'backgroundColor', hex, 'data-rte-bg');\n}\n\n\n export function toggleList(root: HTMLElement, kind: 'ul'|'ol') {\n const sel = document.getSelection(); if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n const block = closestBlock(range.startContainer, root); if (!block) return;\n \n let li = block.closest('li');\n if (li) {\n const list = li.closest('ul,ol') as HTMLElement | null;\n if (!list) return;\n if (list.tagName.toLowerCase() === kind) {\n const parent = list.parentElement!;\n const frag = document.createDocumentFragment();\n for (const child of Array.from(list.children)) {\n if (child.tagName.toLowerCase() === 'li') {\n const p = document.createElement('p');\n while (child.firstChild) p.appendChild(child.firstChild);\n frag.appendChild(p);\n }\n }\n parent.replaceChild(frag, list);\n } else {\n const newList = document.createElement(kind);\n while (list.firstChild) newList.appendChild(list.firstChild);\n list.replaceWith(newList);\n }\n return;\n }\n \n const list = document.createElement(kind);\n const item = document.createElement('li'); list.appendChild(item);\n while (block.firstChild) item.appendChild(block.firstChild);\n block.replaceWith(list);\n }\n \n export function insertOrEditLink(root: HTMLElement, href?: string) {\n const sel = document.getSelection(); if (!sel || sel.rangeCount === 0) return;\n const range = sel.getRangeAt(0);\n \n let n: Node | null = range.startContainer;\n let a: HTMLAnchorElement | null = null;\n while (n && n !== root) { if (n instanceof HTMLAnchorElement) { a = n; break; } n = n.parentNode; }\n \n const url = href ?? (typeof window !== 'undefined' ? window.prompt('Enter URL', a?.href || 'https://') || '' : '');\n if (!url) return;\n \n if (a) { a.href = url; return; }\n \n if (range.collapsed) {\n const link = document.createElement('a'); link.href = url; link.textContent = url; range.insertNode(link);\n const r = document.createRange(); r.setStartAfter(link); r.collapse(true);\n sel.removeAllRanges(); sel.addRange(r);\n return;\n }\n \n const link = document.createElement('a'); link.href = url;\n try { range.surroundContents(link); }\n catch { const frag = range.extractContents(); link.appendChild(frag); range.insertNode(link); }\n }\n "],"names":["closestBlock","node","root","_n","HTMLElement","display","getComputedStyle","tagName","match","parentNode","nearestElement","n","rgbToHex","rgb","m","concat","Number","toString","padStart","surroundInline","range","tag","attrs","wrap","document","createElement","Object","entries","forEach","_ref","_ref2","_slicedToArray","k","v","setAttribute","surroundContents","_unused","frag","extractContents","appendChild","insertNode","toggleInlineTag","sel","getSelection","rangeCount","getRangeAt","collapsed","elm","_ref3","_ref4","createTextNode","r","createRange","setStart","firstChild","collapse","removeAllRanges","addRange","startContainer","target","toLowerCase","p","insertBefore","removeChild","unwrap","setBlockTag","block","nb","replaceWith","selectNodeContents","setAlignment","align","style","textAlign","setFontFamily","family","span","fontFamily","enclosingStyledSpan","editor","dataAttr","HTMLSpanElement","hasAttribute","applyInlineStyle","cssProp","value","window","r0","contains","commonAncestorContainer","cloneRange","enclosing","mergeAdjacentStyledSpans","s","caret","leftEdge","rightEdge","endContainer","all","compareBoundaryPoints","Range","START_TO_START","END_TO_END","rangeCoversWholeNode","mid","newValue","oldValue","left","setEnd","startOffset","right","endOffset","childNodes","length","createDocumentFragment","makeShell","val","hasRangeContent","sLeft","cloneContents","sRight","splitAndRecolorWithinSpan","commonEl","walker","createTreeWalker","NodeFilter","SHOW_TEXT","acceptNode","nodeValue","trim","FILTER_REJECT","nodeRange","END_TO_START","START_TO_END","FILTER_ACCEPT","toProcess","t","nextNode","push","text","start","end","splitText","existing","parentElement","replaceChild","textContent","spans","Array","from","querySelectorAll","valOf","el","child","remove","prev","previousSibling","next","nextSibling","setForeColor","hex","setBackColor"],"mappings":"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"}
@@ -1 +1 @@
1
- function n(n,t){for(;n&&n!==t;){if(n instanceof HTMLElement){const t=getComputedStyle(n).display;if(n.tagName.match(/^(P|DIV|H1|H2|H3|H4|H5|H6|LI)$/)||"block"===t||"list-item"===t)return n}n=n?.parentNode||null}return t}function t(n){for(;n&&!(n instanceof HTMLElement);)n=n.parentNode;return n}function o(n){const t=n.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i);if(!t)return"#000000";return`#${Number(t[1]).toString(16).padStart(2,"0")}${Number(t[2]).toString(16).padStart(2,"0")}${Number(t[3]).toString(16).padStart(2,"0")}`}function e(n,t,o){const e=document.createElement(t);o&&Object.entries(o).forEach((([n,t])=>e.setAttribute(n,t)));try{n.surroundContents(e)}catch{const t=n.extractContents();e.appendChild(t),n.insertNode(e)}}function c(n,t,o){const c=document.getSelection();if(!c||0===c.rangeCount)return;const r=c.getRangeAt(0);if(r.collapsed){const n=document.createElement(t);o&&Object.entries(o).forEach((([t,o])=>n.setAttribute(t,o))),n.appendChild(document.createTextNode("​")),r.insertNode(n);const e=document.createRange();return e.setStart(n.firstChild,1),e.collapse(!0),c.removeAllRanges(),void c.addRange(e)}let u=r.startContainer,i=null;for(;u&&u!==n;){if(u instanceof HTMLElement&&u.tagName.toLowerCase()===t){i=u;break}u=u.parentNode}i?function(n){const t=n.parentNode;if(t){for(;n.firstChild;)t.insertBefore(n.firstChild,n);t.removeChild(n)}}(i):e(r,t,o)}function r(t,o){const e=document.getSelection();if(!e||0===e.rangeCount)return;const c=n(e.getRangeAt(0).startContainer,t);if(!c)return;if(c.tagName.toLowerCase()===o)return;const r=document.createElement(o);for(;c.firstChild;)r.appendChild(c.firstChild);c.replaceWith(r);const u=document.createRange();u.selectNodeContents(r),u.collapse(!0),e.removeAllRanges(),e.addRange(u)}function u(t,o){const e=document.getSelection();if(!e||0===e.rangeCount)return;const c=n(e.getRangeAt(0).startContainer,t);c&&(c.style.textAlign="justify"===o?"justify":o)}function i(n,t){const o=document.getSelection();if(!o||0===o.rangeCount)return;const c=o.getRangeAt(0);if(c.collapsed){const n=document.createElement("span");n.style.fontFamily=t,n.appendChild(document.createTextNode("​")),c.insertNode(n);const e=document.createRange();return e.setStart(n.firstChild,1),e.collapse(!0),o.removeAllRanges(),void o.addRange(e)}e(c,"span",{style:`font-family:${t}`})}function s(n,t,o){for(;t&&t!==n;){if(t instanceof HTMLSpanElement&&t.hasAttribute(o))return t;t=t.parentNode}return null}function f(n,t,o,e){const c=window.getSelection();if(!c||0===c.rangeCount)return;const r=c.getRangeAt(0);if(!n.contains(r.commonAncestorContainer))return;const u=r.cloneRange();if(u.collapsed){const r=s(n,u.startContainer,e);if(r)return r.style[t]=o,void a(n,e,t);const i=document.createElement("span");i.setAttribute(e,"1"),i.style[t]=o,i.appendChild(document.createTextNode("​")),u.insertNode(i);const f=document.createRange();return f.setStart(i.firstChild,1),f.collapse(!0),c.removeAllRanges(),c.addRange(f),void a(n,e,t)}const i=s(n,u.startContainer,e),f=s(n,u.endContainer,e);if(i&&i===f){if(function(n,t){const o=document.createRange();return o.selectNodeContents(t),n.compareBoundaryPoints(Range.START_TO_START,o)<=0&&n.compareBoundaryPoints(Range.END_TO_END,o)>=0}(u,i))i.style[t]=o;else{const n=function(n,t,o,e,c){const r=n.style[e],u=document.createRange();u.setStart(n,0),u.setEnd(t.startContainer,t.startOffset);const i=document.createRange();i.setStart(t.endContainer,t.endOffset),i.setEnd(n,n.childNodes.length);const s=document.createDocumentFragment(),f=n=>{const t=document.createElement("span");return t.setAttribute(o,"1"),t.style[e]=n,t};if(d(u)){const n=f(r);n.appendChild(u.cloneContents()),s.appendChild(n)}const a=f(c);if(a.appendChild(t.cloneContents()),s.appendChild(a),d(i)){const n=f(r);n.appendChild(i.cloneContents()),s.appendChild(n)}return n.replaceWith(s),a}(i,u,e,t,o),c=window.getSelection(),r=document.createRange();r.selectNodeContents(n),c?.removeAllRanges(),c?.addRange(r)}return void a(n,e,t)}const m=(()=>{let n=u.commonAncestorContainer;for(;n&&!(n instanceof HTMLElement);)n=n.parentNode;return n})(),l=document.createTreeWalker(m||n,NodeFilter.SHOW_TEXT,{acceptNode:n=>{if(!n.nodeValue||!n.nodeValue.trim())return NodeFilter.FILTER_REJECT;const t=document.createRange();t.selectNodeContents(n);return u.compareBoundaryPoints(Range.END_TO_START,t)<0&&u.compareBoundaryPoints(Range.START_TO_END,t)>0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),p=[];let H;for(;H=l.nextNode();)p.push(H);p.forEach((c=>{let r=0,i=c.length;c===u.startContainer&&(r=u.startOffset),c===u.endContainer&&(i=u.endOffset),r>0&&(c=c.splitText(r)),i<c.length&&c.splitText(i);const f=s(n,c,e);if(f)return void(f.style[t]=o);const d=document.createElement("span");d.setAttribute(e,"1"),d.style[t]=o;c.parentElement.replaceChild(d,c),d.appendChild(c)})),a(n,e,t),c.removeAllRanges(),c.addRange(u)}function d(n){if(n.collapsed)return!1;return(n.cloneContents().textContent||"").length>0}function a(n,t,o){const e=Array.from(n.querySelectorAll(`span[${t}]`)),c=n=>n.style[o];e.forEach((n=>{Array.from(n.querySelectorAll(`span[${t}]`)).forEach((t=>{if(c(t)===c(n)){for(;t.firstChild;)n.insertBefore(t.firstChild,t);t.remove()}}));const o=n.previousSibling;if(o instanceof HTMLSpanElement&&o.hasAttribute(t)&&c(o)===c(n)){for(;n.firstChild;)o.appendChild(n.firstChild);return void n.remove()}const e=n.nextSibling;if(e instanceof HTMLSpanElement&&e.hasAttribute(t)&&c(e)===c(n)){for(;e.firstChild;)n.appendChild(e.firstChild);e.remove()}}))}function m(n,t){f(n,"color",t,"data-rte-color")}function l(n,t){f(n,"backgroundColor",t,"data-rte-bg")}function p(n,t){const o=document.getSelection();if(!o||0===o.rangeCount)return;const e=o.getRangeAt(0);let c=e.startContainer,r=null;for(;c&&c!==n;){if(c instanceof HTMLAnchorElement){r=c;break}c=c.parentNode}const u=t??("undefined"!=typeof window&&window.prompt("Enter URL",r?.href||"https://")||"");if(!u)return;if(r)return void(r.href=u);if(e.collapsed){const n=document.createElement("a");n.href=u,n.textContent=u,e.insertNode(n);const t=document.createRange();return t.setStartAfter(n),t.collapse(!0),o.removeAllRanges(),void o.addRange(t)}const i=document.createElement("a");i.href=u;try{e.surroundContents(i)}catch{const n=e.extractContents();i.appendChild(n),e.insertNode(i)}}export{r as a,i as b,l as c,m as d,n as e,p as i,t as n,o as r,u as s,c as t};
1
+ function n(n,t){for(;n&&n!==t;){if(n instanceof HTMLElement){const t=getComputedStyle(n).display;if(n.tagName.match(/^(P|DIV|H1|H2|H3|H4|H5|H6|LI)$/)||"block"===t||"list-item"===t)return n}n=n?.parentNode||null}return t}function t(n){for(;n&&!(n instanceof HTMLElement);)n=n.parentNode;return n}function o(n){const t=n.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/i);if(!t)return"#000000";return`#${Number(t[1]).toString(16).padStart(2,"0")}${Number(t[2]).toString(16).padStart(2,"0")}${Number(t[3]).toString(16).padStart(2,"0")}`}function e(n,t,o){const e=document.createElement(t);o&&Object.entries(o).forEach((([n,t])=>e.setAttribute(n,t)));try{n.surroundContents(e)}catch{const t=n.extractContents();e.appendChild(t),n.insertNode(e)}}function c(n,t,o){const c=document.getSelection();if(!c||0===c.rangeCount)return;const r=c.getRangeAt(0);if(r.collapsed){const n=document.createElement(t);o&&Object.entries(o).forEach((([t,o])=>n.setAttribute(t,o))),n.appendChild(document.createTextNode("​")),r.insertNode(n);const e=document.createRange();return e.setStart(n.firstChild,1),e.collapse(!0),c.removeAllRanges(),void c.addRange(e)}let u=r.startContainer,s=null;for(;u&&u!==n;){if(u instanceof HTMLElement&&u.tagName.toLowerCase()===t){s=u;break}u=u.parentNode}s?function(n){const t=n.parentNode;if(t){for(;n.firstChild;)t.insertBefore(n.firstChild,n);t.removeChild(n)}}(s):e(r,t,o)}function r(t,o){const e=document.getSelection();if(!e||0===e.rangeCount)return;const c=n(e.getRangeAt(0).startContainer,t);if(!c)return;if(c.tagName.toLowerCase()===o)return;const r=document.createElement(o);for(;c.firstChild;)r.appendChild(c.firstChild);c.replaceWith(r);const u=document.createRange();u.selectNodeContents(r),u.collapse(!0),e.removeAllRanges(),e.addRange(u)}function u(t,o){const e=document.getSelection();if(!e||0===e.rangeCount)return;const c=n(e.getRangeAt(0).startContainer,t);c&&(c.style.textAlign="justify"===o?"justify":o)}function s(n,t){const o=document.getSelection();if(!o||0===o.rangeCount)return;const c=o.getRangeAt(0);if(c.collapsed){const n=document.createElement("span");n.style.fontFamily=t,n.appendChild(document.createTextNode("​")),c.insertNode(n);const e=document.createRange();return e.setStart(n.firstChild,1),e.collapse(!0),o.removeAllRanges(),void o.addRange(e)}e(c,"span",{style:`font-family:${t}`})}function i(n,t,o){for(;t&&t!==n;){if(t instanceof HTMLSpanElement&&t.hasAttribute(o))return t;t=t.parentNode}return null}function f(n,t,o,e){const c=window.getSelection();if(!c||0===c.rangeCount)return;const r=c.getRangeAt(0);if(!n.contains(r.commonAncestorContainer))return;const u=r.cloneRange();if(u.collapsed){const r=i(n,u.startContainer,e);if(r)return r.style[t]=o,void a(n,e,t);const s=document.createElement("span");s.setAttribute(e,"1"),s.style[t]=o,s.appendChild(document.createTextNode("​")),u.insertNode(s);const f=document.createRange();return f.setStart(s.firstChild,1),f.collapse(!0),c.removeAllRanges(),c.addRange(f),void a(n,e,t)}const s=i(n,u.startContainer,e),f=i(n,u.endContainer,e);if(s&&s===f){if(function(n,t){const o=document.createRange();return o.selectNodeContents(t),n.compareBoundaryPoints(Range.START_TO_START,o)<=0&&n.compareBoundaryPoints(Range.END_TO_END,o)>=0}(u,s))s.style[t]=o;else{const n=function(n,t,o,e,c){const r=n.style[e],u=document.createRange();u.setStart(n,0),u.setEnd(t.startContainer,t.startOffset);const s=document.createRange();s.setStart(t.endContainer,t.endOffset),s.setEnd(n,n.childNodes.length);const i=document.createDocumentFragment(),f=n=>{const t=document.createElement("span");return t.setAttribute(o,"1"),t.style[e]=n,t};if(d(u)){const n=f(r);n.appendChild(u.cloneContents()),i.appendChild(n)}const a=f(c);if(a.appendChild(t.cloneContents()),i.appendChild(a),d(s)){const n=f(r);n.appendChild(s.cloneContents()),i.appendChild(n)}return n.replaceWith(i),a}(s,u,e,t,o),c=window.getSelection(),r=document.createRange();r.selectNodeContents(n),c?.removeAllRanges(),c?.addRange(r)}return void a(n,e,t)}const m=(()=>{let n=u.commonAncestorContainer;for(;n&&!(n instanceof HTMLElement);)n=n.parentNode;return n})(),l=document.createTreeWalker(m||n,NodeFilter.SHOW_TEXT,{acceptNode:n=>{if(!n.nodeValue||!n.nodeValue.trim())return NodeFilter.FILTER_REJECT;const t=document.createRange();t.selectNodeContents(n);return u.compareBoundaryPoints(Range.END_TO_START,t)<0&&u.compareBoundaryPoints(Range.START_TO_END,t)>0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),p=[];let H;for(;H=l.nextNode();)p.push(H);p.forEach((c=>{let r=0,s=c.length;c===u.startContainer&&(r=u.startOffset),c===u.endContainer&&(s=u.endOffset),r>0&&(c=c.splitText(r)),s<c.length&&c.splitText(s);const f=i(n,c,e);if(f)return void(f.style[t]=o);const d=document.createElement("span");d.setAttribute(e,"1"),d.style[t]=o;c.parentElement.replaceChild(d,c),d.appendChild(c)})),a(n,e,t),c.removeAllRanges(),c.addRange(u)}function d(n){if(n.collapsed)return!1;return(n.cloneContents().textContent||"").length>0}function a(n,t,o){const e=Array.from(n.querySelectorAll(`span[${t}]`)),c=n=>n.style[o];e.forEach((n=>{Array.from(n.querySelectorAll(`span[${t}]`)).forEach((t=>{if(c(t)===c(n)){for(;t.firstChild;)n.insertBefore(t.firstChild,t);t.remove()}}));const o=n.previousSibling;if(o instanceof HTMLSpanElement&&o.hasAttribute(t)&&c(o)===c(n)){for(;n.firstChild;)o.appendChild(n.firstChild);return void n.remove()}const e=n.nextSibling;if(e instanceof HTMLSpanElement&&e.hasAttribute(t)&&c(e)===c(n)){for(;e.firstChild;)n.appendChild(e.firstChild);e.remove()}}))}function m(n,t){f(n,"color",t,"data-rte-color")}function l(n,t){f(n,"backgroundColor",t,"data-rte-bg")}export{r as a,s as b,l as c,m as d,n as e,t as n,o as r,u as s,c as t};