@umbraco-cms/backoffice 14.0.0-500b9dc0 → 14.0.0-84ca069c

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 (394) hide show
  1. package/dist-cms/custom-elements.json +143 -21
  2. package/dist-cms/external/rxjs/index.js +2 -2
  3. package/dist-cms/external/tinymce/index.js +49 -0
  4. package/dist-cms/mocks/data/data-type.data.js +69 -1
  5. package/dist-cms/mocks/data/data-type.data.js.map +1 -1
  6. package/dist-cms/mocks/data/document-type.data.js +18 -0
  7. package/dist-cms/mocks/data/document-type.data.js.map +1 -1
  8. package/dist-cms/mocks/data/document.data.js +7 -0
  9. package/dist-cms/mocks/data/document.data.js.map +1 -1
  10. package/dist-cms/mocks/handlers/images.handlers.d.ts +1 -0
  11. package/dist-cms/mocks/handlers/images.handlers.js +8 -0
  12. package/dist-cms/mocks/handlers/images.handlers.js.map +1 -0
  13. package/dist-cms/mocks/handlers/rte-embed.handlers.js +6 -2
  14. package/dist-cms/mocks/handlers/rte-embed.handlers.js.map +1 -1
  15. package/dist-cms/packages/core/components/data-type/data-type-property-collection.class.d.ts +15 -0
  16. package/dist-cms/packages/core/components/data-type/data-type-property-collection.class.js +17 -0
  17. package/dist-cms/packages/core/components/data-type/data-type-property-collection.class.js.map +1 -1
  18. package/dist-cms/packages/core/components/index.d.ts +1 -0
  19. package/dist-cms/packages/core/components/index.js +1 -0
  20. package/dist-cms/packages/core/components/index.js.map +1 -1
  21. package/dist-cms/packages/core/components/input-tiny-mce/index.d.ts +5 -0
  22. package/dist-cms/packages/core/components/input-tiny-mce/index.js +6 -0
  23. package/dist-cms/packages/core/components/input-tiny-mce/index.js.map +1 -0
  24. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.defaults.d.ts +5 -0
  25. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.defaults.js +46 -0
  26. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.defaults.js.map +1 -0
  27. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.element.d.ts +29 -0
  28. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.element.js +271 -0
  29. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.element.js.map +1 -0
  30. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.handlers.d.ts +3 -0
  31. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.handlers.js +39 -0
  32. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.handlers.js.map +1 -0
  33. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.languages.d.ts +1 -0
  34. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.languages.js +79 -0
  35. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.languages.js.map +1 -0
  36. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.sanitizer.d.ts +6 -0
  37. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.sanitizer.js +54 -0
  38. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.sanitizer.js.map +1 -0
  39. package/dist-cms/packages/core/extension-registry/index.d.ts +1 -0
  40. package/dist-cms/packages/core/extension-registry/index.js +1 -0
  41. package/dist-cms/packages/core/extension-registry/index.js.map +1 -1
  42. package/dist-cms/packages/core/extension-registry/models/index.d.ts +3 -1
  43. package/dist-cms/packages/core/extension-registry/models/index.js +1 -0
  44. package/dist-cms/packages/core/extension-registry/models/index.js.map +1 -1
  45. package/dist-cms/packages/core/extension-registry/models/tinymce-plugin.model.d.ts +4 -0
  46. package/dist-cms/packages/core/extension-registry/models/tinymce-plugin.model.js +2 -0
  47. package/dist-cms/packages/core/extension-registry/models/tinymce-plugin.model.js.map +1 -0
  48. package/dist-cms/packages/core/extension-registry/tiny-mce-plugin.d.ts +14 -0
  49. package/dist-cms/packages/core/extension-registry/tiny-mce-plugin.js +8 -0
  50. package/dist-cms/packages/core/extension-registry/tiny-mce-plugin.js.map +1 -0
  51. package/dist-cms/packages/core/index.d.ts +1 -0
  52. package/dist-cms/packages/core/index.js +3 -0
  53. package/dist-cms/packages/core/index.js.map +1 -1
  54. package/dist-cms/packages/core/macro/index.d.ts +1 -0
  55. package/dist-cms/packages/core/macro/index.js +2 -0
  56. package/dist-cms/packages/core/macro/index.js.map +1 -0
  57. package/dist-cms/packages/core/macro/macro.service.d.ts +26 -0
  58. package/dist-cms/packages/core/macro/macro.service.js +117 -0
  59. package/dist-cms/packages/core/macro/macro.service.js.map +1 -0
  60. package/dist-cms/packages/core/modal/common/code-editor/code-editor-modal.element.d.ts +17 -0
  61. package/dist-cms/packages/core/modal/common/code-editor/code-editor-modal.element.js +92 -0
  62. package/dist-cms/packages/core/modal/common/code-editor/code-editor-modal.element.js.map +1 -0
  63. package/dist-cms/packages/core/modal/common/embedded-media/embedded-media-modal.element.d.ts +3 -5
  64. package/dist-cms/packages/core/modal/common/embedded-media/embedded-media-modal.element.js +11 -11
  65. package/dist-cms/packages/core/modal/common/embedded-media/embedded-media-modal.element.js.map +1 -1
  66. package/dist-cms/packages/core/modal/common/manifests.js +6 -0
  67. package/dist-cms/packages/core/modal/common/manifests.js.map +1 -1
  68. package/dist-cms/packages/core/modal/token/code-editor-modal.token.d.ts +12 -0
  69. package/dist-cms/packages/core/modal/token/code-editor-modal.token.js +6 -0
  70. package/dist-cms/packages/core/modal/token/code-editor-modal.token.js.map +1 -0
  71. package/dist-cms/packages/core/modal/token/embedded-media-modal.token.d.ts +8 -7
  72. package/dist-cms/packages/core/modal/token/embedded-media-modal.token.js +2 -1
  73. package/dist-cms/packages/core/modal/token/embedded-media-modal.token.js.map +1 -1
  74. package/dist-cms/packages/core/modal/token/index.d.ts +1 -0
  75. package/dist-cms/packages/core/modal/token/index.js +1 -0
  76. package/dist-cms/packages/core/modal/token/index.js.map +1 -1
  77. package/dist-cms/packages/core/property-editors/models/{Umbraco.TinyMCE.js → Umbraco.RichText.js} +3 -2
  78. package/dist-cms/packages/core/property-editors/models/Umbraco.RichText.js.map +1 -0
  79. package/dist-cms/packages/core/property-editors/models/manifests.js +2 -2
  80. package/dist-cms/packages/core/property-editors/models/manifests.js.map +1 -1
  81. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/dimensions/property-editor-ui-tiny-mce-dimensions-configuration.element.d.ts +18 -0
  82. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/dimensions/property-editor-ui-tiny-mce-dimensions-configuration.element.js +31 -0
  83. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/dimensions/property-editor-ui-tiny-mce-dimensions-configuration.element.js.map +1 -0
  84. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/manifests.d.ts +2 -0
  85. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/manifests.js +52 -0
  86. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/manifests.js.map +1 -0
  87. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/max-image-size/property-editor-ui-tiny-mce-maximagesize-configuration.element.d.ts +15 -0
  88. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/max-image-size/property-editor-ui-tiny-mce-maximagesize-configuration.element.js +26 -0
  89. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/max-image-size/property-editor-ui-tiny-mce-maximagesize-configuration.element.js.map +1 -0
  90. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/stylesheets/property-editor-ui-tiny-mce-stylesheets-configuration.element.d.ts +16 -0
  91. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/stylesheets/property-editor-ui-tiny-mce-stylesheets-configuration.element.js +45 -0
  92. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/stylesheets/property-editor-ui-tiny-mce-stylesheets-configuration.element.js.map +1 -0
  93. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/toolbar/property-editor-ui-tiny-mce-toolbar-configuration.element.d.ts +16 -0
  94. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/toolbar/property-editor-ui-tiny-mce-toolbar-configuration.element.js +45 -0
  95. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/toolbar/property-editor-ui-tiny-mce-toolbar-configuration.element.js.map +1 -0
  96. package/dist-cms/packages/core/property-editors/uis/tiny-mce/manifests.js +37 -6
  97. package/dist-cms/packages/core/property-editors/uis/tiny-mce/manifests.js.map +1 -1
  98. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/manifests.d.ts +2 -0
  99. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/manifests.js +34 -0
  100. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/manifests.js.map +1 -0
  101. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-code-editor.plugin.d.ts +5 -0
  102. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-code-editor.plugin.js +34 -0
  103. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-code-editor.plugin.js.map +1 -0
  104. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-embeddedmedia.plugin.d.ts +5 -0
  105. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-embeddedmedia.plugin.js +69 -0
  106. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-embeddedmedia.plugin.js.map +1 -0
  107. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-linkpicker.plugin.d.ts +6 -0
  108. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-linkpicker.plugin.js +168 -0
  109. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-linkpicker.plugin.js.map +1 -0
  110. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-macropicker.plugin.d.ts +5 -0
  111. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-macropicker.plugin.js +167 -0
  112. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-macropicker.plugin.js.map +1 -0
  113. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-mediapicker.plugin.d.ts +5 -0
  114. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-mediapicker.plugin.js +141 -0
  115. package/dist-cms/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-mediapicker.plugin.js.map +1 -0
  116. package/dist-cms/packages/core/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.element.d.ts +2 -1
  117. package/dist-cms/packages/core/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.element.js +16 -7
  118. package/dist-cms/packages/core/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.element.js.map +1 -1
  119. package/dist-cms/shared/utils/index.d.ts +6 -0
  120. package/dist-cms/shared/utils/index.js +1 -0
  121. package/dist-cms/shared/utils/index.js.map +1 -1
  122. package/dist-cms/shared/utils/media-helper.service.d.ts +44 -0
  123. package/dist-cms/shared/utils/media-helper.service.js +152 -0
  124. package/dist-cms/shared/utils/media-helper.service.js.map +1 -0
  125. package/dist-cms/tinymce/CHANGELOG.md +3253 -0
  126. package/dist-cms/tinymce/README.md +71 -0
  127. package/dist-cms/tinymce/bower.json +27 -0
  128. package/dist-cms/tinymce/composer.json +52 -0
  129. package/dist-cms/tinymce/icons/default/icons.js +191 -0
  130. package/dist-cms/tinymce/icons/default/icons.min.js +1 -0
  131. package/dist-cms/tinymce/icons/default/index.js +7 -0
  132. package/dist-cms/tinymce/langs/ar.js +407 -0
  133. package/dist-cms/tinymce/langs/az.js +406 -0
  134. package/dist-cms/tinymce/langs/be.js +406 -0
  135. package/dist-cms/tinymce/langs/bg_BG.js +406 -0
  136. package/dist-cms/tinymce/langs/bn_BD.js +406 -0
  137. package/dist-cms/tinymce/langs/ca.js +406 -0
  138. package/dist-cms/tinymce/langs/cs.js +406 -0
  139. package/dist-cms/tinymce/langs/cy.js +406 -0
  140. package/dist-cms/tinymce/langs/da.js +406 -0
  141. package/dist-cms/tinymce/langs/de.js +406 -0
  142. package/dist-cms/tinymce/langs/dv.js +406 -0
  143. package/dist-cms/tinymce/langs/el.js +406 -0
  144. package/dist-cms/tinymce/langs/eo.js +406 -0
  145. package/dist-cms/tinymce/langs/es.js +406 -0
  146. package/dist-cms/tinymce/langs/es_MX.js +406 -0
  147. package/dist-cms/tinymce/langs/et.js +406 -0
  148. package/dist-cms/tinymce/langs/eu.js +406 -0
  149. package/dist-cms/tinymce/langs/fa.js +407 -0
  150. package/dist-cms/tinymce/langs/fi.js +406 -0
  151. package/dist-cms/tinymce/langs/fr_FR.js +406 -0
  152. package/dist-cms/tinymce/langs/ga.js +406 -0
  153. package/dist-cms/tinymce/langs/gl.js +406 -0
  154. package/dist-cms/tinymce/langs/he_IL.js +407 -0
  155. package/dist-cms/tinymce/langs/hi.js +406 -0
  156. package/dist-cms/tinymce/langs/hr.js +406 -0
  157. package/dist-cms/tinymce/langs/hu_HU.js +406 -0
  158. package/dist-cms/tinymce/langs/hy.js +406 -0
  159. package/dist-cms/tinymce/langs/id.js +406 -0
  160. package/dist-cms/tinymce/langs/is_IS.js +406 -0
  161. package/dist-cms/tinymce/langs/it.js +406 -0
  162. package/dist-cms/tinymce/langs/ja.js +406 -0
  163. package/dist-cms/tinymce/langs/kab.js +406 -0
  164. package/dist-cms/tinymce/langs/kk.js +406 -0
  165. package/dist-cms/tinymce/langs/ko_KR.js +406 -0
  166. package/dist-cms/tinymce/langs/ku.js +407 -0
  167. package/dist-cms/tinymce/langs/lt.js +406 -0
  168. package/dist-cms/tinymce/langs/lv.js +406 -0
  169. package/dist-cms/tinymce/langs/nb_NO.js +406 -0
  170. package/dist-cms/tinymce/langs/ne.js +406 -0
  171. package/dist-cms/tinymce/langs/nl.js +406 -0
  172. package/dist-cms/tinymce/langs/nl_BE.js +406 -0
  173. package/dist-cms/tinymce/langs/oc.js +406 -0
  174. package/dist-cms/tinymce/langs/pl.js +406 -0
  175. package/dist-cms/tinymce/langs/pt_BR.js +406 -0
  176. package/dist-cms/tinymce/langs/ro.js +406 -0
  177. package/dist-cms/tinymce/langs/ru.js +406 -0
  178. package/dist-cms/tinymce/langs/sk.js +406 -0
  179. package/dist-cms/tinymce/langs/sl_SI.js +406 -0
  180. package/dist-cms/tinymce/langs/sq.js +406 -0
  181. package/dist-cms/tinymce/langs/sr.js +406 -0
  182. package/dist-cms/tinymce/langs/sv_SE.js +406 -0
  183. package/dist-cms/tinymce/langs/ta.js +406 -0
  184. package/dist-cms/tinymce/langs/tg.js +406 -0
  185. package/dist-cms/tinymce/langs/th_TH.js +406 -0
  186. package/dist-cms/tinymce/langs/tr.js +406 -0
  187. package/dist-cms/tinymce/langs/ug.js +406 -0
  188. package/dist-cms/tinymce/langs/uk.js +406 -0
  189. package/dist-cms/tinymce/langs/vi.js +406 -0
  190. package/dist-cms/tinymce/langs/zh-Hans.js +406 -0
  191. package/dist-cms/tinymce/langs/zh-Hant.js +406 -0
  192. package/dist-cms/tinymce/langs/zh_HK.js +406 -0
  193. package/dist-cms/tinymce/langs/zh_MO.js +406 -0
  194. package/dist-cms/tinymce/langs/zh_SG.js +406 -0
  195. package/dist-cms/tinymce/license.txt +21 -0
  196. package/dist-cms/tinymce/models/dom/index.js +7 -0
  197. package/dist-cms/tinymce/models/dom/model.js +8040 -0
  198. package/dist-cms/tinymce/models/dom/model.min.js +4 -0
  199. package/dist-cms/tinymce/package.json +32 -0
  200. package/dist-cms/tinymce/plugins/accordion/index.js +7 -0
  201. package/dist-cms/tinymce/plugins/accordion/plugin.js +1033 -0
  202. package/dist-cms/tinymce/plugins/accordion/plugin.min.js +4 -0
  203. package/dist-cms/tinymce/plugins/advlist/index.js +7 -0
  204. package/dist-cms/tinymce/plugins/advlist/plugin.js +259 -0
  205. package/dist-cms/tinymce/plugins/advlist/plugin.min.js +4 -0
  206. package/dist-cms/tinymce/plugins/anchor/index.js +7 -0
  207. package/dist-cms/tinymce/plugins/anchor/plugin.js +214 -0
  208. package/dist-cms/tinymce/plugins/anchor/plugin.min.js +4 -0
  209. package/dist-cms/tinymce/plugins/autolink/index.js +7 -0
  210. package/dist-cms/tinymce/plugins/autolink/plugin.js +228 -0
  211. package/dist-cms/tinymce/plugins/autolink/plugin.min.js +4 -0
  212. package/dist-cms/tinymce/plugins/autoresize/index.js +7 -0
  213. package/dist-cms/tinymce/plugins/autoresize/plugin.js +192 -0
  214. package/dist-cms/tinymce/plugins/autoresize/plugin.min.js +4 -0
  215. package/dist-cms/tinymce/plugins/autosave/index.js +7 -0
  216. package/dist-cms/tinymce/plugins/autosave/plugin.js +233 -0
  217. package/dist-cms/tinymce/plugins/autosave/plugin.min.js +4 -0
  218. package/dist-cms/tinymce/plugins/charmap/index.js +7 -0
  219. package/dist-cms/tinymce/plugins/charmap/plugin.js +1658 -0
  220. package/dist-cms/tinymce/plugins/charmap/plugin.min.js +4 -0
  221. package/dist-cms/tinymce/plugins/code/index.js +7 -0
  222. package/dist-cms/tinymce/plugins/code/plugin.js +85 -0
  223. package/dist-cms/tinymce/plugins/code/plugin.min.js +4 -0
  224. package/dist-cms/tinymce/plugins/codesample/index.js +7 -0
  225. package/dist-cms/tinymce/plugins/codesample/plugin.js +2463 -0
  226. package/dist-cms/tinymce/plugins/codesample/plugin.min.js +4 -0
  227. package/dist-cms/tinymce/plugins/directionality/index.js +7 -0
  228. package/dist-cms/tinymce/plugins/directionality/plugin.js +395 -0
  229. package/dist-cms/tinymce/plugins/directionality/plugin.min.js +4 -0
  230. package/dist-cms/tinymce/plugins/emoticons/index.js +7 -0
  231. package/dist-cms/tinymce/plugins/emoticons/js/emojiimages.js +1 -0
  232. package/dist-cms/tinymce/plugins/emoticons/js/emojiimages.min.js +3 -0
  233. package/dist-cms/tinymce/plugins/emoticons/js/emojis.js +1 -0
  234. package/dist-cms/tinymce/plugins/emoticons/js/emojis.min.js +2 -0
  235. package/dist-cms/tinymce/plugins/emoticons/plugin.js +595 -0
  236. package/dist-cms/tinymce/plugins/emoticons/plugin.min.js +4 -0
  237. package/dist-cms/tinymce/plugins/fullscreen/index.js +7 -0
  238. package/dist-cms/tinymce/plugins/fullscreen/plugin.js +1196 -0
  239. package/dist-cms/tinymce/plugins/fullscreen/plugin.min.js +4 -0
  240. package/dist-cms/tinymce/plugins/help/index.js +7 -0
  241. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/ar.js +90 -0
  242. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/bg_BG.js +90 -0
  243. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/ca.js +90 -0
  244. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/cs.js +90 -0
  245. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/da.js +90 -0
  246. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/de.js +90 -0
  247. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/el.js +90 -0
  248. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/en.js +90 -0
  249. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/es.js +90 -0
  250. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/eu.js +90 -0
  251. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/fa.js +90 -0
  252. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/fi.js +90 -0
  253. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/fr_FR.js +90 -0
  254. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/he_IL.js +90 -0
  255. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/hi.js +90 -0
  256. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/hr.js +90 -0
  257. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/hu_HU.js +90 -0
  258. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/id.js +90 -0
  259. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/it.js +90 -0
  260. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/ja.js +90 -0
  261. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/kk.js +90 -0
  262. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/ko_KR.js +90 -0
  263. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/ms.js +90 -0
  264. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/nb_NO.js +90 -0
  265. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/nl.js +90 -0
  266. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/pl.js +90 -0
  267. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/pt_BR.js +90 -0
  268. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/pt_PT.js +90 -0
  269. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/ro.js +90 -0
  270. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/ru.js +90 -0
  271. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/sk.js +90 -0
  272. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/sl_SI.js +90 -0
  273. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/sv_SE.js +90 -0
  274. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/th_TH.js +90 -0
  275. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/tr.js +90 -0
  276. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/uk.js +90 -0
  277. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/vi.js +90 -0
  278. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/zh_CN.js +84 -0
  279. package/dist-cms/tinymce/plugins/help/js/i18n/keynav/zh_TW.js +90 -0
  280. package/dist-cms/tinymce/plugins/help/plugin.js +893 -0
  281. package/dist-cms/tinymce/plugins/help/plugin.min.js +4 -0
  282. package/dist-cms/tinymce/plugins/image/index.js +7 -0
  283. package/dist-cms/tinymce/plugins/image/plugin.js +1504 -0
  284. package/dist-cms/tinymce/plugins/image/plugin.min.js +4 -0
  285. package/dist-cms/tinymce/plugins/importcss/index.js +7 -0
  286. package/dist-cms/tinymce/plugins/importcss/plugin.js +344 -0
  287. package/dist-cms/tinymce/plugins/importcss/plugin.min.js +4 -0
  288. package/dist-cms/tinymce/plugins/insertdatetime/index.js +7 -0
  289. package/dist-cms/tinymce/plugins/insertdatetime/plugin.js +187 -0
  290. package/dist-cms/tinymce/plugins/insertdatetime/plugin.min.js +4 -0
  291. package/dist-cms/tinymce/plugins/link/index.js +7 -0
  292. package/dist-cms/tinymce/plugins/link/plugin.js +1241 -0
  293. package/dist-cms/tinymce/plugins/link/plugin.min.js +4 -0
  294. package/dist-cms/tinymce/plugins/lists/index.js +7 -0
  295. package/dist-cms/tinymce/plugins/lists/plugin.js +1948 -0
  296. package/dist-cms/tinymce/plugins/lists/plugin.min.js +4 -0
  297. package/dist-cms/tinymce/plugins/media/index.js +7 -0
  298. package/dist-cms/tinymce/plugins/media/plugin.js +1235 -0
  299. package/dist-cms/tinymce/plugins/media/plugin.min.js +4 -0
  300. package/dist-cms/tinymce/plugins/nonbreaking/index.js +7 -0
  301. package/dist-cms/tinymce/plugins/nonbreaking/plugin.js +123 -0
  302. package/dist-cms/tinymce/plugins/nonbreaking/plugin.min.js +4 -0
  303. package/dist-cms/tinymce/plugins/pagebreak/index.js +7 -0
  304. package/dist-cms/tinymce/plugins/pagebreak/plugin.js +117 -0
  305. package/dist-cms/tinymce/plugins/pagebreak/plugin.min.js +4 -0
  306. package/dist-cms/tinymce/plugins/preview/index.js +7 -0
  307. package/dist-cms/tinymce/plugins/preview/plugin.js +97 -0
  308. package/dist-cms/tinymce/plugins/preview/plugin.min.js +4 -0
  309. package/dist-cms/tinymce/plugins/quickbars/index.js +7 -0
  310. package/dist-cms/tinymce/plugins/quickbars/plugin.js +438 -0
  311. package/dist-cms/tinymce/plugins/quickbars/plugin.min.js +4 -0
  312. package/dist-cms/tinymce/plugins/save/index.js +7 -0
  313. package/dist-cms/tinymce/plugins/save/plugin.js +118 -0
  314. package/dist-cms/tinymce/plugins/save/plugin.min.js +4 -0
  315. package/dist-cms/tinymce/plugins/searchreplace/index.js +7 -0
  316. package/dist-cms/tinymce/plugins/searchreplace/plugin.js +1093 -0
  317. package/dist-cms/tinymce/plugins/searchreplace/plugin.min.js +4 -0
  318. package/dist-cms/tinymce/plugins/table/index.js +7 -0
  319. package/dist-cms/tinymce/plugins/table/plugin.js +3462 -0
  320. package/dist-cms/tinymce/plugins/table/plugin.min.js +4 -0
  321. package/dist-cms/tinymce/plugins/template/index.js +7 -0
  322. package/dist-cms/tinymce/plugins/template/plugin.js +567 -0
  323. package/dist-cms/tinymce/plugins/template/plugin.min.js +4 -0
  324. package/dist-cms/tinymce/plugins/visualblocks/index.js +7 -0
  325. package/dist-cms/tinymce/plugins/visualblocks/plugin.js +98 -0
  326. package/dist-cms/tinymce/plugins/visualblocks/plugin.min.js +4 -0
  327. package/dist-cms/tinymce/plugins/visualchars/index.js +7 -0
  328. package/dist-cms/tinymce/plugins/visualchars/plugin.js +560 -0
  329. package/dist-cms/tinymce/plugins/visualchars/plugin.min.js +4 -0
  330. package/dist-cms/tinymce/plugins/wordcount/index.js +7 -0
  331. package/dist-cms/tinymce/plugins/wordcount/plugin.js +405 -0
  332. package/dist-cms/tinymce/plugins/wordcount/plugin.min.js +4 -0
  333. package/dist-cms/tinymce/skins/content/dark/content.css +66 -0
  334. package/dist-cms/tinymce/skins/content/dark/content.min.css +1 -0
  335. package/dist-cms/tinymce/skins/content/default/content.css +61 -0
  336. package/dist-cms/tinymce/skins/content/default/content.min.css +1 -0
  337. package/dist-cms/tinymce/skins/content/document/content.css +66 -0
  338. package/dist-cms/tinymce/skins/content/document/content.min.css +1 -0
  339. package/dist-cms/tinymce/skins/content/tinymce-5/content.css +61 -0
  340. package/dist-cms/tinymce/skins/content/tinymce-5/content.min.css +1 -0
  341. package/dist-cms/tinymce/skins/content/tinymce-5-dark/content.css +66 -0
  342. package/dist-cms/tinymce/skins/content/tinymce-5-dark/content.min.css +1 -0
  343. package/dist-cms/tinymce/skins/content/writer/content.css +62 -0
  344. package/dist-cms/tinymce/skins/content/writer/content.min.css +1 -0
  345. package/dist-cms/tinymce/skins/ui/oxide/content.css +785 -0
  346. package/dist-cms/tinymce/skins/ui/oxide/content.inline.css +779 -0
  347. package/dist-cms/tinymce/skins/ui/oxide/content.inline.min.css +1 -0
  348. package/dist-cms/tinymce/skins/ui/oxide/content.min.css +1 -0
  349. package/dist-cms/tinymce/skins/ui/oxide/skin.css +3688 -0
  350. package/dist-cms/tinymce/skins/ui/oxide/skin.min.css +1 -0
  351. package/dist-cms/tinymce/skins/ui/oxide/skin.shadowdom.css +30 -0
  352. package/dist-cms/tinymce/skins/ui/oxide/skin.shadowdom.min.css +1 -0
  353. package/dist-cms/tinymce/skins/ui/oxide-dark/content.css +766 -0
  354. package/dist-cms/tinymce/skins/ui/oxide-dark/content.inline.css +779 -0
  355. package/dist-cms/tinymce/skins/ui/oxide-dark/content.inline.min.css +1 -0
  356. package/dist-cms/tinymce/skins/ui/oxide-dark/content.min.css +1 -0
  357. package/dist-cms/tinymce/skins/ui/oxide-dark/skin.css +3691 -0
  358. package/dist-cms/tinymce/skins/ui/oxide-dark/skin.min.css +1 -0
  359. package/dist-cms/tinymce/skins/ui/oxide-dark/skin.shadowdom.css +30 -0
  360. package/dist-cms/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css +1 -0
  361. package/dist-cms/tinymce/skins/ui/tinymce-5/content.css +785 -0
  362. package/dist-cms/tinymce/skins/ui/tinymce-5/content.inline.css +779 -0
  363. package/dist-cms/tinymce/skins/ui/tinymce-5/content.inline.min.css +1 -0
  364. package/dist-cms/tinymce/skins/ui/tinymce-5/content.min.css +1 -0
  365. package/dist-cms/tinymce/skins/ui/tinymce-5/skin.css +3782 -0
  366. package/dist-cms/tinymce/skins/ui/tinymce-5/skin.min.css +1 -0
  367. package/dist-cms/tinymce/skins/ui/tinymce-5/skin.shadowdom.css +30 -0
  368. package/dist-cms/tinymce/skins/ui/tinymce-5/skin.shadowdom.min.css +1 -0
  369. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.css +766 -0
  370. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.inline.css +779 -0
  371. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.inline.min.css +1 -0
  372. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.min.css +1 -0
  373. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/skin.css +3782 -0
  374. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/skin.min.css +1 -0
  375. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.css +30 -0
  376. package/dist-cms/tinymce/skins/ui/tinymce-5-dark/skin.shadowdom.min.css +1 -0
  377. package/dist-cms/tinymce/themes/silver/index.js +7 -0
  378. package/dist-cms/tinymce/themes/silver/theme.js +30167 -0
  379. package/dist-cms/tinymce/themes/silver/theme.min.js +4 -0
  380. package/dist-cms/tinymce/tinymce.d.ts +3206 -0
  381. package/dist-cms/tinymce/tinymce.js +31297 -0
  382. package/dist-cms/tinymce/tinymce.min.js +4 -0
  383. package/dist-cms/tsconfig.tsbuildinfo +1 -1
  384. package/dist-cms/umbraco-package-schema.json +42 -0
  385. package/dist-cms/vscode-html-custom-data.json +76 -11
  386. package/package.json +4 -1
  387. package/dist-cms/packages/core/property-editors/models/Umbraco.TinyMCE.js.map +0 -1
  388. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/configuration/manifests.d.ts +0 -2
  389. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/configuration/manifests.js +0 -13
  390. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/configuration/manifests.js.map +0 -1
  391. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/configuration/property-editor-ui-tiny-mce-configuration.element.d.ts +0 -16
  392. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/configuration/property-editor-ui-tiny-mce-configuration.element.js +0 -34
  393. package/dist-cms/packages/core/property-editors/uis/tiny-mce/config/configuration/property-editor-ui-tiny-mce-configuration.element.js.map +0 -1
  394. /package/dist-cms/packages/core/property-editors/models/{Umbraco.TinyMCE.d.ts → Umbraco.RichText.d.ts} +0 -0
