appscms-tools-theme 5.1.8 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/_data/.DS_Store +0 -0
  3. data/_data/aitools/en/ai-article-writer.json +184 -0
  4. data/_data/aitools/en/all-in-one-social-post.json +217 -0
  5. data/_data/aitools/en/amazon-product-bullet-points-generator.json +224 -0
  6. data/_data/aitools/en/amazon-product-description-generator.json +237 -0
  7. data/_data/aitools/en/blog-conclusion-generator.json +253 -0
  8. data/_data/aitools/en/blog-content-calendar.json +232 -0
  9. data/_data/aitools/en/blog-introduction-generator.json +246 -0
  10. data/_data/aitools/en/blog-outline-generator.json +232 -0
  11. data/_data/aitools/en/blog-section-generator.json +253 -0
  12. data/_data/aitools/en/blog-title-generator.json +232 -0
  13. data/_data/aitools/en/blog-topic-ideas.json +232 -0
  14. data/_data/aitools/en/brand-name-generator.json +215 -0
  15. data/_data/aitools/en/caption-generator.json +271 -0
  16. data/_data/aitools/en/engagement-post-generator.json +251 -0
  17. data/_data/aitools/en/facebook-post.json +232 -0
  18. data/_data/aitools/en/hidden-fact-finder.json +232 -0
  19. data/_data/aitools/en/human-written-blog-post.json +232 -0
  20. data/_data/aitools/en/instagram-bio-generator.json +246 -0
  21. data/_data/aitools/en/instagram-caption.json +232 -0
  22. data/_data/aitools/en/instagram-carousel.json +250 -0
  23. data/_data/aitools/en/instagram-hashtag-generator.json +246 -0
  24. data/_data/aitools/en/instagram-name-generator.json +239 -0
  25. data/_data/aitools/en/instagram-threads-generator.json +239 -0
  26. data/_data/aitools/en/interactive-content-creator.json +252 -0
  27. data/_data/aitools/en/linkedin-hashtag-generator.json +239 -0
  28. data/_data/aitools/en/linkedin-post.json +232 -0
  29. data/_data/aitools/en/motivational-posts.json +239 -0
  30. data/_data/aitools/en/pinterest-pin.json +217 -0
  31. data/_data/aitools/en/platform-specific-content-generator.json +246 -0
  32. data/_data/aitools/en/product-description.json +222 -0
  33. data/_data/aitools/en/quick-article-writer.json +253 -0
  34. data/_data/aitools/en/replies-for-facebook.json +239 -0
  35. data/_data/aitools/en/replies-for-instagram.json +239 -0
  36. data/_data/aitools/en/replies-for-linkedin.json +239 -0
  37. data/_data/aitools/en/replies-for-twitter.json +239 -0
  38. data/_data/aitools/en/rewrite-article-with-keywords.json +246 -0
  39. data/_data/aitools/en/script-for-instagram-reel.json +246 -0
  40. data/_data/aitools/en/script-for-tiktok-video.json +246 -0
  41. data/_data/aitools/en/seo-optimized-blog-post.json +239 -0
  42. data/_data/aitools/en/snapchat-caption-maker.json +245 -0
  43. data/_data/aitools/en/social-media-bio-creator.json +274 -0
  44. data/_data/aitools/en/social-media-bio-generator.json +246 -0
  45. data/_data/aitools/en/social-media-calendar.json +250 -0
  46. data/_data/aitools/en/tiktok-caption.json +232 -0
  47. data/_data/aitools/en/tiktok-username-generator.json +239 -0
  48. data/_data/aitools/en/twitter-poll-generator.json +250 -0
  49. data/_data/aitools/en/twitter-post.json +272 -0
  50. data/_data/contenttool/en/features.json +217 -10
  51. data/_includes/.DS_Store +0 -0
  52. data/_includes/appscms/.DS_Store +0 -0
  53. data/_includes/appscms/customblog/pageRelatedPosts.html +1 -1
  54. data/_layouts/appscms-feature.html +1 -1
  55. data/_layouts/content-tool-ai copy 2.html +6611 -0
  56. data/_layouts/content-tool-ai.html +305 -44
  57. data/assets/.DS_Store +0 -0
  58. data/assets/css/content-tool-ai.css +815 -11
  59. metadata +50 -67
  60. data/assets/js/.DS_Store +0 -0
  61. data/assets/js/TopScroll.js +0 -8
  62. data/assets/js/adBlocker.js +0 -68
  63. data/assets/js/ads.js +0 -8
  64. data/assets/js/append-div.js +0 -10
  65. data/assets/js/appscms-infographics.js +0 -0
  66. data/assets/js/appscms-login.js +0 -447
  67. data/assets/js/appscms-search-home1.js +0 -136
  68. data/assets/js/appscms-search.js +0 -133
  69. data/assets/js/appscms-theme.js +0 -459
  70. data/assets/js/batch.js +0 -219
  71. data/assets/js/blog-topic-ideas.js +0 -57
  72. data/assets/js/calculator-tooltip.js +0 -3
  73. data/assets/js/devtools.js +0 -82
  74. data/assets/js/face-api.js +0 -38064
  75. data/assets/js/face-detection.js +0 -303
  76. data/assets/js/faceSystem.js +0 -0
  77. data/assets/js/featureResult.js +0 -48
  78. data/assets/js/frame.js +0 -264
  79. data/assets/js/googledrive.js +0 -158
  80. data/assets/js/homeResult.js +0 -37
  81. data/assets/js/human-written-blog-post.js +0 -57
  82. data/assets/js/instagram-caption.js +0 -57
  83. data/assets/js/instagram-hashtag-generator.js +0 -10
  84. data/assets/js/instagram-name-generator.js +0 -61
  85. data/assets/js/manifest.json +0 -17
  86. data/assets/js/models/age_gender_model-shard1 +0 -0
  87. data/assets/js/models/age_gender_model-weights_manifest.json +0 -1
  88. data/assets/js/models/face_expression_model-shard1 +0 -0
  89. data/assets/js/models/face_expression_model-weights_manifest.json +0 -1
  90. data/assets/js/models/face_landmark_68_model-shard1 +0 -0
  91. data/assets/js/models/face_landmark_68_model-weights_manifest.json +0 -1
  92. data/assets/js/models/face_landmark_68_tiny_model-shard1 +0 -0
  93. data/assets/js/models/face_landmark_68_tiny_model-weights_manifest.json +0 -1
  94. data/assets/js/models/face_recognition_model-shard1 +0 -0
  95. data/assets/js/models/face_recognition_model-shard2 +0 -6
  96. data/assets/js/models/face_recognition_model-weights_manifest.json +0 -1
  97. data/assets/js/models/mtcnn_model-shard1 +0 -0
  98. data/assets/js/models/mtcnn_model-weights_manifest.json +0 -1
  99. data/assets/js/models/ssd_mobilenetv1_model-shard1 +0 -0
  100. data/assets/js/models/ssd_mobilenetv1_model-shard2 +8 -137
  101. data/assets/js/models/ssd_mobilenetv1_model-weights_manifest.json +0 -1
  102. data/assets/js/models/tiny_face_detector_model-shard1 +0 -0
  103. data/assets/js/models/tiny_face_detector_model-weights_manifest.json +0 -1
  104. data/assets/js/multiselect.js +0 -185
  105. data/assets/js/partytown/debug/partytown-atomics.js +0 -929
  106. data/assets/js/partytown/debug/partytown-media.js +0 -374
  107. data/assets/js/partytown/debug/partytown-sandbox-sw.js +0 -920
  108. data/assets/js/partytown/debug/partytown-sw.js +0 -59
  109. data/assets/js/partytown/debug/partytown-ww-atomics.js +0 -2699
  110. data/assets/js/partytown/debug/partytown-ww-sw.js +0 -2691
  111. data/assets/js/partytown/debug/partytown.js +0 -114
  112. data/assets/js/partytown/partytown-atomics.js +0 -600
  113. data/assets/js/partytown/partytown-media.js +0 -2
  114. data/assets/js/partytown/partytown-sw.js +0 -50
  115. data/assets/js/perspective.min.js +0 -182
  116. data/assets/js/photo-effects.json +0 -85
  117. data/assets/js/redirectResult.js +0 -10
  118. data/assets/js/sharePage.js +0 -65
  119. data/assets/js/testing-batch.js +0 -39
  120. data/assets/js/theme.js +0 -104
  121. data/assets/js/usageTracking.js +0 -143
  122. data/assets/js/usageTrackingEvents.js +0 -6
  123. data/assets/js/userUsageCount.js +0 -0
  124. data/assets/js/webvitals.js +0 -5
