wax_theme 0.1.0.beta

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 (245) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +50 -0
  4. data/_includes/wax/collection/gallery.html +33 -0
  5. data/_includes/wax/collection/interactive_metadata.html +53 -0
  6. data/_includes/wax/footer.html +35 -0
  7. data/_includes/wax/head.html +16 -0
  8. data/_includes/wax/header.html +35 -0
  9. data/_includes/wax/image_viewer/leaflet.html +11 -0
  10. data/_includes/wax/image_viewer/mirador.html +8 -0
  11. data/_includes/wax/image_viewer/simple.html +5 -0
  12. data/_includes/wax/inline_image.html +12 -0
  13. data/_includes/wax/item/metadata.html +23 -0
  14. data/_includes/wax/item/pagination.html +23 -0
  15. data/_includes/wax/mirador_compare.html +11 -0
  16. data/_includes/wax/parallax.html +23 -0
  17. data/_includes/wax/search.html +12 -0
  18. data/_layouts/wax/collection_item.html +41 -0
  19. data/_layouts/wax/default.html +20 -0
  20. data/_layouts/wax/exhibit.html +15 -0
  21. data/_layouts/wax/page.html +13 -0
  22. data/_layouts/wax/reuse_page.html +7 -0
  23. data/_sass/_bootstrap.scss +9030 -0
  24. data/_sass/_syntax.scss +129 -0
  25. data/_sass/_wax.scss +482 -0
  26. data/assets/css/datatables.css +24 -0
  27. data/assets/css/leaflet.css +636 -0
  28. data/assets/js/bootstrap.min.js +7 -0
  29. data/assets/js/datatables.min.js +325 -0
  30. data/assets/js/elasticlunr.min.js +10 -0
  31. data/assets/js/jquery-3.2.1.min.js +4 -0
  32. data/assets/js/leaflet-iiif.min.js +8 -0
  33. data/assets/js/leaflet.js +5 -0
  34. data/assets/js/popper.min.js +5 -0
  35. data/assets/js/wax.js +91 -0
  36. data/assets/logo.png +0 -0
  37. data/assets/mirador/css/mirador-combined.css +4107 -0
  38. data/assets/mirador/fonts/FontAwesome.otf +0 -0
  39. data/assets/mirador/fonts/MaterialIcons-Regular.eot +0 -0
  40. data/assets/mirador/fonts/MaterialIcons-Regular.ijmap +1 -0
  41. data/assets/mirador/fonts/MaterialIcons-Regular.svg +2373 -0
  42. data/assets/mirador/fonts/MaterialIcons-Regular.ttf +0 -0
  43. data/assets/mirador/fonts/MaterialIcons-Regular.woff +0 -0
  44. data/assets/mirador/fonts/MaterialIcons-Regular.woff2 +0 -0
  45. data/assets/mirador/fonts/fontawesome-webfont.eot +0 -0
  46. data/assets/mirador/fonts/fontawesome-webfont.svg +2671 -0
  47. data/assets/mirador/fonts/fontawesome-webfont.ttf +0 -0
  48. data/assets/mirador/fonts/fontawesome-webfont.woff +0 -0
  49. data/assets/mirador/fonts/fontawesome-webfont.woff2 +0 -0
  50. data/assets/mirador/images/border_type_1.png +0 -0
  51. data/assets/mirador/images/border_type_2.png +0 -0
  52. data/assets/mirador/images/border_type_3.png +0 -0
  53. data/assets/mirador/images/border_type_4.png +0 -0
  54. data/assets/mirador/images/border_type_5.png +0 -0
  55. data/assets/mirador/images/debut_dark.png +0 -0
  56. data/assets/mirador/locales/ar/translation.json +42 -0
  57. data/assets/mirador/locales/de/translation.json +103 -0
  58. data/assets/mirador/locales/en/translation.json +106 -0
  59. data/assets/mirador/locales/es/translation.json +86 -0
  60. data/assets/mirador/locales/fr/translation.json +103 -0
  61. data/assets/mirador/locales/ga/translation.json +97 -0
  62. data/assets/mirador/locales/ja/translation.json +82 -0
  63. data/assets/mirador/locales/ko/translation.json +83 -0
  64. data/assets/mirador/locales/nl/translation.json +39 -0
  65. data/assets/mirador/locales/zh-CN/translation.json +76 -0
  66. data/assets/mirador/locales/zh-TW/translation.json +76 -0
  67. data/assets/mirador/locales/zh/translation.json +74 -0
  68. data/assets/mirador/mirador.js +49145 -0
  69. data/assets/mirador/plugins/advlist/index.js +7 -0
  70. data/assets/mirador/plugins/advlist/plugin.js +160 -0
  71. data/assets/mirador/plugins/advlist/plugin.min.js +1 -0
  72. data/assets/mirador/plugins/anchor/index.js +7 -0
  73. data/assets/mirador/plugins/anchor/plugin.js +118 -0
  74. data/assets/mirador/plugins/anchor/plugin.min.js +1 -0
  75. data/assets/mirador/plugins/autolink/index.js +7 -0
  76. data/assets/mirador/plugins/autolink/plugin.js +180 -0
  77. data/assets/mirador/plugins/autolink/plugin.min.js +1 -0
  78. data/assets/mirador/plugins/autoresize/index.js +7 -0
  79. data/assets/mirador/plugins/autoresize/plugin.js +169 -0
  80. data/assets/mirador/plugins/autoresize/plugin.min.js +1 -0
  81. data/assets/mirador/plugins/autosave/index.js +7 -0
  82. data/assets/mirador/plugins/autosave/plugin.js +226 -0
  83. data/assets/mirador/plugins/autosave/plugin.min.js +1 -0
  84. data/assets/mirador/plugins/bbcode/index.js +7 -0
  85. data/assets/mirador/plugins/bbcode/plugin.js +101 -0
  86. data/assets/mirador/plugins/bbcode/plugin.min.js +1 -0
  87. data/assets/mirador/plugins/charmap/index.js +7 -0
  88. data/assets/mirador/plugins/charmap/plugin.js +1275 -0
  89. data/assets/mirador/plugins/charmap/plugin.min.js +1 -0
  90. data/assets/mirador/plugins/code/index.js +7 -0
  91. data/assets/mirador/plugins/code/plugin.js +94 -0
  92. data/assets/mirador/plugins/code/plugin.min.js +1 -0
  93. data/assets/mirador/plugins/codesample/css/prism.css +138 -0
  94. data/assets/mirador/plugins/codesample/index.js +7 -0
  95. data/assets/mirador/plugins/codesample/plugin.js +967 -0
  96. data/assets/mirador/plugins/codesample/plugin.min.js +1 -0
  97. data/assets/mirador/plugins/colorpicker/index.js +7 -0
  98. data/assets/mirador/plugins/colorpicker/plugin.js +126 -0
  99. data/assets/mirador/plugins/colorpicker/plugin.min.js +1 -0
  100. data/assets/mirador/plugins/contextmenu/index.js +7 -0
  101. data/assets/mirador/plugins/contextmenu/plugin.js +168 -0
  102. data/assets/mirador/plugins/contextmenu/plugin.min.js +1 -0
  103. data/assets/mirador/plugins/directionality/index.js +7 -0
  104. data/assets/mirador/plugins/directionality/plugin.js +66 -0
  105. data/assets/mirador/plugins/directionality/plugin.min.js +1 -0
  106. data/assets/mirador/plugins/emoticons/img/smiley-cool.gif +0 -0
  107. data/assets/mirador/plugins/emoticons/img/smiley-cry.gif +0 -0
  108. data/assets/mirador/plugins/emoticons/img/smiley-embarassed.gif +0 -0
  109. data/assets/mirador/plugins/emoticons/img/smiley-foot-in-mouth.gif +0 -0
  110. data/assets/mirador/plugins/emoticons/img/smiley-frown.gif +0 -0
  111. data/assets/mirador/plugins/emoticons/img/smiley-innocent.gif +0 -0
  112. data/assets/mirador/plugins/emoticons/img/smiley-kiss.gif +0 -0
  113. data/assets/mirador/plugins/emoticons/img/smiley-laughing.gif +0 -0
  114. data/assets/mirador/plugins/emoticons/img/smiley-money-mouth.gif +0 -0
  115. data/assets/mirador/plugins/emoticons/img/smiley-sealed.gif +0 -0
  116. data/assets/mirador/plugins/emoticons/img/smiley-smile.gif +0 -0
  117. data/assets/mirador/plugins/emoticons/img/smiley-surprised.gif +0 -0
  118. data/assets/mirador/plugins/emoticons/img/smiley-tongue-out.gif +0 -0
  119. data/assets/mirador/plugins/emoticons/img/smiley-undecided.gif +0 -0
  120. data/assets/mirador/plugins/emoticons/img/smiley-wink.gif +0 -0
  121. data/assets/mirador/plugins/emoticons/img/smiley-yell.gif +0 -0
  122. data/assets/mirador/plugins/emoticons/index.js +7 -0
  123. data/assets/mirador/plugins/emoticons/plugin.js +87 -0
  124. data/assets/mirador/plugins/emoticons/plugin.min.js +1 -0
  125. data/assets/mirador/plugins/fullpage/index.js +7 -0
  126. data/assets/mirador/plugins/fullpage/plugin.js +519 -0
  127. data/assets/mirador/plugins/fullpage/plugin.min.js +1 -0
  128. data/assets/mirador/plugins/fullscreen/index.js +7 -0
  129. data/assets/mirador/plugins/fullscreen/plugin.js +177 -0
  130. data/assets/mirador/plugins/fullscreen/plugin.min.js +1 -0
  131. data/assets/mirador/plugins/help/img/logo.png +0 -0
  132. data/assets/mirador/plugins/help/index.js +7 -0
  133. data/assets/mirador/plugins/help/plugin.js +727 -0
  134. data/assets/mirador/plugins/help/plugin.min.js +1 -0
  135. data/assets/mirador/plugins/hr/index.js +7 -0
  136. data/assets/mirador/plugins/hr/plugin.js +39 -0
  137. data/assets/mirador/plugins/hr/plugin.min.js +1 -0
  138. data/assets/mirador/plugins/image/index.js +7 -0
  139. data/assets/mirador/plugins/image/plugin.js +1211 -0
  140. data/assets/mirador/plugins/image/plugin.min.js +1 -0
  141. data/assets/mirador/plugins/imagetools/index.js +7 -0
  142. data/assets/mirador/plugins/imagetools/plugin.js +3684 -0
  143. data/assets/mirador/plugins/imagetools/plugin.min.js +1 -0
  144. data/assets/mirador/plugins/importcss/index.js +7 -0
  145. data/assets/mirador/plugins/importcss/plugin.js +264 -0
  146. data/assets/mirador/plugins/importcss/plugin.min.js +1 -0
  147. data/assets/mirador/plugins/insertdatetime/index.js +7 -0
  148. data/assets/mirador/plugins/insertdatetime/plugin.js +173 -0
  149. data/assets/mirador/plugins/insertdatetime/plugin.min.js +1 -0
  150. data/assets/mirador/plugins/legacyoutput/index.js +7 -0
  151. data/assets/mirador/plugins/legacyoutput/plugin.js +220 -0
  152. data/assets/mirador/plugins/legacyoutput/plugin.min.js +1 -0
  153. data/assets/mirador/plugins/link/index.js +7 -0
  154. data/assets/mirador/plugins/link/plugin.js +713 -0
  155. data/assets/mirador/plugins/link/plugin.min.js +1 -0
  156. data/assets/mirador/plugins/lists/index.js +7 -0
  157. data/assets/mirador/plugins/lists/plugin.js +1115 -0
  158. data/assets/mirador/plugins/lists/plugin.min.js +1 -0
  159. data/assets/mirador/plugins/media/index.js +7 -0
  160. data/assets/mirador/plugins/media/plugin.js +1166 -0
  161. data/assets/mirador/plugins/media/plugin.min.js +1 -0
  162. data/assets/mirador/plugins/nonbreaking/index.js +7 -0
  163. data/assets/mirador/plugins/nonbreaking/plugin.js +85 -0
  164. data/assets/mirador/plugins/nonbreaking/plugin.min.js +1 -0
  165. data/assets/mirador/plugins/noneditable/index.js +7 -0
  166. data/assets/mirador/plugins/noneditable/plugin.js +118 -0
  167. data/assets/mirador/plugins/noneditable/plugin.min.js +1 -0
  168. data/assets/mirador/plugins/pagebreak/index.js +7 -0
  169. data/assets/mirador/plugins/pagebreak/plugin.js +109 -0
  170. data/assets/mirador/plugins/pagebreak/plugin.min.js +1 -0
  171. data/assets/mirador/plugins/paste/index.js +7 -0
  172. data/assets/mirador/plugins/paste/plugin.js +1497 -0
  173. data/assets/mirador/plugins/paste/plugin.min.js +1 -0
  174. data/assets/mirador/plugins/preview/index.js +7 -0
  175. data/assets/mirador/plugins/preview/plugin.js +123 -0
  176. data/assets/mirador/plugins/preview/plugin.min.js +1 -0
  177. data/assets/mirador/plugins/print/index.js +7 -0
  178. data/assets/mirador/plugins/print/plugin.js +38 -0
  179. data/assets/mirador/plugins/print/plugin.min.js +1 -0
  180. data/assets/mirador/plugins/save/index.js +7 -0
  181. data/assets/mirador/plugins/save/plugin.js +120 -0
  182. data/assets/mirador/plugins/save/plugin.min.js +1 -0
  183. data/assets/mirador/plugins/searchreplace/index.js +7 -0
  184. data/assets/mirador/plugins/searchreplace/plugin.js +603 -0
  185. data/assets/mirador/plugins/searchreplace/plugin.min.js +1 -0
  186. data/assets/mirador/plugins/spellchecker/index.js +7 -0
  187. data/assets/mirador/plugins/spellchecker/plugin.js +757 -0
  188. data/assets/mirador/plugins/spellchecker/plugin.min.js +1 -0
  189. data/assets/mirador/plugins/tabfocus/index.js +7 -0
  190. data/assets/mirador/plugins/tabfocus/plugin.js +124 -0
  191. data/assets/mirador/plugins/tabfocus/plugin.min.js +1 -0
  192. data/assets/mirador/plugins/table/index.js +7 -0
  193. data/assets/mirador/plugins/table/plugin.js +10144 -0
  194. data/assets/mirador/plugins/table/plugin.min.js +1 -0
  195. data/assets/mirador/plugins/template/index.js +7 -0
  196. data/assets/mirador/plugins/template/plugin.js +345 -0
  197. data/assets/mirador/plugins/template/plugin.min.js +1 -0
  198. data/assets/mirador/plugins/textcolor/index.js +7 -0
  199. data/assets/mirador/plugins/textcolor/plugin.js +346 -0
  200. data/assets/mirador/plugins/textcolor/plugin.min.js +1 -0
  201. data/assets/mirador/plugins/textpattern/index.js +7 -0
  202. data/assets/mirador/plugins/textpattern/plugin.js +370 -0
  203. data/assets/mirador/plugins/textpattern/plugin.min.js +1 -0
  204. data/assets/mirador/plugins/toc/index.js +7 -0
  205. data/assets/mirador/plugins/toc/plugin.js +228 -0
  206. data/assets/mirador/plugins/toc/plugin.min.js +1 -0
  207. data/assets/mirador/plugins/visualblocks/css/visualblocks.css +154 -0
  208. data/assets/mirador/plugins/visualblocks/index.js +7 -0
  209. data/assets/mirador/plugins/visualblocks/plugin.js +135 -0
  210. data/assets/mirador/plugins/visualblocks/plugin.min.js +1 -0
  211. data/assets/mirador/plugins/visualchars/index.js +7 -0
  212. data/assets/mirador/plugins/visualchars/plugin.js +505 -0
  213. data/assets/mirador/plugins/visualchars/plugin.min.js +1 -0
  214. data/assets/mirador/plugins/wordcount/index.js +7 -0
  215. data/assets/mirador/plugins/wordcount/plugin.js +343 -0
  216. data/assets/mirador/plugins/wordcount/plugin.min.js +1 -0
  217. data/assets/mirador/skins/lightgray/content.inline.min.css +1 -0
  218. data/assets/mirador/skins/lightgray/content.min.css +1 -0
  219. data/assets/mirador/skins/lightgray/content.mobile.min.css +1 -0
  220. data/assets/mirador/skins/lightgray/fonts/tinymce-mobile.woff +0 -0
  221. data/assets/mirador/skins/lightgray/fonts/tinymce-small.eot +0 -0
  222. data/assets/mirador/skins/lightgray/fonts/tinymce-small.svg +63 -0
  223. data/assets/mirador/skins/lightgray/fonts/tinymce-small.ttf +0 -0
  224. data/assets/mirador/skins/lightgray/fonts/tinymce-small.woff +0 -0
  225. data/assets/mirador/skins/lightgray/fonts/tinymce.eot +0 -0
  226. data/assets/mirador/skins/lightgray/fonts/tinymce.svg +131 -0
  227. data/assets/mirador/skins/lightgray/fonts/tinymce.ttf +0 -0
  228. data/assets/mirador/skins/lightgray/fonts/tinymce.woff +0 -0
  229. data/assets/mirador/skins/lightgray/img/anchor.gif +0 -0
  230. data/assets/mirador/skins/lightgray/img/loader.gif +0 -0
  231. data/assets/mirador/skins/lightgray/img/object.gif +0 -0
  232. data/assets/mirador/skins/lightgray/img/trans.gif +0 -0
  233. data/assets/mirador/skins/lightgray/skin.min.css +1 -0
  234. data/assets/mirador/skins/lightgray/skin.mobile.min.css +2 -0
  235. data/assets/mirador/themes/inlite/index.js +7 -0
  236. data/assets/mirador/themes/inlite/theme.js +10235 -0
  237. data/assets/mirador/themes/inlite/theme.min.js +1 -0
  238. data/assets/mirador/themes/mobile/index.js +7 -0
  239. data/assets/mirador/themes/mobile/theme.js +13546 -0
  240. data/assets/mirador/themes/mobile/theme.min.js +1 -0
  241. data/assets/mirador/themes/modern/index.js +7 -0
  242. data/assets/mirador/themes/modern/theme.js +10041 -0
  243. data/assets/mirador/themes/modern/theme.min.js +1 -0
  244. data/assets/styles.scss +51 -0
  245. metadata +343 -0