@@ -0,0 +1,168 @@
1
+ import { UmbTinyMcePluginBase } from '../../../../extension-registry/index.js';
2
+ import { UMB_LINK_PICKER_MODAL, UMB_MODAL_MANAGER_CONTEXT_TOKEN, } from '../../../../modal/index.js';
3
+ export default class UmbTinyMceLinkPickerPlugin extends UmbTinyMcePluginBase {
4
+ #modalContext;
5
+ #linkPickerData;
6
+ #anchorElement;
7
+ constructor(args) {
8
+ super(args);
9
+ this.host.consumeContext(UMB_MODAL_MANAGER_CONTEXT_TOKEN, (modalContext) => {
10
+ this.#modalContext = modalContext;
11
+ });
12
+ // const editorEventSetupCallback = (buttonApi: { setEnabled: (state: boolean) => void }) => {
13
+ // const editorEventCallback = (eventApi: { element: Element}) => {
14
+ // buttonApi.setEnabled(eventApi.element.nodeName.toLowerCase() === 'a' && eventApi.element.hasAttribute('href'));
15
+ // };
16
+ // editor.on('NodeChange', editorEventCallback);
17
+ // return () => editor.off('NodeChange', editorEventCallback);
18
+ // };
19
+ args.editor.ui.registry.addButton('link', {
20
+ icon: 'link',
21
+ tooltip: 'Insert/edit link',
22
+ onAction: () => this.showDialog(),
23
+ });
24
+ args.editor.ui.registry.addButton('unlink', {
25
+ icon: 'unlink',
26
+ tooltip: 'Remove link',
27
+ onAction: () => args.editor.execCommand('unlink'),
28
+ });
29
+ }
30
+ async showDialog() {
31
+ const selectedElm = this.editor.selection.getNode();
32
+ this.#anchorElement = this.editor.dom.getParent(selectedElm, 'a[href]');
33
+ const data = {
34
+ text: this.#anchorElement
35
+ ? this.#anchorElement.innerText || (this.#anchorElement.textContent ?? '')
36
+ : this.editor.selection.getContent({ format: 'text' }),
37
+ href: this.#anchorElement?.getAttribute('href') ?? '',
38
+ target: this.#anchorElement?.target ?? '',
39
+ rel: this.#anchorElement?.rel ?? '',
40
+ };
41
+ if (selectedElm.nodeName === 'IMG') {
42
+ data.text = ' ';
43
+ }
44
+ if (!this.#anchorElement) {
45
+ this.#openLinkPicker();
46
+ return;
47
+ }
48
+ //if we already have a link selected, we want to pass that data over to the dialog
49
+ const currentTarget = {
50
+ name: this.#anchorElement.title,
51
+ url: this.#anchorElement.getAttribute('href') ?? '',
52
+ target: this.#anchorElement.target,
53
+ };
54
+ // drop the lead char from the anchor text, if it has a value
55
+ const anchorVal = this.#anchorElement.dataset.anchor;
56
+ if (anchorVal) {
57
+ currentTarget.queryString = anchorVal.substring(1);
58
+ }
59
+ if (currentTarget.url?.includes('localLink:')) {
60
+ currentTarget.udi =
61
+ currentTarget.url?.substring(currentTarget.url.indexOf(':') + 1, currentTarget.url.lastIndexOf('}')) ?? '';
62
+ }
63
+ this.#openLinkPicker(currentTarget);
64
+ }
65
+ // TODO => get anchors to provide to link picker?
66
+ async #openLinkPicker(currentTarget) {
67
+ const modalHandler = this.#modalContext?.open(UMB_LINK_PICKER_MODAL, {
68
+ config: {
69
+ ignoreUserStartNodes: this.configuration?.getValueByAlias('ignoreUserStartNodes') ?? false,
70
+ },
71
+ link: currentTarget ?? {},
72
+ index: null,
73
+ });
74
+ if (!modalHandler)
75
+ return;
76
+ const linkPickerData = await modalHandler.onSubmit();
77
+ if (!linkPickerData)
78
+ return;
79
+ this.#linkPickerData = linkPickerData;
80
+ this.#updateLink();
81
+ }
82
+ //Create a json obj used to create the attributes for the tag
83
+ // TODO => where has rel gone?
84
+ #createElemAttributes() {
85
+ const a = Object.assign({}, this.#linkPickerData?.link, { 'data-anchor': null });
86
+ // always need to map back to href for tinymce to render correctly
87
+ // do this first as checking querystring below may modify the href property
88
+ if (this.#linkPickerData?.link.url) {
89
+ a.href = this.#linkPickerData.link.url;
90
+ }
91
+ if (this.#linkPickerData?.link.queryString?.startsWith('#')) {
92
+ a['data-anchor'] = this.#linkPickerData?.link.queryString;
93
+ a.href += this.#linkPickerData?.link.queryString;
94
+ }
95
+ return a;
96
+ }
97
+ #insertLink() {
98
+ if (this.#anchorElement) {
99
+ this.editor.dom.setAttribs(this.#anchorElement, this.#createElemAttributes());
100
+ this.editor.selection.select(this.#anchorElement);
101
+ this.editor.execCommand('mceEndTyping');
102
+ return;
103
+ }
104
+ // If there is no selected content, we can't insert a link
105
+ // as TinyMCE needs selected content for this, so instead we
106
+ // create a new dom element and insert it, using the chosen
107
+ // link name as the content.
108
+ if (this.editor.selection.getContent() !== '') {
109
+ this.editor.execCommand('CreateLink', false, this.#createElemAttributes());
110
+ return;
111
+ }
112
+ // Using the target url as a fallback, as href might be confusing with a local link
113
+ const linkContent = typeof this.#linkPickerData?.link.name !== 'undefined' && this.#linkPickerData?.link.name !== ''
114
+ ? this.#linkPickerData?.link.name
115
+ : this.#linkPickerData?.link.url;
116
+ // only insert if link has content
117
+ if (linkContent) {
118
+ const domElement = this.editor.dom.createHTML('a', this.#createElemAttributes(), linkContent);
119
+ this.editor.execCommand('mceInsertContent', false, domElement);
120
+ }
121
+ }
122
+ #updateLink() {
123
+ // if an anchor exists, check that it is appropriately prefixed
124
+ if (this.#linkPickerData?.link.queryString &&
125
+ !this.#linkPickerData.link.queryString.startsWith('?') &&
126
+ !this.#linkPickerData.link.queryString.startsWith('#')) {
127
+ this.#linkPickerData.link.queryString =
128
+ (this.#linkPickerData.link.queryString.startsWith('=') ? '#' : '?') + this.#linkPickerData.link.queryString;
129
+ }
130
+ // the href might be an external url, so check the value for an anchor/qs
131
+ // href has the anchor re-appended later, hence the reset here to avoid duplicating the anchor
132
+ if (this.#linkPickerData && !this.#linkPickerData?.link.queryString) {
133
+ const urlParts = this.#linkPickerData?.link.url?.split(/(#|\?)/);
134
+ if (urlParts?.length === 3) {
135
+ this.#linkPickerData.link.url = urlParts[0];
136
+ this.#linkPickerData.link.queryString = urlParts[1] + urlParts[2];
137
+ }
138
+ }
139
+ if (!this.#linkPickerData?.link.url && !this.#linkPickerData?.link.queryString) {
140
+ this.editor.execCommand('unlink');
141
+ return;
142
+ }
143
+ //if we have an id, it must be a locallink:id
144
+ if (this.#linkPickerData?.link.udi) {
145
+ this.#linkPickerData.link.url = '/{localLink:' + this.#linkPickerData.link.udi + '}';
146
+ this.#insertLink();
147
+ return;
148
+ }
149
+ if (!this.#linkPickerData?.link.url) {
150
+ this.#linkPickerData.link.url = '';
151
+ }
152
+ // Is email and not //user@domain.com and protocol (e.g. mailto:, sip:) is not specified
153
+ if (this.#linkPickerData?.link.url.includes('@') &&
154
+ !this.#linkPickerData.link.url.includes('//') &&
155
+ !this.#linkPickerData.link.url.includes(':')) {
156
+ // assume it's a mailto link
157
+ this.#linkPickerData.link.url = 'mailto:' + this.#linkPickerData?.link.url;
158
+ this.#insertLink();
159
+ return;
160
+ }
161
+ // Is www. prefixed
162
+ if (/^\s*www\./i.test(this.#linkPickerData?.link.url)) {
163
+ this.#linkPickerData.link.url = 'http://' + this.#linkPickerData.link.url;
164
+ }
165
+ this.#insertLink();
166
+ }
167
+ }
168
+ //# sourceMappingURL=tiny-mce-linkpicker.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiny-mce-linkpicker.plugin.js","sourceRoot":"","sources":["../../../../../../../src/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-linkpicker.plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { TinyMcePluginArguments, UmbTinyMcePluginBase } from '../../../../extension-registry/index.js';
2
+ export default class UmbTinyMceMacroPickerPlugin extends UmbTinyMcePluginBase {
3
+ #private;
4
+ constructor(args: TinyMcePluginArguments);
5
+ }
@@ -0,0 +1,167 @@
1
+ import { UmbMacroService } from '../../../../macro/index.js';
2
+ import { UmbTinyMcePluginBase } from '../../../../extension-registry/index.js';
3
+ import { UMB_CONFIRM_MODAL, UMB_MODAL_MANAGER_CONTEXT_TOKEN } from '../../../../modal/index.js';
4
+ // TODO => This is a quick transplant of the existing macro plugin - needs to be finished, and need to
5
+ // determine how to replicate the existing macro service
6
+ export default class UmbTinyMceMacroPickerPlugin extends UmbTinyMcePluginBase {
7
+ #macroService = new UmbMacroService();
8
+ #modalContext;
9
+ constructor(args) {
10
+ super(args);
11
+ this.host.consumeContext(UMB_MODAL_MANAGER_CONTEXT_TOKEN, (modalContext) => {
12
+ this.#modalContext = modalContext;
13
+ });
14
+ /** Adds custom rules for the macro plugin and custom serialization */
15
+ this.editor.on('preInit', () => {
16
+ //this is requires so that we tell the serializer that a 'div' is actually allowed in the root,
17
+ // otherwise the cleanup will strip it out
18
+ this.editor.serializer.addRules('div');
19
+ /** This checks if the div is a macro container, if so, checks if its wrapped in a p tag and then unwraps it (removes p tag) */
20
+ this.editor.serializer.addNodeFilter('div', (nodes) => {
21
+ for (let i = 0; i < nodes.length; i++) {
22
+ if (nodes[i].attr('class') === 'umb-macro-holder' &&
23
+ nodes[i].parent?.name.toLowerCase() === 'p') {
24
+ nodes[i].parent?.unwrap();
25
+ }
26
+ }
27
+ });
28
+ });
29
+ /** when the contents load we need to find any macros declared and load in their content */
30
+ this.editor.on('SetContent', () => {
31
+ //get all macro divs and load their content
32
+ this.editor.dom.select('.umb-macro-holder.mceNonEditable').forEach((macroElement) => {
33
+ this.#loadMacroContent(macroElement, null);
34
+ });
35
+ });
36
+ /** Adds the button instance */
37
+ this.editor.ui.registry.addButton('umbmacro', {
38
+ icon: 'preferences',
39
+ tooltip: 'Insert macro',
40
+ /** The insert macro button click event handler */
41
+ onAction: () => {
42
+ let dialogData = {
43
+ //flag for use in rte so we only show macros flagged for the editor
44
+ richTextEditor: true,
45
+ };
46
+ //when we click we could have a macro already selected and in that case we'll want to edit the current parameters
47
+ //so we'll need to extract them and submit them to the dialog.
48
+ const activeMacroElement = this.#getRealMacroElem();
49
+ if (activeMacroElement) {
50
+ //we have a macro selected so we'll need to parse it's alias and parameters
51
+ const comment = Array.from(activeMacroElement.childNodes).find((x) => x.nodeType === 8);
52
+ if (!comment) {
53
+ throw 'Cannot parse the current macro, the syntax in the editor is invalid';
54
+ }
55
+ const syntax = comment.textContent?.trim();
56
+ const parsed = this.#macroService?.parseMacroSyntax(syntax);
57
+ dialogData = {
58
+ richTextEditor: false,
59
+ macroData: parsed,
60
+ activeMacroElement, //pass the active element along so we can retrieve it later
61
+ };
62
+ }
63
+ this.#showMacroPicker(dialogData);
64
+ },
65
+ });
66
+ }
67
+ /** loads in the macro content async from the server */
68
+ #loadMacroContent(macroDiv, macroData) {
69
+ //if we don't have the macroData, then we'll need to parse it from the macro div
70
+ if (!macroData && macroDiv) {
71
+ const comment = Array.from(macroDiv.childNodes).find((x) => x.nodeType === 8);
72
+ if (!comment) {
73
+ throw ('Cannot parse the current macro, the syntax in the editor is invalid');
74
+ }
75
+ const syntax = comment.textContent?.trim();
76
+ const parsed = this.#macroService?.parseMacroSyntax(syntax);
77
+ macroData = parsed;
78
+ }
79
+ //show the throbber
80
+ macroDiv?.classList.add('loading');
81
+ // Add the contenteditable="false" attribute
82
+ // As just the CSS class of .mceNonEditable is not working by itself?!
83
+ macroDiv?.setAttribute('contenteditable', 'false');
84
+ // TODO => macro data service?
85
+ // const contentId = $routeParams.id;
86
+ // //need to wrap in safe apply since this might be occuring outside of angular
87
+ // angularHelper.safeApply($rootScope, function () {
88
+ // tryExecuteAndNotify(this, macroResource
89
+ // .getMacroResultAsHtmlForEditor(macroData.macroAlias, contentId, macroData.macroParamsDictionary))
90
+ // .then(function (htmlResult) {
91
+ // $macroDiv.removeClass('loading');
92
+ // htmlResult = htmlResult.trim();
93
+ // if (htmlResult !== '') {
94
+ // const wasDirty = editor.isDirty();
95
+ // const $ins = macroDiv?.querySelector('ins');
96
+ // $ins.html(htmlResult);
97
+ // if (!wasDirty) {
98
+ // editor.undoManager.clear();
99
+ // }
100
+ // }
101
+ // });
102
+ // });
103
+ }
104
+ #insertInEditor(macroObject, activeMacroElement) {
105
+ //Important note: the TinyMce plugin "noneditable" is used here so that the macro cannot be edited,
106
+ // for this to work the mceNonEditable class needs to come last and we also need to use the attribute contenteditable = false
107
+ // (even though all the docs and examples say that is not necessary)
108
+ //put the macro syntax in comments, we will parse this out on the server side to be used
109
+ //for persisting.
110
+ const macroSyntaxComment = `<!-- ${macroObject.syntax} -->`;
111
+ //create an id class for this element so we can re-select it after inserting
112
+ const uniqueId = 'umb-macro-' + this.editor.dom.uniqueId();
113
+ let macroDiv = this.editor.dom.create('div', {
114
+ class: `umb-macro-holder ${macroObject.macroAlias} ${uniqueId} mceNonEditable`,
115
+ contenteditable: 'false',
116
+ }, `${macroSyntaxComment}<ins>Macro alias: <strong>${macroObject.macroAlias}</strong></ins>`);
117
+ //if there's an activeMacroElement then replace it, otherwise set the contents of the selected node
118
+ if (activeMacroElement) {
119
+ activeMacroElement.replaceWith(macroDiv); //directly replaces the html node
120
+ }
121
+ else {
122
+ this.editor.selection.setNode(macroDiv);
123
+ }
124
+ macroDiv = this.editor.dom.select('div.umb-macro-holder.' + uniqueId)[0];
125
+ this.editor.setDirty(true);
126
+ //async load the macro content
127
+ this.#loadMacroContent(macroDiv, macroObject);
128
+ }
129
+ /**
130
+ * Because the macro got wrapped in a P tag because of the way 'enter' works in older versions of Umbraco, this
131
+ * method will return the macro element if not wrapped in a p, or the p if the macro
132
+ * element is the only one inside of it even if we are deep inside an element inside the macro
133
+ */
134
+ #getRealMacroElem() {
135
+ // Ask the editor for the currently selected element
136
+ const element = this.editor?.selection.getNode();
137
+ if (!element) {
138
+ return null;
139
+ }
140
+ const e = element.closest('.umb-macro-holder');
141
+ if (!e || e === null)
142
+ return null;
143
+ if (e.parentNode?.nodeName === 'P') {
144
+ //now check if we're the only element
145
+ if (element.parentNode?.childNodes.length === 1) {
146
+ return e.parentNode;
147
+ }
148
+ }
149
+ return e;
150
+ }
151
+ // TODO => depends on macro picker, which doesn't exist, just showing a generic modal for now
152
+ async #showMacroPicker(dialogData) {
153
+ const modalHandler = this.#modalContext?.open(UMB_CONFIRM_MODAL, {
154
+ headline: 'Macro picker',
155
+ content: 'Yet to be implemented',
156
+ });
157
+ if (!modalHandler)
158
+ return;
159
+ const result = await modalHandler.onSubmit();
160
+ if (!result)
161
+ return;
162
+ // TODO => object here should be the response from the modal
163
+ this.#insertInEditor({}, dialogData.activeMacroElement);
164
+ this.editor.dispatch('Change');
165
+ }
166
+ }
167
+ //# sourceMappingURL=tiny-mce-macropicker.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiny-mce-macropicker.plugin.js","sourceRoot":"","sources":["../../../../../../../src/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-macropicker.plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { TinyMcePluginArguments, UmbTinyMcePluginBase } from '../../../../extension-registry/index.js';
2
+ export default class UmbTinyMceMediaPickerPlugin extends UmbTinyMcePluginBase {
3
+ #private;
4
+ constructor(args: TinyMcePluginArguments);
5
+ }
@@ -0,0 +1,141 @@
1
+ import { UmbTinyMcePluginBase } from '../../../../extension-registry/index.js';
2
+ import { UmbMediaHelper } from '../../../../../../shared/utils/index.js';
3
+ import { UMB_MEDIA_TREE_PICKER_MODAL, UMB_MODAL_MANAGER_CONTEXT_TOKEN, } from '../../../../modal/index.js';
4
+ export default class UmbTinyMceMediaPickerPlugin extends UmbTinyMcePluginBase {
5
+ #mediaHelper;
6
+ #currentUser;
7
+ #modalContext;
8
+ #auth;
9
+ constructor(args) {
10
+ super(args);
11
+ this.#mediaHelper = new UmbMediaHelper();
12
+ this.host.consumeContext(UMB_MODAL_MANAGER_CONTEXT_TOKEN, (modalContext) => {
13
+ this.#modalContext = modalContext;
14
+ });
15
+ // TODO => this breaks tests. disabling for now
16
+ // will ignore user media start nodes
17
+ // this.host.consumeContext(UMB_AUTH, (instance) => {
18
+ // this.#auth = instance;
19
+ // this.#observeCurrentUser();
20
+ // });
21
+ this.editor.ui.registry.addButton('umbmediapicker', {
22
+ icon: 'image',
23
+ tooltip: 'Media Picker',
24
+ //stateSelector: 'img[data-udi]', TODO => Investigate where stateselector has gone, or if it is still needed
25
+ onAction: () => this.#onAction(),
26
+ });
27
+ }
28
+ async #observeCurrentUser() {
29
+ if (!this.#auth)
30
+ return;
31
+ this.host.observe(this.#auth.currentUser, (currentUser) => this.#currentUser = currentUser);
32
+ }
33
+ async #onAction() {
34
+ const selectedElm = this.editor.selection.getNode();
35
+ let currentTarget = {};
36
+ if (selectedElm.nodeName === 'IMG') {
37
+ const img = selectedElm;
38
+ const hasUdi = img.hasAttribute('data-udi');
39
+ const hasDataTmpImg = img.hasAttribute('data-tmpimg');
40
+ currentTarget = {
41
+ altText: img.alt,
42
+ url: img.src,
43
+ caption: img.dataset.caption,
44
+ };
45
+ if (hasUdi) {
46
+ currentTarget['udi'] = img.dataset.udi;
47
+ }
48
+ else {
49
+ currentTarget['id'] = img.getAttribute('rel') ?? undefined;
50
+ }
51
+ if (hasDataTmpImg) {
52
+ currentTarget['tmpimg'] = img.dataset.tmpimg;
53
+ }
54
+ }
55
+ this.#showMediaPicker(currentTarget);
56
+ }
57
+ async #showMediaPicker(currentTarget) {
58
+ let startNodeId;
59
+ let startNodeIsVirtual;
60
+ if (!this.configuration?.getByAlias('startNodeId')) {
61
+ if (this.configuration?.getValueByAlias('ignoreUserStartNodes') === true) {
62
+ startNodeId = -1;
63
+ startNodeIsVirtual = true;
64
+ }
65
+ else {
66
+ startNodeId = this.#currentUser?.mediaStartNodeIds?.length !== 1 ? -1 : this.#currentUser?.mediaStartNodeIds[0];
67
+ startNodeIsVirtual = this.#currentUser?.mediaStartNodeIds?.length !== 1;
68
+ }
69
+ }
70
+ // TODO => startNodeId and startNodeIsVirtual do not exist on ContentTreeItemResponseModel
71
+ const modalHandler = this.#modalContext?.open(UMB_MEDIA_TREE_PICKER_MODAL, {
72
+ selection: currentTarget.udi ? [...currentTarget.udi] : [],
73
+ multiple: false,
74
+ //startNodeId,
75
+ //startNodeIsVirtual,
76
+ });
77
+ if (!modalHandler)
78
+ return;
79
+ const { selection } = await modalHandler.onSubmit();
80
+ if (!selection.length)
81
+ return;
82
+ this.#insertInEditor(selection[0]);
83
+ this.editor.dispatch('Change');
84
+ }
85
+ // TODO => mediaPicker returns a UDI, so need to fetch it. Wait for backend CLI before implementing
86
+ async #insertInEditor(img) {
87
+ if (!img)
88
+ return;
89
+ // We need to create a NEW DOM <img> element to insert
90
+ // setting an attribute of ID to __mcenew, so we can gather a reference to the node, to be able to update its size accordingly to the size of the image.
91
+ const data = {
92
+ alt: img.altText || '',
93
+ src: img.url ? img.url : 'nothing.jpg',
94
+ id: '__mcenew',
95
+ 'data-udi': img.udi,
96
+ 'data-caption': img.caption,
97
+ };
98
+ const newImage = this.editor.dom.createHTML('img', data);
99
+ const parentElement = this.editor.selection.getNode().parentElement;
100
+ if (img.caption && parentElement) {
101
+ const figCaption = this.editor.dom.createHTML('figcaption', {}, img.caption);
102
+ const combined = newImage + figCaption;
103
+ if (parentElement.nodeName !== 'FIGURE') {
104
+ const fragment = this.editor.dom.createHTML('figure', {}, combined);
105
+ this.editor.selection.setContent(fragment);
106
+ }
107
+ else {
108
+ parentElement.innerHTML = combined;
109
+ }
110
+ }
111
+ else {
112
+ //if caption is removed, remove the figure element
113
+ if (parentElement?.nodeName === 'FIGURE' && parentElement.parentElement) {
114
+ parentElement.parentElement.innerHTML = newImage;
115
+ }
116
+ else {
117
+ this.editor.selection.setContent(newImage);
118
+ }
119
+ }
120
+ // Using settimeout to wait for a DoM-render, so we can find the new element by ID.
121
+ setTimeout(() => {
122
+ const imgElm = this.editor.dom.get('__mcenew');
123
+ if (!imgElm)
124
+ return;
125
+ this.editor.dom.setAttrib(imgElm, 'id', null);
126
+ // When image is loaded we are ready to call sizeImageInEditor.
127
+ const onImageLoaded = () => {
128
+ this.#mediaHelper?.sizeImageInEditor(this.editor, imgElm, img.url);
129
+ this.editor.dispatch('Change');
130
+ };
131
+ // Check if image already is loaded.
132
+ if (imgElm.complete === true) {
133
+ onImageLoaded();
134
+ }
135
+ else {
136
+ imgElm.onload = onImageLoaded;
137
+ }
138
+ });
139
+ }
140
+ }
141
+ //# sourceMappingURL=tiny-mce-mediapicker.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiny-mce-mediapicker.plugin.js","sourceRoot":"","sources":["../../../../../../../src/packages/core/property-editors/uis/tiny-mce/plugins/tiny-mce-mediapicker.plugin.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,9 @@ import { UmbDataTypePropertyCollection } from '../../../components/index.js';
5
5
  * @element umb-property-editor-ui-tiny-mce
