@dangl/angular-material-shared 2.9.0-beta0036 → 2.9.0-beta0039

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 (173) hide show
  1. package/fesm2022/dangl-angular-material-shared-tiny-mce.mjs +38 -31
  2. package/fesm2022/dangl-angular-material-shared-tiny-mce.mjs.map +1 -1
  3. package/fesm2022/dangl-angular-material-shared.mjs +36 -51
  4. package/fesm2022/dangl-angular-material-shared.mjs.map +1 -1
  5. package/package.json +11 -10
  6. package/tinymce-assets/icons/default/icons.js +46 -9
  7. package/tinymce-assets/icons/default/icons.min.js +1 -1
  8. package/tinymce-assets/models/dom/model.js +8198 -7244
  9. package/tinymce-assets/models/dom/model.min.js +1 -4
  10. package/tinymce-assets/plugins/accordion/plugin.js +1174 -879
  11. package/tinymce-assets/plugins/accordion/plugin.min.js +1 -4
  12. package/tinymce-assets/plugins/advlist/plugin.js +412 -200
  13. package/tinymce-assets/plugins/advlist/plugin.min.js +1 -4
  14. package/tinymce-assets/plugins/anchor/plugin.js +189 -166
  15. package/tinymce-assets/plugins/anchor/plugin.min.js +1 -4
  16. package/tinymce-assets/plugins/autolink/plugin.js +310 -220
  17. package/tinymce-assets/plugins/autolink/plugin.min.js +1 -4
  18. package/tinymce-assets/plugins/autoresize/plugin.js +180 -149
  19. package/tinymce-assets/plugins/autoresize/plugin.min.js +1 -4
  20. package/tinymce-assets/plugins/autosave/plugin.js +208 -189
  21. package/tinymce-assets/plugins/autosave/plugin.min.js +1 -4
  22. package/tinymce-assets/plugins/charmap/plugin.js +905 -1566
  23. package/tinymce-assets/plugins/charmap/plugin.min.js +1 -4
  24. package/tinymce-assets/plugins/code/plugin.js +73 -61
  25. package/tinymce-assets/plugins/code/plugin.min.js +0 -3
  26. package/tinymce-assets/plugins/codesample/plugin.js +3593 -2402
  27. package/tinymce-assets/plugins/codesample/plugin.min.js +8 -3
  28. package/tinymce-assets/plugins/directionality/plugin.js +545 -304
  29. package/tinymce-assets/plugins/directionality/plugin.min.js +1 -4
  30. package/tinymce-assets/plugins/emoticons/js/emojiimages.min.js +0 -2
  31. package/tinymce-assets/plugins/emoticons/js/emojis.min.js +0 -1
  32. package/tinymce-assets/plugins/emoticons/plugin.js +702 -488
  33. package/tinymce-assets/plugins/emoticons/plugin.min.js +1 -4
  34. package/tinymce-assets/plugins/fullscreen/plugin.js +1409 -1049
  35. package/tinymce-assets/plugins/fullscreen/plugin.min.js +1 -4
  36. package/tinymce-assets/plugins/help/js/i18n/keynav/ar.js +4 -1
  37. package/tinymce-assets/plugins/help/js/i18n/keynav/bg_BG.js +4 -1
  38. package/tinymce-assets/plugins/help/js/i18n/keynav/ca.js +4 -1
  39. package/tinymce-assets/plugins/help/js/i18n/keynav/cs.js +4 -1
  40. package/tinymce-assets/plugins/help/js/i18n/keynav/da.js +4 -1
  41. package/tinymce-assets/plugins/help/js/i18n/keynav/de.js +4 -1
  42. package/tinymce-assets/plugins/help/js/i18n/keynav/el.js +4 -1
  43. package/tinymce-assets/plugins/help/js/i18n/keynav/en.js +4 -1
  44. package/tinymce-assets/plugins/help/js/i18n/keynav/es.js +4 -1
  45. package/tinymce-assets/plugins/help/js/i18n/keynav/eu.js +4 -1
  46. package/tinymce-assets/plugins/help/js/i18n/keynav/fa.js +4 -1
  47. package/tinymce-assets/plugins/help/js/i18n/keynav/fi.js +4 -1
  48. package/tinymce-assets/plugins/help/js/i18n/keynav/fr_FR.js +4 -1
  49. package/tinymce-assets/plugins/help/js/i18n/keynav/he_IL.js +4 -1
  50. package/tinymce-assets/plugins/help/js/i18n/keynav/hi.js +4 -1
  51. package/tinymce-assets/plugins/help/js/i18n/keynav/hr.js +4 -1
  52. package/tinymce-assets/plugins/help/js/i18n/keynav/hu_HU.js +4 -1
  53. package/tinymce-assets/plugins/help/js/i18n/keynav/id.js +4 -1
  54. package/tinymce-assets/plugins/help/js/i18n/keynav/it.js +4 -1
  55. package/tinymce-assets/plugins/help/js/i18n/keynav/ja.js +4 -1
  56. package/tinymce-assets/plugins/help/js/i18n/keynav/kk.js +4 -1
  57. package/tinymce-assets/plugins/help/js/i18n/keynav/ko_KR.js +4 -1
  58. package/tinymce-assets/plugins/help/js/i18n/keynav/ms.js +4 -1
  59. package/tinymce-assets/plugins/help/js/i18n/keynav/nb_NO.js +4 -1
  60. package/tinymce-assets/plugins/help/js/i18n/keynav/nl.js +4 -1
  61. package/tinymce-assets/plugins/help/js/i18n/keynav/pl.js +4 -1
  62. package/tinymce-assets/plugins/help/js/i18n/keynav/pt_BR.js +4 -1
  63. package/tinymce-assets/plugins/help/js/i18n/keynav/pt_PT.js +4 -1
  64. package/tinymce-assets/plugins/help/js/i18n/keynav/ro.js +4 -1
  65. package/tinymce-assets/plugins/help/js/i18n/keynav/ru.js +4 -1
  66. package/tinymce-assets/plugins/help/js/i18n/keynav/sk.js +4 -1
  67. package/tinymce-assets/plugins/help/js/i18n/keynav/sl_SI.js +5 -2
  68. package/tinymce-assets/plugins/help/js/i18n/keynav/sv_SE.js +4 -1
  69. package/tinymce-assets/plugins/help/js/i18n/keynav/th_TH.js +4 -1
  70. package/tinymce-assets/plugins/help/js/i18n/keynav/tr.js +4 -1
  71. package/tinymce-assets/plugins/help/js/i18n/keynav/uk.js +4 -1
  72. package/tinymce-assets/plugins/help/js/i18n/keynav/vi.js +4 -1
  73. package/tinymce-assets/plugins/help/js/i18n/keynav/zh_CN.js +8 -5
  74. package/tinymce-assets/plugins/help/js/i18n/keynav/zh_TW.js +4 -1
  75. package/tinymce-assets/plugins/help/plugin.js +739 -809
  76. package/tinymce-assets/plugins/help/plugin.min.js +1 -4
  77. package/tinymce-assets/plugins/image/plugin.js +1475 -1291
  78. package/tinymce-assets/plugins/image/plugin.min.js +1 -4
  79. package/tinymce-assets/plugins/importcss/plugin.js +328 -269
  80. package/tinymce-assets/plugins/importcss/plugin.min.js +1 -4
  81. package/tinymce-assets/plugins/insertdatetime/plugin.js +140 -141
  82. package/tinymce-assets/plugins/insertdatetime/plugin.min.js +1 -4
  83. package/tinymce-assets/plugins/link/plugin.js +1419 -1084
  84. package/tinymce-assets/plugins/link/plugin.min.js +1 -4
  85. package/tinymce-assets/plugins/lists/plugin.js +2177 -1805
  86. package/tinymce-assets/plugins/lists/plugin.min.js +1 -4
  87. package/tinymce-assets/plugins/media/plugin.js +1305 -1047
  88. package/tinymce-assets/plugins/media/plugin.min.js +1 -4
  89. package/tinymce-assets/plugins/nonbreaking/plugin.js +93 -88
  90. package/tinymce-assets/plugins/nonbreaking/plugin.min.js +0 -3
  91. package/tinymce-assets/plugins/pagebreak/plugin.js +91 -85
  92. package/tinymce-assets/plugins/pagebreak/plugin.min.js +0 -3
  93. package/tinymce-assets/plugins/preview/plugin.js +742 -74
  94. package/tinymce-assets/plugins/preview/plugin.min.js +1 -4
  95. package/tinymce-assets/plugins/quickbars/plugin.js +582 -375
  96. package/tinymce-assets/plugins/quickbars/plugin.min.js +1 -4
  97. package/tinymce-assets/plugins/save/plugin.js +100 -82
  98. package/tinymce-assets/plugins/save/plugin.min.js +1 -4
  99. package/tinymce-assets/plugins/searchreplace/plugin.js +1183 -906
  100. package/tinymce-assets/plugins/searchreplace/plugin.min.js +1 -4
  101. package/tinymce-assets/plugins/table/plugin.js +3651 -3094
  102. package/tinymce-assets/plugins/table/plugin.min.js +1 -4
  103. package/tinymce-assets/plugins/visualblocks/plugin.js +71 -63
  104. package/tinymce-assets/plugins/visualblocks/plugin.min.js +1 -4
  105. package/tinymce-assets/plugins/visualchars/plugin.js +685 -436
  106. package/tinymce-assets/plugins/visualchars/plugin.min.js +1 -4
  107. package/tinymce-assets/plugins/wordcount/plugin.js +382 -307
  108. package/tinymce-assets/plugins/wordcount/plugin.min.js +1 -4
  109. package/tinymce-assets/skins/content/dark/content.css +9 -0
  110. package/tinymce-assets/skins/content/dark/content.js +10 -2
  111. package/tinymce-assets/skins/content/dark/content.min.css +9 -0
  112. package/tinymce-assets/skins/content/default/content.css +9 -0
  113. package/tinymce-assets/skins/content/default/content.js +10 -2
  114. package/tinymce-assets/skins/content/default/content.min.css +9 -0
  115. package/tinymce-assets/skins/content/document/content.css +9 -0
  116. package/tinymce-assets/skins/content/document/content.js +10 -2
  117. package/tinymce-assets/skins/content/document/content.min.css +9 -0
  118. package/tinymce-assets/skins/content/tinymce-5/content.css +9 -0
  119. package/tinymce-assets/skins/content/tinymce-5/content.js +10 -2
  120. package/tinymce-assets/skins/content/tinymce-5/content.min.css +9 -0
  121. package/tinymce-assets/skins/content/tinymce-5-dark/content.css +9 -0
  122. package/tinymce-assets/skins/content/tinymce-5-dark/content.js +10 -2
  123. package/tinymce-assets/skins/content/tinymce-5-dark/content.min.css +9 -0
  124. package/tinymce-assets/skins/content/writer/content.css +9 -0
  125. package/tinymce-assets/skins/content/writer/content.js +10 -2
  126. package/tinymce-assets/skins/content/writer/content.min.css +9 -0
  127. package/tinymce-assets/skins/ui/oxide/content.css +157 -49
  128. package/tinymce-assets/skins/ui/oxide/content.inline.css +157 -49
  129. package/tinymce-assets/skins/ui/oxide/content.inline.js +10 -2
  130. package/tinymce-assets/skins/ui/oxide/content.inline.min.css +10 -1
  131. package/tinymce-assets/skins/ui/oxide/content.js +10 -2
  132. package/tinymce-assets/skins/ui/oxide/content.min.css +10 -1
  133. package/tinymce-assets/skins/ui/oxide/skin.css +1592 -214
  134. package/tinymce-assets/skins/ui/oxide/skin.js +1 -2
  135. package/tinymce-assets/skins/ui/oxide/skin.min.css +1 -1
  136. package/tinymce-assets/skins/ui/oxide/skin.shadowdom.js +1 -2
  137. package/tinymce-assets/skins/ui/oxide-dark/content.css +157 -42
  138. package/tinymce-assets/skins/ui/oxide-dark/content.inline.css +157 -49
  139. package/tinymce-assets/skins/ui/oxide-dark/content.inline.js +10 -2
  140. package/tinymce-assets/skins/ui/oxide-dark/content.inline.min.css +10 -1
  141. package/tinymce-assets/skins/ui/oxide-dark/content.js +10 -2
  142. package/tinymce-assets/skins/ui/oxide-dark/content.min.css +10 -1
  143. package/tinymce-assets/skins/ui/oxide-dark/skin.css +1595 -217
  144. package/tinymce-assets/skins/ui/oxide-dark/skin.js +1 -2
  145. package/tinymce-assets/skins/ui/oxide-dark/skin.min.css +1 -1
  146. package/tinymce-assets/skins/ui/oxide-dark/skin.shadowdom.js +1 -2
  147. package/tinymce-assets/skins/ui/tinymce-5/content.css +157 -49
  148. package/tinymce-assets/skins/ui/tinymce-5/content.inline.css +157 -49
  149. package/tinymce-assets/skins/ui/tinymce-5/content.inline.js +10 -2
  150. package/tinymce-assets/skins/ui/tinymce-5/content.inline.min.css +10 -1
  151. package/tinymce-assets/skins/ui/tinymce-5/content.js +10 -2
  152. package/tinymce-assets/skins/ui/tinymce-5/content.min.css +10 -1
  153. package/tinymce-assets/skins/ui/tinymce-5/skin.css +1606 -203
  154. package/tinymce-assets/skins/ui/tinymce-5/skin.js +1 -2
  155. package/tinymce-assets/skins/ui/tinymce-5/skin.min.css +1 -1
  156. package/tinymce-assets/skins/ui/tinymce-5/skin.shadowdom.js +1 -2
  157. package/tinymce-assets/skins/ui/tinymce-5-dark/content.css +157 -42
  158. package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.css +157 -49
  159. package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.js +10 -2
  160. package/tinymce-assets/skins/ui/tinymce-5-dark/content.inline.min.css +10 -1
  161. package/tinymce-assets/skins/ui/tinymce-5-dark/content.js +10 -2
  162. package/tinymce-assets/skins/ui/tinymce-5-dark/content.min.css +10 -1
  163. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.css +1607 -204
  164. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.js +1 -2
  165. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.min.css +1 -1
  166. package/tinymce-assets/skins/ui/tinymce-5-dark/skin.shadowdom.js +1 -2
  167. package/tinymce-assets/themes/silver/theme.js +32786 -28738
  168. package/tinymce-assets/themes/silver/theme.min.js +1 -4
  169. package/types/dangl-angular-material-shared-tiny-mce.d.ts +13 -13
  170. package/types/dangl-angular-material-shared.d.ts +26 -26
  171. package/tinymce-assets/plugins/template/index.js +0 -7
  172. package/tinymce-assets/plugins/template/plugin.js +0 -567
  173. package/tinymce-assets/plugins/template/plugin.min.js +0 -4
