Files
HotelRaxa/wp-content/plugins/elementor/assets/js/text-path.376669dc13ce66a83828.bundle.min.js

3 lines
25 KiB
JavaScript
Raw Permalink Normal View History

Hotel Raxa - Advanced Booking System Implementation 🏨 Hotel Booking Enhancements: - Implemented Eagle Booking Advanced Pricing add-on - Added Booking.com-style rate management system - Created professional calendar interface for pricing - Integrated deals and discounts functionality 💰 Advanced Pricing Features: - Dynamic pricing models (per room, per person, per adult) - Base rates, adult rates, and child rates management - Length of stay discounts and early bird deals - Mobile rates and secret deals implementation - Seasonal promotions and flash sales 📅 Availability Management: - Real-time availability tracking - Stop sell and restriction controls - Closed to arrival/departure functionality - Minimum/maximum stay requirements - Automatic sold-out management 💳 Payment Integration: - Maintained Redsys payment gateway integration - Seamless integration with existing Eagle Booking - No modifications to core Eagle Booking plugin 🛠️ Technical Implementation: - Custom database tables for advanced pricing - WordPress hooks and filters integration - AJAX-powered admin interface - Data migration from existing Eagle Booking - Professional calendar view for revenue management 📊 Admin Interface: - Booking.com-style management dashboard - Visual rate and availability calendar - Bulk operations for date ranges - Statistics and analytics dashboard - Modal dialogs for quick editing 🔧 Code Quality: - WordPress coding standards compliance - Secure database operations with prepared statements - Proper input validation and sanitization - Error handling and logging - Responsive admin interface 🤖 Generated with Claude Code (https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 07:43:22 +02:00
/*! elementor - v3.24.0 - 15-10-2024 */
/*! For license information please see text-path.376669dc13ce66a83828.bundle.min.js.LICENSE.txt */
(self.webpackChunkelementor=self.webpackChunkelementor||[]).push([[48],{6468:(e,t,n)=>{"use strict";var o=n(3203);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(6028),a=o(n(1699));class TextPathHandler extends elementorModules.frontend.handlers.Base{getDefaultSettings(){return{selectors:{pathContainer:".e-text-path",svg:".e-text-path > svg"}}}getDefaultElements(){const{selectors:e}=this.getSettings(),t=this.$element[0];return{widgetWrapper:t,pathContainer:t.querySelector(e.pathContainer),svg:t.querySelector(e.svg),textPath:t.querySelector(e.textPath)}}onInit(){this.elements=this.getDefaultElements(),this.fetchSVG().then((()=>{this.pathId=`e-path-${this.elements.widgetWrapper.dataset.id}`,this.textPathId=`e-text-path-${this.elements.widgetWrapper.dataset.id}`,this.elements.svg&&this.initTextPath()}))}fetchSVG(){const{url:e}=this.elements.pathContainer.dataset;return e&&e.endsWith(".svg")?fetch(e).then((e=>e.text())).then((e=>{this.elements.pathContainer.innerHTML=a.default.sanitize(e),this.elements=this.getDefaultElements()})):Promise.reject(e)}setOffset(e){this.elements.textPath&&(this.isRTL()&&(e=100-parseInt(e)),this.elements.textPath.setAttribute("startOffset",e+"%"))}onElementChange(e){const{start_point:t,text:n}=this.getElementSettings();switch(e){case"start_point":this.setOffset(t.size);break;case"text":this.setText(n);break;case"text_path_direction":this.setOffset(t.size),this.setText(n)}}attachIdToPath(){(this.elements.svg.querySelector("[data-path-anchor]")||this.elements.svg.querySelector("path")).id=this.pathId}initTextPath(){const{start_point:e}=this.getElementSettings(),t=this.elements.pathContainer.dataset.text;this.attachIdToPath(),this.elements.svg.innerHTML+=`\n\t\t\t<text>\n\t\t\t\t<textPath id="${this.textPathId}" href="#${this.pathId}"></textPath>\n\t\t\t</text>\n\t\t`,this.elements.textPath=this.elements.svg.querySelector(`#${this.textPathId}`),this.setOffset(e.size),this.setText(t)}setText(e){const{is_external:t,nofollow:n}=this.getElementSettings().link,{linkUrl:o}=this.elements.pathContainer.dataset,i=t?"_blank":"",l=n?"nofollow":"";o&&(e=`<a href="${(0,r.escapeHTML)(o)}" rel="${l}" target="${i}">${(0,r.escapeHTML)(e)}</a>`,e=a.default.sanitize(e,{ADD_ATTR:["target"]})),this.elements.textPath.innerHTML=e;const s=this.elements.svg.querySelector(`#${this.textPathId}-clone`);if(s&&s.remove(),this.shouldReverseText()){const t=this.elements.textPath.cloneNode();t.id+="-clone",t.classList.add("elementor-hidden"),t.textContent=e,this.elements.textPath.parentNode.appendChild(t),this.reverseToRTL()}}isRTL(){const{text_path_direction:e}=this.getElementSettings();let t=elementorFrontend.config.is_rtl;return e&&(t="rtl"===e),t}shouldReverseText(){if(!this.isRTL())return!1;if(elementorFrontend.utils.environment.firefox)return!1;return!elementorFrontend.utils.environment.blink||!this.isFixedChromiumVersion()}isFixedChromiumVersion(){return parseInt(navigator.userAgent.match(/(?:Chrom(?:e|ium)|Edg)\/([0-9]+)\./)[1])>=96}reverseToRTL(){let e=this.elements.textPath;e=e.querySelector("a")||e;e.textContent=e.textContent.replace(/([\u0591-\u07FF\u200F\u202B\u202E\uFB1D-\uFDFD\uFE70-\uFEFC\s$&+,:;=?@#|'<>.^*()%!-]+)/gi,(e=>e.split("").reverse().join(""))),e.setAttribute("aria-hidden",!0)}}t.default=TextPathHandler},1699:function(e){e.exports=function(){"use strict";const{entries:e,setPrototypeOf:t,isFrozen:n,getPrototypeOf:o,getOwnPropertyDescriptor:r}=Object;let{freeze:a,seal:i,create:l}=Object,{apply:s,construct:c}="undefined"!=typeof Reflect&&Reflect;a||(a=function freeze(e){return e}),i||(i=function seal(e){return e}),s||(s=function apply(e,t,n){return e.apply(t,n)}),c||(c=function construct(e,t){return new e(...t)});const u=unapply(Array.prototype.forEach),d=unapply(Array.prototype.pop),m=unapply(Array.prototype.push),p=unapply(String.prototype.toLowerCase),f=unapply(String.prototype.toString),h=unapply(String.prototype.match),g=unapply(String.prototype.replace),T=unapply(String.prototype.indexOf),y=unapply(String.prototype.trim),S=unapply(Object.prototype.hasOwnProperty),E=unapply(Reg