PluginProbe
Elementor Website Builder – more than just a page builder / 3.22.1
Elementor Website Builder – more than just a page builder v3.22.1
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / assets / js / gutenberg.js

gutenberg.js in Elementor Website Builder – more than just a page builder 3.22.1, at assets/js/gutenberg.js

199 lines 7.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*! elementor - v3.22.0 - 17-06-2024 */
2 /******/ (() => { // webpackBootstrap
3 /******/ "use strict";
4 /******/ var __webpack_modules__ = ({
5
6 /***/ "@wordpress/i18n":
7 /*!**************************!*\
8 !*** external "wp.i18n" ***!
9 \**************************/
10 /***/ ((module) => {
11
12 module.exports = wp.i18n;
13
14 /***/ })
15
16 /******/ });
17 /************************************************************************/
18 /******/ // The module cache
19 /******/ var __webpack_module_cache__ = {};
20 /******/
21 /******/ // The require function
22 /******/ function __webpack_require__(moduleId) {
23 /******/ // Check if module is in cache
24 /******/ var cachedModule = __webpack_module_cache__[moduleId];
25 /******/ if (cachedModule !== undefined) {
26 /******/ return cachedModule.exports;
27 /******/ }
28 /******/ // Create a new module (and put it into the cache)
29 /******/ var module = __webpack_module_cache__[moduleId] = {
30 /******/ // no module.id needed
31 /******/ // no module.loaded needed
32 /******/ exports: {}
33 /******/ };
34 /******/
35 /******/ // Execute the module function
36 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
37 /******/
38 /******/ // Return the exports of the module
39 /******/ return module.exports;
40 /******/ }
41 /******/
42 /************************************************************************/
43 var __webpack_exports__ = {};
44 // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
45 (() => {
46 /*!*******************************************!*\
47 !*** ../assets/dev/js/admin/gutenberg.js ***!
48 \*******************************************/
49 /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"];
50
51
52 /* global ElementorGutenbergSettings */
53 (function ($) {
54 'use strict';
55
56 var ElementorGutenbergApp = {
57 cacheElements: function cacheElements() {
58 var self = this;
59 self.isElementorMode = ElementorGutenbergSettings.isElementorMode;
60 self.cache = {};
61 self.cache.$gutenberg = $('#editor');
62 self.cache.$switchMode = $($('#elementor-gutenberg-button-switch-mode').html());
63 self.cache.$switchModeButton = self.cache.$switchMode.find('#elementor-switch-mode-button');
64 self.bindEvents();
65 self.toggleStatus();
66 wp.data.subscribe(function () {
67 setTimeout(function () {
68 self.buildPanel();
69 }, 1);
70 });
71 },
72 buildPanel: function buildPanel() {
73 var self = this;
74 if (!self.cache.$gutenberg.find('#elementor-switch-mode').length) {
75 self.cache.$gutenberg.find('.edit-post-header-toolbar').append(self.cache.$switchMode);
76 }
77 if (this.hasIframe()) {
78 this.handleIframe();
79 }
80 if (!$('#elementor-editor').length) {
81 self.cache.$editorPanel = $($('#elementor-gutenberg-panel').html());
82 var editorButtonParent = self.cache.$gutenberg.find('.block-editor-writing-flow');
83 if (!editorButtonParent.length) {
84 editorButtonParent = self.cache.$gutenberg.find('.is-desktop-preview');
85 }
86 self.cache.$gurenbergBlockList = editorButtonParent;
87 self.cache.$gurenbergBlockList.append(self.cache.$editorPanel);
88 self.cache.$editorPanelButton = self.cache.$editorPanel.find('#elementor-go-to-edit-page-link');
89 self.cache.$editorPanelButton.on('click', function (event) {
90 event.preventDefault();
91 self.handleEditButtonClick();
92 });
93 }
94 },
95 handleIframe: function handleIframe() {
96 this.hideIframeContent();
97 this.buildPanelTopBar();
98 },
99 // Sometimes Gutenberg uses iframe instead of div.
100 hasIframe: function hasIframe() {
101 return !!this.cache.$gutenberg.find('iframe[name="editor-canvas"]').length;
102 },
103 hideIframeContent: function hideIframeContent() {
104 if (!this.isElementorMode) {
105 return;
106 }
107 var style = "<style>\n\t\t\t\t.editor-post-text-editor,\n\t\t\t\t.block-editor-block-list__layout {\n\t\t\t\t\tdisplay: none;\n\t\t\t\t}\n\n\t\t\t\tbody {\n\t\t\t\t\tpadding: 0 !important;\n\t\t\t\t}\n\t\t\t</style>";
108 this.cache.$gutenberg.find('iframe[name="editor-canvas"]').contents().find('body').append(style);
109 },
110 buildPanelTopBar: function buildPanelTopBar() {
111 var self = this;
112 if (!$('#elementor-edit-mode-button').length && this.isElementorMode) {
113 self.cache.$editorBtnTop = $($('#elementor-gutenberg-button-tmpl').html());
114 self.cache.$gutenberg.find('.edit-post-header-toolbar').append(self.cache.$editorBtnTop);
115 $('#elementor-edit-mode-button').on('click', function (event) {
116 event.preventDefault();
117 self.handleEditButtonClick(false);
118 });
119 }
120 },
121 handleEditButtonClick: function handleEditButtonClick() {
122 var withAnimation = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
123 var self = this;
124 if (withAnimation) {
125 self.animateLoader();
126 }
127
128 // A new post is initialized as an 'auto-draft'.
129 // if the post is not a new post it should not save it to avoid some saving conflict between elementor and gutenberg.
130 var isNewPost = 'auto-draft' === wp.data.select('core/editor').getCurrentPost().status;
131 if (isNewPost) {
132 var documentTitle = wp.data.select('core/editor').getEditedPostAttribute('title');
133 if (!documentTitle) {
134 wp.data.dispatch('core/editor').editPost({
135 title: 'Elementor #' + $('#post_ID').val()
136 });
137 }
138 wp.data.dispatch('core/editor').savePost();
139 }
140 self.redirectWhenSave();
141 },
142 bindEvents: function bindEvents() {
143 var self = this;
144 self.cache.$switchModeButton.on('click', function () {
145 if (self.isElementorMode) {
146 elementorCommon.dialogsManager.createWidget('confirm', {
147 message: __('Please note that you are switching to WordPress default editor. Your current layout, design and content might break.', 'elementor'),
148 headerMessage: __('Back to WordPress Editor', 'elementor'),
149 strings: {
150 confirm: __('Continue', 'elementor'),
151 cancel: __('Cancel', 'elementor')
152 },
153 defaultOption: 'confirm',
154 onConfirm: function onConfirm() {
155 var wpEditor = wp.data.dispatch('core/editor');
156 wpEditor.editPost({
157 gutenberg_elementor_mode: false
158 });
159 wpEditor.savePost();
160 self.isElementorMode = !self.isElementorMode;
161 self.toggleStatus();
162 }
163 }).show();
164 } else {
165 self.isElementorMode = !self.isElementorMode;
166 self.toggleStatus();
167 self.cache.$editorPanelButton.trigger('click');
168 }
169 });
170 },
171 redirectWhenSave: function redirectWhenSave() {
172 var self = this;
173 setTimeout(function () {
174 if (wp.data.select('core/editor').isSavingPost()) {
175 self.redirectWhenSave();
176 } else {
177 location.href = ElementorGutenbergSettings.editLink;
178 }
179 }, 300);
180 },
181 animateLoader: function animateLoader() {
182 this.cache.$editorPanelButton.addClass('elementor-animate');
183 },
184 toggleStatus: function toggleStatus() {
185 jQuery('body').toggleClass('elementor-editor-active', this.isElementorMode).toggleClass('elementor-editor-inactive', !this.isElementorMode);
186 },
187 init: function init() {
188 this.cacheElements();
189 }
190 };
191 $(function () {
192 ElementorGutenbergApp.init();
193 });
194 })(jQuery);
195 })();
196
197 /******/ })()
198 ;
199 //# sourceMappingURL=gutenberg.js.map