@@ -1,4 +1 @@
1
- /**
2
- * TinyMCE version 6.8.3 (2024-02-08)
3
- */
4
- !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=(t,e,s)=>{const r="UL"===e?"InsertUnorderedList":"InsertOrderedList";t.execCommand(r,!1,!1===s?null:{"list-style-type":s})},s=t=>e=>e.options.get(t),r=s("advlist_number_styles"),n=s("advlist_bullet_styles"),i=t=>null==t,l=t=>!i(t);var o=tinymce.util.Tools.resolve("tinymce.util.Tools");class a{constructor(t,e){this.tag=t,this.value=e}static some(t){return new a(!0,t)}static none(){return a.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?a.some(t(this.value)):a.none()}bind(t){return this.tag?t(this.value):a.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:a.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:"Called getOrDie on None")}static from(t){return l(t)?a.some(t):a.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}a.singletonNone=new a(!1);const u=t=>e=>l(e)&&t.test(e.nodeName),d=u(/^(OL|UL|DL)$/),g=u(/^(TH|TD)$/),c=t=>i(t)||"default"===t?"":t,h=(t,e)=>s=>((t,e)=>{const s=t.selection.getNode();return e({parents:t.dom.getParents(s),element:s}),t.on("NodeChange",e),()=>t.off("NodeChange",e)})(t,(r=>((t,r)=>{const n=t.selection.getStart(!0);s.setActive(((t,e,s)=>((t,e,s)=>{for(let e=0,n=t.length;e<n;e++){const n=t[e];if(d(r=n)&&!/\btox\-/.test(r.className))return a.some(n);if(s(n,e))break}var r;return a.none()})(e,0,g).exists((e=>e.nodeName===s&&((t,e)=>t.dom.isChildOf(e,t.getBody()))(t,e))))(t,r,e)),s.setEnabled(!((t,e)=>{const s=t.dom.getParent(e,"ol,ul,dl");return((t,e)=>null!==e&&!t.dom.isEditable(e))(t,s)&&t.selection.isEditable()})(t,n)&&t.selection.isEditable())})(t,r.parents))),m=(t,s,r,n,i,l)=>{l.length>1?((t,s,r,n,i,l)=>{t.ui.registry.addSplitButton(s,{tooltip:r,icon:"OL"===i?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:t=>{t(o.map(l,(t=>{const e="OL"===i?"num":"bull",s="disc"===t||"decimal"===t?"default":t,r=c(t),n=(t=>t.replace(/\-/g," ").replace(/\b\w/g,(t=>t.toUpperCase())))(t);return{type:"choiceitem",value:r,icon:"list-"+e+"-"+s,text:n}})))},onAction:()=>t.execCommand(n),onItemAction:(s,r)=>{e(t,i,r)},select:e=>{const s=(t=>{const e=t.dom.getParent(t.selection.getNode(),"ol,ul"),s=t.dom.getStyle(e,"listStyleType");return a.from(s)})(t);return s.map((t=>e===t)).getOr(!1)},onSetup:h(t,i)})})(t,s,r,n,i,l):((t,s,r,n,i,l)=>{t.ui.registry.addToggleButton(s,{active:!1,tooltip:r,icon:"OL"===i?"ordered-list":"unordered-list",onSetup:h(t,i),onAction:()=>t.queryCommandState(n)||""===l?t.execCommand(n):e(t,i,l)})})(t,s,r,n,i,c(l[0]))};t.add("advlist",(t=>{t.hasPlugin("lists")?((t=>{const e=t.options.register;e("advlist_number_styles",{processor:"string[]",default:"default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman".split(",")}),e("advlist_bullet_styles",{processor:"string[]",default:"default,circle,square".split(",")})})(t),(t=>{m(t,"numlist","Numbered list","InsertOrderedList","OL",r(t)),m(t,"bullist","Bullet list","InsertUnorderedList","UL",n(t))})(t),(t=>{t.addCommand("ApplyUnorderedListStyle",((s,r)=>{e(t,"UL",r["list-style-type"])})),t.addCommand("ApplyOrderedListStyle",((s,r)=>{e(t,"OL",r["list-style-type"])}))})(t)):console.error("Please use the Lists plugin together with the Advanced List plugin.")}))}();
1
+ !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=(t,e,s)=>{const r="UL"===e?"InsertUnorderedList":"InsertOrderedList";t.execCommand(r,!1,!1===s?null:{"list-style-type":s})},s=t=>e=>e.options.get(t),r=s("advlist_number_styles"),n=s("advlist_bullet_styles"),l=t=>null==t,i=t=>!l(t);class o{constructor(t,e){this.tag=t,this.value=e}static some(t){return new o(!0,t)}static none(){return o.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?o.some(t(this.value)):o.none()}bind(t){return this.tag?t(this.value):o.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:o.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:"Called getOrDie on None")}static from(t){return i(t)?o.some(t):o.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}o.singletonNone=new o(!1);const a=Array.prototype.indexOf,u=Object.keys;var d=tinymce.util.Tools.resolve("tinymce.util.Tools");const c=t=>e=>i(e)&&t.test(e.nodeName),h=c(/^(OL|UL|DL)$/),g=c(/^(TH|TD)$/),p=t=>l(t)||"default"===t?"":t,m=(t,e)=>s=>((t,e)=>{const s=t.selection.getNode();return e({parents:t.dom.getParents(s),element:s}),t.on("NodeChange",e),()=>t.off("NodeChange",e)})(t,(r=>((t,r)=>{const n=t.selection.getStart(!0);s.setActive(((t,e,s)=>((t,e,s)=>{for(let e=0,n=t.length;e<n;e++){const n=t[e];if(h(r=n)&&!/\btox\-/.test(r.className))return o.some(n);if(s(n,e))break}var r;return o.none()})(e,0,g).exists((e=>e.nodeName===s&&((t,e)=>t.dom.isChildOf(e,t.getBody()))(t,e))))(t,r,e)),s.setEnabled(!((t,e)=>{const s=t.dom.getParent(e,"ol,ul,dl");return((t,e)=>null!==e&&!t.dom.isEditable(e))(t,s)||!t.selection.isEditable()})(t,n))})(t,r.parents))),v=(t,s,r,n,l,i)=>{const c={"lower-latin":"lower-alpha","upper-latin":"upper-alpha","lower-alpha":"lower-latin","upper-alpha":"upper-latin"},h=(g=t=>{return e=i,s=t,a.call(e,s)>-1;var e,s},((t,e)=>{const s={};return((t,e)=>{const s=u(t);for(let r=0,n=s.length;r<n;r++){const n=s[r];e(t[n],n)}})(t,((t,r)=>{const n=e(t,r);s[n.k]=n.v})),s})(c,((t,e)=>({k:e,v:g(t)}))));var g;t.ui.registry.addSplitButton(s,{tooltip:r,icon:"OL"===l?"ordered-list":"unordered-list",presets:"listpreview",columns:"OL"===l?3:4,fetch:t=>{t(d.map(i,(t=>{const e="OL"===l?"num":"bull",s="decimal"===t?"default":t,r=p(t),n=(t=>t.replace(/\-/g," ").replace(/\b\w/g,(t=>t.toUpperCase())))(t);return{type:"choiceitem",value:r,icon:"list-"+e+"-"+s,text:n}})))},onAction:()=>t.execCommand(n),onItemAction:(s,r)=>{e(t,l,r)},select:e=>{const s=(t=>{const e=t.dom.getParent(t.selection.getNode(),"ol,ul"),s=t.dom.getStyle(e,"listStyleType");return o.from(s)})(t);return s.exists((t=>e===t||c[t]===e&&!h[e]))},onSetup:m(t,l)})},y=(t,s,r,n,l,i)=>{i.length>1?v(t,s,r,n,l,i):((t,s,r,n,l,i)=>{t.ui.registry.addToggleButton(s,{active:!1,tooltip:r,icon:"OL"===l?"ordered-list":"unordered-list",onSetup:m(t,l),onAction:()=>t.queryCommandState(n)||""===i?t.execCommand(n):e(t,l,i)})})(t,s,r,n,l,p(i[0]))};t.add("advlist",(t=>{t.hasPlugin("lists")?((t=>{const e=t.options.register;e("advlist_number_styles",{processor:"string[]",default:"default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman".split(",")}),e("advlist_bullet_styles",{processor:"string[]",default:"default,disc,circle,square".split(",")})})(t),(t=>{y(t,"numlist","Numbered list","InsertOrderedList","OL",r(t)),y(t,"bullist","Bullet list","InsertUnorderedList","UL",n(t))})(t),(t=>{t.addCommand("ApplyUnorderedListStyle",((s,r)=>{e(t,"UL",r["list-style-type"])})),t.addCommand("ApplyOrderedListStyle",((s,r)=>{e(t,"OL",r["list-style-type"])}))})(t)):console.error("Please use the Lists plugin together with the List Styles plugin.")}))}();
@@ -1,5 +1,5 @@
1
1
  /**
2
- * TinyMCE version 6.8.3 (2024-02-08)
2
+ * TinyMCE version 7.9.3 (2026-05-19)
3
3
  */