6
6
  */
7
7
  export declare class UmbPropertyEditorUITinyMceElement extends UmbLitElement implements UmbPropertyEditorExtensionElement {
8
+ #private;
8
9
  value: string;
9
- config: UmbDataTypePropertyCollection;
10
+ set config(config: UmbDataTypePropertyCollection);
10
11
  render(): import("lit-html").TemplateResult<1>;
11
12
  static styles: import("@lit/reactive-element/css-tag").CSSResult[];
12
13
  }
@@ -4,10 +4,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { html, customElement, property } from '../../../../../external/lit/index.js';
8
7
  import { UUITextStyles } from '../../../../../external/uui/index.js';
8
+ import { html, customElement, property } from '../../../../../external/lit/index.js';
9
9
  import { UmbLitElement } from '../../../../../shared/lit-element/index.js';
10
- import { UmbDataTypePropertyCollection } from '../../../components/index.js';
11
10
  /**
12
11
  * @element umb-property-editor-ui-tiny-mce
13
12
  */
@@ -15,19 +14,29 @@ export let UmbPropertyEditorUITinyMceElement = class UmbPropertyEditorUITinyMceE
15
14
  constructor() {
16
15
  super(...arguments);
17
16
  this.value = '';
18
- this.config = new UmbDataTypePropertyCollection();
17
+ }
18
+ #configuration;
19
+ set config(config) {
20
+ this.#configuration = config;
21
+ }
22
+ #onChange(event) {
23
+ this.value = event.target.value;
24
+ this.dispatchEvent(new CustomEvent('property-value-change'));
19
25
  }
