@inappstory/slide-api 0.1.51 → 0.1.53

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.
package/dist/index.d.cts CHANGED
@@ -130,7 +130,9 @@ declare class WidgetTimer extends WidgetBase<WidgetTimerOptions> {
130
130
  };
131
131
  }
132
132
 
133
- type WidgetBarcodeOptions = WidgetOptionsBase;
133
+ type WidgetBarcodeOptions = WidgetOptionsBase & {
134
+ layers: Array<HTMLElement>;
135
+ };
134
136
 
135
137
  declare class WidgetBarcode extends WidgetBase<WidgetBarcodeOptions> {
136
138
  static DEFAULTS: WidgetBarcodeOptions;
@@ -148,6 +150,9 @@ declare class WidgetBarcode extends WidgetBase<WidgetBarcodeOptions> {
148
150
  private readonly msgNoMoreCodes;
149
151
  private readonly msgTryAgain;
150
152
  private readonly msgBarcodeRenderError;
153
+ private readonly promocodeExhaustedAction;
154
+ private readonly promocodeExhaustedNotificationText;
155
+ private readonly layers;
151
156
  constructor(element: HTMLElement, options: Partial<WidgetBarcodeOptions>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps);
152
157
  /**
153
158
  * Start or restart widget
@@ -170,17 +175,22 @@ declare class WidgetBarcode extends WidgetBase<WidgetBarcodeOptions> {
170
175
  copyToClipboard(element: HTMLElement): void;
171
176
  private completeWidget;
172
177
  isDone(): boolean;
178
+ doPromocodeExhaustedAction(): void;
179
+ private showPromocodeExhaustedNotification;
180
+ private showPromocodeExhaustedLayer;
173
181
  static api: {
174
182
  widgetClassName: string;
175
183
  onRefreshUserData: typeof WidgetBase.onRefreshUserData;
176
- init: (element: HTMLElement, localData: Record<string, any>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps) => void;
184
+ init: (element: HTMLElement, layers: Array<HTMLElement>, localData: Record<string, any>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps) => void;
177
185
  onStart: (element: HTMLElement) => void;
178
186
  onStop: (element: HTMLElement) => void;
179
187
  click: (element: HTMLElement) => boolean;
180
188
  };
181
189
  }
182
190
 
183
- type WidgetCopyOptions = WidgetOptionsBase;
191
+ type WidgetCopyOptions = WidgetOptionsBase & {
192
+ layers: Array<HTMLElement>;
193
+ };
184
194
 
185
195
  declare class WidgetCopy extends WidgetBase<WidgetCopyOptions> {
186
196
  static DEFAULTS: WidgetCopyOptions;
@@ -197,6 +207,9 @@ declare class WidgetCopy extends WidgetBase<WidgetCopyOptions> {
197
207
  private readonly geometry;
198
208
  private readonly resultLayer;
199
209
  private readonly resultLayerGeometry;
210
+ private readonly promocodeExhaustedAction;
211
+ private readonly promocodeExhaustedNotificationText;
212
+ private readonly layers;
200
213
  constructor(element: HTMLElement, options: Partial<WidgetCopyOptions>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps);
201
214
  /**
202
215
  * Start or restart widget
@@ -216,17 +229,22 @@ declare class WidgetCopy extends WidgetBase<WidgetCopyOptions> {
216
229
  copyToClipboard(element: HTMLElement): void;
217
230
  private completeWidget;
218
231
  isDone(): boolean;
232
+ doPromocodeExhaustedAction(): void;
233
+ private showPromocodeExhaustedNotification;
234
+ private showPromocodeExhaustedLayer;
219
235
  static api: {
220
236
  widgetClassName: string;
221
237
  onRefreshUserData: typeof WidgetBase.onRefreshUserData;
222
- init: (element: HTMLElement, localData: Record<string, any>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps) => void;
238
+ init: (element: HTMLElement, layers: Array<HTMLElement>, localData: Record<string, any>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps) => void;
223
239
  onStart: (element: HTMLElement) => void;
224
240
  onStop: (element: HTMLElement) => void;
225
241
  click: (element: HTMLElement) => boolean;
226
242
  };
227
243
  }
228
244
 
229
- type WidgetDataInputOptions = WidgetOptionsBase;
245
+ type WidgetDataInputOptions = WidgetOptionsBase & {
246
+ layers: Array<HTMLElement>;
247
+ };
230
248
 
231
249
  declare class WidgetDataInput extends WidgetBase<WidgetDataInputOptions> {
232
250
  static DEFAULTS: {
@@ -1621,6 +1639,7 @@ declare class WidgetBase<WidgetOptions extends WidgetOptionsBase> {
1621
1639
  protected localData: Record<string, any>;
1622
1640
  protected firstOpenTime: number;
1623
1641
  protected id: string;
1642
+ protected linkedLayers: Array<string>;
1624
1643
  startReadyPromise: Promise<void>;
1625
1644
  private startReadyResolve;
1626
1645
  constructor(element: HTMLElement, options: Partial<WidgetOptions>, _widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps, elementIdGetter?: (element: HTMLElement) => string, slideGetter?: (element: HTMLElement) => HTMLElement);
@@ -1659,6 +1678,7 @@ declare class WidgetBase<WidgetOptions extends WidgetOptionsBase> {
1659
1678
  onWidgetComplete(): void;
1660
1679
  onWidgetRequirePauseUI(): void;
1661
1680
  onWidgetRequireResumeUI(): void;
1681
+ protected _showWidgetLinkedLayer(layers: Array<HTMLElement>, widgetLayerIndex?: number, withStatEvent?: boolean): void;
1662
1682
  protected _showLayer(layers: Array<HTMLElement>, selectIndex: number, withStatEvent?: boolean): void;
1663
1683
  protected _statEventLayoutShow(layoutIndex: number): void;
1664
1684
  static onRefreshUserData<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(element: HTMLElement, localData: Record<string, any>): void;
package/dist/index.d.ts CHANGED
@@ -130,7 +130,9 @@ declare class WidgetTimer extends WidgetBase<WidgetTimerOptions> {
130
130
  };
131
131
  }
132
132
 
133
- type WidgetBarcodeOptions = WidgetOptionsBase;
133
+ type WidgetBarcodeOptions = WidgetOptionsBase & {
134
+ layers: Array<HTMLElement>;
135
+ };
134
136
 
135
137
  declare class WidgetBarcode extends WidgetBase<WidgetBarcodeOptions> {
136
138
  static DEFAULTS: WidgetBarcodeOptions;
@@ -148,6 +150,9 @@ declare class WidgetBarcode extends WidgetBase<WidgetBarcodeOptions> {
148
150
  private readonly msgNoMoreCodes;
149
151
  private readonly msgTryAgain;
150
152
  private readonly msgBarcodeRenderError;
153
+ private readonly promocodeExhaustedAction;
154
+ private readonly promocodeExhaustedNotificationText;
155
+ private readonly layers;
151
156
  constructor(element: HTMLElement, options: Partial<WidgetBarcodeOptions>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps);
152
157
  /**
153
158
  * Start or restart widget
@@ -170,17 +175,22 @@ declare class WidgetBarcode extends WidgetBase<WidgetBarcodeOptions> {
170
175
  copyToClipboard(element: HTMLElement): void;
171
176
  private completeWidget;
172
177
  isDone(): boolean;
178
+ doPromocodeExhaustedAction(): void;
179
+ private showPromocodeExhaustedNotification;
180
+ private showPromocodeExhaustedLayer;
173
181
  static api: {
174
182
  widgetClassName: string;
175
183
  onRefreshUserData: typeof WidgetBase.onRefreshUserData;
176
- init: (element: HTMLElement, localData: Record<string, any>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps) => void;
184
+ init: (element: HTMLElement, layers: Array<HTMLElement>, localData: Record<string, any>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps) => void;
177
185
  onStart: (element: HTMLElement) => void;
178
186
  onStop: (element: HTMLElement) => void;
179
187
  click: (element: HTMLElement) => boolean;
180
188
  };
181
189
  }
182
190
 
183
- type WidgetCopyOptions = WidgetOptionsBase;
191
+ type WidgetCopyOptions = WidgetOptionsBase & {
192
+ layers: Array<HTMLElement>;
193
+ };
184
194
 
185
195
  declare class WidgetCopy extends WidgetBase<WidgetCopyOptions> {
186
196
  static DEFAULTS: WidgetCopyOptions;
@@ -197,6 +207,9 @@ declare class WidgetCopy extends WidgetBase<WidgetCopyOptions> {
197
207
  private readonly geometry;
198
208
  private readonly resultLayer;
199
209
  private readonly resultLayerGeometry;
210
+ private readonly promocodeExhaustedAction;
211
+ private readonly promocodeExhaustedNotificationText;
212
+ private readonly layers;
200
213
  constructor(element: HTMLElement, options: Partial<WidgetCopyOptions>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps);
201
214
  /**
202
215
  * Start or restart widget
@@ -216,17 +229,22 @@ declare class WidgetCopy extends WidgetBase<WidgetCopyOptions> {
216
229
  copyToClipboard(element: HTMLElement): void;
217
230
  private completeWidget;
218
231
  isDone(): boolean;
232
+ doPromocodeExhaustedAction(): void;
233
+ private showPromocodeExhaustedNotification;
234
+ private showPromocodeExhaustedLayer;
219
235
  static api: {
220
236
  widgetClassName: string;
221
237
  onRefreshUserData: typeof WidgetBase.onRefreshUserData;
222
- init: (element: HTMLElement, localData: Record<string, any>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps) => void;
238
+ init: (element: HTMLElement, layers: Array<HTMLElement>, localData: Record<string, any>, widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps) => void;
223
239
  onStart: (element: HTMLElement) => void;
224
240
  onStop: (element: HTMLElement) => void;
225
241
  click: (element: HTMLElement) => boolean;
226
242
  };
227
243
  }
228
244
 
229
- type WidgetDataInputOptions = WidgetOptionsBase;
245
+ type WidgetDataInputOptions = WidgetOptionsBase & {
246
+ layers: Array<HTMLElement>;
247
+ };
230
248
 
231
249
  declare class WidgetDataInput extends WidgetBase<WidgetDataInputOptions> {
232
250
  static DEFAULTS: {
@@ -1621,6 +1639,7 @@ declare class WidgetBase<WidgetOptions extends WidgetOptionsBase> {
1621
1639
  protected localData: Record<string, any>;
1622
1640
  protected firstOpenTime: number;
1623
1641
  protected id: string;
1642
+ protected linkedLayers: Array<string>;
1624
1643
  startReadyPromise: Promise<void>;
1625
1644
  private startReadyResolve;
1626
1645
  constructor(element: HTMLElement, options: Partial<WidgetOptions>, _widgetCallbacks: WidgetCallbacks, widgetDeps: WidgetDeps, elementIdGetter?: (element: HTMLElement) => string, slideGetter?: (element: HTMLElement) => HTMLElement);
@@ -1659,6 +1678,7 @@ declare class WidgetBase<WidgetOptions extends WidgetOptionsBase> {
1659
1678
  onWidgetComplete(): void;
1660
1679
  onWidgetRequirePauseUI(): void;
1661
1680
  onWidgetRequireResumeUI(): void;
1681
+ protected _showWidgetLinkedLayer(layers: Array<HTMLElement>, widgetLayerIndex?: number, withStatEvent?: boolean): void;
1662
1682
  protected _showLayer(layers: Array<HTMLElement>, selectIndex: number, withStatEvent?: boolean): void;
1663
1683
  protected _statEventLayoutShow(layoutIndex: number): void;
1664
1684
  static onRefreshUserData<Widget extends WidgetBase<WidgetOptions>, WidgetOptions extends WidgetOptionsBase>(element: HTMLElement, localData: Record<string, any>): void;
package/dist/index.js CHANGED
@@ -1359,6 +1359,7 @@ class DataInput {
1359
1359
  class Barcode {
1360
1360
  _elementNodeRef;
1361
1361
  _layer;
1362
+ _layersNodesRefs;
1362
1363
  _widgetApi;
1363
1364
  _widgetCallbacks;
1364
1365
  _widgetDeps;
@@ -1366,9 +1367,10 @@ class Barcode {
1366
1367
  static className() {
1367
1368
  return Barcode._className;
1368
1369
  }
1369
- constructor(_elementNodeRef, _layer, _widgetApi, _widgetCallbacks, _widgetDeps) {
1370
+ constructor(_elementNodeRef, _layer, _layersNodesRefs, _widgetApi, _widgetCallbacks, _widgetDeps) {
1370
1371
  this._elementNodeRef = _elementNodeRef;
1371
1372
  this._layer = _layer;
1373
+ this._layersNodesRefs = _layersNodesRefs;
1372
1374
  this._widgetApi = _widgetApi;
1373
1375
  this._widgetCallbacks = _widgetCallbacks;
1374
1376
  this._widgetDeps = _widgetDeps;
@@ -1379,7 +1381,7 @@ class Barcode {
1379
1381
  }
1380
1382
  init(localData) {
1381
1383
  try {
1382
- this._widgetApi.init(this._elementNodeRef, localData, this._widgetCallbacks, this._widgetDeps);
1384
+ this._widgetApi.init(this._elementNodeRef, this._layersNodesRefs, localData, this._widgetCallbacks, this._widgetDeps);
1383
1385
  }
1384
1386
  catch (e) {
1385
1387
  console.error(e);
@@ -1406,7 +1408,7 @@ class Barcode {
1406
1408
  get isLayerForcePaused() {
1407
1409
  return false;
1408
1410
  }
1409
- static get [Symbol.for("___CTOR_ARGS___")]() { return [`HTMLElement`, `Layer`, `typeof WidgetBarcode.api`, `WidgetCallbacks`, `WidgetDeps`]; }
1411
+ static get [Symbol.for("___CTOR_ARGS___")]() { return [`HTMLElement`, `Layer`, `Array`, `typeof WidgetBarcode.api`, `WidgetCallbacks`, `WidgetDeps`]; }
1410
1412
  }
1411
1413
 
1412
1414
  class ClickableBase {
@@ -1729,6 +1731,7 @@ class Button extends ClickableBase {
1729
1731
  class Copy {
1730
1732
  _elementNodeRef;
1731
1733
  _layer;
1734
+ _layersNodesRefs;
1732
1735
  _widgetApi;
1733
1736
  _widgetCallbacks;
1734
1737
  _widgetDeps;
@@ -1736,9 +1739,10 @@ class Copy {
1736
1739
  static className() {
1737
1740
  return Copy._className;
1738
1741
  }
1739
- constructor(_elementNodeRef, _layer, _widgetApi, _widgetCallbacks, _widgetDeps) {
1742
+ constructor(_elementNodeRef, _layer, _layersNodesRefs, _widgetApi, _widgetCallbacks, _widgetDeps) {
1740
1743
  this._elementNodeRef = _elementNodeRef;
1741
1744
  this._layer = _layer;
1745
+ this._layersNodesRefs = _layersNodesRefs;
1742
1746
  this._widgetApi = _widgetApi;
1743
1747
  this._widgetCallbacks = _widgetCallbacks;
1744
1748
  this._widgetDeps = _widgetDeps;
@@ -1749,7 +1753,7 @@ class Copy {
1749
1753
  }
1750
1754
  init(localData) {
1751
1755
  try {
1752
- this._widgetApi.init(this._elementNodeRef, localData, this._widgetCallbacks, this._widgetDeps);
1756
+ this._widgetApi.init(this._elementNodeRef, this._layersNodesRefs, localData, this._widgetCallbacks, this._widgetDeps);
1753
1757
  }
1754
1758
  catch (e) {
1755
1759
  console.error(e);
@@ -1776,7 +1780,7 @@ class Copy {
1776
1780
  get isLayerForcePaused() {
1777
1781
  return false;
1778
1782
  }
1779
- static get [Symbol.for("___CTOR_ARGS___")]() { return [`HTMLElement`, `Layer`, `typeof WidgetCopy.api`, `WidgetCallbacks`, `WidgetDeps`]; }
1783
+ static get [Symbol.for("___CTOR_ARGS___")]() { return [`HTMLElement`, `Layer`, `Array`, `typeof WidgetCopy.api`, `WidgetCallbacks`, `WidgetDeps`]; }
1780
1784
  }
1781
1785
 
1782
1786
  class DateCountdown {
@@ -3633,9 +3637,11 @@ const tryCreateFromHtmlElement = (nodeRef, layer, widgetCallbacks, widgetDeps) =
3633
3637
  return new Video(nodeRef, layer, layoutApi.VideoPlayer, layer.slideApiDeps);
3634
3638
  //////// widgets ///////
3635
3639
  case Copy.className():
3636
- return layoutApi.widgetCopyApi ? new Copy(nodeRef, layer, layoutApi.widgetCopyApi, widgetCallbacks, widgetDeps) : null;
3640
+ return layoutApi.widgetCopyApi ? new Copy(nodeRef, layer, layersNodesRefs, layoutApi.widgetCopyApi, widgetCallbacks, widgetDeps) : null;
3637
3641
  case Barcode.className():
3638
- return layoutApi.widgetBarcodeApi ? new Barcode(nodeRef, layer, layoutApi.widgetBarcodeApi, widgetCallbacks, widgetDeps) : null;
3642
+ return layoutApi.widgetBarcodeApi
3643
+ ? new Barcode(nodeRef, layer, layersNodesRefs, layoutApi.widgetBarcodeApi, widgetCallbacks, widgetDeps)
3644
+ : null;
3639
3645
  case DataInput.className():
3640
3646
  return layoutApi.widgetDataInputApi
3641
3647
  ? new DataInput(nodeRef, layer, layersNodesRefs, layoutApi.widgetDataInputApi, widgetCallbacks, widgetDeps)
@@ -7108,16 +7114,16 @@ class CardApi {
7108
7114
  if (viewportRatio > _ratio) {
7109
7115
  // fit by height
7110
7116
  slideHeight = viewportHeight;
7111
- slideWidth = Math.ceil(slideHeight * _ratio);
7112
- offset = Math.ceil(slideWidth - viewportWidth) / 2;
7117
+ slideWidth = slideHeight * _ratio;
7118
+ offset = (slideWidth - viewportWidth) / 2;
7113
7119
  slideOffsetMargin = "0 " + -offset + "px"; // -8.5
7114
7120
  xOffset = offset + "px";
7115
7121
  }
7116
7122
  else {
7117
7123
  // fit by width, top and bottom - to offscreen or fill with bg image
7118
7124
  slideWidth = viewportWidth;
7119
- slideHeight = Math.ceil(viewportWidth / _ratio);
7120
- offset = Math.ceil(slideHeight - viewportHeight) / 2;
7125
+ slideHeight = viewportWidth / _ratio;
7126
+ offset = (slideHeight - viewportHeight) / 2;
7121
7127
  slideOffsetMargin = -1 * offset + "px" + " 0 ";
7122
7128
  // offset from viewport bottom to StoryBottom plus safe area offset bottom
7123
7129
  yOffset = `calc(${offset + this._overlappingActionBarHeight}px + env(safe-area-inset-bottom))`;
@@ -7129,8 +7135,8 @@ class CardApi {
7129
7135
  if (viewportRatio > _ratio) {
7130
7136
  // fit by width, top and bottom - to offscreen
7131
7137
  slideWidth = viewportWidth;
7132
- slideHeight = Math.ceil(viewportWidth / _ratio);
7133
- offset = Math.ceil(slideHeight - viewportHeight) / 2;
7138
+ slideHeight = viewportWidth / _ratio;
7139
+ offset = (slideHeight - viewportHeight) / 2;
7134
7140
  slideOffsetMargin = -offset + "px" + " 0 ";
7135
7141
  yOffset = offset + this._overlappingActionBarHeight + "px";
7136
7142
  }
@@ -7138,8 +7144,8 @@ class CardApi {
7138
7144
  // вьюпорт более вытянутый чем надо
7139
7145
  // fit by height, sides - to offscreen
7140
7146
  slideHeight = viewportHeight;
7141
- slideWidth = Math.ceil(slideHeight * _ratio);
7142
- offset = Math.ceil(slideWidth - viewportWidth) / 2;
7147
+ slideWidth = slideHeight * _ratio;
7148
+ offset = (slideWidth - viewportWidth) / 2;
7143
7149
  slideOffsetMargin = "0 " + -offset + "px"; // -8.5
7144
7150
  xOffset = offset + "px";
7145
7151
  }
@@ -7667,6 +7673,7 @@ class WidgetBase {
7667
7673
  localData = null;
7668
7674
  firstOpenTime = 0;
7669
7675
  id;
7676
+ linkedLayers;
7670
7677
  startReadyPromise = null;
7671
7678
  startReadyResolve = null;
7672
7679
  constructor(element, options, _widgetCallbacks, widgetDeps, elementIdGetter, slideGetter) {
@@ -7690,6 +7697,7 @@ class WidgetBase {
7690
7697
  this.disableTimer = getTagData(this.slide, "disableTimer") === "1";
7691
7698
  this.cardId = getValueOrException(getTagDataAsNumber(this.slide, "id"), "Empty cardId");
7692
7699
  this.cardType = getValueOrException(getTagDataAsNumber(this.slide, "cardType"), "Empty card type");
7700
+ this.linkedLayers = getValueOrDefault(getTagDataAsJson(this.element, "linkedLayers"), []);
7693
7701
  this.widgetDeps.getLayoutDirection();
7694
7702
  this.element.dir = this.layoutDirection;
7695
7703
  if (this.element.parentElement != null) {
@@ -7862,6 +7870,14 @@ class WidgetBase {
7862
7870
  onWidgetRequireResumeUI() {
7863
7871
  this._widgetCallbacks.onWidgetRequireResumeUI(this.cardId, this.slideIndex);
7864
7872
  }
7873
+ _showWidgetLinkedLayer(layers, widgetLayerIndex = 0, withStatEvent = false) {
7874
+ if (Array.isArray(this.linkedLayers) && this.linkedLayers[widgetLayerIndex] != null) {
7875
+ const selectedIndex = layers.findIndex(layer => getTagData(layer, "layerId") === this.linkedLayers[widgetLayerIndex]);
7876
+ if (selectedIndex !== -1) {
7877
+ this._showLayer(layers, selectedIndex, withStatEvent);
7878
+ }
7879
+ }
7880
+ }
7865
7881
  _showLayer(layers, selectIndex, withStatEvent = false) {
7866
7882
  if (this.widgetDeps.slideApiDeps.isExistsShowLayer()) {
7867
7883
  this.widgetDeps.slideApiDeps.showLayer(selectIndex);
@@ -8385,9 +8401,7 @@ class WidgetTimer extends WidgetBase {
8385
8401
  this.widgetDeps.slideApiDeps.showNextSlide(0);
8386
8402
  break;
8387
8403
  case TimerCompletionAction.ShowLayer: {
8388
- if (this.layers[1] != null) {
8389
- this._showLayer(this.layers, 1);
8390
- }
8404
+ this._showWidgetLinkedLayer(this.layers);
8391
8405
  }
8392
8406
  }
8393
8407
  }
@@ -17780,12 +17794,19 @@ FontLib.loadFont("OCR-A", 100, 100, "AAEAAAAPAIAAAwBwRkZUTXxHoksAADPIAAAAHEdERUY
17780
17794
  FontLib.loadFont("OCR-B", 96, 100, "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");
17781
17795
  function ean13(opts,dwg) { return _ToAny(bwipp_ean13,opts,dwg); }function pdf417(opts,dwg) { return _ToAny(bwipp_pdf417,opts,dwg); }function qrcode(opts,dwg) { return _ToAny(bwipp_qrcode,opts,dwg); }
17782
17796
 
17797
+ var WidgetBarcodePromocodeExhaustedAction;
17798
+ (function (WidgetBarcodePromocodeExhaustedAction) {
17799
+ WidgetBarcodePromocodeExhaustedAction["ShowNotification"] = "showNotification";
17800
+ WidgetBarcodePromocodeExhaustedAction["ShowLayer"] = "showLayer";
17801
+ })(WidgetBarcodePromocodeExhaustedAction || (WidgetBarcodePromocodeExhaustedAction = {}));
17802
+
17783
17803
  class WidgetBarcode extends WidgetBase {
17784
17804
  static DEFAULTS = {
17785
17805
  slide: null,
17786
17806
  activateAfterCreate: false,
17787
17807
  create: false,
17788
17808
  localData: {},
17809
+ layers: [],
17789
17810
  };
17790
17811
  static widgetClassName = "narrative-element-barcode";
17791
17812
  captionView;
@@ -17801,8 +17822,12 @@ class WidgetBarcode extends WidgetBase {
17801
17822
  msgNoMoreCodes;
17802
17823
  msgTryAgain;
17803
17824
  msgBarcodeRenderError;
17825
+ promocodeExhaustedAction;
17826
+ promocodeExhaustedNotificationText;
17827
+ layers;
17804
17828
  constructor(element, options, widgetCallbacks, widgetDeps) {
17805
17829
  super(element, options, widgetCallbacks, widgetDeps);
17830
+ this.layers = this.options.layers;
17806
17831
  this.captionView = this.element.querySelector(".narrative-element-text-lines");
17807
17832
  this.clipboardTarget = getTagData(element, "clipboardTarget");
17808
17833
  this.isPromotionalCode = getTagData(element, "clipboardType") === "promocode";
@@ -17815,6 +17840,10 @@ class WidgetBarcode extends WidgetBase {
17815
17840
  this.msgNoMoreCodes = getTagData(this.element, "msgNoMoreCodes");
17816
17841
  this.msgTryAgain = getTagData(this.element, "msgTryAgain");
17817
17842
  this.msgBarcodeRenderError = getTagData(this.element, "msgBarcodeRenderError");
17843
+ this.promocodeExhaustedAction =
17844
+ getTagData(element, "promocodeExhaustedAction") ??
17845
+ WidgetBarcodePromocodeExhaustedAction.ShowNotification;
17846
+ this.promocodeExhaustedNotificationText = getTagData(element, "promocodeExhaustedNotificationText") ?? this.msgNoMoreCodes;
17818
17847
  }
17819
17848
  /**
17820
17849
  * Start or restart widget
@@ -17976,7 +18005,7 @@ class WidgetBarcode extends WidgetBase {
17976
18005
  this.setLocalData(this.localData, true);
17977
18006
  }
17978
18007
  else {
17979
- this.msgNoMoreCodes && this.widgetDeps.slideApiDeps.showToast(this.msgNoMoreCodes);
18008
+ this.doPromocodeExhaustedAction();
17980
18009
  }
17981
18010
  }
17982
18011
  else if (status === 12163 || status === 12002) {
@@ -18048,11 +18077,28 @@ class WidgetBarcode extends WidgetBase {
18048
18077
  isDone() {
18049
18078
  return this.localData["_bc_g_" + this.elementId + "_done_at"] !== undefined;
18050
18079
  }
18080
+ doPromocodeExhaustedAction() {
18081
+ switch (this.promocodeExhaustedAction) {
18082
+ case WidgetBarcodePromocodeExhaustedAction.ShowNotification:
18083
+ this.showPromocodeExhaustedNotification();
18084
+ break;
18085
+ case WidgetBarcodePromocodeExhaustedAction.ShowLayer:
18086
+ this.showPromocodeExhaustedLayer();
18087
+ break;
18088
+ }
18089
+ }
18090
+ showPromocodeExhaustedNotification() {
18091
+ if (this.promocodeExhaustedNotificationText)
18092
+ this.widgetDeps.slideApiDeps.showToast(this.promocodeExhaustedNotificationText);
18093
+ }
18094
+ showPromocodeExhaustedLayer() {
18095
+ this._showWidgetLinkedLayer(this.layers);
18096
+ }
18051
18097
  static api = {
18052
18098
  widgetClassName: WidgetBarcode.widgetClassName,
18053
18099
  onRefreshUserData: WidgetBarcode.onRefreshUserData,
18054
- init: function (element, localData, widgetCallbacks, widgetDeps) {
18055
- WidgetBarcode.initWidget(element, localData, (element, options) => new WidgetBarcode(element, options, widgetCallbacks, widgetDeps));
18100
+ init: function (element, layers, localData, widgetCallbacks, widgetDeps) {
18101
+ WidgetBarcode.initWidget(element, localData, (element, options) => new WidgetBarcode(element, { ...options, layers }, widgetCallbacks, widgetDeps));
18056
18102
  },
18057
18103
  onStart: function (element) {
18058
18104
  WidgetBarcode.getInstance(element)?.onStart();
@@ -18082,12 +18128,19 @@ class WidgetBarcode extends WidgetBase {
18082
18128
  static get [Symbol.for("___CTOR_ARGS___")]() { return [`HTMLElement`, `Partial`, `WidgetCallbacks`, `WidgetDeps`]; }
18083
18129
  }
18084
18130
 
18131
+ var WidgetCopyPromocodeExhaustedAction;
18132
+ (function (WidgetCopyPromocodeExhaustedAction) {
18133
+ WidgetCopyPromocodeExhaustedAction["ShowNotification"] = "showNotification";
18134
+ WidgetCopyPromocodeExhaustedAction["ShowLayer"] = "showLayer";
18135
+ })(WidgetCopyPromocodeExhaustedAction || (WidgetCopyPromocodeExhaustedAction = {}));
18136
+
18085
18137
  class WidgetCopy extends WidgetBase {
18086
18138
  static DEFAULTS = {
18087
18139
  slide: null,
18088
18140
  activateAfterCreate: false,
18089
18141
  create: false,
18090
18142
  localData: {},
18143
+ layers: [],
18091
18144
  };
18092
18145
  static widgetClassName = "narrative-element-copy";
18093
18146
  button;
@@ -18102,8 +18155,12 @@ class WidgetCopy extends WidgetBase {
18102
18155
  geometry;
18103
18156
  resultLayer;
18104
18157
  resultLayerGeometry;
18158
+ promocodeExhaustedAction;
18159
+ promocodeExhaustedNotificationText;
18160
+ layers;
18105
18161
  constructor(element, options, widgetCallbacks, widgetDeps) {
18106
18162
  super(element, options, widgetCallbacks, widgetDeps);
18163
+ this.layers = this.options.layers;
18107
18164
  this.button = this.element.querySelector(".narrative-element-text-lines");
18108
18165
  this.clipboardTarget = getTagData(element, "clipboardTarget");
18109
18166
  this.isPromotionalCode = getTagData(element, "clipboardType") === "promocode";
@@ -18112,6 +18169,9 @@ class WidgetCopy extends WidgetBase {
18112
18169
  this.msgServiceError = getTagData(this.element, "msgServiceError");
18113
18170
  this.msgNoMoreCodes = getTagData(this.element, "msgNoMoreCodes");
18114
18171
  this.msgTryAgain = getTagData(this.element, "msgTryAgain");
18172
+ this.promocodeExhaustedAction =
18173
+ getTagData(element, "promocodeExhaustedAction") ?? WidgetCopyPromocodeExhaustedAction.ShowNotification;
18174
+ this.promocodeExhaustedNotificationText = getTagData(element, "promocodeExhaustedNotificationText") ?? this.msgNoMoreCodes;
18115
18175
  this.geometry = this.element.closest(".narrative-element-geometry");
18116
18176
  // this is result layer - skip init
18117
18177
  // todo prevent call Widget.init on result-layer
@@ -18247,7 +18307,7 @@ class WidgetCopy extends WidgetBase {
18247
18307
  this.setLocalData(this.localData, true);
18248
18308
  }
18249
18309
  else {
18250
- this.msgNoMoreCodes && this.widgetDeps.slideApiDeps.showToast(this.msgNoMoreCodes);
18310
+ this.doPromocodeExhaustedAction();
18251
18311
  }
18252
18312
  }
18253
18313
  else if (status === 12163 || status === 12002) {
@@ -18322,13 +18382,30 @@ class WidgetCopy extends WidgetBase {
18322
18382
  isDone() {
18323
18383
  return this.localData["_cp_g_" + this.elementId + "_done_at"] !== undefined;
18324
18384
  }
18385
+ doPromocodeExhaustedAction() {
18386
+ switch (this.promocodeExhaustedAction) {
18387
+ case WidgetCopyPromocodeExhaustedAction.ShowNotification:
18388
+ this.showPromocodeExhaustedNotification();
18389
+ break;
18390
+ case WidgetCopyPromocodeExhaustedAction.ShowLayer:
18391
+ this.showPromocodeExhaustedLayer();
18392
+ break;
18393
+ }
18394
+ }
18395
+ showPromocodeExhaustedNotification() {
18396
+ if (this.promocodeExhaustedNotificationText)
18397
+ this.widgetDeps.slideApiDeps.showToast(this.promocodeExhaustedNotificationText);
18398
+ }
18399
+ showPromocodeExhaustedLayer() {
18400
+ this._showWidgetLinkedLayer(this.layers);
18401
+ }
18325
18402
  static api = {
18326
18403
  widgetClassName: WidgetCopy.widgetClassName,
18327
18404
  onRefreshUserData: WidgetCopy.onRefreshUserData,
18328
- init: function (element, localData, widgetCallbacks, widgetDeps) {
18405
+ init: function (element, layers, localData, widgetCallbacks, widgetDeps) {
18329
18406
  // prevent initWidget for result layer
18330
18407
  if (!element.classList.contains("narrative-element-copy-result-variant")) {
18331
- WidgetCopy.initWidget(element, localData, (element, options) => new WidgetCopy(element, options, widgetCallbacks, widgetDeps));
18408
+ WidgetCopy.initWidget(element, localData, (element, options) => new WidgetCopy(element, { ...options, layers }, widgetCallbacks, widgetDeps));
18332
18409
  }
18333
18410
  },
18334
18411
  onStart: function (element) {
@@ -18561,9 +18638,7 @@ class WidgetDataInput extends WidgetBase {
18561
18638
  }
18562
18639
  }
18563
18640
  showLayer() {
18564
- if (this.layers[1] != null) {
18565
- this._showLayer(this.layers, 1);
18566
- }
18641
+ this._showWidgetLinkedLayer(this.layers);
18567
18642
  }
18568
18643
  static api = {
18569
18644
  widgetClassName: WidgetDataInput.widgetClassName,
@@ -18645,9 +18720,7 @@ class WidgetDateCountdown extends WidgetBase {
18645
18720
  this._showLayer(this.layers, 0);
18646
18721
  }
18647
18722
  else {
18648
- if (this.layers[1] != null) {
18649
- this._showLayer(this.layers, 1);
18650
- }
18723
+ this._showWidgetLinkedLayer(this.layers);
18651
18724
  }
18652
18725
  }
18653
18726
  onPause() {
@@ -18730,9 +18803,7 @@ class WidgetDateCountdown extends WidgetBase {
18730
18803
  }
18731
18804
  else {
18732
18805
  this.pendingUpdate = false;
18733
- if (this.layers[1] != null) {
18734
- this._showLayer(this.layers, 1);
18735
- }
18806
+ this._showWidgetLinkedLayer(this.layers);
18736
18807
  }
18737
18808
  if (this.pendingUpdate) {
18738
18809
  this.env.requestAnimationFrame(() => this.updateTimer());
@@ -19549,15 +19620,9 @@ class WidgetPollLayers extends WidgetBase {
19549
19620
  this.selectedVariant = index;
19550
19621
  this.localData["_pl_g_" + this.elementId + "_sa"] = index;
19551
19622
  this.element.classList.add("done");
19552
- // main
19553
- let layerIndex = 0;
19554
- if (index === 0) {
19555
- layerIndex = 1;
19556
- }
19557
- else if (index === 1) {
19558
- layerIndex = 2;
19623
+ if (index === 0 || index === 1) {
19624
+ this._showWidgetLinkedLayer(this.layers, index, userAction);
19559
19625
  }
19560
- this._showLayer(this.layers, layerIndex, userAction);
19561
19626
  this.startReadyPromise.then(() => {
19562
19627
  if (this.disableTimer) {
19563
19628
  this.onWidgetComplete();
@@ -24201,7 +24266,7 @@ class WidgetShare extends WidgetBase {
24201
24266
  super.onRefreshUserData(localData);
24202
24267
  if (this.withLayer) {
24203
24268
  if (this.isDone()) {
24204
- this._showLayer(this.layers, 1);
24269
+ this._showWidgetLinkedLayer(this.layers);
24205
24270
  }
24206
24271
  else {
24207
24272
  this._showLayer(this.layers, 0);
@@ -24266,7 +24331,7 @@ class WidgetShare extends WidgetBase {
24266
24331
  }
24267
24332
  this._statEventShare(isSuccess, null);
24268
24333
  if (isSuccess && this.withLayer) {
24269
- this._showLayer(this.layers, 1, true);
24334
+ this._showWidgetLinkedLayer(this.layers, 0, true);
24270
24335
  }
24271
24336
  if (this.disableTimer) {
24272
24337
  this.onWidgetComplete();