@saasquatch/squatch-js 2.8.2-13 → 2.8.2-15

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.
@@ -1108,351 +1108,6 @@ function delay(duration) {
1108
1108
  setTimeout(resolve, duration);
1109
1109
  });
1110
1110
  }
1111
- const getSkeleton = ({
1112
- height = "500px",
1113
- skeletonBackgroundColor = "#e0e0e0",
1114
- skeletonShimmerColor = "#f5f5f5",
1115
- borderColor = "#ccc"
1116
- }) => {
1117
- return `
1118
- <style>
1119
- * {
1120
- box-sizing: border-box;
1121
- padding: 0;
1122
- margin: 0;
1123
- }
1124
-
1125
- .widget-container {
1126
- background: white;
1127
- width: 100%;
1128
- max-width: 900px;
1129
- padding: 40px;
1130
- border-radius: 12px;
1131
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
1132
- box-sizing: border-box;
1133
- }
1134
-
1135
- @keyframes shimmer {
1136
- 0% {
1137
- background-position: -100% 0;
1138
- }
1139
- 100% {
1140
- background-position: 100% 0;
1141
- }
1142
- }
1143
-
1144
- .skeleton {
1145
- background: ${skeletonBackgroundColor};
1146
- background: linear-gradient(
1147
- 90deg,
1148
- ${skeletonBackgroundColor} 25%,
1149
- ${skeletonShimmerColor} 50%,
1150
- ${skeletonBackgroundColor} 75%
1151
- );
1152
- background-size: 200% 100%;
1153
- animation: shimmer 1.5s infinite linear;
1154
- border-radius: 6px;
1155
- margin-bottom: 12px;
1156
- }
1157
-
1158
- .sk-title-lg {
1159
- height: 36px;
1160
- width: 50%;
1161
- margin-bottom: 16px;
1162
- }
1163
- .sk-title-md {
1164
- height: 28px;
1165
- width: 30%;
1166
- margin-bottom: 20px;
1167
- margin-top: 40px;
1168
- }
1169
- .sk-text {
1170
- height: 16px;
1171
- width: 80%;
1172
- margin-bottom: 8px;
1173
- }
1174
- .sk-text-short {
1175
- width: 40%;
1176
- }
1177
- .sk-label {
1178
- height: 14px;
1179
- width: 25%;
1180
- margin-bottom: 10px;
1181
- }
1182
-
1183
- .hero-section {
1184
- display: flex;
1185
- gap: 40px;
1186
- margin-bottom: 40px;
1187
- border-bottom: 1px solid ${borderColor};
1188
- padding-bottom: 40px;
1189
- flex-direction: row;
1190
- }
1191
- .hero-content {
1192
- flex: 1;
1193
- display: flex;
1194
- flex-direction: column;
1195
- justify-content: center;
1196
- }
1197
- .hero-image {
1198
- flex: 1;
1199
- height: 300px;
1200
- border-radius: 12px;
1201
- }
1202
-
1203
- .share-section {
1204
- margin-bottom: 40px;
1205
- }
1206
- .sk-input {
1207
- height: 50px;
1208
- width: 100%;
1209
- border-radius: 8px;
1210
- margin-bottom: 16px;
1211
- }
1212
- .social-buttons {
1213
- display: flex;
1214
- gap: 12px;
1215
- }
1216
- .sk-btn-social {
1217
- flex: 1;
1218
- height: 50px;
1219
- border-radius: 8px;
1220
- }
1221
-
1222
- .stats-section {
1223
- display: flex;
1224
- gap: 24px;
1225
- margin-bottom: 40px;
1226
- padding: 30px 0;
1227
- border-top: 1px solid ${borderColor};
1228
- border-bottom: 1px solid ${borderColor};
1229
- }
1230
- .stat-card {
1231
- flex: 1;
1232
- display: flex;
1233
- flex-direction: column;
1234
- align-items: center;
1235
- }
1236
- .stat-divider {
1237
- padding-left: 24px;
1238
- }
1239
-
1240
- .sk-stat-num {
1241
- height: 48px;
1242
- width: 120px;
1243
- margin-bottom: 8px;
1244
- }
1245
- .sk-stat-label {
1246
- height: 18px;
1247
- width: 80px;
1248
- }
1249
-
1250
- .table-header {
1251
- display: flex;
1252
- gap: 16px;
1253
- margin-bottom: 16px;
1254
- }
1255
- .sk-th {
1256
- height: 16px;
1257
- }
1258
- .table-row {
1259
- display: flex;
1260
- align-items: center;
1261
- gap: 16px;
1262
- padding: 16px 0;
1263
- border-bottom: 1px solid ${borderColor};
1264
- }
1265
-
1266
- .col-user {
1267
- flex: 2;
1268
- }
1269
- .col-status {
1270
- flex: 1;
1271
- }
1272
- .col-reward {
1273
- flex: 2;
1274
- }
1275
- .col-date {
1276
- flex: 1;
1277
- }
1278
-
1279
- .sk-badge {
1280
- height: 28px;
1281
- width: 90px;
1282
- border-radius: 14px;
1283
- }
1284
- .sk-reward-block {
1285
- height: 36px;
1286
- width: 100%;
1287
- border-radius: 6px;
1288
- }
1289
-
1290
- .pagination {
1291
- display: flex;
1292
- justify-content: flex-end;
1293
- gap: 8px;
1294
- margin-top: 24px;
1295
- }
1296
- .sk-btn-page {
1297
- height: 36px;
1298
- width: 64px;
1299
- border-radius: 6px;
1300
- margin-bottom: 0;
1301
- }
1302
-
1303
- @media (max-width: 768px) {
1304
- body {
1305
- padding: 20px;
1306
- }
1307
- .widget-container {
1308
- padding: 24px;
1309
- }
1310
-
1311
- .hero-section {
1312
- flex-direction: column-reverse;
1313
- gap: 24px;
1314
- }
1315
- .hero-image {
1316
- height: 220px;
1317
- width: 100%;
1318
- }
1319
- .sk-title-lg {
1320
- width: 80%;
1321
- }
1322
-
1323
- .col-date {
1324
- display: none;
1325
- }
1326
- }
1327
-
1328
- @media (max-width: 480px) {
1329
- body {
1330
- padding: 10px;
1331
- }
1332
- .widget-container {
1333
- padding: 16px;
1334
- }
1335
-
1336
- .sk-stat-num {
1337
- width: 80px;
1338
- height: 40px;
1339
- }
1340
-
1341
- .col-reward {
1342
- display: none;
1343
- }
1344
-
1345
- .col-user {
1346
- flex: 3;
1347
- }
1348
- .col-status {
1349
- flex: 2;
1350
- display: flex;
1351
- justify-content: flex-end;
1352
- }
1353
- }
1354
- </style>
1355
-
1356
- <div class="widget-container">
1357
- <div class="hero-section">
1358
- <div class="hero-content">
1359
- <div class="skeleton sk-title-lg"></div>
1360
- <div class="skeleton sk-text"></div>
1361
- <div class="skeleton sk-text sk-text-short"></div>
1362
- </div>
1363
- <div class="skeleton hero-image"></div>
1364
- </div>
1365
-
1366
- <div class="share-section">
1367
- <div class="skeleton sk-label"></div>
1368
- <div class="skeleton sk-input"></div>
1369
- <div class="social-buttons">
1370
- <div class="skeleton sk-btn-social"></div>
1371
- <div class="skeleton sk-btn-social"></div>
1372
- <div class="skeleton sk-btn-social"></div>
1373
- <div class="skeleton sk-btn-social"></div>
1374
- </div>
1375
- </div>
1376
-
1377
- <div
1378
- class="skeleton sk-title-md"
1379
- style="margin-top: 0; width: 30%; margin-left: auto; margin-right: auto"
1380
- ></div>
1381
- <div
1382
- class="skeleton sk-text"
1383
- style="width: 60%; margin-left: auto; margin-right: auto"
1384
- ></div>
1385
-
1386
- <div class="stats-section">
1387
- <div class="stat-card">
1388
- <div class="skeleton sk-stat-num"></div>
1389
- <div class="skeleton sk-stat-label"></div>
1390
- </div>
1391
- <div class="stat-card stat-divider">
1392
- <div class="skeleton sk-stat-num"></div>
1393
- <div class="skeleton sk-stat-label"></div>
1394
- </div>
1395
- </div>
1396
-
1397
- <div class="skeleton sk-title-md"></div>
1398
-
1399
- <div class="table-header">
1400
- <div class="skeleton sk-th col-user"></div>
1401
- <div class="skeleton sk-th col-status"></div>
1402
- <div class="skeleton sk-th col-reward"></div>
1403
- <div class="skeleton sk-th col-date"></div>
1404
- </div>
1405
-
1406
- <div class="table-row">
1407
- <div class="col-user">
1408
- <div class="skeleton sk-text" style="width: 70%; margin: 0"></div>
1409
- </div>
1410
- <div class="col-status">
1411
- <div class="skeleton sk-badge" style="margin: 0"></div>
1412
- </div>
1413
- <div class="col-reward">
1414
- <div class="skeleton sk-reward-block" style="margin: 0"></div>
1415
- </div>
1416
- <div class="col-date">
1417
- <div class="skeleton sk-text" style="width: 80%; margin: 0"></div>
1418
- </div>
1419
- </div>
1420
- <div class="table-row">
1421
- <div class="col-user">
1422
- <div class="skeleton sk-text" style="width: 60%; margin: 0"></div>
1423
- </div>
1424
- <div class="col-status">
1425
- <div class="skeleton sk-badge" style="margin: 0"></div>
1426
- </div>
1427
- <div class="col-reward">
1428
- <div class="skeleton sk-reward-block" style="margin: 0"></div>
1429
- </div>
1430
- <div class="col-date">
1431
- <div class="skeleton sk-text" style="width: 80%; margin: 0"></div>
1432
- </div>
1433
- </div>
1434
- <div class="table-row">
1435
- <div class="col-user">
1436
- <div class="skeleton sk-text" style="width: 75%; margin: 0"></div>
1437
- </div>
1438
- <div class="col-status">
1439
- <div class="skeleton sk-badge" style="margin: 0"></div>
1440
- </div>
1441
- <div class="col-reward">
1442
- <div class="skeleton sk-reward-block" style="margin: 0"></div>
1443
- </div>
1444
- <div class="col-date">
1445
- <div class="skeleton sk-text" style="width: 80%; margin: 0"></div>
1446
- </div>
1447
- </div>
1448
-
1449
- <div class="pagination">
1450
- <div class="skeleton sk-btn-page"></div>
1451
- <div class="skeleton sk-btn-page"></div>
1452
- </div>
1453
- </div>
1454
- `;
1455
- };
1456
1111
  const _log$7 = browserExports.debug("squatch-js:EMBEDwidget");
