PluginProbe
Elementor Website Builder – more than just a page builder / 4.3.1
Elementor Website Builder – more than just a page builder v4.3.1
4.3.1 4.3.0 4.3.0-beta3 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 All 454 releases
← All changes | assets/js/packages/utils/utils.js +342 -2 4.1.5 → 4.3.1 View file →
@@ -1,3 +1,343 @@
1 -/*! For license information please see utils.js.LICENSE.txt */
2 -!function(){"use strict";var e={"./packages/packages/libs/utils/src/debounce.ts":function(e,r,t){function debounce(e,r){let t=null;const cancel=()=>{t&&(clearTimeout(t),t=null)},run=(...n)=>{cancel(),t=setTimeout(()=>{e(...n),t=null},r)};return run.flush=(...r)=>{cancel(),e(...r)},run.cancel=cancel,run.pending=()=>!!t,run}t.r(r),t.d(r,{debounce:function(){return debounce}})},"./packages/packages/libs/utils/src/encoding.ts":function(e,r,t){t.r(r),t.d(r,{decodeString:function(){return decodeString},encodeString:function(){return encodeString}});const encodeString=e=>{const r=Array.from((new TextEncoder).encode(e),e=>String.fromCharCode(e)).join("");return btoa(r)},decodeString=(e,r)=>{try{const r=atob(e),t=new Uint8Array(Array.from(r,e=>e.charCodeAt(0)));return(new TextDecoder).decode(t)}catch{return void 0!==r?r:""}}},"./packages/packages/libs/utils/src/errors/create-error.ts":function(e,r,t){t.r(r),t.d(r,{createError:function(){return createError}});var n=t("./packages/packages/libs/utils/src/errors/elementor-error.ts");const createError=({code:e,message:r})=>class extends n.ElementorError{constructor({cause:t,context:n}={}){super(r,{cause:t,code:e,context:n})}}},"./packages/packages/libs/utils/src/errors/elementor-error.ts":function(e,r,t){t.r(r),t.d(r,{ElementorError:function(){return ElementorError}});class ElementorError extends Error{constructor(e,{code:r,context:t=null,cause:n=null}){super(e,{cause:n}),this.context=t,this.code=r}}},"./packages/packages/libs/utils/src/errors/ensure-error.ts":function(e,r,t){t.r(r),t.d(r,{ensureError:function(){return ensureError}});const ensureError=e=>{if(e instanceof Error)return e;let r,t=null;try{r=JSON.stringify(e)}catch(e){t=e,r="Unable to stringify the thrown value"}return new Error(`Unexpected non-error thrown: ${r}`,{cause:t})}},"./packages/packages/libs/utils/src/errors/index.ts":function(e,r,t){t.r(r),t.d(r,{ElementorError:function(){return n.ElementorError},createError:function(){return s.createError},ensureError:function(){return c.ensureError}});var n=t("./packages/packages/libs/utils/src/errors/elementor-error.ts"),s=t("./packages/packages/libs/utils/src/errors/create-error.ts"),c=t("./packages/packages/libs/utils/src/errors/ensure-error.ts")},"./packages/packages/libs/utils/src/generate-unique-id.ts":function(e,r,t){function generateUniqueId(e=""){return`${e?`${e}-`:""}${Date.now()}-${Math.random().toString(36).substring(2,9)}`}t.r(r),t.d(r,{generateUniqueId:function(){return generateUniqueId}})},"./packages/packages/libs/utils/src/hash.ts":function(e,r,t){function hash(e){return JSON.stringify(e,(e,r)=>function isPlainObject(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}(r)?Object.keys(r).sort().reduce((e,t)=>(e[t]=r[t],e),{}):r)}function hashString(e,r){let t=5381,n=e.length;for(;n;)t=33*t^e.charCodeAt(--n);const s=(t>>>0).toString(36);if(void 0===r)return s;return s.slice(-r).padStart(r,"0")}t.r(r),t.d(r,{hash:function(){return hash},hashString:function(){return hashString}})},"./packages/packages/libs/utils/src/is-pro.ts":function(e,r,t){function hasProInstalled(){return window.elementor?.helpers?.hasPro?.()??!1}function isProActive(){return!!hasProInstalled()&&(window.elementorPro?.config?.isActive??!1)}function isProAtLeast(e){const r=function getProVersion(){return window.elementorPro?.config?.version??"0.0"}();if(!r)return!1;const[t,n]=r.split(".").map(Number),[s,c]=e.split(".").map(Number);return t>s||t===s&&n>=c}t.r(r),t.d(r,{hasProInstalled:function(){return hasProInstalled},isProActive:function(){return isProActive},isProAtLeast:function(){return isProAtLeast}})},"./packages/packages/libs/utils/src/string-helpers.ts":function(e,r,t){t.r(r),t.d(r,{capitalize:function(){return capitalize}});const capitalize=e=>e.charAt(0).toUpperCase()+e.slice(1)},"./packages/packages/libs/utils/src/throttle.ts":function(e,r,t){function throttle(e,r,t=!1){let n=null,s=!1;const cancel=()=>{n&&(clearTimeout(n),n=null)},run=(...c)=>{n?s=!0:(e(...c),n=setTimeout(()=>{n=null,s&&t&&e(...c),s=!1},r))};return run.flush=(...r)=>{cancel(),e(...r)},run.cancel=cancel,run.pending=()=>!!n,run}t.r(r),t.d(r,{throttle:function(){return throttle}})},"./packages/packages/libs/utils/src/translations.ts":function(e,r,t){function createTranslate({configKey:e,defaultStrings:r={}}){return(t,...n)=>{const s=window.elementorAppConfig,c=s?.[e]?.translations;let a={...r,...c}[t];if(!a)return t;for(let e=0;e<n.length;e++)a=a.replace(`%${e+1}$s`,n[e]),a=a.replace("%s",n[e]);return a}}t.r(r),t.d(r,{createTranslate:function(){return createTranslate}})},"./packages/packages/libs/utils/src/use-debounce-state.ts":function(e,r,t){t.r(r),t.d(r,{useDebounceState:function(){return useDebounceState}});var n=t("react"),s=t("./packages/packages/libs/utils/src/debounce.ts");function useDebounceState(e={}){const{delay:r=300,initialValue:t=""}=e,[c,a]=(0,n.useState)(t),[u,o]=(0,n.useState)(t),i=(0,n.useRef)(null);(0,n.useEffect)(()=>()=>{i.current?.cancel?.()},[]);const l=(0,n.useCallback)(e=>{i.current?.cancel?.(),i.current=(0,s.debounce)(()=>{a(e)},r),i.current()},[r]);return{debouncedValue:c,inputValue:u,handleChange:e=>{o(e),l(e)},setInputValue:o}}},"./packages/packages/libs/utils/src/use-debounced-callback.ts":function(e,r,t){t.r(r),t.d(r,{useDebouncedCallback:function(){return useDebouncedCallback}});var n=t("react"),s=t("./packages/packages/libs/utils/src/debounce.ts");function useDebouncedCallback(e,r){const t=(0,n.useRef)(e);(0,n.useEffect)(()=>{t.current=e},[e]);const c=(0,n.useMemo)(()=>(0,s.debounce)((...e)=>t.current(...e),r),[r]);return(0,n.useEffect)(()=>()=>{c.cancel()},[c]),c}},"./packages/packages/libs/utils/src/use-search-state.ts":function(e,r,t){t.r(r),t.d(r,{useSearchState:function(){return useSearchState}});var n=t("./packages/packages/libs/utils/src/use-debounce-state.ts");function useSearchState({localStorageKey:e}){const{debouncedValue:r,inputValue:t,handleChange:s}=(0,n.useDebounceState)({delay:300,initialValue:(()=>{if(e){const r=localStorage.getItem(e);if(r)return localStorage.removeItem(e),r}return""})()});return{debouncedValue:r,inputValue:t,handleChange:s}}},"./packages/packages/libs/utils/src/version.ts":function(e,r,t){t.r(r),t.d(r,{compareVersions:function(){return compareVersions},isVersionGreaterOrEqual:function(){return isVersionGreaterOrEqual},isVersionLessThan:function(){return isVersionLessThan}});const compareVersions=(e,r)=>{const t=String(e||"0.0.0").split(".").map(Number),n=String(r||"0.0.0").split(".").map(Number);for(let e=0;e<Math.max(t.length,n.length);e++){const r=t[e]||0,s=n[e]||0;if(r!==s)return r-s}return 0},isVersionLessThan=(e,r)=>compareVersions(e,r)<0,isVersionGreaterOrEqual=(e,r)=>compareVersions(e,r)>=0},react:function(e){e.exports=window.React}},r={};function __webpack_require__(t){var n=r[t];if(void 0!==n)return n.exports;var s=r[t]={exports:{}};return e[t](s,s.exports,__webpack_require__),s.exports}__webpack_require__.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=function(e,r){for(var t in r)__webpack_require__.o(r,t)&&!__webpack_require__.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},__webpack_require__.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};!function(){__webpack_require__.r(t),__webpack_require__.d(t,{ElementorError:function(){return e.ElementorError},capitalize:function(){return l.capitalize},compareVersions:function(){return p.compareVersions},createError:function(){return e.createError},createTranslate:function(){return f.createTranslate},debounce:function(){return s.debounce},decodeString:function(){return a.decodeString},encodeString:function(){return a.encodeString},ensureError:function(){return e.ensureError},generateUniqueId:function(){return i.generateUniqueId},hasProInstalled:function(){return g.hasProInstalled},hash:function(){return u.hash},hashString:function(){return u.hashString},isProActive:function(){return g.isProActive},isProAtLeast:function(){return g.isProAtLeast},isVersionGreaterOrEqual:function(){return p.isVersionGreaterOrEqual},isVersionLessThan:function(){return p.isVersionLessThan},throttle:function(){return c.throttle},useDebounceState:function(){return r.useDebounceState},useDebouncedCallback:function(){return n.useDebouncedCallback},useSearchState:function(){return o.useSearchState}});var e=__webpack_require__("./packages/packages/libs/utils/src/errors/index.ts"),r=__webpack_require__("./packages/packages/libs/utils/src/use-debounce-state.ts"),n=__webpack_require__("./packages/packages/libs/utils/src/use-debounced-callback.ts"),s=__webpack_require__("./packages/packages/libs/utils/src/debounce.ts"),c=__webpack_require__("./packages/packages/libs/utils/src/throttle.ts"),a=__webpack_require__("./packages/packages/libs/utils/src/encoding.ts"),u=__webpack_require__("./packages/packages/libs/utils/src/hash.ts"),o=__webpack_require__("./packages/packages/libs/utils/src/use-search-state.ts"),i=__webpack_require__("./packages/packages/libs/utils/src/generate-unique-id.ts"),l=__webpack_require__("./packages/packages/libs/utils/src/string-helpers.ts"),p=__webpack_require__("./packages/packages/libs/utils/src/version.ts"),g=__webpack_require__("./packages/packages/libs/utils/src/is-pro.ts"),f=__webpack_require__("./packages/packages/libs/utils/src/translations.ts")}(),(window.elementorV2=window.elementorV2||{}).utils=t}(),window.elementorV2.utils?.init?.();
1 +(function(react) {
2 +
3 +//#region \0rolldown/runtime.js
4 + var __defProp$1 = Object.defineProperty;
5 + var __name = (target, value) => __defProp$1(target, "name", {
6 + value,
7 + configurable: true
8 + });
9 + var __exportAll = (all, no_symbols) => {
10 + let target = {};
11 + for (var name in all) {
12 + __defProp$1(target, name, {
13 + get: all[name],
14 + enumerable: true
15 + });
16 + }
17 + if (!no_symbols) {
18 + __defProp$1(target, Symbol.toStringTag, { value: "Module" });
19 + }
20 + return target;
21 + };
22 +
23 +//#endregion
24 +
25 +//#region packages/packages/libs/utils/src/errors/elementor-error.ts
26 + var __defProp = Object.defineProperty;
27 + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {
28 + enumerable: true,
29 + configurable: true,
30 + writable: true,
31 + value
32 + }) : obj[key] = value;
33 + var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
34 + var ElementorError = class extends Error {
35 + constructor(message, { code, context = null, cause = null }) {
36 + super(message, { cause });
37 + __publicField(this, "context");
38 + __publicField(this, "code");
39 + this.context = context;
40 + this.code = code;
41 + }
42 + };
43 +
44 +//#endregion
45 +//#region packages/packages/libs/utils/src/errors/create-error.ts
46 + var createError = ({ code, message }) => {
47 + return class extends ElementorError {
48 + constructor({ cause, context } = {}) {
49 + super(message, {
50 + cause,
51 + code,
52 + context
53 + });
54 + }
55 + };
56 + };
57 +
58 +//#endregion
59 +//#region packages/packages/libs/utils/src/errors/ensure-error.ts
60 + var ensureError = (error) => {
61 + if (error instanceof Error) return error;
62 + let message;
63 + let cause = null;
64 + try {
65 + message = JSON.stringify(error);
66 + } catch (e) {
67 + cause = e;
68 + message = "Unable to stringify the thrown value";
69 + }
70 + return new Error(`Unexpected non-error thrown: ${message}`, { cause });
71 + };
72 +
73 +//#endregion
74 +//#region packages/packages/libs/utils/src/debounce.ts
75 + function debounce(fn, wait) {
76 + let timer = null;
77 + const cancel = () => {
78 + if (!timer) return;
79 + clearTimeout(timer);
80 + timer = null;
81 + };
82 + const flush = (...args) => {
83 + cancel();
84 + fn(...args);
85 + };
86 + const run = (...args) => {
87 + cancel();
88 + timer = setTimeout(() => {
89 + fn(...args);
90 + timer = null;
91 + }, wait);
92 + };
93 + const pending = () => !!timer;
94 + run.flush = flush;
95 + run.cancel = cancel;
96 + run.pending = pending;
97 + return run;
98 + }
99 +
100 +//#endregion
101 +//#region packages/packages/libs/utils/src/use-debounce-state.ts
102 + function useDebounceState(options = {}) {
103 + const { delay = 300, initialValue = "" } = options;
104 + const [debouncedValue, setDebouncedValue] = (0, react.useState)(initialValue);
105 + const [inputValue, setInputValue] = (0, react.useState)(initialValue);
106 + const runRef = (0, react.useRef)(null);
107 + (0, react.useEffect)(() => {
108 + return () => {
109 + runRef.current?.cancel?.();
110 + };
111 + }, []);
112 + const debouncedSetValue = (0, react.useCallback)((val) => {
113 + runRef.current?.cancel?.();
114 + runRef.current = debounce(() => {
115 + setDebouncedValue(val);
116 + }, delay);
117 + runRef.current();
118 + }, [delay]);
119 + const handleChange = (val) => {
120 + setInputValue(val);
121 + debouncedSetValue(val);
122 + };
123 + return {
124 + debouncedValue,
125 + inputValue,
126 + handleChange,
127 + setInputValue
128 + };
129 + }
130 +
131 +//#endregion
132 +//#region packages/packages/libs/utils/src/use-debounced-callback.ts
133 + function useDebouncedCallback(callback, delay) {
134 + const callbackRef = (0, react.useRef)(callback);
135 + (0, react.useEffect)(() => {
136 + callbackRef.current = callback;
137 + }, [callback]);
138 + const debounced = (0, react.useMemo)(() => debounce((...args) => callbackRef.current(...args), delay), [delay]);
139 + (0, react.useEffect)(() => {
140 + return () => {
141 + debounced.cancel();
142 + };
143 + }, [debounced]);
144 + return debounced;
145 + }
146 +
147 +//#endregion
148 +//#region packages/packages/libs/utils/src/throttle.ts
149 + function throttle(fn, wait, shouldExecuteIgnoredCalls = false) {
150 + let timer = null;
151 + let ignoredExecution = false;
152 + const cancel = () => {
153 + if (!timer) return;
154 + clearTimeout(timer);
155 + timer = null;
156 + };
157 + const flush = (...args) => {
158 + cancel();
159 + fn(...args);
160 + };
161 + const run = (...args) => {
162 + if (timer) {
163 + ignoredExecution = true;
164 + return;
165 + }
166 + fn(...args);
167 + timer = setTimeout(() => {
168 + timer = null;
169 + if (ignoredExecution && shouldExecuteIgnoredCalls) fn(...args);
170 + ignoredExecution = false;
171 + }, wait);
172 + };
173 + const pending = () => !!timer;
174 + run.flush = flush;
175 + run.cancel = cancel;
176 + run.pending = pending;
177 + return run;
178 + }
179 +
180 +//#endregion
181 +//#region packages/packages/libs/utils/src/encoding.ts
182 + var encodeString = (value) => {
183 + const binary = Array.from(new TextEncoder().encode(value), (b) => String.fromCharCode(b)).join("");
184 + return btoa(binary);
185 + };
186 + var decodeString = (value, fallback) => {
187 + try {
188 + const binary = atob(value);
189 + const bytes = new Uint8Array(Array.from(binary, (char) => char.charCodeAt(0)));
190 + return new TextDecoder().decode(bytes);
191 + } catch {
192 + return fallback !== void 0 ? fallback : "";
193 + }
194 + };
195 +
196 +//#endregion
197 +//#region packages/packages/libs/utils/src/hash.ts
198 + function hash(obj) {
199 + return JSON.stringify(obj, (_, value) => isPlainObject(value) ? Object.keys(value).sort().reduce((result, key) => {
200 + result[key] = value[key];
201 + return result;
202 + }, {}) : value);
203 + }
204 + function isPlainObject(value) {
205 + return !!value && typeof value === "object" && !Array.isArray(value);
206 + }
207 + function hashString(str, length) {
208 + let hashBasis = 5381;
209 + let i = str.length;
210 + while (i) hashBasis = hashBasis * 33 ^ str.charCodeAt(--i);
211 + const result = (hashBasis >>> 0).toString(36);
212 + if (length === void 0) return result;
213 + return result.slice(-length).padStart(length, "0");
214 + }
215 +
216 +//#endregion
217 +//#region packages/packages/libs/utils/src/use-search-state.ts
218 + function useSearchState({ localStorageKey }) {
219 + const getInitialSearchValue = () => {
220 + if (localStorageKey) {
221 + const storedValue = localStorage.getItem(localStorageKey);
222 + if (storedValue) {
223 + localStorage.removeItem(localStorageKey);
224 + return storedValue;
225 + }
226 + }
227 + return "";
228 + };
229 + const { debouncedValue, inputValue, handleChange } = useDebounceState({
230 + delay: 300,
231 + initialValue: getInitialSearchValue()
232 + });
233 + return {
234 + debouncedValue,
235 + inputValue,
236 + handleChange
237 + };
238 + }
239 +
240 +//#endregion
241 +//#region packages/packages/libs/utils/src/generate-unique-id.ts
242 + function generateUniqueId(prefix = "") {
243 + return `${prefix ? `${prefix}-` : ""}${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
244 + }
245 +
246 +//#endregion
247 +//#region packages/packages/libs/utils/src/string-helpers.ts
248 + var capitalize = (str) => {
249 + return str.charAt(0).toUpperCase() + str.slice(1);
250 + };
251 +
252 +//#endregion
253 +//#region packages/packages/libs/utils/src/version.ts
254 + var compareVersions = (a, b) => {
255 + const aParts = String(a || "0.0.0").split(".").map(Number);
256 + const bParts = String(b || "0.0.0").split(".").map(Number);
257 + for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
258 + const aVal = aParts[i] || 0;
259 + const bVal = bParts[i] || 0;
260 + if (aVal !== bVal) return aVal - bVal;
261 + }
262 + return 0;
263 + };
264 + var isVersionLessThan = (a, b) => {
265 + return compareVersions(a, b) < 0;
266 + };
267 + var isVersionGreaterOrEqual = (a, b) => {
268 + return compareVersions(a, b) >= 0;
269 + };
270 +
271 +//#endregion
272 +//#region packages/packages/libs/utils/src/is-pro.ts
273 + function hasProInstalled() {
274 + return window.elementor?.helpers?.hasPro?.() ?? false;
275 + }
276 + function isProActive() {
277 + if (!hasProInstalled()) return false;
278 + return window.elementorPro?.config?.isActive ?? false;
279 + }
280 + function getProVersion() {
281 + return window.elementorPro?.config?.version ?? "0.0";
282 + }
283 + function isProAtLeast(targetVersion) {
284 + const version = getProVersion();
285 + if (!version) return false;
286 + const [major, minor] = version.split(".").map(Number);
287 + const [targetMajor, targetMinor] = targetVersion.split(".").map(Number);
288 + return major > targetMajor || major === targetMajor && minor >= targetMinor;
289 + }
290 +
291 +//#endregion
292 +//#region packages/packages/libs/utils/src/translations.ts
293 + function createTranslate({ configKey, defaultStrings = {} }) {
294 + return (key, ...args) => {
295 + const appConfig = window.elementorAppConfig;
296 + const remoteStrings = Object.fromEntries(Object.entries(appConfig?.[configKey]?.translations ?? {}).filter(([, value]) => "string" === typeof value && "" !== value.trim()));
297 + let template = {
298 + ...defaultStrings,
299 + ...remoteStrings
300 + }[key];
301 + if (!template) return key;
302 + for (let i = 0; i < args.length; i++) {
303 + template = template.replace(`%${i + 1}$s`, args[i]);
304 + template = template.replace("%s", args[i]);
305 + }
306 + return template;
307 + };
308 + }
309 +
310 +//#endregion
311 +//#region packages/packages/libs/utils/src/index.ts
312 + var src_exports = /* @__PURE__ */ __exportAll({
313 + ElementorError: () => ElementorError,
314 + capitalize: () => capitalize,
315 + compareVersions: () => compareVersions,
316 + createError: () => createError,
317 + createTranslate: () => createTranslate,
318 + debounce: () => debounce,
319 + decodeString: () => decodeString,
320 + encodeString: () => encodeString,
321 + ensureError: () => ensureError,
322 + generateUniqueId: () => generateUniqueId,
323 + hasProInstalled: () => hasProInstalled,
324 + hash: () => hash,
325 + hashString: () => hashString,
326 + isProActive: () => isProActive,
327 + isProAtLeast: () => isProAtLeast,
328 + isVersionGreaterOrEqual: () => isVersionGreaterOrEqual,
329 + isVersionLessThan: () => isVersionLessThan,
330 + throttle: () => throttle,
331 + useDebounceState: () => useDebounceState,
332 + useDebouncedCallback: () => useDebouncedCallback,
333 + useSearchState: () => useSearchState
334 + });
335 +
336 +//#endregion
337 +//#region \0elementor-package-library-entry
338 + (window.elementorV2 = window.elementorV2 || {}).utils = src_exports;
339 +
340 +//#endregion
341 +})(React);
342 +window.elementorV2.utils?.init?.();
3 343 //# sourceMappingURL=utils.js.map