@@ -0,0 +1 @@
1
+ !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t,o){var r;return t.dom.getParents(t.selection.getStart(),function(t){var e;(e=t.style["forecolor"===o?"color":"background-color"])&&(r=r||e)}),r},g=function(t){var e,o=[];for(e=0;e<t.length;e+=2)o.push({text:t[e+1],color:"#"+t[e]});return o},r=function(t,e,o){t.undoManager.transact(function(){t.focus(),t.formatter.apply(e,{value:o}),t.nodeChanged()})},e=function(t,e){t.undoManager.transact(function(){t.focus(),t.formatter.remove(e,{value:null},null,!0),t.nodeChanged()})},o=function(o){o.addCommand("mceApplyTextcolor",function(t,e){r(o,t,e)}),o.addCommand("mceRemoveTextcolor",function(t){e(o,t)})},F=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=["000000","Black","993300","Burnt orange","333300","Dark olive","003300","Dark green","003366","Dark azure","000080","Navy Blue","333399","Indigo","333333","Very dark gray","800000","Maroon","FF6600","Orange","808000","Olive","008000","Green","008080","Teal","0000FF","Blue","666699","Grayish blue","808080","Gray","FF0000","Red","FF9900","Amber","99CC00","Yellow green","339966","Sea green","33CCCC","Turquoise","3366FF","Royal blue","800080","Purple","999999","Medium gray","FF00FF","Magenta","FFCC00","Gold","FFFF00","Yellow","00FF00","Lime","00FFFF","Aqua","00CCFF","Sky blue","993366","Red violet","FFFFFF","White","FF99CC","Pink","FFCC99","Peach","FFFF99","Light yellow","CCFFCC","Pale green","CCFFFF","Pale cyan","99CCFF","Light sky blue","CC99FF","Plum"],l=function(t){return t.getParam("textcolor_map",a)},c=function(t){return t.getParam("textcolor_rows",5)},u=function(t){return t.getParam("textcolor_cols",8)},m=function(t){return t.getParam("color_picker_callback",null)},s=function(t){return t.getParam("forecolor_map",l(t))},d=function(t){return t.getParam("backcolor_map",l(t))},f=function(t){return t.getParam("forecolor_rows",c(t))},b=function(t){return t.getParam("backcolor_rows",c(t))},p=function(t){return t.getParam("forecolor_cols",u(t))},C=function(t){return t.getParam("backcolor_cols",u(t))},y=m,v=function(t){return"function"==typeof m(t)},h=tinymce.util.Tools.resolve("tinymce.util.I18n"),P=function(t,e,o,r){var n,a,l,c,i,u,m,s=0,d=F.DOM.uniqueId("mcearia"),f=function(t,e){var o="transparent"===t;return'<td class="mce-grid-cell'+(o?" mce-colorbtn-trans":"")+'"><div id="'+d+"-"+s+++'" data-mce-color="'+(t||"")+'" role="option" tabIndex="-1" style="'+(t?"background-color: "+t:"")+'" title="'+h.translate(e)+'">'+(o?"&#215;":"")+"</div></td>"};for((n=g(o)).push({text:h.translate("No color"),color:"transparent"}),l='<table class="mce-grid mce-grid-border mce-colorbutton-grid" role="list" cellspacing="0"><tbody>',c=n.length-1,u=0;u<e;u++){for(l+="<tr>",i=0;i<t;i++)l+=c<(m=u*t+i)?"<td></td>":f((a=n[m]).color,a.text);l+="</tr>"}if(r){for(l+='<tr><td colspan="'+t+'" class="mce-custom-color-btn"><div id="'+d+'-c" class="mce-widget mce-btn mce-btn-small mce-btn-flat" role="button" tabindex="-1" aria-labelledby="'+d+'-c" style="width: 100%"><button type="button" role="presentation" tabindex="-1">'+h.translate("Custom...")+"</button></div></td></tr>",l+="<tr>",i=0;i<t;i++)l+=f("","Custom color");l+="</tr>"}return l+="</tbody></table>"},k=function(t,e){t.style.background=e,t.setAttribute("data-mce-color",e)},x=function(o){return function(t){var e=t.control;e._color?o.execCommand("mceApplyTextcolor",e.settings.format,e._color):o.execCommand("mceRemoveTextcolor",e.settings.format)}},T=function(r,c){return function(t){var e,a=this.parent(),o=n(r,a.settings.format),l=function(t){r.execCommand("mceApplyTextcolor",a.settings.format,t),a.hidePanel(),a.color(t)};F.DOM.getParent(t.target,".mce-custom-color-btn")&&(a.hidePanel(),y(r).call(r,function(t){var e,o,r,n=a.panel.getEl().getElementsByTagName("table")[0];for(e=i.map(n.rows[n.rows.length-1].childNodes,function(t){return t.firstChild}),r=0;r<e.length&&(o=e[r]).getAttribute("data-mce-color");r++);if(r===c)for(r=0;r<c-1;r++)k(e[r],e[r+1].getAttribute("data-mce-color"));k(o,t),l(t)},o)),(e=t.target.getAttribute("data-mce-color"))?(this.lastId&&F.DOM.get(this.lastId).setAttribute("aria-selected","false"),t.target.setAttribute("aria-selected",!0),this.lastId=t.target.id,"transparent"===e?(r.execCommand("mceRemoveTextcolor",a.settings.format),a.hidePanel(),a.resetColor()):l(e)):null!==e&&a.hidePanel()}},_=function(n,a){return function(){var t=a?p(n):C(n),e=a?f(n):b(n),o=a?s(n):d(n),r=v(n);return P(t,e,o,r)}},A=function(t){t.addButton("forecolor",{type:"colorbutton",tooltip:"Text color",format:"forecolor",panel:{role:"application",ariaRemember:!0,html:_(t,!0),onclick:T(t,p(t))},onclick:x(t)}),t.addButton("backcolor",{type:"colorbutton",tooltip:"Background color",format:"hilitecolor",panel:{role:"application",ariaRemember:!0,html:_(t,!1),onclick:T(t,C(t))},onclick:x(t)})};t.add("textcolor",function(t){o(t),A(t)})}();
@@ -0,0 +1,7 @@
1
+ // Exports the "textpattern" plugin for usage with module loaders
2
+ // Usage:
3
+ // CommonJS:
4
+ // require('tinymce/plugins/textpattern')
5
+ // ES2015:
6
+ // import 'tinymce/plugins/textpattern'
7
+ require('./plugin.js');
@@ -0,0 +1,370 @@
1
+ (function () {
2
+ var textpattern = (function () {
3
+ 'use strict';
4
+
5
+ var Cell = function (initial) {
6
+ var value = initial;
7
+ var get = function () {
8
+ return value;
9
+ };
10
+ var set = function (v) {
11
+ value = v;
12
+ };
13
+ var clone = function () {
14
+ return Cell(get());
15
+ };
16
+ return {
17
+ get: get,
18
+ set: set,
19
+ clone: clone
20
+ };
21
+ };
22
+
23
+ var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
24
+
25
+ var get = function (patternsState) {
26
+ var setPatterns = function (newPatterns) {
27
+ patternsState.set(newPatterns);
28
+ };
29
+ var getPatterns = function () {
30
+ return patternsState.get();
31
+ };
32
+ return {
33
+ setPatterns: setPatterns,
34
+ getPatterns: getPatterns
35
+ };
36
+ };
37
+ var $_fahwbkrrjm0og24j = { get: get };
38
+
39
+ var defaultPatterns = [
40
+ {
41
+ start: '*',
42
+ end: '*',
43
+ format: 'italic'
44
+ },
45
+ {
46
+ start: '**',
47
+ end: '**',
48
+ format: 'bold'
49
+ },
50
+ {
51
+ start: '***',
52
+ end: '***',
53
+ format: [
54
+ 'bold',
55
+ 'italic'
56
+ ]
57
+ },
58
+ {
59
+ start: '#',
60
+ format: 'h1'
61
+ },
62
+ {
63
+ start: '##',
64
+ format: 'h2'
65
+ },
66
+ {
67
+ start: '###',
68
+ format: 'h3'
69
+ },
70
+ {
71
+ start: '####',
72
+ format: 'h4'
73
+ },
74
+ {
75
+ start: '#####',
76
+ format: 'h5'
77
+ },
78
+ {
79
+ start: '######',
80
+ format: 'h6'
81
+ },
82
+ {
83
+ start: '1. ',
84
+ cmd: 'InsertOrderedList'
85
+ },
86
+ {
87
+ start: '* ',
88
+ cmd: 'InsertUnorderedList'
89
+ },
90
+ {
91
+ start: '- ',
92
+ cmd: 'InsertUnorderedList'
93
+ }
94
+ ];
95
+ var getPatterns = function (editorSettings) {
96
+ return editorSettings.textpattern_patterns !== undefined ? editorSettings.textpattern_patterns : defaultPatterns;
97
+ };
98
+ var $_g0jjoersjm0og24k = { getPatterns: getPatterns };
99
+
100
+ var global$1 = tinymce.util.Tools.resolve('tinymce.util.Delay');
101
+
102
+ var global$2 = tinymce.util.Tools.resolve('tinymce.util.VK');
103
+
104
+ var global$3 = tinymce.util.Tools.resolve('tinymce.dom.TreeWalker');
105
+
106
+ var global$4 = tinymce.util.Tools.resolve('tinymce.util.Tools');
107
+
108
+ var sortPatterns = function (patterns) {
109
+ return patterns.sort(function (a, b) {
110
+ if (a.start.length > b.start.length) {
111
+ return -1;
112
+ }
113
+ if (a.start.length < b.start.length) {
114
+ return 1;
115
+ }
116
+ return 0;
117
+ });
118
+ };
119
+ var findPattern = function (patterns, text) {
120
+ for (var i = 0; i < patterns.length; i++) {
121
+ if (text.indexOf(patterns[i].start) !== 0) {
122
+ continue;
123
+ }
124
+ if (patterns[i].end && text.lastIndexOf(patterns[i].end) !== text.length - patterns[i].end.length) {
125
+ continue;
126
+ }
127
+ return patterns[i];
128
+ }
129
+ };
130
+ var isMatchingPattern = function (pattern, text, offset, delta) {
131
+ var textEnd = text.substr(offset - pattern.end.length - delta, pattern.end.length);
132
+ return textEnd === pattern.end;
133
+ };
134
+ var hasContent = function (offset, delta, pattern) {
135
+ return offset - delta - pattern.end.length - pattern.start.length > 0;
136
+ };
137
+ var findEndPattern = function (patterns, text, offset, delta) {
138
+ var pattern, i;
139
+ var sortedPatterns = sortPatterns(patterns);
140
+ for (i = 0; i < sortedPatterns.length; i++) {
141
+ pattern = sortedPatterns[i];
142
+ if (pattern.end !== undefined && isMatchingPattern(pattern, text, offset, delta) && hasContent(offset, delta, pattern)) {
143
+ return pattern;
144
+ }
145
+ }
146
+ };
147
+ var $_3oc24fs0jm0og24y = {
148
+ findPattern: findPattern,
149
+ findEndPattern: findEndPattern
150
+ };
151
+
152
+ var splitContainer = function (container, pattern, endOffset, startOffset, space) {
153
+ container = startOffset > 0 ? container.splitText(startOffset) : container;
154
+ container.splitText(endOffset - startOffset + pattern.end.length);
155
+ container.deleteData(0, pattern.start.length);
156
+ container.deleteData(container.data.length - pattern.end.length, pattern.end.length);
157
+ return container;
158
+ };
159
+ var patternFromRng = function (patterns, rng, space) {
160
+ if (rng.collapsed === false) {
161
+ return;
162
+ }
163
+ var container = rng.startContainer;
164
+ var text = container.data;
165
+ var delta = space === true ? 1 : 0;
166
+ if (container.nodeType !== 3) {
167
+ return;
168
+ }
169
+ var endPattern = $_3oc24fs0jm0og24y.findEndPattern(patterns, text, rng.startOffset, delta);
170
+ if (endPattern === undefined) {
171
+ return;
172
+ }
173
+ var endOffset = text.lastIndexOf(endPattern.end, rng.startOffset - delta);
174
+ var startOffset = text.lastIndexOf(endPattern.start, endOffset - endPattern.end.length);
175
+ endOffset = text.indexOf(endPattern.end, startOffset + endPattern.start.length);
176
+ if (startOffset === -1) {
177
+ return;
178
+ }
179
+ var patternRng = document.createRange();
180
+ patternRng.setStart(container, startOffset);
181
+ patternRng.setEnd(container, endOffset + endPattern.end.length);
182
+ var startPattern = $_3oc24fs0jm0og24y.findPattern(patterns, patternRng.toString());
183
+ if (endPattern === undefined || startPattern !== endPattern || container.data.length <= endPattern.start.length + endPattern.end.length) {
184
+ return;
185
+ }
186
+ return {
187
+ pattern: endPattern,
188
+ startOffset: startOffset,
189
+ endOffset: endOffset
190
+ };
191
+ };
192
+ var splitAndApply = function (editor, container, found, space) {
193
+ var formatArray = global$4.isArray(found.pattern.format) ? found.pattern.format : [found.pattern.format];
194
+ var validFormats = global$4.grep(formatArray, function (formatName) {
195
+ var format = editor.formatter.get(formatName);
196
+ return format && format[0].inline;
197
+ });
198
+ if (validFormats.length !== 0) {
199
+ editor.undoManager.transact(function () {
200
+ container = splitContainer(container, found.pattern, found.endOffset, found.startOffset, space);
201
+ formatArray.forEach(function (format) {
202
+ editor.formatter.apply(format, {}, container);
203
+ });
204
+ });
205
+ return container;
206
+ }
207
+ };
208
+ var doApplyInlineFormat = function (editor, patterns, space) {
209
+ var rng = editor.selection.getRng(true);
210
+ var foundPattern = patternFromRng(patterns, rng, space);
211
+ if (foundPattern) {
212
+ return splitAndApply(editor, rng.startContainer, foundPattern, space);
213
+ }
214
+ };
215
+ var applyInlineFormatSpace = function (editor, patterns) {
216
+ return doApplyInlineFormat(editor, patterns, true);
217
+ };
218
+ var applyInlineFormatEnter = function (editor, patterns) {
219
+ return doApplyInlineFormat(editor, patterns, false);
220
+ };
221
+ var applyBlockFormat = function (editor, patterns) {
222
+ var selection, dom, container, firstTextNode, node, format, textBlockElm, pattern, walker, rng, offset;
223
+ selection = editor.selection;
224
+ dom = editor.dom;
225
+ if (!selection.isCollapsed()) {
226
+ return;
227
+ }
228
+ textBlockElm = dom.getParent(selection.getStart(), 'p');
229
+ if (textBlockElm) {
230
+ walker = new global$3(textBlockElm, textBlockElm);
231
+ while (node = walker.next()) {
232
+ if (node.nodeType === 3) {
233
+ firstTextNode = node;
234
+ break;
235
+ }
236
+ }
237
+ if (firstTextNode) {
238
+ pattern = $_3oc24fs0jm0og24y.findPattern(patterns, firstTextNode.data);
239
+ if (!pattern) {
240
+ return;
241
+ }
242
+ rng = selection.getRng(true);
243
+ container = rng.startContainer;
244
+ offset = rng.startOffset;
245
+ if (firstTextNode === container) {
246
+ offset = Math.max(0, offset - pattern.start.length);
247
+ }
248
+ if (global$4.trim(firstTextNode.data).length === pattern.start.length) {
249
+ return;
250
+ }
251
+ if (pattern.format) {
252
+ format = editor.formatter.get(pattern.format);
253
+ if (format && format[0].block) {
254
+ firstTextNode.deleteData(0, pattern.start.length);
255
+ editor.formatter.apply(pattern.format, {}, firstTextNode);
256
+ rng.setStart(container, offset);
257
+ rng.collapse(true);
258
+ selection.setRng(rng);
259
+ }
260
+ }
261
+ if (pattern.cmd) {
262
+ editor.undoManager.transact(function () {
263
+ firstTextNode.deleteData(0, pattern.start.length);
264
+ editor.execCommand(pattern.cmd);
265
+ });
266
+ }
267
+ }
268
+ }
269
+ };
270
+ var $_bmyseirxjm0og24s = {
271
+ patternFromRng: patternFromRng,
272
+ applyInlineFormatSpace: applyInlineFormatSpace,
273
+ applyInlineFormatEnter: applyInlineFormatEnter,
274
+ applyBlockFormat: applyBlockFormat
275
+ };
276
+
277
+ function handleEnter(editor, patterns) {
278
+ var wrappedTextNode, rng;
279
+ wrappedTextNode = $_bmyseirxjm0og24s.applyInlineFormatEnter(editor, patterns);
280
+ if (wrappedTextNode) {
281
+ rng = editor.dom.createRng();
282
+ rng.setStart(wrappedTextNode, wrappedTextNode.data.length);
283
+ rng.setEnd(wrappedTextNode, wrappedTextNode.data.length);
284
+ editor.selection.setRng(rng);
285
+ }
286
+ $_bmyseirxjm0og24s.applyBlockFormat(editor, patterns);
287
+ }
288
+ function handleInlineKey(editor, patterns) {
289
+ var wrappedTextNode, lastChar, lastCharNode, rng, dom;
290
+ wrappedTextNode = $_bmyseirxjm0og24s.applyInlineFormatSpace(editor, patterns);
291
+ if (wrappedTextNode) {
292
+ dom = editor.dom;
293
+ lastChar = wrappedTextNode.data.slice(-1);
294
+ if (/[\u00a0 ]/.test(lastChar)) {
295
+ wrappedTextNode.deleteData(wrappedTextNode.data.length - 1, 1);
296
+ lastCharNode = dom.doc.createTextNode(lastChar);
297
+ dom.insertAfter(lastCharNode, wrappedTextNode.parentNode);
298
+ rng = dom.createRng();
299
+ rng.setStart(lastCharNode, 1);
300
+ rng.setEnd(lastCharNode, 1);
301
+ editor.selection.setRng(rng);
302
+ }
303
+ }
304
+ }
305
+ var checkKeyEvent = function (codes, event, predicate) {
306
+ for (var i = 0; i < codes.length; i++) {
307
+ if (predicate(codes[i], event)) {
308
+ return true;
309
+ }
310
+ }
311
+ };
312
+ var checkKeyCode = function (codes, event) {
313
+ return checkKeyEvent(codes, event, function (code, event) {
314
+ return code === event.keyCode && global$2.modifierPressed(event) === false;
315
+ });
316
+ };
317
+ var checkCharCode = function (chars, event) {
318
+ return checkKeyEvent(chars, event, function (chr, event) {
319
+ return chr.charCodeAt(0) === event.charCode;
320
+ });
321
+ };
322
+ var $_7ay2cvrwjm0og24o = {
323
+ handleEnter: handleEnter,
324
+ handleInlineKey: handleInlineKey,
325
+ checkCharCode: checkCharCode,
326
+ checkKeyCode: checkKeyCode
327
+ };
328
+
329
+ var setup = function (editor, patternsState) {
330
+ var charCodes = [
331
+ ',',
332
+ '.',
333
+ ';',
334
+ ':',
335
+ '!',
336
+ '?'
337
+ ];
338
+ var keyCodes = [32];
339
+ editor.on('keydown', function (e) {
340
+ if (e.keyCode === 13 && !global$2.modifierPressed(e)) {
341
+ $_7ay2cvrwjm0og24o.handleEnter(editor, patternsState.get());
342
+ }
343
+ }, true);
344
+ editor.on('keyup', function (e) {
345
+ if ($_7ay2cvrwjm0og24o.checkKeyCode(keyCodes, e)) {
346
+ $_7ay2cvrwjm0og24o.handleInlineKey(editor, patternsState.get());
347
+ }
348
+ });
349
+ editor.on('keypress', function (e) {
350
+ if ($_7ay2cvrwjm0og24o.checkCharCode(charCodes, e)) {
351
+ global$1.setEditorTimeout(editor, function () {
352
+ $_7ay2cvrwjm0og24o.handleInlineKey(editor, patternsState.get());
353
+ });
354
+ }
355
+ });
356
+ };
357
+ var $_8221thrtjm0og24l = { setup: setup };
358
+
359
+ global.add('textpattern', function (editor) {
360
+ var patternsState = Cell($_g0jjoersjm0og24k.getPatterns(editor.settings));
361
+ $_8221thrtjm0og24l.setup(editor, patternsState);
362
+ return $_fahwbkrrjm0og24j.get(patternsState);
363
+ });
364
+ function Plugin () {
365
+ }
366
+
367
+ return Plugin;
368
+
369
+ }());
370
+ })();
@@ -0,0 +1 @@
1
+ !function(){"use strict";var r=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return r(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(e){return{setPatterns:function(t){e.set(t)},getPatterns:function(){return e.get()}}},e=[{start:"*",end:"*",format:"italic"},{start:"**",end:"**",format:"bold"},{start:"***",end:"***",format:["bold","italic"]},{start:"#",format:"h1"},{start:"##",format:"h2"},{start:"###",format:"h3"},{start:"####",format:"h4"},{start:"#####",format:"h5"},{start:"######",format:"h6"},{start:"1. ",cmd:"InsertOrderedList"},{start:"* ",cmd:"InsertUnorderedList"},{start:"- ",cmd:"InsertUnorderedList"}],a=function(t){return t.textpattern_patterns!==undefined?t.textpattern_patterns:e},o=tinymce.util.Tools.resolve("tinymce.util.Delay"),i=tinymce.util.Tools.resolve("tinymce.util.VK"),g=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),h=tinymce.util.Tools.resolve("tinymce.util.Tools"),m=function(t,e){for(var n=0;n<t.length;n++)if(0===e.indexOf(t[n].start)&&(!t[n].end||e.lastIndexOf(t[n].end)===e.length-t[n].end.length))return t[n]},c=function(t,e,n,r){var a,o,i,s,d,f,l=t.sort(function(t,e){return t.start.length>e.start.length?-1:t.start.length<e.start.length?1:0});for(o=0;o<l.length;o++)if((a=l[o]).end!==undefined&&(s=a,d=n,f=r,e.substr(d-s.end.length-f,s.end.length)===s.end)&&0<n-r-(i=a).end.length-i.start.length)return a},s=function(t,e,n){if(!1!==e.collapsed){var r=e.startContainer,a=r.data,o=!0===n?1:0;if(3===r.nodeType){var i=c(t,a,e.startOffset,o);if(i!==undefined){var s=a.lastIndexOf(i.end,e.startOffset-o),d=a.lastIndexOf(i.start,s-i.end.length);if(s=a.indexOf(i.end,d+i.start.length),-1!==d){var f=document.createRange();f.setStart(r,d),f.setEnd(r,s+i.end.length);var l=m(t,f.toString());if(!(i===undefined||l!==i||r.data.length<=i.start.length+i.end.length))return{pattern:i,startOffset:d,endOffset:s}}}}}},d=function(t,e,n){var r=t.selection.getRng(!0),a=s(e,r,n);if(a)return function(a,o,i,t){var s=h.isArray(i.pattern.format)?i.pattern.format:[i.pattern.format];if(0!==h.grep(s,function(t){var e=a.formatter.get(t);return e&&e[0].inline}).length)return a.undoManager.transact(function(){var t,e,n,r;t=o,e=i.pattern,n=i.endOffset,r=i.startOffset,(t=0<r?t.splitText(r):t).splitText(n-r+e.end.length),t.deleteData(0,e.start.length),t.deleteData(t.data.length-e.end.length,e.end.length),o=t,s.forEach(function(t){a.formatter.apply(t,{},o)})}),o}(t,r.startContainer,a)},f=function(t,e){return d(t,e,!0)},l=function(t,e){return d(t,e,!1)},u=function(t,e){var n,r,a,o,i,s,d,f,l,c,u;if(n=t.selection,r=t.dom,n.isCollapsed()&&(d=r.getParent(n.getStart(),"p"))){for(l=new g(d,d);i=l.next();)if(3===i.nodeType){o=i;break}if(o){if(!(f=m(e,o.data)))return;if(a=(c=n.getRng(!0)).startContainer,u=c.startOffset,o===a&&(u=Math.max(0,u-f.start.length)),h.trim(o.data).length===f.start.length)return;f.format&&(s=t.formatter.get(f.format))&&s[0].block&&(o.deleteData(0,f.start.length),t.formatter.apply(f.format,{},o),c.setStart(a,u),c.collapse(!0),n.setRng(c)),f.cmd&&t.undoManager.transact(function(){o.deleteData(0,f.start.length),t.execCommand(f.cmd)})}}},p=function(t,e,n){for(var r=0;r<t.length;r++)if(n(t[r],e))return!0},y={handleEnter:function(t,e){var n,r;(n=l(t,e))&&((r=t.dom.createRng()).setStart(n,n.data.length),r.setEnd(n,n.data.length),t.selection.setRng(r)),u(t,e)},handleInlineKey:function(t,e){var n,r,a,o,i;(n=f(t,e))&&(i=t.dom,r=n.data.slice(-1),/[\u00a0 ]/.test(r)&&(n.deleteData(n.data.length-1,1),a=i.doc.createTextNode(r),i.insertAfter(a,n.parentNode),(o=i.createRng()).setStart(a,1),o.setEnd(a,1),t.selection.setRng(o)))},checkCharCode:function(t,e){return p(t,e,function(t,e){return t.charCodeAt(0)===e.charCode})},checkKeyCode:function(t,e){return p(t,e,function(t,e){return t===e.keyCode&&!1===i.modifierPressed(e)})}},v=function(e,n){var r=[",",".",";",":","!","?"],a=[32];e.on("keydown",function(t){13!==t.keyCode||i.modifierPressed(t)||y.handleEnter(e,n.get())},!0),e.on("keyup",function(t){y.checkKeyCode(a,t)&&y.handleInlineKey(e,n.get())}),e.on("keypress",function(t){y.checkCharCode(r,t)&&o.setEditorTimeout(e,function(){y.handleInlineKey(e,n.get())})})};t.add("textpattern",function(t){var e=r(a(t.settings));return v(t,e),n(e)})}();
@@ -0,0 +1,7 @@
1
+ // Exports the "toc" plugin for usage with module loaders
2
+ // Usage:
3
+ // CommonJS:
4
+ // require('tinymce/plugins/toc')
5
+ // ES2015:
6
+ // import 'tinymce/plugins/toc'
7
+ require('./plugin.js');
@@ -0,0 +1,228 @@
1
+ (function () {
2
+ var toc = (function () {
3
+ 'use strict';
4
+
5
+ var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
6
+
7
+ var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
8
+
9
+ var global$2 = tinymce.util.Tools.resolve('tinymce.util.I18n');
10
+
11
+ var global$3 = tinymce.util.Tools.resolve('tinymce.util.Tools');
12
+
13
+ var getTocClass = function (editor) {
14
+ return editor.getParam('toc_class', 'mce-toc');
15
+ };
16
+ var getTocHeader = function (editor) {
17
+ var tagName = editor.getParam('toc_header', 'h2');
18
+ return /^h[1-6]$/.test(tagName) ? tagName : 'h2';
19
+ };
20
+ var getTocDepth = function (editor) {
21
+ var depth = parseInt(editor.getParam('toc_depth', '3'), 10);
22
+ return depth >= 1 && depth <= 9 ? depth : 3;
23
+ };
24
+ var $_10iupbs9jm0og26v = {
25
+ getTocClass: getTocClass,
26
+ getTocHeader: getTocHeader,
27
+ getTocDepth: getTocDepth
28
+ };
29
+
30
+ var create = function (prefix) {
31
+ var counter = 0;
32
+ return function () {
33
+ var guid = new Date().getTime().toString(32);
34
+ return prefix + guid + (counter++).toString(32);
35
+ };
36
+ };
37
+ var $_cgm5p3sajm0og26x = { create: create };
38
+
39
+ var tocId = $_cgm5p3sajm0og26x.create('mcetoc_');
40
+ var generateSelector = function generateSelector(depth) {
41
+ var i;
42
+ var selector = [];
43
+ for (i = 1; i <= depth; i++) {
44
+ selector.push('h' + i);
45
+ }
46
+ return selector.join(',');
47
+ };
48
+ var hasHeaders = function (editor) {
49
+ return readHeaders(editor).length > 0;
50
+ };
51
+ var readHeaders = function (editor) {
52
+ var tocClass = $_10iupbs9jm0og26v.getTocClass(editor);
53
+ var headerTag = $_10iupbs9jm0og26v.getTocHeader(editor);
54
+ var selector = generateSelector($_10iupbs9jm0og26v.getTocDepth(editor));
55
+ var headers = editor.$(selector);
56
+ if (headers.length && /^h[1-9]$/i.test(headerTag)) {
57
+ headers = headers.filter(function (i, el) {
58
+ return !editor.dom.hasClass(el.parentNode, tocClass);
59
+ });
60
+ }
61
+ return global$3.map(headers, function (h) {
62
+ return {
63
+ id: h.id ? h.id : tocId(),
64
+ level: parseInt(h.nodeName.replace(/^H/i, ''), 10),
65
+ title: editor.$.text(h),
66
+ element: h
67
+ };
68
+ });
69
+ };
70
+ var getMinLevel = function (headers) {
71
+ var i, minLevel = 9;
72
+ for (i = 0; i < headers.length; i++) {
73
+ if (headers[i].level < minLevel) {
74
+ minLevel = headers[i].level;
75
+ }
76
+ if (minLevel === 1) {
77
+ return minLevel;
78
+ }
79
+ }
80
+ return minLevel;
81
+ };
82
+ var generateTitle = function (tag, title) {
83
+ var openTag = '<' + tag + ' contenteditable="true">';
84
+ var closeTag = '</' + tag + '>';
85
+ return openTag + global$1.DOM.encode(title) + closeTag;
86
+ };
87
+ var generateTocHtml = function (editor) {
88
+ var html = generateTocContentHtml(editor);
89
+ return '<div class="' + editor.dom.encode($_10iupbs9jm0og26v.getTocClass(editor)) + '" contenteditable="false">' + html + '</div>';
90
+ };
91
+ var generateTocContentHtml = function (editor) {
92
+ var html = '';
93
+ var headers = readHeaders(editor);
94
+ var prevLevel = getMinLevel(headers) - 1;
95
+ var i, ii, h, nextLevel;
96
+ if (!headers.length) {
97
+ return '';
98
+ }
99
+ html += generateTitle($_10iupbs9jm0og26v.getTocHeader(editor), global$2.translate('Table of Contents'));
100
+ for (i = 0; i < headers.length; i++) {
101
+ h = headers[i];
102
+ h.element.id = h.id;
103
+ nextLevel = headers[i + 1] && headers[i + 1].level;
104
+ if (prevLevel === h.level) {
105
+ html += '<li>';
106
+ } else {
107
+ for (ii = prevLevel; ii < h.level; ii++) {
108
+ html += '<ul><li>';
109
+ }
110
+ }
111
+ html += '<a href="#' + h.id + '">' + h.title + '</a>';
112
+ if (nextLevel === h.level || !nextLevel) {
113
+ html += '</li>';
114
+ if (!nextLevel) {
115
+ html += '</ul>';
116
+ }
117
+ } else {
118
+ for (ii = h.level; ii > nextLevel; ii--) {
119
+ html += '</li></ul><li>';
120
+ }
121
+ }
122
+ prevLevel = h.level;
123
+ }
124
+ return html;
125
+ };
126
+ var isEmptyOrOffscren = function (editor, nodes) {
127
+ return !nodes.length || editor.dom.getParents(nodes[0], '.mce-offscreen-selection').length > 0;
128
+ };
129
+ var insertToc = function (editor) {
130
+ var tocClass = $_10iupbs9jm0og26v.getTocClass(editor);
131
+ var $tocElm = editor.$('.' + tocClass);
132
+ if (isEmptyOrOffscren(editor, $tocElm)) {
133
+ editor.insertContent(generateTocHtml(editor));
134
+ } else {
135
+ updateToc(editor);
136
+ }
137
+ };
138
+ var updateToc = function (editor) {
139
+ var tocClass = $_10iupbs9jm0og26v.getTocClass(editor);
140
+ var $tocElm = editor.$('.' + tocClass);
141
+ if ($tocElm.length) {
142
+ editor.undoManager.transact(function () {
143
+ $tocElm.html(generateTocContentHtml(editor));
144
+ });
145
+ }
146
+ };
147
+ var $_ecfll1s5jm0og26r = {
148
+ hasHeaders: hasHeaders,
149
+ insertToc: insertToc,
150
+ updateToc: updateToc
151
+ };
152
+
153
+ var register = function (editor) {
154
+ editor.addCommand('mceInsertToc', function () {
155
+ $_ecfll1s5jm0og26r.insertToc(editor);
156
+ });
157
+ editor.addCommand('mceUpdateToc', function () {
158
+ $_ecfll1s5jm0og26r.updateToc(editor);
159
+ });
160
+ };
161
+ var $_xhivzs4jm0og26p = { register: register };
162
+
163
+ var setup = function (editor) {
164
+ var $ = editor.$, tocClass = $_10iupbs9jm0og26v.getTocClass(editor);
165
+ editor.on('PreProcess', function (e) {
166
+ var $tocElm = $('.' + tocClass, e.node);
167
+ if ($tocElm.length) {
168
+ $tocElm.removeAttr('contentEditable');
169
+ $tocElm.find('[contenteditable]').removeAttr('contentEditable');
170
+ }
171
+ });
172
+ editor.on('SetContent', function () {
173
+ var $tocElm = $('.' + tocClass);
174
+ if ($tocElm.length) {
175
+ $tocElm.attr('contentEditable', false);
176
+ $tocElm.children(':first-child').attr('contentEditable', true);
177
+ }
178
+ });
179
+ };
180
+ var $_5ujz8tsbjm0og26z = { setup: setup };
181
+
182
+ var toggleState = function (editor) {
183
+ return function (e) {
184
+ var ctrl = e.control;
185
+ editor.on('LoadContent SetContent change', function () {
186
+ ctrl.disabled(editor.readonly || !$_ecfll1s5jm0og26r.hasHeaders(editor));
187
+ });
188
+ };
189
+ };
190
+ var isToc = function (editor) {
191
+ return function (elm) {
192
+ return elm && editor.dom.is(elm, '.' + $_10iupbs9jm0og26v.getTocClass(editor)) && editor.getBody().contains(elm);
193
+ };
194
+ };
195
+ var register$1 = function (editor) {
196
+ editor.addButton('toc', {
197
+ tooltip: 'Table of Contents',
198
+ cmd: 'mceInsertToc',
199
+ icon: 'toc',
200
+ onPostRender: toggleState(editor)
201
+ });
202
+ editor.addButton('tocupdate', {
203
+ tooltip: 'Update',
204
+ cmd: 'mceUpdateToc',
205
+ icon: 'reload'
206
+ });
207
+ editor.addMenuItem('toc', {
208
+ text: 'Table of Contents',
209
+ context: 'insert',
210
+ cmd: 'mceInsertToc',
211
+ onPostRender: toggleState(editor)
212
+ });
213
+ editor.addContextToolbar(isToc(editor), 'tocupdate');
214
+ };
215
+ var $_dt2k8nscjm0og270 = { register: register$1 };
216
+
217
+ global.add('toc', function (editor) {
218
+ $_xhivzs4jm0og26p.register(editor);
219
+ $_dt2k8nscjm0og270.register(editor);
220
+ $_5ujz8tsbjm0og26z.setup(editor);
221
+ });
222
+ function Plugin () {
223
+ }
224
+
225
+ return Plugin;
226
+
227
+ }());
228
+ })();