4
4
 
5
5
  (function () {
@@ -11,204 +11,227 @@
11
11
 
12
12
  var global = tinymce.util.Tools.resolve('tinymce.util.Tools');
13
13
 
14
- const option = name => editor => editor.options.get(name);
15
- const register$2 = editor => {
16
- const registerOption = editor.options.register;
17
- registerOption('allow_html_in_named_anchor', {
18
- processor: 'boolean',
19
- default: false
20
- });
14
+ const option = (name) => (editor) => editor.options.get(name);
15
+ const register$2 = (editor) => {
16
+ const registerOption = editor.options.register;
17
+ registerOption('allow_html_in_named_anchor', {
18
+ processor: 'boolean',
19
+ default: false
20
+ });
21
21
  };
22
22
  const allowHtmlInNamedAnchor = option('allow_html_in_named_anchor');
23
23
 
24
24
  const namedAnchorSelector = 'a:not([href])';
25
- const isEmptyString = str => !str;
26
- const getIdFromAnchor = elm => {
27
- const id = elm.getAttribute('id') || elm.getAttribute('name');
28
- return id || '';
29
- };
30
- const isAnchor = elm => elm.nodeName.toLowerCase() === 'a';
31
- const isNamedAnchor = elm => isAnchor(elm) && !elm.getAttribute('href') && getIdFromAnchor(elm) !== '';
32
- const isEmptyNamedAnchor = elm => isNamedAnchor(elm) && !elm.firstChild;
25
+ const isEmptyString = (str) => !str;
26
+ const getIdFromAnchor = (elm) => {
27
+ const id = elm.getAttribute('id') || elm.getAttribute('name');
28
+ return id || '';
29
+ };
30
+ const isAnchor = (elm) => elm.nodeName.toLowerCase() === 'a';
31
+ const isNamedAnchor = (elm) => isAnchor(elm) && !elm.getAttribute('href') && getIdFromAnchor(elm) !== '';
32
+ const isEmptyNamedAnchor = (elm) => isNamedAnchor(elm) && !elm.firstChild;
33
33
 
34
- const removeEmptyNamedAnchorsInSelection = editor => {
35
- const dom = editor.dom;
36
- global$1(dom).walk(editor.selection.getRng(), nodes => {
37
- global.each(nodes, node => {
38
- if (isEmptyNamedAnchor(node)) {
39
- dom.remove(node, false);
40
- }
34
+ const removeEmptyNamedAnchorsInSelection = (editor) => {
35
+ const dom = editor.dom;
36
+ global$1(dom).walk(editor.selection.getRng(), (nodes) => {
37
+ global.each(nodes, (node) => {
38
+ if (isEmptyNamedAnchor(node)) {
39
+ dom.remove(node, false);
40
+ }
41
+ });
41
42
  });
42
- });
43
- };
44
- const isValidId = id => /^[A-Za-z][A-Za-z0-9\-:._]*$/.test(id);
45
- const getNamedAnchor = editor => editor.dom.getParent(editor.selection.getStart(), namedAnchorSelector);
46
- const getId = editor => {
47
- const anchor = getNamedAnchor(editor);
48
- if (anchor) {
49
- return getIdFromAnchor(anchor);
50
- } else {
51
- return '';
52
- }
53
43
  };
54
- const createAnchor = (editor, id) => {
55
- editor.undoManager.transact(() => {
56
- if (!allowHtmlInNamedAnchor(editor)) {
57
- editor.selection.collapse(true);
44
+ const isValidId = (id) =>
45
+ // Follows HTML4 rules: https://www.w3.org/TR/html401/types.html#type-id
46
+ /^[A-Za-z][A-Za-z0-9\-:._]*$/.test(id);
47
+ const getNamedAnchor = (editor) => editor.dom.getParent(editor.selection.getStart(), namedAnchorSelector);
48
+ const getId = (editor) => {
49
+ const anchor = getNamedAnchor(editor);
50
+ if (anchor) {
51
+ return getIdFromAnchor(anchor);
58
52
  }
59
- if (editor.selection.isCollapsed()) {
60
- editor.insertContent(editor.dom.createHTML('a', { id }));
61
- } else {
62
- removeEmptyNamedAnchorsInSelection(editor);
63
- editor.formatter.remove('namedAnchor', undefined, undefined, true);
64
- editor.formatter.apply('namedAnchor', { value: id });
65
- editor.addVisual();
53
+ else {
54
+ return '';
66
55
  }
67
- });
56
+ };
57
+ const createAnchor = (editor, id) => {
58
+ editor.undoManager.transact(() => {
59
+ if (!allowHtmlInNamedAnchor(editor)) {
60
+ editor.selection.collapse(true);
61
+ }
62
+ if (editor.selection.isCollapsed()) {
63
+ editor.insertContent(editor.dom.createHTML('a', { id }));
64
+ }
65
+ else {
66
+ // Remove any empty named anchors in the selection as they cannot be removed by the formatter since they are cef
67
+ removeEmptyNamedAnchorsInSelection(editor);
68
+ // Format is set up to truncate any partially selected named anchors so that they are not completely removed
69
+ editor.formatter.remove('namedAnchor', undefined, undefined, true);
70
+ // Insert new anchor using the formatter - will wrap selected content in anchor
71
+ editor.formatter.apply('namedAnchor', { value: id });
72
+ // Need to add visual classes to anchors if required
73
+ editor.addVisual();
74
+ }
75
+ });
68
76
  };
69
77
  const updateAnchor = (editor, id, anchorElement) => {
70
- anchorElement.removeAttribute('name');
71
- anchorElement.id = id;
72
- editor.addVisual();
73
- editor.undoManager.add();
78
+ anchorElement.removeAttribute('name');
79
+ anchorElement.id = id;
80
+ editor.addVisual(); // Need to add visual classes to anchors if required
81
+ editor.undoManager.add();
74
82
  };
75
83
  const insert = (editor, id) => {
76
- const anchor = getNamedAnchor(editor);
77
- if (anchor) {
78
- updateAnchor(editor, id, anchor);
79
- } else {
80
- createAnchor(editor, id);
81
- }
82
- editor.focus();
84
+ const anchor = getNamedAnchor(editor);
85
+ if (anchor) {
86
+ updateAnchor(editor, id, anchor);
87
+ }
88
+ else {
89
+ createAnchor(editor, id);
90
+ }
91
+ editor.focus();
83
92
  };
84
93
 
85
94
  const insertAnchor = (editor, newId) => {
86
- if (!isValidId(newId)) {
87
- editor.windowManager.alert('ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.');
88
- return false;
89
- } else {
90
- insert(editor, newId);
91
- return true;
92
- }
93
- };
94
- const open = editor => {
95
- const currentId = getId(editor);
96
- editor.windowManager.open({
97
- title: 'Anchor',
98
- size: 'normal',
99
- body: {
100
- type: 'panel',
101
- items: [{
102
- name: 'id',
103
- type: 'input',
104
- label: 'ID',
105
- placeholder: 'example'
106
- }]
107
- },
108
- buttons: [
109
- {
110
- type: 'cancel',
111
- name: 'cancel',
112
- text: 'Cancel'
113
- },
114
- {
115
- type: 'submit',
116
- name: 'save',
117
- text: 'Save',
118
- primary: true
119
- }
120
- ],
121
- initialData: { id: currentId },
122
- onSubmit: api => {
123
- if (insertAnchor(editor, api.getData().id)) {
124
- api.close();
125
- }
95
+ if (!isValidId(newId)) {
96
+ editor.windowManager.alert('ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.');
97
+ return false;
98
+ }
99
+ else {
100
+ insert(editor, newId);
101
+ return true;
126
102
  }
127
- });
103
+ };
104
+ const open = (editor) => {
105
+ const currentId = getId(editor);
106
+ editor.windowManager.open({
107
+ title: 'Anchor',
108
+ size: 'normal',
109
+ body: {
110
+ type: 'panel',
111
+ items: [
112
+ {
113
+ name: 'id',
114
+ type: 'input',
115
+ label: 'ID',
116
+ placeholder: 'example'
117
+ }
118
+ ]
119
+ },
120
+ buttons: [
121
+ {
122
+ type: 'cancel',
123
+ name: 'cancel',
124
+ text: 'Cancel'
125
+ },
126
+ {
127
+ type: 'submit',
128
+ name: 'save',
129
+ text: 'Save',
130
+ primary: true
131
+ }
132
+ ],
133
+ initialData: {
134
+ id: currentId
135
+ },
136
+ onSubmit: (api) => {
137
+ if (insertAnchor(editor, api.getData().id)) { // TODO we need a better way to do validation
138
+ api.close();
139
+ }
140
+ }
141
+ });
128
142
  };
129
143
 
130
- const register$1 = editor => {
131
- editor.addCommand('mceAnchor', () => {
132
- open(editor);
133
- });
144
+ const register$1 = (editor) => {
145
+ editor.addCommand('mceAnchor', () => {
146
+ open(editor);
147
+ });
134
148
  };
135
149
 
136
- const isNamedAnchorNode = node => isEmptyString(node.attr('href')) && !isEmptyString(node.attr('id') || node.attr('name'));
137
- const isEmptyNamedAnchorNode = node => isNamedAnchorNode(node) && !node.firstChild;
138
- const setContentEditable = state => nodes => {
139
- for (let i = 0; i < nodes.length; i++) {
140
- const node = nodes[i];
141
- if (isEmptyNamedAnchorNode(node)) {
142
- node.attr('contenteditable', state);
150
+ // Note: node.firstChild check is for the 'allow_html_in_named_anchor' setting
151
+ // Only want to add contenteditable attributes if there is no text within the anchor
152
+ const isNamedAnchorNode = (node) => isEmptyString(node.attr('href')) && !isEmptyString(node.attr('id') || node.attr('name'));
153
+ const isEmptyNamedAnchorNode = (node) => isNamedAnchorNode(node) && !node.firstChild;
154
+ const setContentEditable = (state) => (nodes) => {
155
+ for (let i = 0; i < nodes.length; i++) {
156
+ const node = nodes[i];
157
+ if (isEmptyNamedAnchorNode(node)) {
158
+ node.attr('contenteditable', state);
159
+ }
143
160
  }
144
- }
145
161
  };
146
- const setup = editor => {
147
- editor.on('PreInit', () => {
148
- editor.parser.addNodeFilter('a', setContentEditable('false'));
149
- editor.serializer.addNodeFilter('a', setContentEditable(null));
150
- });
162
+ const setup = (editor) => {
163
+ editor.on('PreInit', () => {
164
+ editor.parser.addNodeFilter('a', setContentEditable('false'));
165
+ editor.serializer.addNodeFilter('a', setContentEditable(null));
166
+ });
151
167
  };
152
168
 
153
- const registerFormats = editor => {
154
- editor.formatter.register('namedAnchor', {
155
- inline: 'a',
156
- selector: namedAnchorSelector,
157
- remove: 'all',
158
- split: true,
159
- deep: true,
160
- attributes: { id: '%value' },
161
- onmatch: (node, _fmt, _itemName) => {
162
- return isNamedAnchor(node);
163
- }
164
- });
169
+ const registerFormats = (editor) => {
170
+ editor.formatter.register('namedAnchor', {
171
+ inline: 'a',
172
+ selector: namedAnchorSelector,
173
+ remove: 'all',
174
+ split: true,
175
+ deep: true,
176
+ attributes: {
177
+ id: '%value'
178
+ },
179
+ onmatch: (node, _fmt, _itemName) => {
180
+ return isNamedAnchor(node);
181
+ }
182
+ });
165
183
  };
166
184
 
167
- const onSetupEditable = editor => api => {
168
- const nodeChanged = () => {
169
- api.setEnabled(editor.selection.isEditable());
170
- };
171
- editor.on('NodeChange', nodeChanged);
172
- nodeChanged();
173
- return () => {
174
- editor.off('NodeChange', nodeChanged);
175
- };
176
- };
177
- const register = editor => {
178
- const onAction = () => editor.execCommand('mceAnchor');
179
- editor.ui.registry.addToggleButton('anchor', {
180
- icon: 'bookmark',
181
- tooltip: 'Anchor',
182
- onAction,
183
- onSetup: buttonApi => {
184
- const unbindSelectorChanged = editor.selection.selectorChangedWithUnbind('a:not([href])', buttonApi.setActive).unbind;
185
- const unbindEditableChanged = onSetupEditable(editor)(buttonApi);
186
- return () => {
187
- unbindSelectorChanged();
188
- unbindEditableChanged();
189
- };
190
- }
191
- });
192
- editor.ui.registry.addMenuItem('anchor', {
193
- icon: 'bookmark',
194
- text: 'Anchor...',
195
- onAction,
196
- onSetup: onSetupEditable(editor)
197
- });
185
+ const onSetupEditable = (editor) => (api) => {
186
+ const nodeChanged = () => {
187
+ api.setEnabled(editor.selection.isEditable());
188
+ };
189
+ editor.on('NodeChange', nodeChanged);
190
+ nodeChanged();
191
+ return () => {
192
+ editor.off('NodeChange', nodeChanged);
193
+ };
194
+ };
195
+ const register = (editor) => {
196
+ const onAction = () => editor.execCommand('mceAnchor');
197
+ editor.ui.registry.addToggleButton('anchor', {
198
+ icon: 'bookmark',
199
+ tooltip: 'Anchor',
200
+ onAction,
201
+ onSetup: (buttonApi) => {
202
+ const unbindSelectorChanged = editor.selection.selectorChangedWithUnbind('a:not([href])', buttonApi.setActive).unbind;
203
+ const unbindEditableChanged = onSetupEditable(editor)(buttonApi);
204
+ return () => {
205
+ unbindSelectorChanged();
206
+ unbindEditableChanged();
207
+ };
208
+ }
209
+ });
210
+ editor.ui.registry.addMenuItem('anchor', {
211
+ icon: 'bookmark',
212
+ text: 'Anchor...',
213
+ onAction,
214
+ onSetup: onSetupEditable(editor)
215
+ });
198
216
  };
199
217
 
200
218
  var Plugin = () => {
201
- global$2.add('anchor', editor => {
202
- register$2(editor);
203
- setup(editor);
204
- register$1(editor);
205
- register(editor);
206
- editor.on('PreInit', () => {
207
- registerFormats(editor);
219
+ global$2.add('anchor', (editor) => {
220
+ register$2(editor);
221
+ setup(editor);
222
+ register$1(editor);
223
+ register(editor);
224
+ editor.on('PreInit', () => {
225
+ registerFormats(editor);
226
+ });
208
227
  });
209
- });
210
228
  };
211
229
 
212
230
  Plugin();
231
+ /** *****
232
+ * DO NOT EXPORT ANYTHING
233
+ *
234
+ * IF YOU DO ROLLUP WILL LEAVE A GLOBAL ON THE PAGE
235
+ *******/
213
236
 
214
237
  })();
@@ -1,4 +1 @@
1
- /**
2
- * TinyMCE version 6.8.3 (2024-02-08)
3
- */
4
- !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),o=tinymce.util.Tools.resolve("tinymce.util.Tools");const n=("allow_html_in_named_anchor",e=>e.options.get("allow_html_in_named_anchor"));const a="a:not([href])",r=e=>!e,i=e=>e.getAttribute("id")||e.getAttribute("name")||"",l=e=>(e=>"a"===e.nodeName.toLowerCase())(e)&&!e.getAttribute("href")&&""!==i(e),s=e=>e.dom.getParent(e.selection.getStart(),a),d=(e,a)=>{const r=s(e);r?((e,t,o)=>{o.removeAttribute("name"),o.id=t,e.addVisual(),e.undoManager.add()})(e,a,r):((e,a)=>{e.undoManager.transact((()=>{n(e)||e.selection.collapse(!0),e.selection.isCollapsed()?e.insertContent(e.dom.createHTML("a",{id:a})):((e=>{const n=e.dom;t(n).walk(e.selection.getRng(),(e=>{o.each(e,(e=>{var t;l(t=e)&&!t.firstChild&&n.remove(e,!1)}))}))})(e),e.formatter.remove("namedAnchor",void 0,void 0,!0),e.formatter.apply("namedAnchor",{value:a}),e.addVisual())}))})(e,a),e.focus()},c=e=>(e=>r(e.attr("href"))&&!r(e.attr("id")||e.attr("name")))(e)&&!e.firstChild,m=e=>t=>{for(let o=0;o<t.length;o++){const n=t[o];c(n)&&n.attr("contenteditable",e)}},u=e=>t=>{const o=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",o),o(),()=>{e.off("NodeChange",o)}};e.add("anchor",(e=>{(e=>{(0,e.options.register)("allow_html_in_named_anchor",{processor:"boolean",default:!1})})(e),(e=>{e.on("PreInit",(()=>{e.parser.addNodeFilter("a",m("false")),e.serializer.addNodeFilter("a",m(null))}))})(e),(e=>{e.addCommand("mceAnchor",(()=>{(e=>{const t=(e=>{const t=s(e);return t?i(t):""})(e);e.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:t=>{((e,t)=>/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)?(d(e,t),!0):(e.windowManager.alert("ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),!1))(e,t.getData().id)&&t.close()}})})(e)}))})(e),(e=>{const t=()=>e.execCommand("mceAnchor");e.ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:t,onSetup:t=>{const o=e.selection.selectorChangedWithUnbind("a:not([href])",t.setActive).unbind,n=u(e)(t);return()=>{o(),n()}}}),e.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:t,onSetup:u(e)})})(e),e.on("PreInit",(()=>{(e=>{e.formatter.register("namedAnchor",{inline:"a",selector:a,remove:"all",split:!0,deep:!0,attributes:{id:"%value"},onmatch:(e,t,o)=>l(e)})})(e)}))}))}();
1
+ !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),o=tinymce.util.Tools.resolve("tinymce.util.Tools");const n=e=>e.options.get("allow_html_in_named_anchor");const a="a:not([href])",r=e=>!e,i=e=>e.getAttribute("id")||e.getAttribute("name")||"",l=e=>(e=>"a"===e.nodeName.toLowerCase())(e)&&!e.getAttribute("href")&&""!==i(e),s=e=>e.dom.getParent(e.selection.getStart(),a),d=(e,a)=>{const r=s(e);r?((e,t,o)=>{o.removeAttribute("name"),o.id=t,e.addVisual(),e.undoManager.add()})(e,a,r):((e,a)=>{e.undoManager.transact((()=>{n(e)||e.selection.collapse(!0),e.selection.isCollapsed()?e.insertContent(e.dom.createHTML("a",{id:a})):((e=>{const n=e.dom;t(n).walk(e.selection.getRng(),(e=>{o.each(e,(e=>{var t;l(t=e)&&!t.firstChild&&n.remove(e,!1)}))}))})(e),e.formatter.remove("namedAnchor",void 0,void 0,!0),e.formatter.apply("namedAnchor",{value:a}),e.addVisual())}))})(e,a),e.focus()},c=e=>(e=>r(e.attr("href"))&&!r(e.attr("id")||e.attr("name")))(e)&&!e.firstChild,m=e=>t=>{for(let o=0;o<t.length;o++){const n=t[o];c(n)&&n.attr("contenteditable",e)}},u=e=>t=>{const o=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",o),o(),()=>{e.off("NodeChange",o)}};e.add("anchor",(e=>{(e=>{(0,e.options.register)("allow_html_in_named_anchor",{processor:"boolean",default:!1})})(e),(e=>{e.on("PreInit",(()=>{e.parser.addNodeFilter("a",m("false")),e.serializer.addNodeFilter("a",m(null))}))})(e),(e=>{e.addCommand("mceAnchor",(()=>{(e=>{const t=(e=>{const t=s(e);return t?i(t):""})(e);e.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:t=>{((e,t)=>/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)?(d(e,t),!0):(e.windowManager.alert("ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),!1))(e,t.getData().id)&&t.close()}})})(e)}))})(e),(e=>{const t=()=>e.execCommand("mceAnchor");e.ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:t,onSetup:t=>{const o=e.selection.selectorChangedWithUnbind("a:not([href])",t.setActive).unbind,n=u(e)(t);return()=>{o(),n()}}}),e.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:t,onSetup:u(e)})})(e),e.on("PreInit",(()=>{(e=>{e.formatter.register("namedAnchor",{inline:"a",selector:a,remove:"all",split:!0,deep:!0,attributes:{id:"%value"},onmatch:(e,t,o)=>l(e)})})(e)}))}))}();