text-editor.a8434931ecdcd5ff7589.bundle.js (2844B)
1 /*! elementor - v3.4.4 - 13-09-2021 */ 2 (self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["text-editor"],{ 3 4 /***/ "../assets/dev/js/frontend/handlers/text-editor.js": 5 /*!*********************************************************!*\ 6 !*** ../assets/dev/js/frontend/handlers/text-editor.js ***! 7 \*********************************************************/ 8 /***/ ((__unused_webpack_module, exports) => { 9 10 "use strict"; 11 12 13 Object.defineProperty(exports, "__esModule", ({ 14 value: true 15 })); 16 exports.default = void 0; 17 18 class TextEditor extends elementorModules.frontend.handlers.Base { 19 getDefaultSettings() { 20 return { 21 selectors: { 22 paragraph: 'p:first' 23 }, 24 classes: { 25 dropCap: 'elementor-drop-cap', 26 dropCapLetter: 'elementor-drop-cap-letter' 27 } 28 }; 29 } 30 31 getDefaultElements() { 32 const selectors = this.getSettings('selectors'), 33 classes = this.getSettings('classes'), 34 $dropCap = jQuery('<span>', { 35 class: classes.dropCap 36 }), 37 $dropCapLetter = jQuery('<span>', { 38 class: classes.dropCapLetter 39 }); 40 $dropCap.append($dropCapLetter); 41 return { 42 $paragraph: this.$element.find(selectors.paragraph), 43 $dropCap: $dropCap, 44 $dropCapLetter: $dropCapLetter 45 }; 46 } 47 48 wrapDropCap() { 49 const isDropCapEnabled = this.getElementSettings('drop_cap'); 50 51 if (!isDropCapEnabled) { 52 // If there is an old drop cap inside the paragraph 53 if (this.dropCapLetter) { 54 this.elements.$dropCap.remove(); 55 this.elements.$paragraph.prepend(this.dropCapLetter); 56 this.dropCapLetter = ''; 57 } 58 59 return; 60 } 61 62 const $paragraph = this.elements.$paragraph; 63 64 if (!$paragraph.length) { 65 return; 66 } 67 68 const paragraphContent = $paragraph.html().replace(/ /g, ' '), 69 firstLetterMatch = paragraphContent.match(/^ *([^ ] ?)/); 70 71 if (!firstLetterMatch) { 72 return; 73 } 74 75 const firstLetter = firstLetterMatch[1], 76 trimmedFirstLetter = firstLetter.trim(); // Don't apply drop cap when the content starting with an HTML tag 77 78 if ('<' === trimmedFirstLetter) { 79 return; 80 } 81 82 this.dropCapLetter = firstLetter; 83 this.elements.$dropCapLetter.text(trimmedFirstLetter); 84 const restoredParagraphContent = paragraphContent.slice(firstLetter.length).replace(/^ */, match => { 85 return new Array(match.length + 1).join(' '); 86 }); 87 $paragraph.html(restoredParagraphContent).prepend(this.elements.$dropCap); 88 } 89 90 onInit(...args) { 91 super.onInit(...args); 92 this.wrapDropCap(); 93 } 94 95 onElementChange(propertyName) { 96 if ('drop_cap' === propertyName) { 97 this.wrapDropCap(); 98 } 99 } 100 101 } 102 103 exports.default = TextEditor; 104 105 /***/ }) 106 107 }]); 108 //# sourceMappingURL=text-editor.a8434931ecdcd5ff7589.bundle.js.map