Submit
Path:
~
/
home
/
contenidosenred
/
www
/
OD
/
wp-content
/
plugins
/
elementor
/
assets
/
js
/
File Content:
text-path.9b3ece1b692d34d012b5.bundle.js
/*! elementor - v3.4.6 - 19-10-2021 */ (self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["text-path"],{ /***/ "../modules/shapes/assets/js/frontend/handlers/text-path.js": /*!******************************************************************!*\ !*** ../modules/shapes/assets/js/frontend/handlers/text-path.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.default = void 0; var _utils = __webpack_require__(/*! elementor-frontend/utils/utils */ "../assets/dev/js/frontend/utils/utils.js"); class TextPathHandler extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { pathContainer: '.e-text-path', svg: '.e-text-path > svg' } }; } getDefaultElements() { const { selectors } = this.getSettings(); const element = this.$element[0]; return { widgetWrapper: element, pathContainer: element.querySelector(selectors.pathContainer), svg: element.querySelector(selectors.svg), textPath: element.querySelector(selectors.textPath) }; } /** * Initialize the object. * * @returns {void} */ onInit() { this.elements = this.getDefaultElements(); // Generate unique IDs using the wrapper's `data-id`. this.pathId = `e-path-${this.elements.widgetWrapper.dataset.id}`; this.textPathId = `e-text-path-${this.elements.widgetWrapper.dataset.id}`; if (!this.elements.svg) { return; } this.initTextPath(); } /** * Gets a text offset (relative to the starting point) as a string or int, and set it as percents to the * `startOffset` attribute of the `<textPath>` element. * * @param offset {string|int} The text start offset. * * @returns {void} */ setOffset(offset) { if (!this.elements.textPath) { return; } if (this.isRTL()) { offset = 100 - parseInt(offset); } this.elements.textPath.setAttribute('startOffset', offset + '%'); } /** * Handle element settings changes. * * @param setting {Object} The settings object from the editor. * * @returns {void} */ onElementChange(setting) { const { start_point: startPoint, text } = this.getElementSettings(); switch (setting) { case 'start_point': this.setOffset(startPoint.size); break; case 'text': this.setText(text); break; case 'text_path_direction': this.setOffset(startPoint.size); this.setText(text); break; default: break; } } /** * Attach a unique ID to the `path` element in the SVG, based on the container's ID. * This function selects the first `path` with a `data-path-anchor` attribute, or defaults to the first `path` element. * * @returns {void} */ attachIdToPath() { // Prioritize the custom `data` attribute over the `path` element, and fallback to the first `path`. const path = this.elements.svg.querySelector('[data-path-anchor]') || this.elements.svg.querySelector('path'); path.id = this.pathId; } /** * Initialize & build the SVG markup of the widget using the settings from the panel. * * @returns {void} */ initTextPath() { const { start_point: startPoint } = this.getElementSettings(); const text = this.elements.pathContainer.dataset.text; this.attachIdToPath(); // Generate the `textPath` element with its settings. this.elements.svg.innerHTML += ` <text> <textPath id="${this.textPathId}" href="#${this.pathId}"></textPath> </text> `; // Regenerate the elements object to have access to `this.elements.textPath`. this.elements.textPath = this.elements.svg.querySelector(`#${this.textPathId}`); this.setOffset(startPoint.size); this.setText(text); } /** * Sets the text on the SVG path, including the link (if set) and its properties. * * @param newText {string} The new text to put in the text path. * * @returns {void} */ setText(newText) { var _this$getElementSetti; const { url, is_external: isExternal, nofollow } = (_this$getElementSetti = this.getElementSettings()) === null || _this$getElementSetti === void 0 ? void 0 : _this$getElementSetti.link; const target = isExternal ? '_blank' : '', rel = nofollow ? 'nofollow' : ''; // Add link attributes. if (url) { newText = `<a href="${(0, _utils.escapeHTML)(url)}" rel="${rel}" target="${target}">${(0, _utils.escapeHTML)(newText)}</a>`; } // Set the text. this.elements.textPath.innerHTML = newText; // Remove the cloned element if exists. const existingClone = this.elements.svg.querySelector(`#${this.textPathId}-clone`); if (existingClone) { existingClone.remove(); } // Reverse the text if needed. if (this.shouldReverseText()) { // Keep an invisible selectable copy of original element for better a11y. const clone = this.elements.textPath.cloneNode(); clone.id += '-clone'; clone.classList.add('elementor-hidden'); clone.textContent = newText; this.elements.textPath.parentNode.appendChild(clone); this.reverseToRTL(); } } /** * Determine if the text direction of the widget should be RTL or not, based on the site direction and the widget's settings. * * @returns {boolean} */ isRTL() { const { text_path_direction: direction } = this.getElementSettings(); let isRTL = elementorFrontend.config.is_rtl; if (direction) { isRTL = 'rtl' === direction; } return isRTL; } /** * Determine if it should RTL the text (reversing it, etc.). * * @returns {boolean} */ shouldReverseText() { return this.isRTL() && -1 === navigator.userAgent.indexOf('Firefox'); } /** * Reverse the text path to support RTL. * * @returns {void} */ reverseToRTL() { // Make sure to use the inner `a` tag if exists. let parentElement = this.elements.textPath; parentElement = parentElement.querySelector('a') || parentElement; // Catch all RTL chars and reverse their order. const pattern = /([\u0591-\u07FF\u200F\u202B\u202E\uFB1D-\uFDFD\uFE70-\uFEFC\s$&+,:;=?@#|'<>.^*()%!-]+)/ig; // Reverse the text. parentElement.textContent = parentElement.textContent.replace(pattern, word => { return word.split('').reverse().join(''); }); // Add a11y attributes. parentElement.setAttribute('aria-hidden', true); } } exports.default = TextPathHandler; /***/ }) }]); //# sourceMappingURL=text-path.9b3ece1b692d34d012b5.bundle.js.map
Edit
Rename
Chmod
Delete
FILE
FOLDER
INFO
Name
Size
Permission
Action
06ad222c8807f0a951da.bundle.js
279653 bytes
0644
accordion.5824c4bc9e26d54f2918.bundle.js
7463 bytes
0644
accordion.839112600fade8979d16.bundle.min.js
3690 bytes
0644
admin-feedback.js
30269 bytes
0644
admin-feedback.min.js
7903 bytes
0644
admin-top-bar.js
206966 bytes
0644
admin-top-bar.min.js
40374 bytes
0644
admin.js
234646 bytes
0644
admin.min.js
63104 bytes
0644
alert.124c2442b8a696597f9e.bundle.min.js
623 bytes
0644
alert.f04b9d16129bc8aa4cdc.bundle.js
1139 bytes
0644
app-loader.js
341651 bytes
0644
app-loader.min.js
85010 bytes
0644
app-packages.js
743124 bytes
0644
app-packages.min.js
196021 bytes
0644
app.js
707280 bytes
0644
app.min.js
180452 bytes
0644
beta-tester.js
108670 bytes
0644
beta-tester.min.js
26153 bytes
0644
common-modules.js
409289 bytes
0644
common-modules.min.js
103206 bytes
0644
common.js
659348 bytes
0644
common.min.js
174239 bytes
0644
counter.1bf6011c2ab9506880c2.bundle.min.js
911 bytes
0644
counter.b452600865ffc51a6ea0.bundle.js
1632 bytes
0644
d44a57c594ce7771dd50.bundle.min.js
61427 bytes
0644
editor-document.js
975225 bytes
0644
editor-document.min.js
280218 bytes
0644
editor-modules.js
281867 bytes
0644
editor-modules.min.js
73993 bytes
0644
editor.js
1669873 bytes
0644
editor.min.js
593852 bytes
0644
elementor-admin-bar.js
141097 bytes
0644
elementor-admin-bar.min.js
32240 bytes
0644
frontend-modules.js
34839 bytes
0644
frontend-modules.min.js
14002 bytes
0644
frontend.js
87820 bytes
0644
frontend.min.js
36657 bytes
0644
gutenberg.js
31583 bytes
0644
gutenberg.min.js
8849 bytes
0644
image-carousel.024943eec9daaabea9ff.bundle.js
5835 bytes
0644
image-carousel.f9dc73796adfb21bb945.bundle.min.js
2715 bytes
0644
kit-library.d3688acfaab28676a99c.bundle.js
178777 bytes
0644
kit-library.e61c291a7b6bbc946eeb.bundle.min.js
53678 bytes
0644
lightbox.543c64a356c981ed0346.bundle.min.js
18446 bytes
0644
lightbox.adc17e3be937246718ee.bundle.js
32886 bytes
0644
new-template.js
4659 bytes
0644
new-template.min.js
1864 bytes
0644
preloaded-modules.js
63351 bytes
0644
preloaded-modules.min.js
32273 bytes
0644
progress.4079971c3240c226b858.bundle.min.js
654 bytes
0644
progress.5306267e0436c8de4985.bundle.js
1237 bytes
0644
tabs.b7bd957161644e810d53.bundle.js
7390 bytes
0644
tabs.cd05b61e107cc58d1be9.bundle.min.js
3652 bytes
0644
text-editor.9efe2dca043f0f618897.bundle.min.js
1355 bytes
0644
text-editor.a8434931ecdcd5ff7589.bundle.js
2844 bytes
0644
text-path.15daa9710b97d5cf86b9.bundle.min.js
2780 bytes
0644
text-path.9b3ece1b692d34d012b5.bundle.js
6841 bytes
0644
toggle.1aca60f44e355cb43256.bundle.min.js
3717 bytes
0644
toggle.5e8aae8d1c1e897e9b4e.bundle.js
7494 bytes
0644
video.505da250f982d8f15187.bundle.min.js
3324 bytes
0644
video.509fb0e07b97e0f603d7.bundle.js
6634 bytes
0644
webpack.runtime.js
15213 bytes
0644
webpack.runtime.min.js
4879 bytes
0644
wp-audio.2332b719d144261993a3.bundle.min.js
348 bytes
0644
wp-audio.de344657de8b792ed9b0.bundle.js
777 bytes
0644
N4ST4R_ID | Naxtarrr