1457
1112
  class EmbedWidget extends Widget {
1458
1113
  constructor(params, container) {
@@ -1467,9 +1122,9 @@ class EmbedWidget extends Widget {
1467
1122
  var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
1468
1123
  const brandingConfig = (_b = (_a2 = this.context.widgetConfig) == null ? void 0 : _a2.values) == null ? void 0 : _b.brandingConfig;
1469
1124
  const initialHeight = brandingConfig == null ? void 0 : brandingConfig.loadingHeight;
1470
- const skeletonBackgroundColor = (_d = (_c = brandingConfig == null ? void 0 : brandingConfig.color) == null ? void 0 : _c.loadingSkeleton) == null ? void 0 : _d.background;
1471
- const skeletonShimmerColor = (_f = (_e = brandingConfig == null ? void 0 : brandingConfig.color) == null ? void 0 : _e.loadingSkeleton) == null ? void 0 : _f.animationBackground;
1472
- const borderColor = (_g = brandingConfig == null ? void 0 : brandingConfig.border) == null ? void 0 : _g.borderColor;
1125
+ (_d = (_c = brandingConfig == null ? void 0 : brandingConfig.color) == null ? void 0 : _c.loadingSkeleton) == null ? void 0 : _d.background;
1126
+ (_f = (_e = brandingConfig == null ? void 0 : brandingConfig.color) == null ? void 0 : _e.loadingSkeleton) == null ? void 0 : _f.animationBackground;
1127
+ (_g = brandingConfig == null ? void 0 : brandingConfig.border) == null ? void 0 : _g.borderColor;
1473
1128
  const sizes = (_h = brandingConfig == null ? void 0 : brandingConfig.widgetSize) == null ? void 0 : _h.embeddedWidgets;
1474
1129
  const maxWidth = (sizes == null ? void 0 : sizes.maxWidth) ? formatWidth(sizes.maxWidth) : "";
1475
1130
  const minWidth = (sizes == null ? void 0 : sizes.minWidth) ? formatWidth(sizes.minWidth) : "";
@@ -1478,24 +1133,14 @@ class EmbedWidget extends Widget {
1478
1133
  initialHeight,
1479
1134
  widgetConfig: this.context.widgetConfig
1480
1135
  });
1481
- const skeletonHTML = getSkeleton({
1482
- height: initialHeight,
1483
- skeletonBackgroundColor,
1484
- skeletonShimmerColor,
1485
- borderColor
1486
- });
1487
- const skeletonContainer = document.createElement("div");
1488
- skeletonContainer.innerHTML = skeletonHTML;
1489
1136
  const frame = this._createFrame({
1490
1137
  minWidth,
1491
1138
  maxWidth,
1492
1139
  initialHeight
1493
1140
  });
1494
1141
  const element = this._findElement();
1495
- element.innerHTML = skeletonHTML;
1496
1142
  frame.style.display = "none";
1497
1143
  const injectContents = (target) => {
1498
- target.appendChild(skeletonContainer);
1499
1144
  target.appendChild(frame);
1500
1145
  };
1501
1146
  if ((_i = this.context) == null ? void 0 : _i.container) {
@@ -1544,9 +1189,6 @@ class EmbedWidget extends Widget {
1544
1189
  `);
1545
1190
  frameDoc.close();
1546
1191
  domready(frameDoc, async () => {
1547
- if (skeletonContainer && skeletonContainer.parentNode) {
1548
- skeletonContainer.parentNode.removeChild(skeletonContainer);
1549
- }
1550
1192
  frame.style.display = "block";
1551
1193
  const _sqh = contentWindow.squatch || contentWindow.widgetIdent;
1552
1194
  frame.height = initialHeight || frameDoc.body.scrollHeight;
@@ -2468,49 +2110,22 @@ class DeclarativeEmbedWidget extends DeclarativeWidget {
2468
2110
  this.loaded = true;
2469
2111
  this.container = this.getAttribute("container");
2470
2112
  const skeletonHTML = `
2471
- <div id="loading-skeleton-content">
2472
- <h1>DO I SEE THIS ?</h1>
2113
+ <div>
2114
+ <h1>Do I see this text ????</h1>
2473
2115
  </div>
2474
2116
  `;
2475
- console.log(
2476
- "/////////////////////////////////TESTING//////////////////////////////"
2477
- );
2478
2117
  const skeletonContainer = document.createElement("div");
2479
2118
  skeletonContainer.id = "loading-skeleton";
2480
2119
  skeletonContainer.innerHTML = skeletonHTML;
2481
- skeletonContainer.style.width = "100%";
2482
2120
  const root = this.shadowRoot || this.attachShadow({ mode: "open" });
2483
- if (root.firstChild) {
2484
- root.insertBefore(skeletonContainer, root.firstChild);
2485
- } else {
2486
- root.appendChild(skeletonContainer);
2487
- }
2488
- const removeSkeleton = () => {
2489
- const el = root.getElementById("loading-skeleton");
2490
- if (el) {
2491
- el.remove();
2492
- console.log("Skeleton removed successfully via event");
2493
- }
2494
- };
2495
- this.addEventListener("sq:load", removeSkeleton);
2496
- try {
2497
- await this.renderWidget();
2498
- console.log("Widget rendered (initialization complete)");
2499
- setTimeout(() => {
2500
- const el = root.getElementById("loading-skeleton");
2501
- if (el) {
2502
- console.warn("Removing skeleton via timeout (load event missing)");
2503
- el.remove();
2504
- }
2505
- }, 5e3);
2506
- } catch (err) {
2507
- console.error("Critical Error in renderWidget:", err);
2508
- removeSkeleton();
2121
+ root.innerHTML = "";
2122
+ root.appendChild(skeletonContainer);
2123
+ await this.renderWidget();
2124
+ const loadingElement = root.getElementById("loading-skeleton");
2125
+ if (loadingElement) {
2126
+ loadingElement.remove();
2509
2127
  }
2510
2128
  if (this.getAttribute("open") !== null) this.open();
2511
- console.log(
2512
- "/////////////////////////////////DO YOU SEE THIS CONSOLE LOG????//////////////////////////////"
2513
- );
2514
2129
  }
2515
2130
  }
2516
2131
  class DeclarativePopupWidget extends DeclarativeWidget {
@@ -2536,52 +2151,30 @@ class DeclarativePopupWidget extends DeclarativeWidget {
2536
2151
  }
2537
2152
  }
2538
2153
  async connectedCallback() {
2154
+ var _a2;
2539
2155
  this.loaded = true;
2540
2156
  this.container = this.getAttribute("container");
2541
2157
  const skeletonHTML = `
2542
- <div id="loading-skeleton-content">
2543
- <h1>DO I SEE THIS ?</h1>
2544
- </div>
2545
- `;
2546
- console.log(
2547
- "/////////////////////////////////TESTING//////////////////////////////"
2548
- );
2158
+ <div>
2159
+ <h1>Dynamic Content</h1>
2160
+ <p>This content was dynamically added to the widget before it loaded.</p>
2161
+ </div>
2162
+ `;
2549
2163
  const skeletonContainer = document.createElement("div");
2550
2164
  skeletonContainer.id = "loading-skeleton";
2551
2165
  skeletonContainer.innerHTML = skeletonHTML;
2552
- skeletonContainer.style.width = "100%";
2553
- const root = this.shadowRoot || this.attachShadow({ mode: "open" });
2554
- if (root.firstChild) {
2555
- root.insertBefore(skeletonContainer, root.firstChild);
2556
- } else {
2557
- root.appendChild(skeletonContainer);
2166
+ if (!this.shadowRoot) {
2167
+ this.attachShadow({ mode: "open" });
2558
2168
  }
2559
- const removeSkeleton = () => {
2560
- const el = root.getElementById("loading-skeleton");
2561
- if (el) {
2562
- el.remove();
2563
- console.log("Skeleton removed successfully via event");
2564
- }
2565
- };
2566
- this.addEventListener("sq:load", removeSkeleton);
2567
- try {
2568
- await this.renderWidget();
2569
- console.log("Widget rendered (initialization complete)");
2570
- setTimeout(() => {
2571
- const el = root.getElementById("loading-skeleton");
2572
- if (el) {
2573
- console.warn("Removing skeleton via timeout (load event missing)");
2574
- el.remove();
2575
- }
2576
- }, 5e3);
2577
- } catch (err) {
2578
- console.error("Critical Error in renderWidget:", err);
2579
- removeSkeleton();
2169
+ if (this.shadowRoot) {
2170
+ this.shadowRoot.innerHTML = skeletonHTML;
2171
+ }
2172
+ await this.renderWidget();
2173
+ const loadingElement = (_a2 = this.shadowRoot) == null ? void 0 : _a2.getElementById("loading-skeleton");
2174
+ if (loadingElement) {
2175
+ loadingElement.remove();
2580
2176
  }
2581
2177
  if (this.getAttribute("open") !== null) this.open();
2582
- console.log(
2583
- "/////////////////////////////////DO YOU SEE THIS CONSOLE LOG????//////////////////////////////"
2584
- );
2585
2178
  }
2586
2179
  }
2587
2180
  class SquatchEmbed extends DeclarativeEmbedWidget {