@@ -1,929 +0,0 @@
1
- /* Partytown 0.7.5 - MIT builder.io */
2
- ((window) => {
3
- const isPromise = (v) => "object" == typeof v && v && v.then;
4
- const noop = () => {};
5
- const len = (obj) => obj.length;
6
- const getConstructorName = (obj) => {
7
- var _a, _b, _c;
8
- try {
9
- const constructorName =
10
- null === (_a = null == obj ? void 0 : obj.constructor) || void 0 === _a
11
- ? void 0
12
- : _a.name;
13
- if (constructorName) {
14
- return constructorName;
15
- }
16
- } catch (e) {}
17
- try {
18
- const zoneJsConstructorName =
19
- null ===
20
- (_c =
21
- null ===
22
- (_b =
23
- null == obj ? void 0 : obj.__zone_symbol__originalInstance) ||
24
- void 0 === _b
25
- ? void 0
26
- : _b.constructor) || void 0 === _c
27
- ? void 0
28
- : _c.name;
29
- if (zoneJsConstructorName) {
30
- return zoneJsConstructorName;
31
- }
32
- } catch (e) {}
33
- return "";
34
- };
35
- const startsWith = (str, val) => str.startsWith(val);
36
- const isValidMemberName = (memberName) =>
37
- !(
38
- startsWith(memberName, "webkit") ||
39
- startsWith(memberName, "toJSON") ||
40
- startsWith(memberName, "constructor") ||
41
- startsWith(memberName, "toString") ||
42
- startsWith(memberName, "_")
43
- );
44
- const getNodeName = (node) =>
45
- 11 === node.nodeType && node.host ? "#s" : node.nodeName;
46
- const randomId = () =>
47
- Math.round(Math.random() * Number.MAX_SAFE_INTEGER).toString(36);
48
- const defineConstructorName = (Cstr, value) =>
49
- ((obj, memberName, descriptor) =>
50
- Object.defineProperty(obj, memberName, {
51
- ...descriptor,
52
- configurable: true,
53
- }))(Cstr, "name", {
54
- value: value,
55
- });
56
- const htmlConstructorTags = {
57
- Anchor: "a",
58
- DList: "dl",
59
- Image: "img",
60
- OList: "ol",
61
- Paragraph: "p",
62
- Quote: "q",
63
- TableCaption: "caption",
64
- TableCell: "td",
65
- TableCol: "colgroup",
66
- TableRow: "tr",
67
- TableSection: "tbody",
68
- UList: "ul",
69
- };
70
- const svgConstructorTags = {
71
- Graphics: "g",
72
- SVG: "svg",
73
- };
74
- const InstanceIdKey = Symbol();
75
- const CreatedKey = Symbol();
76
- const instances = new Map();
77
- const mainRefs = new Map();
78
- const winCtxs = {};
79
- const windowIds = new WeakMap();
80
- const getAndSetInstanceId = (instance, instanceId) => {
81
- if (instance) {
82
- if ((instanceId = windowIds.get(instance))) {
83
- return instanceId;
84
- }
85
- (instanceId = instance[InstanceIdKey]) ||
86
- setInstanceId(instance, (instanceId = randomId()));
87
- return instanceId;
88
- }
89
- };
90
- const getInstance = (winId, instanceId, win, doc, docId) => {
91
- if ((win = winCtxs[winId]) && win.$window$) {
92
- if (winId === instanceId) {
93
- return win.$window$;
94
- }
95
- doc = win.$window$.document;
96
- docId = instanceId.split(".").pop();
97
- if ("d" === docId) {
98
- return doc;
99
- }
100
- if ("e" === docId) {
101
- return doc.documentElement;
102
- }
103
- if ("h" === docId) {
104
- return doc.head;
105
- }
106
- if ("b" === docId) {
107
- return doc.body;
108
- }
109
- }
110
- return instances.get(instanceId);
111
- };
112
- const setInstanceId = (instance, instanceId, now) => {
113
- if (instance) {
114
- instances.set(instanceId, instance);
115
- instance[InstanceIdKey] = instanceId;
116
- instance[CreatedKey] = now = Date.now();
117
- if (now > lastCleanup + 5e3) {
118
- instances.forEach((storedInstance, instanceId) => {
119
- storedInstance[CreatedKey] < lastCleanup &&
120
- storedInstance.nodeType &&
121
- !storedInstance.isConnected &&
122
- instances.delete(instanceId);
123
- });
124
- lastCleanup = now;
125
- }
126
- }
127
- };
128
- let lastCleanup = 0;
129
- const mainWindow = window.parent;
130
- const docImpl = document.implementation.createHTMLDocument();
131
- const config = mainWindow.partytown || {};
132
- const libPath = (config.lib || "/partytown/") + "debug/";
133
- const logMain = (msg) => {
134
- console.debug.apply(console, [
135
- "%cMain 🌎",
136
- "background: #717171; color: white; padding: 2px 3px; border-radius: 2px; font-size: 0.8em;",
137
- msg,
138
- ]);
139
- };
140
- const winIds = [];
141
- const normalizedWinId = (winId) => {
142
- winIds.includes(winId) || winIds.push(winId);
143
- return winIds.indexOf(winId) + 1;
144
- };
145
- const defineCustomElement = (winId, worker, ceData) => {
146
- const Cstr = defineConstructorName(
147
- class extends winCtxs[winId].$window$.HTMLElement {},
148
- ceData[0]
149
- );
150
- const ceCallbackMethods =
151
- "connectedCallback,disconnectedCallback,attributeChangedCallback,adoptedCallback".split(
152
- ","
153
- );
154
- ceCallbackMethods.map(
155
- (callbackMethodName) =>
156
- (Cstr.prototype[callbackMethodName] = function (...args) {
157
- worker.postMessage([
158
- 15,
159
- winId,
160
- getAndSetInstanceId(this),
161
- callbackMethodName,
162
- args,
163
- ]);
164
- })
165
- );
166
- Cstr.observedAttributes = ceData[1];
167
- return Cstr;
168
- };
169
- const serializeForWorker = ($winId$, value, added, type, cstrName) =>
170
- void 0 !== value && (type = typeof value)
171
- ? "string" === type ||
172
- "number" === type ||
173
- "boolean" === type ||
174
- null == value
175
- ? [0, value]
176
- : "function" === type
177
- ? [6]
178
- : (added = added || new Set()) && Array.isArray(value)
179
- ? added.has(value)
180
- ? [1, []]
181
- : added.add(value) && [
182
- 1,
183
- value.map((v) => serializeForWorker($winId$, v, added)),
184
- ]
185
- : "object" === type
186
- ? serializedValueIsError(value)
187
- ? [
188
- 14,
189
- {
190
- name: value.name,
191
- message: value.message,
192
- stack: value.stack,
193
- },
194
- ]
195
- : "" === (cstrName = getConstructorName(value))
196
- ? [2, {}]
197
- : "Window" === cstrName
198
- ? [3, [$winId$, $winId$]]
199
- : "HTMLCollection" === cstrName || "NodeList" === cstrName
200
- ? [
201
- 7,
202
- Array.from(value).map(
203
- (v) => serializeForWorker($winId$, v, added)[1]
204
- ),
205
- ]
206
- : cstrName.endsWith("Event")
207
- ? [5, serializeObjectForWorker($winId$, value, added)]
208
- : "CSSRuleList" === cstrName
209
- ? [12, Array.from(value).map(serializeCssRuleForWorker)]
210
- : startsWith(cstrName, "CSS") && cstrName.endsWith("Rule")
211
- ? [11, serializeCssRuleForWorker(value)]
212
- : "CSSStyleDeclaration" === cstrName
213
- ? [13, serializeObjectForWorker($winId$, value, added)]
214
- : "Attr" === cstrName
215
- ? [10, [value.name, value.value]]
216
- : value.nodeType
217
- ? [3, [$winId$, getAndSetInstanceId(value), getNodeName(value)]]
218
- : [2, serializeObjectForWorker($winId$, value, added, true, true)]
219
- : void 0
220
- : value;
221
- const serializeObjectForWorker = (
222
- winId,
223
- obj,
224
- added,
225
- includeFunctions,
226
- includeEmptyStrings,
227
- serializedObj,
228
- propName,
229
- propValue
230
- ) => {
231
- serializedObj = {};
232
- if (!added.has(obj)) {
233
- added.add(obj);
234
- for (propName in obj) {
235
- if (isValidMemberName(propName)) {
236
- propValue =
237
- "path" === propName && getConstructorName(obj).endsWith("Event")
238
- ? obj.composedPath()
239
- : obj[propName];
240
- (includeFunctions || "function" != typeof propValue) &&
241
- (includeEmptyStrings || "" !== propValue) &&
242
- (serializedObj[propName] = serializeForWorker(
243
- winId,
244
- propValue,
245
- added
246
- ));
247
- }
248
- }
249
- }
250
- return serializedObj;
251
- };
252
- const serializeCssRuleForWorker = (cssRule) => {
253
- let obj = {};
254
- let key;
255
- for (key in cssRule) {
256
- validCssRuleProps.includes(key) && (obj[key] = String(cssRule[key]));
257
- }
258
- return obj;
259
- };
260
- const serializedValueIsError = (value) => value instanceof window.top.Error;
261
- const deserializeFromWorker = (
262
- worker,
263
- serializedTransfer,
264
- serializedType,
265
- serializedValue
266
- ) => {
267
- if (serializedTransfer) {
268
- serializedType = serializedTransfer[0];
269
- serializedValue = serializedTransfer[1];
270
- return 0 === serializedType
271
- ? serializedValue
272
- : 4 === serializedType
273
- ? deserializeRefFromWorker(worker, serializedValue)
274
- : 1 === serializedType
275
- ? serializedValue.map((v) => deserializeFromWorker(worker, v))
276
- : 3 === serializedType
277
- ? getInstance(serializedValue[0], serializedValue[1])
278
- : 5 === serializedType
279
- ? constructEvent(deserializeObjectFromWorker(worker, serializedValue))
280
- : 2 === serializedType
281
- ? deserializeObjectFromWorker(worker, serializedValue)
282
- : 8 === serializedType
283
- ? serializedValue
284
- : 9 === serializedType
285
- ? new window[serializedTransfer[2]](serializedValue)
286
- : void 0;
287
- }
288
- };
289
- const deserializeRefFromWorker = (
290
- worker,
291
- { $winId$: $winId$, $instanceId$: $instanceId$, $refId$: $refId$ },
292
- ref
293
- ) => {
294
- ref = mainRefs.get($refId$);
295
- if (!ref) {
296
- ref = function (...args) {
297
- worker.postMessage([
298
- 9,
299
- {
300
- $winId$: $winId$,
301
- $instanceId$: $instanceId$,
302
- $refId$: $refId$,
303
- $thisArg$: serializeForWorker($winId$, this),
304
- $args$: serializeForWorker($winId$, args),
305
- },
306
- ]);
307
- };
308
- mainRefs.set($refId$, ref);
309
- }
310
- return ref;
311
- };
312
- const constructEvent = (eventProps) =>
313
- new ("detail" in eventProps ? CustomEvent : Event)(
314
- eventProps.type,
315
- eventProps
316
- );
317
- const deserializeObjectFromWorker = (worker, serializedValue, obj, key) => {
318
- obj = {};
319
- for (key in serializedValue) {
320
- obj[key] = deserializeFromWorker(worker, serializedValue[key]);
321
- }
322
- return obj;
323
- };
324
- const validCssRuleProps =
325
- "cssText,selectorText,href,media,namespaceURI,prefix,name,conditionText".split(
326
- ","
327
- );
328
- const mainAccessHandler = async (worker, accessReq) => {
329
- let accessRsp = {
330
- $msgId$: accessReq.$msgId$,
331
- };
332
- let totalTasks = len(accessReq.$tasks$);
333
- let i = 0;
334
- let task;
335
- let winId;
336
- let applyPath;
337
- let instance;
338
- let rtnValue;
339
- let isLast;
340
- for (; i < totalTasks; i++) {
341
- try {
342
- isLast = i === totalTasks - 1;
343
- task = accessReq.$tasks$[i];
344
- winId = task.$winId$;
345
- applyPath = task.$applyPath$;
346
- !winCtxs[winId] &&
347
- winId.startsWith("f_") &&
348
- (await new Promise((resolve) => {
349
- let check = 0;
350
- let callback = () => {
351
- winCtxs[winId] || check++ > 1e3
352
- ? resolve()
353
- : requestAnimationFrame(callback);
354
- };
355
- callback();
356
- }));
357
- if (1 === applyPath[0] && applyPath[1] in winCtxs[winId].$window$) {
358
- setInstanceId(
359
- new winCtxs[winId].$window$[applyPath[1]](
360
- ...deserializeFromWorker(worker, applyPath[2])
361
- ),
362
- task.$instanceId$
363
- );
364
- } else {
365
- instance = getInstance(winId, task.$instanceId$);
366
- if (instance) {
367
- rtnValue = applyToInstance(
368
- worker,
369
- winId,
370
- instance,
371
- applyPath,
372
- isLast,
373
- task.$groupedGetters$
374
- );
375
- task.$assignInstanceId$ &&
376
- ("string" == typeof task.$assignInstanceId$
377
- ? setInstanceId(rtnValue, task.$assignInstanceId$)
378
- : (winCtxs[task.$assignInstanceId$.$winId$] = {
379
- $winId$: task.$assignInstanceId$.$winId$,
380
- $window$: {
381
- document: rtnValue,
382
- },
383
- }));
384
- if (isPromise(rtnValue)) {
385
- rtnValue = await rtnValue;
386
- isLast && (accessRsp.$isPromise$ = true);
387
- }
388
- isLast &&
389
- (accessRsp.$rtnValue$ = serializeForWorker(winId, rtnValue));
390
- } else {
391
- accessRsp.$error$ = `Error finding instance "${
392
- task.$instanceId$
393
- }" on window ${normalizedWinId(winId)}`;
394
- console.error(accessRsp.$error$, task);
395
- }
396
- }
397
- } catch (e) {
398
- isLast ? (accessRsp.$error$ = String(e.stack || e)) : console.error(e);
399
- }
400
- }
401
- return accessRsp;
402
- };
403
- const applyToInstance = (
404
- worker,
405
- winId,
406
- instance,
407
- applyPath,
408
- isLast,
409
- groupedGetters
410
- ) => {
411
- let i = 0;
412
- let l = len(applyPath);
413
- let next;
414
- let current;
415
- let previous;
416
- let args;
417
- let groupedRtnValues;
418
- for (; i < l; i++) {
419
- current = applyPath[i];
420
- next = applyPath[i + 1];
421
- previous = applyPath[i - 1];
422
- try {
423
- if (!Array.isArray(next)) {
424
- if ("string" == typeof current || "number" == typeof current) {
425
- if (i + 1 === l && groupedGetters) {
426
- groupedRtnValues = {};
427
- groupedGetters.map(
428
- (propName) => (groupedRtnValues[propName] = instance[propName])
429
- );
430
- return groupedRtnValues;
431
- }
432
- instance = instance[current];
433
- } else {
434
- if (0 === next) {
435
- instance[previous] = deserializeFromWorker(worker, current);
436
- return;
437
- }
438
- if ("function" == typeof instance[previous]) {
439
- args = deserializeFromWorker(worker, current);
440
- "define" === previous &&
441
- "CustomElementRegistry" === getConstructorName(instance) &&
442
- (args[1] = defineCustomElement(winId, worker, args[1]));
443
- "insertRule" === previous &&
444
- args[1] > len(instance.cssRules) &&
445
- (args[1] = len(instance.cssRules));
446
- instance = instance[previous].apply(instance, args);
447
- if ("play" === previous) {
448
- return Promise.resolve();
449
- }
450
- }
451
- }
452
- }
453
- } catch (err) {
454
- if (isLast) {
455
- throw err;
456
- }
457
- console.debug("Non-blocking setter error:", err);
458
- }
459
- }
460
- return instance;
461
- };
462
- const readNextScript = (worker, winCtx) => {
463
- let $winId$ = winCtx.$winId$;
464
- let win = winCtx.$window$;
465
- let doc = win.document;
466
- let scriptSelector =
467
- 'script[type="text/partytown"]:not([data-ptid]):not([data-pterror])';
468
- let scriptElm;
469
- let $instanceId$;
470
- let scriptData;
471
- if (doc && doc.body) {
472
- scriptElm = doc.querySelector(
473
- 'script[type="text/partytown"]:not([data-ptid]):not([data-pterror]):not([async]):not([defer])'
474
- );
475
- scriptElm || (scriptElm = doc.querySelector(scriptSelector));
476
- if (scriptElm) {
477
- scriptElm.dataset.ptid = $instanceId$ = getAndSetInstanceId(
478
- scriptElm,
479
- $winId$
480
- );
481
- scriptData = {
482
- $winId$: $winId$,
483
- $instanceId$: $instanceId$,
484
- };
485
- if (scriptElm.src) {
486
- scriptData.$url$ = scriptElm.src;
487
- scriptData.$orgUrl$ = scriptElm.dataset.ptsrc || scriptElm.src;
488
- } else {
489
- scriptData.$content$ = scriptElm.innerHTML;
490
- }
491
- worker.postMessage([7, scriptData]);
492
- } else {
493
- if (!winCtx.$isInitialized$) {
494
- winCtx.$isInitialized$ = 1;
495
- ((worker, $winId$, win) => {
496
- let queuedForwardCalls = win._ptf;
497
- let forwards = (win.partytown || {}).forward || [];
498
- let i;
499
- let mainForwardFn;
500
- let forwardCall = ($forward$, args) =>
501
- worker.postMessage([
502
- 10,
503
- {
504
- $winId$: $winId$,
505
- $forward$: $forward$,
506
- $args$: serializeForWorker($winId$, Array.from(args)),
507
- },
508
- ]);
509
- win._ptf = void 0;
510
- forwards.map((forwardProps) => {
511
- mainForwardFn = win;
512
- forwardProps.split(".").map((_, i, arr) => {
513
- mainForwardFn = mainForwardFn[arr[i]] =
514
- i + 1 < len(arr)
515
- ? mainForwardFn[arr[i]] || ("push" === arr[i + 1] ? [] : {})
516
- : (...args) => forwardCall(arr, args);
517
- });
518
- });
519
- if (queuedForwardCalls) {
520
- for (i = 0; i < len(queuedForwardCalls); i += 2) {
521
- forwardCall(queuedForwardCalls[i], queuedForwardCalls[i + 1]);
522
- }
523
- }
524
- })(worker, $winId$, win);
525
- doc.dispatchEvent(new CustomEvent("pt0"));
526
- {
527
- const winType = win === win.top ? "top" : "input";
528
- logMain(
529
- `Executed ${winType} window ${normalizedWinId(
530
- $winId$
531
- )} environment scripts in ${(
532
- performance.now() - winCtx.$startTime$
533
- ).toFixed(1)}ms`
534
- );
535
- }
536
- }
537
- worker.postMessage([8, $winId$]);
538
- }
539
- } else {
540
- requestAnimationFrame(() => readNextScript(worker, winCtx));
541
- }
542
- };
543
- const registerWindow = (worker, $winId$, $window$) => {
544
- if (!windowIds.has($window$)) {
545
- windowIds.set($window$, $winId$);
546
- const doc = $window$.document;
547
- const history = $window$.history;
548
- const $parentWinId$ = windowIds.get($window$.parent);
549
- let initialised = false;
550
- const onInitialisedQueue = [];
551
- const onInitialised = (callback) => {
552
- initialised ? callback() : onInitialisedQueue.push(callback);
553
- };
554
- const sendInitEnvData = () => {
555
- worker.postMessage([
556
- 5,
557
- {
558
- $winId$: $winId$,
559
- $parentWinId$: $parentWinId$,
560
- $url$: doc.baseURI,
561
- $visibilityState$: doc.visibilityState,
562
- },
563
- ]);
564
- setTimeout(() => {
565
- initialised = true;
566
- onInitialisedQueue.forEach((callback) => {
567
- callback();
568
- });
569
- });
570
- };
571
- const pushState = history.pushState.bind(history);
572
- const replaceState = history.replaceState.bind(history);
573
- const onLocationChange = (type, state, newUrl, oldUrl) => () => {
574
- setTimeout(() => {
575
- worker.postMessage([
576
- 13,
577
- {
578
- $winId$: $winId$,
579
- type: type,
580
- state: state,
581
- url: doc.baseURI,
582
- newUrl: newUrl,
583
- oldUrl: oldUrl,
584
- },
585
- ]);
586
- });
587
- };
588
- history.pushState = (state, _, newUrl) => {
589
- pushState(state, _, newUrl);
590
- onInitialised(
591
- onLocationChange(
592
- 0,
593
- state,
594
- null == newUrl ? void 0 : newUrl.toString()
595
- )
596
- );
597
- };
598
- history.replaceState = (state, _, newUrl) => {
599
- replaceState(state, _, newUrl);
600
- onInitialised(
601
- onLocationChange(
602
- 1,
603
- state,
604
- null == newUrl ? void 0 : newUrl.toString()
605
- )
606
- );
607
- };
608
- $window$.addEventListener("popstate", (event) => {
609
- onInitialised(onLocationChange(2, event.state));
610
- });
611
- $window$.addEventListener("hashchange", (event) => {
612
- onInitialised(onLocationChange(3, {}, event.newURL, event.oldURL));
613
- });
614
- $window$.addEventListener("ptupdate", () => {
615
- readNextScript(worker, winCtxs[$winId$]);
616
- });
617
- doc.addEventListener("visibilitychange", () =>
618
- worker.postMessage([14, $winId$, doc.visibilityState])
619
- );
620
- winCtxs[$winId$] = {
621
- $winId$: $winId$,
622
- $window$: $window$,
623
- };
624
- winCtxs[$winId$].$startTime$ = performance.now();
625
- {
626
- const winType = $winId$ === $parentWinId$ ? "top" : "input";
627
- logMain(`Registered ${winType} window ${normalizedWinId($winId$)}`);
628
- }
629
- "complete" === doc.readyState
630
- ? sendInitEnvData()
631
- : $window$.addEventListener("load", sendInitEnvData);
632
- }
633
- };
634
- const onMessageFromWebWorker = (worker, msg, winCtx) => {
635
- if (4 === msg[0]) {
636
- registerWindow(worker, randomId(), mainWindow);
637
- } else {
638
- winCtx = winCtxs[msg[1]];
639
- winCtx &&
640
- (7 === msg[0]
641
- ? requestAnimationFrame(() => readNextScript(worker, winCtx))
642
- : 6 === msg[0] &&
643
- ((worker, winCtx, instanceId, errorMsg, scriptElm) => {
644
- scriptElm = winCtx.$window$.document.querySelector(
645
- `[data-ptid="${instanceId}"]`
646
- );
647
- if (scriptElm) {
648
- errorMsg
649
- ? (scriptElm.dataset.pterror = errorMsg)
650
- : (scriptElm.type += "-x");
651
- delete scriptElm.dataset.ptid;
652
- }
653
- readNextScript(worker, winCtx);
654
- })(worker, winCtx, msg[2], msg[3]));
655
- }
656
- };
657
- const readMainInterfaces = () => {
658
- const elms = Object.getOwnPropertyNames(mainWindow)
659
- .map((interfaceName) =>
660
- ((doc, interfaceName, r, tag) => {
661
- r = interfaceName.match(/^(HTML|SVG)(.+)Element$/);
662
- if (r) {
663
- tag = r[2];
664
- return "S" == interfaceName[0]
665
- ? doc.createElementNS(
666
- "http://www.w3.org/2000/svg",
667
- svgConstructorTags[tag] ||
668
- tag.slice(0, 2).toLowerCase() + tag.slice(2)
669
- )
670
- : doc.createElement(htmlConstructorTags[tag] || tag);
671
- }
672
- })(docImpl, interfaceName)
673
- )
674
- .filter((elm) => elm)
675
- .map((elm) => [elm]);
676
- return readImplementations(elms, []);
677
- };
678
- const cstrs = new Set(["Object"]);
679
- const readImplementations = (impls, interfaces) => {
680
- const cstrImpls = impls
681
- .filter((implData) => implData[0])
682
- .map((implData) => {
683
- const impl = implData[0];
684
- const interfaceType = implData[1];
685
- const cstrName = getConstructorName(impl);
686
- const CstrPrototype = mainWindow[cstrName].prototype;
687
- return [cstrName, CstrPrototype, impl, interfaceType];
688
- });
689
- cstrImpls.map(([cstrName, CstrPrototype, impl, intefaceType]) =>
690
- readOwnImplementation(
691
- cstrs,
692
- interfaces,
693
- cstrName,
694
- CstrPrototype,
695
- impl,
696
- intefaceType
697
- )
698
- );
699
- return interfaces;
700
- };
701
- const readImplementation = (cstrName, impl, memberName) => {
702
- let interfaceMembers = [];
703
- let interfaceInfo = [cstrName, "Object", interfaceMembers];
704
- for (memberName in impl) {
705
- readImplementationMember(interfaceMembers, impl, memberName);
706
- }
707
- return interfaceInfo;
708
- };
709
- const readOwnImplementation = (
710
- cstrs,
711
- interfaces,
712
- cstrName,
713
- CstrPrototype,
714
- impl,
715
- interfaceType
716
- ) => {
717
- if (!cstrs.has(cstrName)) {
718
- cstrs.add(cstrName);
719
- const SuperCstr = Object.getPrototypeOf(CstrPrototype);
720
- const superCstrName = getConstructorName(SuperCstr);
721
- const interfaceMembers = [];
722
- const propDescriptors = Object.getOwnPropertyDescriptors(CstrPrototype);
723
- readOwnImplementation(
724
- cstrs,
725
- interfaces,
726
- superCstrName,
727
- SuperCstr,
728
- impl,
729
- interfaceType
730
- );
731
- for (const memberName in propDescriptors) {
732
- readImplementationMember(interfaceMembers, impl, memberName);
733
- }
734
- interfaces.push([
735
- cstrName,
736
- superCstrName,
737
- interfaceMembers,
738
- interfaceType,
739
- getNodeName(impl),
740
- ]);
741
- }
742
- };
743
- const readImplementationMember = (
744
- interfaceMembers,
745
- implementation,
746
- memberName,
747
- value,
748
- memberType,
749
- cstrName
750
- ) => {
751
- try {
752
- if (
753
- isValidMemberName(memberName) &&
754
- isNaN(memberName[0]) &&
755
- "all" !== memberName
756
- ) {
757
- value = implementation[memberName];
758
- memberType = typeof value;
759
- if ("function" === memberType) {
760
- (String(value).includes("[native") ||
761
- Object.getPrototypeOf(implementation)[memberName]) &&
762
- interfaceMembers.push([memberName, 5]);
763
- } else if ("object" === memberType && null != value) {
764
- cstrName = getConstructorName(value);
765
- "Object" !== cstrName &&
766
- self[cstrName] &&
767
- interfaceMembers.push([memberName, value.nodeType || cstrName]);
768
- } else {
769
- "symbol" !== memberType &&
770
- (memberName.toUpperCase() === memberName
771
- ? interfaceMembers.push([memberName, 6, value])
772
- : interfaceMembers.push([memberName, 6]));
773
- }
774
- }
775
- } catch (e) {
776
- console.warn(e);
777
- }
778
- };
779
- const readStorage = (storageName) => {
780
- let items = [];
781
- let i = 0;
782
- let l = len(mainWindow[storageName]);
783
- let key;
784
- for (; i < l; i++) {
785
- key = mainWindow[storageName].key(i);
786
- items.push([key, mainWindow[storageName].getItem(key)]);
787
- }
788
- return items;
789
- };
790
- const getGlobalConstructor = (mainWindow, cstrName) =>
791
- void 0 !== mainWindow[cstrName] ? new mainWindow[cstrName](noop) : 0;
792
- const addGlobalConstructorUsingPrototype = (
793
- $interfaces$,
794
- mainWindow,
795
- cstrName
796
- ) => {
797
- void 0 !== mainWindow[cstrName] &&
798
- $interfaces$.push([
799
- cstrName,
800
- "Object",
801
- Object.keys(mainWindow[cstrName].prototype).map((propName) => [
802
- propName,
803
- 6,
804
- ]),
805
- 12,
806
- ]);
807
- };
808
- let worker;
809
- (async (receiveMessage) => {
810
- const sharedDataBuffer = new SharedArrayBuffer(1073741824);
811
- const sharedData = new Int32Array(sharedDataBuffer);
812
- return (worker, msg) => {
813
- const msgType = msg[0];
814
- const accessReq = msg[1];
815
- if (0 === msgType) {
816
- const initData = (() => {
817
- const elm = docImpl.createElement("i");
818
- const textNode = docImpl.createTextNode("");
819
- const comment = docImpl.createComment("");
820
- const frag = docImpl.createDocumentFragment();
821
- const shadowRoot = docImpl.createElement("p").attachShadow({
822
- mode: "open",
823
- });
824
- const intersectionObserver = getGlobalConstructor(
825
- mainWindow,
826
- "IntersectionObserver"
827
- );
828
- const mutationObserver = getGlobalConstructor(
829
- mainWindow,
830
- "MutationObserver"
831
- );
832
- const resizeObserver = getGlobalConstructor(
833
- mainWindow,
834
- "ResizeObserver"
835
- );
836
- const perf = mainWindow.performance;
837
- const screen = mainWindow.screen;
838
- const impls = [
839
- [mainWindow.history],
840
- [perf],
841
- [perf.navigation],
842
- [perf.timing],
843
- [screen],
844
- [screen.orientation],
845
- [mainWindow.visualViewport],
846
- [intersectionObserver, 12],
847
- [mutationObserver, 12],
848
- [resizeObserver, 12],
849
- [textNode],
850
- [comment],
851
- [frag],
852
- [shadowRoot],
853
- [elm],
854
- [elm.attributes],
855
- [elm.classList],
856
- [elm.dataset],
857
- [elm.style],
858
- [docImpl],
859
- [docImpl.doctype],
860
- ];
861
- const initialInterfaces = [
862
- readImplementation("Window", mainWindow),
863
- readImplementation("Node", textNode),
864
- ];
865
- const $config$ = JSON.stringify(config, (k, v) => {
866
- if ("function" == typeof v) {
867
- v = String(v);
868
- v.startsWith(k + "(") && (v = "function " + v);
869
- }
870
- return v;
871
- });
872
- const initWebWorkerData = {
873
- $config$: $config$,
874
- $interfaces$: readImplementations(impls, initialInterfaces),
875
- $libPath$: new URL(libPath, mainWindow.location) + "",
876
- $origin$: origin,
877
- $localStorage$: readStorage("localStorage"),
878
- $sessionStorage$: readStorage("sessionStorage"),
879
- };
880
- addGlobalConstructorUsingPrototype(
881
- initWebWorkerData.$interfaces$,
882
- mainWindow,
883
- "IntersectionObserverEntry"
884
- );
885
- return initWebWorkerData;
886
- })();
887
- initData.$sharedDataBuffer$ = sharedDataBuffer;
888
- worker.postMessage([1, initData]);
889
- } else {
890
- 2 === msg[0]
891
- ? worker.postMessage([3, readMainInterfaces()])
892
- : 11 === msgType
893
- ? receiveMessage(accessReq, (accessRsp) => {
894
- const stringifiedData = JSON.stringify(accessRsp);
895
- const stringifiedDataLength = stringifiedData.length;
896
- for (let i = 0; i < stringifiedDataLength; i++) {
897
- sharedData[i + 1] = stringifiedData.charCodeAt(i);
898
- }
899
- sharedData[0] = stringifiedDataLength;
900
- Atomics.notify(sharedData, 0);
901
- })
902
- : onMessageFromWebWorker(worker, msg);
903
- }
904
- };
905
- })((accessReq, responseCallback) =>
906
- mainAccessHandler(worker, accessReq).then(responseCallback)
907
- ).then((onMessageHandler) => {
908
- if (onMessageHandler) {
909
- worker = new Worker(libPath + "partytown-ww-atomics.js?v=0.7.5", {
910
- name: "Partytown 🎉",
911
- });
912
- worker.onmessage = (ev) => {
913
- const msg = ev.data;
914
- 12 === msg[0]
915
- ? mainAccessHandler(worker, msg[1])
916
- : onMessageHandler(worker, msg);
917
- };
918
- logMain("Created Partytown web worker (0.7.5)");
919
- worker.onerror = (ev) => console.error("Web Worker Error", ev);
920
- mainWindow.addEventListener("pt1", (ev) =>
921
- registerWindow(
922
- worker,
923
- getAndSetInstanceId(ev.detail.frameElement),
924
- ev.detail
925
- )
926
- );
927
- }
928
- });
929
- })(window);