20
26
  render() {
21
- return html `<div>umb-property-editor-ui-tiny-mce</div>`;
27
+ return html `<umb-input-tiny-mce
28
+ @change=${this.#onChange}
29
+ .configuration=${this.#configuration}
30
+ .value=${this.value}></umb-input-tiny-mce>`;
22
31
  }
23
32
  static { this.styles = [UUITextStyles]; }
24
33
  };
25
34
  __decorate([
26
- property()
35
+ property({ type: String })
27
36
  ], UmbPropertyEditorUITinyMceElement.prototype, "value", void 0);
28
37
  __decorate([
29
- property({ type: Array, attribute: false })
30
- ], UmbPropertyEditorUITinyMceElement.prototype, "config", void 0);
38
+ property({ attribute: false })
39
+ ], UmbPropertyEditorUITinyMceElement.prototype, "config", null);
31
40
  UmbPropertyEditorUITinyMceElement = __decorate([
32
41
  customElement('umb-property-editor-ui-tiny-mce')
33
42
  ], UmbPropertyEditorUITinyMceElement);
@@ -1 +1 @@
1
- {"version":3,"file":"property-editor-ui-tiny-mce.element.js","sourceRoot":"","sources":["../../../../../../src/packages/core/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.element.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAEnF;;GAEG;AAEI,WAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,aAAa;IAA7D;;QAEN,UAAK,GAAG,EAAE,CAAC;QAGJ,WAAM,GAAG,IAAI,6BAA6B,EAAE,CAAC;IAOrD,CAAC;IALA,MAAM;QACL,OAAO,IAAI,CAAA,4CAA4C,CAAC;IACzD,CAAC;aAEM,WAAM,GAAG,CAAC,aAAa,CAAC,AAAlB,CAAmB;;AAThC;IADC,QAAQ,EAAE;gEACA;AAGJ;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;iEACQ;AALxC,iCAAiC;IAD7C,aAAa,CAAC,iCAAiC,CAAC;GACpC,iCAAiC,CAY7C;AAED,eAAe,iCAAiC,CAAC"}
1
+ {"version":3,"file":"property-editor-ui-tiny-mce.element.js","sourceRoot":"","sources":["../../../../../../src/packages/core/property-editors/uis/tiny-mce/property-editor-ui-tiny-mce.element.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAGlE;;GAEG;AAEI,WAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,aAAa;IAA7D;;QAKN,UAAK,GAAG,EAAE,CAAC;IAoBZ,CAAC;IAvBA,cAAc,CAAiC;IAM/C,IAAW,MAAM,CAAC,MAAqC;QACtD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;IAC9B,CAAC;IAED,SAAS,CAAC,KAAiB;QAC1B,IAAI,CAAC,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAA;aACA,IAAI,CAAC,SAAS;oBACP,IAAI,CAAC,cAAc;YAC3B,IAAI,CAAC,KAAK,wBAAwB,CAAC;IAC9C,CAAC;aAEM,WAAM,GAAG,CAAC,aAAa,CAAC,AAAlB,CAAmB;;AAnBhC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gEAChB;AAGX;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;+DAG9B;AAVW,iCAAiC;IAD7C,aAAa,CAAC,iCAAiC,CAAC;GACpC,iCAAiC,CAyB7C;AAED,eAAe,iCAAiC,CAAC"}
@@ -1,5 +1,11 @@
1
1
  export * from './generate-umbraco-alias.function.js';
2
2
  export * from './increment-string.function.js';
3
3
  export * from './selection-manager.js';
4
+ export * from './media-helper.service.js';
4
5
  export * from './udi-service.js';
5
6
  export * from './umbraco-path.js';
7
+ declare global {
8
+ interface Window {
9
+ Umbraco: any;
10
+ }
11
+ }
@@ -1,6 +1,7 @@
1
1
  export * from './generate-umbraco-alias.function.js';
2
2
  export * from './increment-string.function.js';
3
3
  export * from './selection-manager.js';
4
+ export * from './media-helper.service.js';
4
5
  export * from './udi-service.js';
5
6
  export * from './umbraco-path.js';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}