froala-editor
Version:
The next generation Javascript WYSIWYG HTML rich text editor made by devs for devs. High performance and modern design make it easy to use for developers and loved by users.
7 lines (6 loc) • 8.02 kB
JavaScript
/*!
* froala_editor v4.7.1 (https://www.froala.com/wysiwyg-editor)
* License https://froala.com/wysiwyg-editor/terms/
* Copyright 2014-2025 Froala Labs
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("froala-editor")):"function"==typeof define&&define.amd?define(["froala-editor"],t):t(e.FroalaEditor)}(this,function(b){"use strict";b=b&&b.hasOwnProperty("default")?b["default"]:b,Object.assign(b.DEFAULTS,{exportPageBreak:!0}),b.PLUGINS.pageBreak=function(g){var d=g.$,e=g.html.defaultTag(),C=e?"<"+e+"><br></"+e+">":"<br>",i='\n <div class="fr-page-break" contenteditable="false" style="break-after: page;" data-title="PageBreak">\n <div class="fr-page-break-line" >\n <span class="fr-page-break-label">'.concat(g.language.translate("Page Break"),"</span>\n </div>\n </div>");function a(e){if(!n()&&!c()){if(!1===g.events.trigger("pageBreak.beforeInsert",[]))return!1;if(e)e.outerHTML=i;else{var t=function f(e){var t=g.selection.element(),a=g.el.firstChild,n=g.el.lastChild,r=t.previousSibling&&d(t.previousSibling).hasClass("fr-page-break")||d(t.parentElement.previousSibling).hasClass("fr-page-break"),i=t.nextSibling&&d(t.nextSibling).hasClass("fr-page-break")||d(t.parentElement.nextSibling).hasClass("fr-page-break"),l=g.markers.insert(),s=l&&g.node.isFirstSibling(l),o=l&&g.node.isLastSibling(l);o!==s&&(g.core.isEmpty()||g.node.isEmpty(t)&&r&&i||n==t.parentElement&&r?e=C+e+C:a!=t&&a!=t.parentElement||o?i&&r&&s?e=C+e:n==t||n==t.parentElement||i?r&&s?e=C+e+C:e+=C:r&&s&&(e=C+e):g.node.isEmpty(a)||l.nextSibling?e=C+e+C:n==t&&(e+=C));return g.markers.remove(),e}(i);g.selection.isFull()?g.html.set(t):g.html.insert(t)}}}function n(){var e=d(g.selection.element());return"Table"===e.get(0).tagName||e.closest("table").length}function t(e){if("Page Break"===(e=e.originalEvent).dataTransfer.getData("text/plain")){var t=g.$el.find(".fr-element-draggable");if(g.selection.restore(),n()||t.hasClass("fr-not-dropzone"))return g.browser.mozilla&&(e.stopPropagation(),e.preventDefault()),!1;t.remove(),a()}}function r(e){var t=g.$el.find(".fr-page-break.fr-selection-handle-selected"),a=e.which;if(t.length&&!g.keys.isArrow(e.which)&&a!==b.KEYCODE.TAB&&a!==b.KEYCODE.ALT&&a!==b.KEYCODE.ESC){if(e.ctrlKey||e.metaKey||a===b.KEYCODE.SHIFT)return!0;if(f(),g.keys.isCharacter(a)){var n=g.markers.insert(),r=d(C);n.replaceWith(r[0]);var i=r[0];if("BR"!==i.tagName&&i.querySelector("br")){var l=document.createRange();l.setStart(i,0),l.collapse(!0);var s=window.getSelection();s.removeAllRanges(),s.addRange(l)}}}}function l(e){if(g.opts.exportPageBreak)return e;var t=g.doc.createElement("div");return t.innerHTML=e,d(t).find('[data-title="PageBreak"]').remove(),t.innerHTML}function s(e){g.markers.insert();var t=e.clipboardData?e.clipboardData.getData("text/html"):null,a=g.$el.find(".fr-marker"),n=g.$el.find(".fr-page-break.fr-selection-handle-selected"),r=a.length?a[0].closest("table"):null,i=a.length?a[0].closest(".fr-page-break"):null;return g.markers.remove(),g.html.cleanEmptyTags(!0),!((i||r||0<n.length)&&t&&t.includes('class="fr-page-break'))}function o(){g.$box.find(".fr-selection-handle").addClass("fr-selection-handle-inactive")}function f(){var e=g.$el.find(".fr-page-break.fr-selection-handle-selected");if(!c())return!1;g.undo.saveStep(),o(),e.get(0).remove(),g.$el.focus(),g.toolbar.enable()}function c(){var e=g.$el.find(".fr-page-break.fr-selection-handle-selected"),t=d(g.selection.element());return 0<e.length||t.hasClass("fr-page-break")||0<t.parents(".fr-page-break").length}function p(){var e=g.$el.find('[data-title="PageBreak"]'),t=g.doc.createElement("div");t.innerHTML=i;for(var a=d(t).children().get(0),n=0;n<e.length;n++){var r=e.get(n);g.el.firstChild!==r&&g.el.lastChild!==r||((!r.nextSibling||r.nextSibling&&"BR"===r.nextSibling.nodeName)&&d(r).after(C),"\u200b"===r.nextSibling.nodeValue&&r.nextSibling.replaceWith(d(C)[0]),(!r.previousSibling||r.previousSibling&&"BR"===r.previousSibling.nodeName)&&d(r).before(C)),r.classList.contains("fr-page-break")||d(r).replaceWith(a.cloneNode(!0))}}return{_init:function u(){if(!g.$wp)return!1;g.events.on("drop",t),g.events.on("keydown",r,!0),g.events.on("html.get",l),g.events.on("paste.before",s),g.events.on("paste.after",p),g.events.on("cut",o),g.dragSelectControls._init()},insert:a,remove:f}},b.RegisterCommand("pageBreak",{type:"button",plugin:"pageBreak",title:"Page Break",callback:function(){this.pageBreak.insert()}}),b.DefineIcon("pageBreak",{template:"svgMultiplePath",viewBox:"0 0 24 24",PATHS:'\n <path d="M9.59125 12.4073C9.40972 12.4065 9.23501 12.4781 9.1063 12.6068C8.97759 12.7355 8.90601 12.9102 8.90687 13.0917C8.90772 13.2724 8.98016 13.4463 9.10801 13.5732C9.2367 13.7011 9.41056 13.7718 9.59123 13.771H10.4171C10.5978 13.7718 10.7716 13.7011 10.8995 13.5732C11.0282 13.4454 11.1006 13.2724 11.1015 13.0917C11.1023 12.9102 11.0299 12.7355 10.902 12.6068C10.7733 12.4781 10.5986 12.4065 10.4171 12.4073H9.59125ZM12.9083 12.4073C12.7267 12.4065 12.552 12.4781 12.4233 12.6068C12.2946 12.7355 12.223 12.9102 12.2239 13.0917C12.2239 13.2724 12.2963 13.4463 12.425 13.5732C12.5537 13.7011 12.7276 13.7718 12.9083 13.771H13.7332C13.9148 13.7718 14.0886 13.7011 14.2165 13.5732C14.3452 13.4454 14.4176 13.2724 14.4185 13.0917C14.4185 12.9102 14.3469 12.7355 14.2182 12.6068C14.0895 12.4781 13.9156 12.4065 13.7332 12.4073H12.9083ZM16.2203 12.4073C16.0387 12.4082 15.8657 12.4806 15.7387 12.6085C15.6109 12.7372 15.5393 12.911 15.5402 13.0917C15.5419 13.4667 15.8453 13.7701 16.2203 13.771H17.0512H17.0504C17.2311 13.7718 17.4049 13.7011 17.5336 13.5732C17.6615 13.4454 17.7348 13.2724 17.7348 13.0917C17.7356 12.9102 17.664 12.7355 17.5353 12.6068C17.4066 12.4781 17.2319 12.4065 17.0504 12.4073L16.2203 12.4073ZM19.5373 12.4073H19.5364C19.3558 12.4082 19.1827 12.4806 19.0549 12.6085C18.9279 12.7372 18.8572 12.911 18.8572 13.0917C18.8589 13.4667 19.1623 13.7701 19.5364 13.771H20.4782C20.6589 13.7718 20.8328 13.7011 20.9614 13.5732C21.0893 13.4454 21.1617 13.2724 21.1626 13.0917C21.1634 12.9102 21.091 12.7355 20.9631 12.6068C20.8344 12.4781 20.6597 12.4065 20.4782 12.4073L19.5373 12.4073Z" fill="#333333"/>\n <path d="M6.86688 4.90907C6.68449 4.90821 6.51063 4.98065 6.38193 5.1085C6.25323 5.23719 6.18164 5.4119 6.18164 5.59345V9.00079C6.18164 10.1224 7.10891 11.0445 8.2305 11.0445H17.7733C18.8949 11.0445 19.8171 10.1224 19.8171 9.00079V5.59345C19.8171 5.41277 19.7463 5.2389 19.6185 5.11022C19.4915 4.98238 19.3185 4.90994 19.137 4.90908C18.9563 4.90993 18.7833 4.98238 18.6555 5.11022C18.5285 5.23891 18.4569 5.41277 18.4577 5.59345V9.00079C18.4577 9.38517 18.1577 9.68006 17.7734 9.68006H8.23052C7.84615 9.68006 7.54615 9.38517 7.54615 9.00079V5.59345C7.547 5.41277 7.47541 5.2389 7.34842 5.11022C7.22058 4.98238 7.04755 4.90992 6.86688 4.90907Z" fill="#333333" stroke="#333333" stroke-width="0.3"/>\n <path d="M6.86663 21.2727C6.68425 21.2735 6.51039 21.2011 6.38168 21.0733C6.25299 20.9446 6.1814 20.7699 6.1814 20.5883V17.181C6.1814 16.0594 7.10867 15.1372 8.23025 15.1372H17.7731C18.8947 15.1372 19.8168 16.0594 19.8168 17.181V20.5883C19.8168 20.769 19.7461 20.9429 19.6183 21.0715C19.4913 21.1994 19.3183 21.2718 19.1367 21.2727C18.9561 21.2718 18.783 21.1994 18.6552 21.0715C18.5282 20.9428 18.4566 20.769 18.4575 20.5883V17.181C18.4575 16.7966 18.1575 16.5017 17.7731 16.5017H8.23027C7.8459 16.5017 7.5459 16.7966 7.5459 17.181V20.5883C7.54676 20.769 7.47516 20.9429 7.34818 21.0715C7.22033 21.1994 7.04731 21.2718 6.86663 21.2727Z" fill="#333333" stroke="#333333" stroke-width="0.3"/>\n <path d="M5.5405 11.7273C5.35385 11.717 5.17061 11.7835 5.03425 11.9122C4.89789 12.0409 4.82033 12.2199 4.82033 12.4065V13.7718C4.81863 14.0088 4.9405 14.2295 5.14165 14.3548C5.34279 14.4801 5.59505 14.4912 5.80642 14.3855L7.17006 13.7011C7.40103 13.5852 7.54592 13.35 7.54592 13.0917C7.54592 12.8343 7.40104 12.5983 7.17006 12.4824L5.80642 11.798C5.72375 11.7571 5.63341 11.7324 5.5405 11.7273Z" fill="#333333"/>\n '})});