@liquidcommercedev/rmn-sdk 1.5.0-beta.47 → 1.5.0-beta.49

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.esm.js CHANGED
@@ -16,6 +16,8 @@ var RMN_SPOT_TYPE;
16
16
  RMN_SPOT_TYPE["RB_VIDEO_PLAYER"] = "rbVideoPlayer";
17
17
  RMN_SPOT_TYPE["RB_IN_TEXT"] = "rbInText";
18
18
  RMN_SPOT_TYPE["RB_CAROUSEL_HORIZONTAL_INFO_CARD"] = "rbCarouselHorizontalInfoCard";
19
+ RMN_SPOT_TYPE["RB_CAROUSEL_VERTICAL_SMALL_IMAGE_INFO_CARD"] = "rbCarouselVerticalSmallImageInfoCard";
20
+ RMN_SPOT_TYPE["RB_CAROUSEL_HORIZONTAL_SHORT_INFO_CARD"] = "rbCarouselHorizontalShortInfoCard";
19
21
  // IAB Standard Spot Types
20
22
  RMN_SPOT_TYPE["BILLBOARD"] = "billboard";
21
23
  RMN_SPOT_TYPE["LARGE_RECTANGLE"] = "largeRectangle";
@@ -90,6 +92,7 @@ var ENUM_TEXT_BLOCK_POSITION;
90
92
  ENUM_TEXT_BLOCK_POSITION["TOP"] = "top";
91
93
  ENUM_TEXT_BLOCK_POSITION["BOTTOM"] = "bottom";
92
94
  ENUM_TEXT_BLOCK_POSITION["MIDDLE"] = "middle";
95
+ ENUM_TEXT_BLOCK_POSITION["CENTER"] = "center";
93
96
  ENUM_TEXT_BLOCK_POSITION["TOP_LEFT"] = "top-left";
94
97
  ENUM_TEXT_BLOCK_POSITION["TOP_RIGHT"] = "top-right";
95
98
  ENUM_TEXT_BLOCK_POSITION["BOTTOM_LEFT"] = "bottom-left";
@@ -280,6 +283,7 @@ function bind(fn, thisArg) {
280
283
 
281
284
  const {toString: toString$1} = Object.prototype;
282
285
  const {getPrototypeOf} = Object;
286
+ const {iterator, toStringTag} = Symbol;
283
287
 
284
288
  const kindOf = (cache => thing => {
285
289
  const str = toString$1.call(thing);
@@ -320,7 +324,7 @@ const isUndefined = typeOfTest('undefined');
320
324
  */
321
325
  function isBuffer$1(val) {
322
326
  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
323
- && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
327
+ && isFunction$1(val.constructor.isBuffer) && val.constructor.isBuffer(val);
324
328
  }
325
329
 
326
330
  /**
@@ -365,7 +369,7 @@ const isString = typeOfTest('string');
365
369
  * @param {*} val The value to test
366
370
  * @returns {boolean} True if value is a Function, otherwise false
367
371
  */
368
- const isFunction = typeOfTest('function');
372
+ const isFunction$1 = typeOfTest('function');
369
373
 
370
374
  /**
371
375
  * Determine if a value is a Number
@@ -406,7 +410,28 @@ const isPlainObject = (val) => {
406
410
  }
407
411
 
408
412
  const prototype = getPrototypeOf(val);
409
- return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
413
+ return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);
414
+ };
415
+
416
+ /**
417
+ * Determine if a value is an empty object (safely handles Buffers)
418
+ *
419
+ * @param {*} val The value to test
420
+ *
421
+ * @returns {boolean} True if value is an empty object, otherwise false
422
+ */
423
+ const isEmptyObject = (val) => {
424
+ // Early return for non-objects or Buffers to prevent RangeError
425
+ if (!isObject$1(val) || isBuffer$1(val)) {
426
+ return false;
427
+ }
428
+
429
+ try {
430
+ return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;
431
+ } catch (e) {
432
+ // Fallback for any other objects that might cause RangeError with Object.keys()
433
+ return false;
434
+ }
410
435
  };
411
436
 
412
437
  /**
@@ -452,7 +477,7 @@ const isFileList = kindOfTest('FileList');
452
477
  *
453
478
  * @returns {boolean} True if value is a Stream, otherwise false
454
479
  */
455
- const isStream = (val) => isObject$1(val) && isFunction(val.pipe);
480
+ const isStream = (val) => isObject$1(val) && isFunction$1(val.pipe);
456
481
 
457
482
  /**
458
483
  * Determine if a value is a FormData
@@ -465,10 +490,10 @@ const isFormData = (thing) => {
465
490
  let kind;
466
491
  return thing && (
467
492
  (typeof FormData === 'function' && thing instanceof FormData) || (
468
- isFunction(thing.append) && (
493
+ isFunction$1(thing.append) && (
469
494
  (kind = kindOf(thing)) === 'formdata' ||
470
495
  // detect form-data instance
471
- (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')
496
+ (kind === 'object' && isFunction$1(thing.toString) && thing.toString() === '[object FormData]')
472
497
  )
473
498
  )
474
499
  )
@@ -531,6 +556,11 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
531
556
  fn.call(null, obj[i], i, obj);
532
557
  }
533
558
  } else {
559
+ // Buffer check
560
+ if (isBuffer$1(obj)) {
561
+ return;
562
+ }
563
+
534
564
  // Iterate over object keys
535
565
  const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
536
566
  const len = keys.length;
@@ -544,6 +574,10 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
544
574
  }
545
575
 
546
576
  function findKey(obj, key) {
577
+ if (isBuffer$1(obj)){
578
+ return null;
579
+ }
580
+
547
581
  key = key.toLowerCase();
548
582
  const keys = Object.keys(obj);
549
583
  let i = keys.length;
@@ -584,7 +618,7 @@ const isContextDefined = (context) => !isUndefined(context) && context !== _glob
584
618
  * @returns {Object} Result of all merge properties
585
619
  */
586
620
  function merge(/* obj1, obj2, obj3, ... */) {
587
- const {caseless} = isContextDefined(this) && this || {};
621
+ const {caseless, skipUndefined} = isContextDefined(this) && this || {};
588
622
  const result = {};
589
623
  const assignValue = (val, key) => {
590
624
  const targetKey = caseless && findKey(result, key) || key;
@@ -594,7 +628,7 @@ function merge(/* obj1, obj2, obj3, ... */) {
594
628
  result[targetKey] = merge({}, val);
595
629
  } else if (isArray$1(val)) {
596
630
  result[targetKey] = val.slice();
597
- } else {
631
+ } else if (!skipUndefined || !isUndefined(val)) {
598
632
  result[targetKey] = val;
599
633
  }
600
634
  };
@@ -617,7 +651,7 @@ function merge(/* obj1, obj2, obj3, ... */) {
617
651
  */
618
652
  const extend = (a, b, thisArg, {allOwnKeys}= {}) => {
619
653
  forEach(b, (val, key) => {
620
- if (thisArg && isFunction(val)) {
654
+ if (thisArg && isFunction$1(val)) {
621
655
  a[key] = bind(val, thisArg);
622
656
  } else {
623
657
  a[key] = val;
@@ -757,13 +791,13 @@ const isTypedArray = (TypedArray => {
757
791
  * @returns {void}
758
792
  */
759
793
  const forEachEntry = (obj, fn) => {
760
- const generator = obj && obj[Symbol.iterator];
794
+ const generator = obj && obj[iterator];
761
795
 
762
- const iterator = generator.call(obj);
796
+ const _iterator = generator.call(obj);
763
797
 
764
798
  let result;
765
799
 
766
- while ((result = iterator.next()) && !result.done) {
800
+ while ((result = _iterator.next()) && !result.done) {
767
801
  const pair = result.value;
768
802
  fn.call(obj, pair[0], pair[1]);
769
803
  }
@@ -833,13 +867,13 @@ const reduceDescriptors = (obj, reducer) => {
833
867
  const freezeMethods = (obj) => {
834
868
  reduceDescriptors(obj, (descriptor, name) => {
835
869
  // skip restricted props in strict mode
836
- if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {
870
+ if (isFunction$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {
837
871
  return false;
838
872
  }
839
873
 
840
874
  const value = obj[name];
841
875
 
842
- if (!isFunction(value)) return;
876
+ if (!isFunction$1(value)) return;
843
877
 
844
878
  descriptor.enumerable = false;
845
879
 
@@ -876,6 +910,8 @@ const toFiniteNumber = (value, defaultValue) => {
876
910
  return value != null && Number.isFinite(value = +value) ? value : defaultValue;
877
911
  };
878
912
 
913
+
914
+
879
915
  /**
880
916
  * If the thing is a FormData object, return true, otherwise return false.
881
917
  *
@@ -884,7 +920,7 @@ const toFiniteNumber = (value, defaultValue) => {
884
920
  * @returns {boolean}
885
921
  */
886
922
  function isSpecCompliantForm(thing) {
887
- return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);
923
+ return !!(thing && isFunction$1(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);
888
924
  }
889
925
 
890
926
  const toJSONObject = (obj) => {
@@ -897,6 +933,11 @@ const toJSONObject = (obj) => {
897
933
  return;
898
934
  }
899
935
 
936
+ //Buffer check
937
+ if (isBuffer$1(source)) {
938
+ return source;
939
+ }
940
+
900
941
  if(!('toJSON' in source)) {
901
942
  stack[i] = source;
902
943
  const target = isArray$1(source) ? [] : {};
@@ -921,7 +962,7 @@ const toJSONObject = (obj) => {
921
962
  const isAsyncFn = kindOfTest('AsyncFunction');
922
963
 
923
964
  const isThenable = (thing) =>
924
- thing && (isObject$1(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
965
+ thing && (isObject$1(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing.catch);
925
966
 
926
967
  // original code
927
968
  // https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34
@@ -945,7 +986,7 @@ const _setImmediate = ((setImmediateSupported, postMessageSupported) => {
945
986
  })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);
946
987
  })(
947
988
  typeof setImmediate === 'function',
948
- isFunction(_global.postMessage)
989
+ isFunction$1(_global.postMessage)
949
990
  );
950
991
 
951
992
  const asap = typeof queueMicrotask !== 'undefined' ?
@@ -953,6 +994,10 @@ const asap = typeof queueMicrotask !== 'undefined' ?
953
994
 
954
995
  // *********************
955
996
 
997
+
998
+ const isIterable = (thing) => thing != null && isFunction$1(thing[iterator]);
999
+
1000
+
956
1001
  var utils$1 = {
957
1002
  isArray: isArray$1,
958
1003
  isArrayBuffer,
@@ -964,6 +1009,7 @@ var utils$1 = {
964
1009
  isBoolean,
965
1010
  isObject: isObject$1,
966
1011
  isPlainObject,
1012
+ isEmptyObject,
967
1013
  isReadableStream,
968
1014
  isRequest,
969
1015
  isResponse,
@@ -973,7 +1019,7 @@ var utils$1 = {
973
1019
  isFile,
974
1020
  isBlob,
975
1021
  isRegExp,
976
- isFunction,
1022
+ isFunction: isFunction$1,
977
1023
  isStream,
978
1024
  isURLSearchParams,
979
1025
  isTypedArray,
@@ -1008,7 +1054,8 @@ var utils$1 = {
1008
1054
  isAsyncFn,
1009
1055
  isThenable,
1010
1056
  setImmediate: _setImmediate,
1011
- asap
1057
+ asap,
1058
+ isIterable
1012
1059
  };
1013
1060
 
1014
1061
  var lookup = [];
@@ -3075,11 +3122,18 @@ AxiosError$1.from = (error, code, config, request, response, customProps) => {
3075
3122
  return prop !== 'isAxiosError';
3076
3123
  });
3077
3124
 
3078
- AxiosError$1.call(axiosError, error.message, code, config, request, response);
3125
+ const msg = error && error.message ? error.message : 'Error';
3126
+
3127
+ // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)
3128
+ const errCode = code == null && error ? error.code : code;
3129
+ AxiosError$1.call(axiosError, msg, errCode, config, request, response);
3079
3130
 
3080
- axiosError.cause = error;
3131
+ // Chain the original error on the standard field; non-enumerable to avoid JSON noise
3132
+ if (error && axiosError.cause == null) {
3133
+ Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });
3134
+ }
3081
3135
 
3082
- axiosError.name = error.name;
3136
+ axiosError.name = (error && error.name) || 'Error';
3083
3137
 
3084
3138
  customProps && Object.assign(axiosError, customProps);
3085
3139
 
@@ -3204,6 +3258,10 @@ function toFormData$1(obj, formData, options) {
3204
3258
  return value.toISOString();
3205
3259
  }
3206
3260
 
3261
+ if (utils$1.isBoolean(value)) {
3262
+ return value.toString();
3263
+ }
3264
+
3207
3265
  if (!useBlob && utils$1.isBlob(value)) {
3208
3266
  throw new AxiosError$1('Blob is not supported. Use a Buffer instead.');
3209
3267
  }
@@ -3366,9 +3424,7 @@ function encode$1(val) {
3366
3424
  replace(/%3A/gi, ':').
3367
3425
  replace(/%24/g, '$').
3368
3426
  replace(/%2C/gi, ',').
3369
- replace(/%20/g, '+').
3370
- replace(/%5B/gi, '[').
3371
- replace(/%5D/gi, ']');
3427
+ replace(/%20/g, '+');
3372
3428
  }
3373
3429
 
3374
3430
  /**
@@ -3565,7 +3621,7 @@ var platform = {
3565
3621
  };
3566
3622
 
3567
3623
  function toURLEncodedForm(data, options) {
3568
- return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({
3624
+ return toFormData$1(data, new platform.classes.URLSearchParams(), {
3569
3625
  visitor: function(value, key, path, helpers) {
3570
3626
  if (platform.isNode && utils$1.isBuffer(value)) {
3571
3627
  this.append(key, value.toString('base64'));
@@ -3573,8 +3629,9 @@ function toURLEncodedForm(data, options) {
3573
3629
  }
3574
3630
 
3575
3631
  return helpers.defaultVisitor.apply(this, arguments);
3576
- }
3577
- }, options));
3632
+ },
3633
+ ...options
3634
+ });
3578
3635
  }
3579
3636
 
3580
3637
  /**
@@ -3770,7 +3827,7 @@ const defaults = {
3770
3827
  const strictJSONParsing = !silentJSONParsing && JSONRequested;
3771
3828
 
3772
3829
  try {
3773
- return JSON.parse(data);
3830
+ return JSON.parse(data, this.parseReviver);
3774
3831
  } catch (e) {
3775
3832
  if (strictJSONParsing) {
3776
3833
  if (e.name === 'SyntaxError') {
@@ -3966,10 +4023,18 @@ let AxiosHeaders$1 = class AxiosHeaders {
3966
4023
  setHeaders(header, valueOrRewrite);
3967
4024
  } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
3968
4025
  setHeaders(parseHeaders(header), valueOrRewrite);
3969
- } else if (utils$1.isHeaders(header)) {
3970
- for (const [key, value] of header.entries()) {
3971
- setHeader(value, key, rewrite);
4026
+ } else if (utils$1.isObject(header) && utils$1.isIterable(header)) {
4027
+ let obj = {}, dest, key;
4028
+ for (const entry of header) {
4029
+ if (!utils$1.isArray(entry)) {
4030
+ throw TypeError('Object iterator must return a key-value pair');
4031
+ }
4032
+
4033
+ obj[key = entry[0]] = (dest = obj[key]) ?
4034
+ (utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];
3972
4035
  }
4036
+
4037
+ setHeaders(obj, valueOrRewrite);
3973
4038
  } else {
3974
4039
  header != null && setHeader(valueOrRewrite, header, rewrite);
3975
4040
  }
@@ -4111,6 +4176,10 @@ let AxiosHeaders$1 = class AxiosHeaders {
4111
4176
  return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n');
4112
4177
  }
4113
4178
 
4179
+ getSetCookie() {
4180
+ return this.get("set-cookie") || [];
4181
+ }
4182
+
4114
4183
  get [Symbol.toStringTag]() {
4115
4184
  return 'AxiosHeaders';
4116
4185
  }
@@ -4311,7 +4380,7 @@ function throttle(fn, freq) {
4311
4380
  clearTimeout(timer);
4312
4381
  timer = null;
4313
4382
  }
4314
- fn.apply(null, args);
4383
+ fn(...args);
4315
4384
  };
4316
4385
 
4317
4386
  const throttled = (...args) => {
@@ -4468,7 +4537,7 @@ function combineURLs(baseURL, relativeURL) {
4468
4537
  */
4469
4538
  function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {
4470
4539
  let isRelativeUrl = !isAbsoluteURL(requestedURL);
4471
- if (baseURL && isRelativeUrl || allowAbsoluteUrls == false) {
4540
+ if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {
4472
4541
  return combineURLs(baseURL, requestedURL);
4473
4542
  }
4474
4543
  return requestedURL;
@@ -4567,7 +4636,7 @@ function mergeConfig$1(config1, config2) {
4567
4636
  headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)
4568
4637
  };
4569
4638
 
4570
- utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
4639
+ utils$1.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {
4571
4640
  const merge = mergeMap[prop] || mergeDeepProperties;
4572
4641
  const configValue = merge(config1[prop], config2[prop], prop);
4573
4642
  (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
@@ -4579,7 +4648,7 @@ function mergeConfig$1(config1, config2) {
4579
4648
  var resolveConfig = (config) => {
4580
4649
  const newConfig = mergeConfig$1({}, config);
4581
4650
 
4582
- let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;
4651
+ let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;
4583
4652
 
4584
4653
  newConfig.headers = headers = AxiosHeaders$1.from(headers);
4585
4654
 
@@ -4592,17 +4661,21 @@ var resolveConfig = (config) => {
4592
4661
  );
4593
4662
  }
4594
4663
 
4595
- let contentType;
4596
-
4597
4664
  if (utils$1.isFormData(data)) {
4598
4665
  if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
4599
- headers.setContentType(undefined); // Let the browser set it
4600
- } else if ((contentType = headers.getContentType()) !== false) {
4601
- // fix semicolon duplication issue for ReactNative FormData implementation
4602
- const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];
4603
- headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));
4666
+ headers.setContentType(undefined); // browser handles it
4667
+ } else if (utils$1.isFunction(data.getHeaders)) {
4668
+ // Node.js FormData (like form-data package)
4669
+ const formHeaders = data.getHeaders();
4670
+ // Only set safe headers to avoid overwriting security headers
4671
+ const allowedHeaders = ['content-type', 'content-length'];
4672
+ Object.entries(formHeaders).forEach(([key, val]) => {
4673
+ if (allowedHeaders.includes(key.toLowerCase())) {
4674
+ headers.set(key, val);
4675
+ }
4676
+ });
4604
4677
  }
4605
- }
4678
+ }
4606
4679
 
4607
4680
  // Add xsrf header
4608
4681
  // This is only done if running in a standard browser environment.
@@ -4719,15 +4792,18 @@ var xhrAdapter = isXHRAdapterSupported && function (config) {
4719
4792
  };
4720
4793
 
4721
4794
  // Handle low level network errors
4722
- request.onerror = function handleError() {
4723
- // Real errors are hidden from us by the browser
4724
- // onerror should only fire if it's a network error
4725
- reject(new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, config, request));
4726
-
4727
- // Clean up request
4728
- request = null;
4795
+ request.onerror = function handleError(event) {
4796
+ // Browsers deliver a ProgressEvent in XHR onerror
4797
+ // (message may be empty; when present, surface it)
4798
+ // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event
4799
+ const msg = event && event.message ? event.message : 'Network Error';
4800
+ const err = new AxiosError$1(msg, AxiosError$1.ERR_NETWORK, config, request);
4801
+ // attach the underlying event for consumers who want details
4802
+ err.event = event || null;
4803
+ reject(err);
4804
+ request = null;
4729
4805
  };
4730
-
4806
+
4731
4807
  // Handle timeout
4732
4808
  request.ontimeout = function handleTimeout() {
4733
4809
  let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';
@@ -4941,14 +5017,18 @@ const trackStream = (stream, chunkSize, onProgress, onFinish) => {
4941
5017
  })
4942
5018
  };
4943
5019
 
4944
- const isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';
4945
- const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';
5020
+ const DEFAULT_CHUNK_SIZE = 64 * 1024;
5021
+
5022
+ const {isFunction} = utils$1;
5023
+
5024
+ const globalFetchAPI = (({Request, Response}) => ({
5025
+ Request, Response
5026
+ }))(utils$1.global);
5027
+
5028
+ const {
5029
+ ReadableStream: ReadableStream$1, TextEncoder: TextEncoder$1
5030
+ } = utils$1.global;
4946
5031
 
4947
- // used only inside the fetch adapter
4948
- const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?
4949
- ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :
4950
- async (str) => new Uint8Array(await new Response(str).arrayBuffer())
4951
- );
4952
5032
 
4953
5033
  const test = (fn, ...args) => {
4954
5034
  try {
@@ -4958,211 +5038,268 @@ const test = (fn, ...args) => {
4958
5038
  }
4959
5039
  };
4960
5040
 
4961
- const supportsRequestStream = isReadableStreamSupported && test(() => {
4962
- let duplexAccessed = false;
5041
+ const factory = (env) => {
5042
+ env = utils$1.merge.call({
5043
+ skipUndefined: true
5044
+ }, globalFetchAPI, env);
4963
5045
 
4964
- const hasContentType = new Request(platform.origin, {
4965
- body: new ReadableStream(),
4966
- method: 'POST',
4967
- get duplex() {
4968
- duplexAccessed = true;
4969
- return 'half';
4970
- },
4971
- }).headers.has('Content-Type');
5046
+ const {fetch: envFetch, Request, Response} = env;
5047
+ const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';
5048
+ const isRequestSupported = isFunction(Request);
5049
+ const isResponseSupported = isFunction(Response);
4972
5050
 
4973
- return duplexAccessed && !hasContentType;
4974
- });
5051
+ if (!isFetchSupported) {
5052
+ return false;
5053
+ }
4975
5054
 
4976
- const DEFAULT_CHUNK_SIZE = 64 * 1024;
5055
+ const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1);
4977
5056
 
4978
- const supportsResponseStream = isReadableStreamSupported &&
4979
- test(() => utils$1.isReadableStream(new Response('').body));
5057
+ const encodeText = isFetchSupported && (typeof TextEncoder$1 === 'function' ?
5058
+ ((encoder) => (str) => encoder.encode(str))(new TextEncoder$1()) :
5059
+ async (str) => new Uint8Array(await new Request(str).arrayBuffer())
5060
+ );
4980
5061
 
5062
+ const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {
5063
+ let duplexAccessed = false;
4981
5064
 
4982
- const resolvers = {
4983
- stream: supportsResponseStream && ((res) => res.body)
4984
- };
5065
+ const hasContentType = new Request(platform.origin, {
5066
+ body: new ReadableStream$1(),
5067
+ method: 'POST',
5068
+ get duplex() {
5069
+ duplexAccessed = true;
5070
+ return 'half';
5071
+ },
5072
+ }).headers.has('Content-Type');
4985
5073
 
4986
- isFetchSupported && (((res) => {
4987
- ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {
4988
- !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res) => res[type]() :
4989
- (_, config) => {
4990
- throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config);
4991
- });
5074
+ return duplexAccessed && !hasContentType;
4992
5075
  });
4993
- })(new Response));
4994
5076
 
4995
- const getBodyLength = async (body) => {
4996
- if (body == null) {
4997
- return 0;
4998
- }
5077
+ const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&
5078
+ test(() => utils$1.isReadableStream(new Response('').body));
4999
5079
 
5000
- if(utils$1.isBlob(body)) {
5001
- return body.size;
5002
- }
5080
+ const resolvers = {
5081
+ stream: supportsResponseStream && ((res) => res.body)
5082
+ };
5003
5083
 
5004
- if(utils$1.isSpecCompliantForm(body)) {
5005
- const _request = new Request(platform.origin, {
5006
- method: 'POST',
5007
- body,
5084
+ isFetchSupported && ((() => {
5085
+ ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {
5086
+ !resolvers[type] && (resolvers[type] = (res, config) => {
5087
+ let method = res && res[type];
5088
+
5089
+ if (method) {
5090
+ return method.call(res);
5091
+ }
5092
+
5093
+ throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config);
5094
+ });
5008
5095
  });
5009
- return (await _request.arrayBuffer()).byteLength;
5010
- }
5096
+ })());
5011
5097
 
5012
- if(utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) {
5013
- return body.byteLength;
5014
- }
5098
+ const getBodyLength = async (body) => {
5099
+ if (body == null) {
5100
+ return 0;
5101
+ }
5015
5102
 
5016
- if(utils$1.isURLSearchParams(body)) {
5017
- body = body + '';
5018
- }
5103
+ if (utils$1.isBlob(body)) {
5104
+ return body.size;
5105
+ }
5019
5106
 
5020
- if(utils$1.isString(body)) {
5021
- return (await encodeText(body)).byteLength;
5022
- }
5023
- };
5107
+ if (utils$1.isSpecCompliantForm(body)) {
5108
+ const _request = new Request(platform.origin, {
5109
+ method: 'POST',
5110
+ body,
5111
+ });
5112
+ return (await _request.arrayBuffer()).byteLength;
5113
+ }
5024
5114
 
5025
- const resolveBodyLength = async (headers, body) => {
5026
- const length = utils$1.toFiniteNumber(headers.getContentLength());
5115
+ if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) {
5116
+ return body.byteLength;
5117
+ }
5027
5118
 
5028
- return length == null ? getBodyLength(body) : length;
5029
- };
5119
+ if (utils$1.isURLSearchParams(body)) {
5120
+ body = body + '';
5121
+ }
5122
+
5123
+ if (utils$1.isString(body)) {
5124
+ return (await encodeText(body)).byteLength;
5125
+ }
5126
+ };
5127
+
5128
+ const resolveBodyLength = async (headers, body) => {
5129
+ const length = utils$1.toFiniteNumber(headers.getContentLength());
5130
+
5131
+ return length == null ? getBodyLength(body) : length;
5132
+ };
5133
+
5134
+ return async (config) => {
5135
+ let {
5136
+ url,
5137
+ method,
5138
+ data,
5139
+ signal,
5140
+ cancelToken,
5141
+ timeout,
5142
+ onDownloadProgress,
5143
+ onUploadProgress,
5144
+ responseType,
5145
+ headers,
5146
+ withCredentials = 'same-origin',
5147
+ fetchOptions
5148
+ } = resolveConfig(config);
5149
+
5150
+ let _fetch = envFetch || fetch;
5151
+
5152
+ responseType = responseType ? (responseType + '').toLowerCase() : 'text';
5030
5153
 
5031
- var fetchAdapter = isFetchSupported && (async (config) => {
5032
- let {
5033
- url,
5034
- method,
5035
- data,
5036
- signal,
5037
- cancelToken,
5038
- timeout,
5039
- onDownloadProgress,
5040
- onUploadProgress,
5041
- responseType,
5042
- headers,
5043
- withCredentials = 'same-origin',
5044
- fetchOptions
5045
- } = resolveConfig(config);
5046
-
5047
- responseType = responseType ? (responseType + '').toLowerCase() : 'text';
5048
-
5049
- let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);
5050
-
5051
- let request;
5052
-
5053
- const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {
5154
+ let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);
5155
+
5156
+ let request = null;
5157
+
5158
+ const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {
5054
5159
  composedSignal.unsubscribe();
5055
- });
5160
+ });
5056
5161
 
5057
- let requestContentLength;
5162
+ let requestContentLength;
5058
5163
 
5059
- try {
5060
- if (
5061
- onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&
5062
- (requestContentLength = await resolveBodyLength(headers, data)) !== 0
5063
- ) {
5064
- let _request = new Request(url, {
5065
- method: 'POST',
5066
- body: data,
5067
- duplex: "half"
5068
- });
5164
+ try {
5165
+ if (
5166
+ onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&
5167
+ (requestContentLength = await resolveBodyLength(headers, data)) !== 0
5168
+ ) {
5169
+ let _request = new Request(url, {
5170
+ method: 'POST',
5171
+ body: data,
5172
+ duplex: "half"
5173
+ });
5069
5174
 
5070
- let contentTypeHeader;
5175
+ let contentTypeHeader;
5071
5176
 
5072
- if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
5073
- headers.setContentType(contentTypeHeader);
5074
- }
5177
+ if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
5178
+ headers.setContentType(contentTypeHeader);
5179
+ }
5075
5180
 
5076
- if (_request.body) {
5077
- const [onProgress, flush] = progressEventDecorator(
5078
- requestContentLength,
5079
- progressEventReducer(asyncDecorator(onUploadProgress))
5080
- );
5181
+ if (_request.body) {
5182
+ const [onProgress, flush] = progressEventDecorator(
5183
+ requestContentLength,
5184
+ progressEventReducer(asyncDecorator(onUploadProgress))
5185
+ );
5081
5186
 
5082
- data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
5187
+ data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
5188
+ }
5083
5189
  }
5084
- }
5085
5190
 
5086
- if (!utils$1.isString(withCredentials)) {
5087
- withCredentials = withCredentials ? 'include' : 'omit';
5088
- }
5191
+ if (!utils$1.isString(withCredentials)) {
5192
+ withCredentials = withCredentials ? 'include' : 'omit';
5193
+ }
5089
5194
 
5090
- // Cloudflare Workers throws when credentials are defined
5091
- // see https://github.com/cloudflare/workerd/issues/902
5092
- const isCredentialsSupported = "credentials" in Request.prototype;
5093
- request = new Request(url, {
5094
- ...fetchOptions,
5095
- signal: composedSignal,
5096
- method: method.toUpperCase(),
5097
- headers: headers.normalize().toJSON(),
5098
- body: data,
5099
- duplex: "half",
5100
- credentials: isCredentialsSupported ? withCredentials : undefined
5101
- });
5195
+ // Cloudflare Workers throws when credentials are defined
5196
+ // see https://github.com/cloudflare/workerd/issues/902
5197
+ const isCredentialsSupported = isRequestSupported && "credentials" in Request.prototype;
5102
5198
 
5103
- let response = await fetch(request);
5199
+ const resolvedOptions = {
5200
+ ...fetchOptions,
5201
+ signal: composedSignal,
5202
+ method: method.toUpperCase(),
5203
+ headers: headers.normalize().toJSON(),
5204
+ body: data,
5205
+ duplex: "half",
5206
+ credentials: isCredentialsSupported ? withCredentials : undefined
5207
+ };
5104
5208
 
5105
- const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
5209
+ request = isRequestSupported && new Request(url, resolvedOptions);
5106
5210
 
5107
- if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {
5108
- const options = {};
5211
+ let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));
5109
5212
 
5110
- ['status', 'statusText', 'headers'].forEach(prop => {
5111
- options[prop] = response[prop];
5112
- });
5213
+ const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
5113
5214
 
5114
- const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
5215
+ if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {
5216
+ const options = {};
5115
5217
 
5116
- const [onProgress, flush] = onDownloadProgress && progressEventDecorator(
5117
- responseContentLength,
5118
- progressEventReducer(asyncDecorator(onDownloadProgress), true)
5119
- ) || [];
5218
+ ['status', 'statusText', 'headers'].forEach(prop => {
5219
+ options[prop] = response[prop];
5220
+ });
5120
5221
 
5121
- response = new Response(
5122
- trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
5123
- flush && flush();
5124
- unsubscribe && unsubscribe();
5125
- }),
5126
- options
5127
- );
5128
- }
5222
+ const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
5129
5223
 
5130
- responseType = responseType || 'text';
5224
+ const [onProgress, flush] = onDownloadProgress && progressEventDecorator(
5225
+ responseContentLength,
5226
+ progressEventReducer(asyncDecorator(onDownloadProgress), true)
5227
+ ) || [];
5131
5228
 
5132
- let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
5229
+ response = new Response(
5230
+ trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
5231
+ flush && flush();
5232
+ unsubscribe && unsubscribe();
5233
+ }),
5234
+ options
5235
+ );
5236
+ }
5133
5237
 
5134
- !isStreamResponse && unsubscribe && unsubscribe();
5238
+ responseType = responseType || 'text';
5135
5239
 
5136
- return await new Promise((resolve, reject) => {
5137
- settle(resolve, reject, {
5138
- data: responseData,
5139
- headers: AxiosHeaders$1.from(response.headers),
5140
- status: response.status,
5141
- statusText: response.statusText,
5142
- config,
5143
- request
5144
- });
5145
- })
5146
- } catch (err) {
5147
- unsubscribe && unsubscribe();
5240
+ let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
5148
5241
 
5149
- if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {
5150
- throw Object.assign(
5151
- new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, config, request),
5152
- {
5153
- cause: err.cause || err
5154
- }
5155
- )
5242
+ !isStreamResponse && unsubscribe && unsubscribe();
5243
+
5244
+ return await new Promise((resolve, reject) => {
5245
+ settle(resolve, reject, {
5246
+ data: responseData,
5247
+ headers: AxiosHeaders$1.from(response.headers),
5248
+ status: response.status,
5249
+ statusText: response.statusText,
5250
+ config,
5251
+ request
5252
+ });
5253
+ })
5254
+ } catch (err) {
5255
+ unsubscribe && unsubscribe();
5256
+
5257
+ if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {
5258
+ throw Object.assign(
5259
+ new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, config, request),
5260
+ {
5261
+ cause: err.cause || err
5262
+ }
5263
+ )
5264
+ }
5265
+
5266
+ throw AxiosError$1.from(err, err && err.code, config, request);
5156
5267
  }
5268
+ }
5269
+ };
5157
5270
 
5158
- throw AxiosError$1.from(err, err && err.code, config, request);
5271
+ const seedCache = new Map();
5272
+
5273
+ const getFetch = (config) => {
5274
+ let env = config ? config.env : {};
5275
+ const {fetch, Request, Response} = env;
5276
+ const seeds = [
5277
+ Request, Response, fetch
5278
+ ];
5279
+
5280
+ let len = seeds.length, i = len,
5281
+ seed, target, map = seedCache;
5282
+
5283
+ while (i--) {
5284
+ seed = seeds[i];
5285
+ target = map.get(seed);
5286
+
5287
+ target === undefined && map.set(seed, target = (i ? new Map() : factory(env)));
5288
+
5289
+ map = target;
5159
5290
  }
5160
- });
5291
+
5292
+ return target;
5293
+ };
5294
+
5295
+ getFetch();
5161
5296
 
5162
5297
  const knownAdapters = {
5163
5298
  http: httpAdapter,
5164
5299
  xhr: xhrAdapter,
5165
- fetch: fetchAdapter
5300
+ fetch: {
5301
+ get: getFetch,
5302
+ }
5166
5303
  };
5167
5304
 
5168
5305
  utils$1.forEach(knownAdapters, (fn, value) => {
@@ -5181,7 +5318,7 @@ const renderReason = (reason) => `- ${reason}`;
5181
5318
  const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;
5182
5319
 
5183
5320
  var adapters = {
5184
- getAdapter: (adapters) => {
5321
+ getAdapter: (adapters, config) => {
5185
5322
  adapters = utils$1.isArray(adapters) ? adapters : [adapters];
5186
5323
 
5187
5324
  const {length} = adapters;
@@ -5204,7 +5341,7 @@ var adapters = {
5204
5341
  }
5205
5342
  }
5206
5343
 
5207
- if (adapter) {
5344
+ if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) {
5208
5345
  break;
5209
5346
  }
5210
5347
 
@@ -5272,7 +5409,7 @@ function dispatchRequest(config) {
5272
5409
  config.headers.setContentType('application/x-www-form-urlencoded', false);
5273
5410
  }
5274
5411
 
5275
- const adapter = adapters.getAdapter(config.adapter || defaults.adapter);
5412
+ const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);
5276
5413
 
5277
5414
  return adapter(config).then(function onAdapterResolution(response) {
5278
5415
  throwIfCancellationRequested(config);
@@ -5306,7 +5443,7 @@ function dispatchRequest(config) {
5306
5443
  });
5307
5444
  }
5308
5445
 
5309
- const VERSION$1 = "1.8.3";
5446
+ const VERSION$1 = "1.12.2";
5310
5447
 
5311
5448
  const validators$1 = {};
5312
5449
 
@@ -5414,7 +5551,7 @@ const validators = validator.validators;
5414
5551
  */
5415
5552
  let Axios$1 = class Axios {
5416
5553
  constructor(instanceConfig) {
5417
- this.defaults = instanceConfig;
5554
+ this.defaults = instanceConfig || {};
5418
5555
  this.interceptors = {
5419
5556
  request: new InterceptorManager(),
5420
5557
  response: new InterceptorManager()
@@ -5545,8 +5682,8 @@ let Axios$1 = class Axios {
5545
5682
 
5546
5683
  if (!synchronousRequestInterceptors) {
5547
5684
  const chain = [dispatchRequest.bind(this), undefined];
5548
- chain.unshift.apply(chain, requestInterceptorChain);
5549
- chain.push.apply(chain, responseInterceptorChain);
5685
+ chain.unshift(...requestInterceptorChain);
5686
+ chain.push(...responseInterceptorChain);
5550
5687
  len = chain.length;
5551
5688
 
5552
5689
  promise = Promise.resolve(config);
@@ -5562,8 +5699,6 @@ let Axios$1 = class Axios {
5562
5699
 
5563
5700
  let newConfig = config;
5564
5701
 
5565
- i = 0;
5566
-
5567
5702
  while (i < len) {
5568
5703
  const onFulfilled = requestInterceptorChain[i++];
5569
5704
  const onRejected = requestInterceptorChain[i++];
@@ -7142,7 +7277,7 @@ const LETTERLIKE_SYMBOLS_MAP = {
7142
7277
  '℠': '',
7143
7278
  '℡': '',
7144
7279
  '™': '',
7145
- '℮': '',
7280
+ ℮: '',
7146
7281
  ℯ: '',
7147
7282
  ℰ: '',
7148
7283
  ℱ: '',
@@ -7153,7 +7288,7 @@ const LETTERLIKE_SYMBOLS_MAP = {
7153
7288
  ℶ: '',
7154
7289
  ℷ: '',
7155
7290
  ℸ: '',
7156
- '℘': '',
7291
+ ℘: '',
7157
7292
  };
7158
7293
  const CURRENCY_SYMBOLS_MAP = {
7159
7294
  '₠': '',
@@ -7396,7 +7531,7 @@ class NormalizeStringHelper {
7396
7531
  */
7397
7532
  removeLeadingZerosIfNumber(text) {
7398
7533
  // If the string is not a number, return it as is
7399
- if (isNaN(Number(text))) {
7534
+ if (Number.isNaN(Number(text))) {
7400
7535
  return text;
7401
7536
  }
7402
7537
  // If the string consists of only zeros, return "0"
@@ -7517,7 +7652,7 @@ class ObjectHelper {
7517
7652
  if (this.isArray(value)) {
7518
7653
  return this.mergeArrayValues(targetValue, value);
7519
7654
  }
7520
- else if (typeof value === 'object') {
7655
+ if (typeof value === 'object') {
7521
7656
  return this.mergeObjectValues(targetValue, value);
7522
7657
  }
7523
7658
  return (_a = value !== null && value !== void 0 ? value : targetValue) !== null && _a !== void 0 ? _a : undefined;
@@ -7875,7 +8010,11 @@ function getAugmentedNamespace(n) {
7875
8010
  var f = n.default;
7876
8011
  if (typeof f == "function") {
7877
8012
  var a = function a () {
7878
- if (this instanceof a) {
8013
+ var isInstance = false;
8014
+ try {
8015
+ isInstance = this instanceof a;
8016
+ } catch {}
8017
+ if (isInstance) {
7879
8018
  return Reflect.construct(f, arguments, this.constructor);
7880
8019
  }
7881
8020
  return f.apply(this, arguments);
@@ -16628,8 +16767,7 @@ class ApiError {
16628
16767
  var _a, _b, _c, _d, _e, _f, _g;
16629
16768
  const e = error;
16630
16769
  this.cause = (_d = (_b = (_a = e === null || e === void 0 ? void 0 : e.response) === null || _a === void 0 ? void 0 : _a.data.statusCode) !== null && _b !== void 0 ? _b : (_c = e === null || e === void 0 ? void 0 : e.response) === null || _c === void 0 ? void 0 : _c.status) !== null && _d !== void 0 ? _d : 0;
16631
- this.errorMessage =
16632
- (_g = (_f = (_e = e === null || e === void 0 ? void 0 : e.response) === null || _e === void 0 ? void 0 : _e.data.message) !== null && _f !== void 0 ? _f : e === null || e === void 0 ? void 0 : e.message) !== null && _g !== void 0 ? _g : `There's been an error related to the API request to LiquidCommerce RMN Services.`;
16770
+ this.errorMessage = (_g = (_f = (_e = e === null || e === void 0 ? void 0 : e.response) === null || _e === void 0 ? void 0 : _e.data.message) !== null && _f !== void 0 ? _f : e === null || e === void 0 ? void 0 : e.message) !== null && _g !== void 0 ? _g : `There's been an error related to the API request to LiquidCommerce RMN Services.`;
16633
16771
  }
16634
16772
  }
16635
16773
 
@@ -16718,10 +16856,7 @@ class EncryptedApi {
16718
16856
  async joseEncrypt(data, key, exp) {
16719
16857
  // Encode and sign data
16720
16858
  const currentDate = new Date();
16721
- const token = new SignJWT(data)
16722
- .setProtectedHeader({ alg: 'HS256' })
16723
- .setIssuedAt(currentDate.getTime())
16724
- .setExpirationTime(exp);
16859
+ const token = new SignJWT(data).setProtectedHeader({ alg: 'HS256' }).setIssuedAt(currentDate.getTime()).setExpirationTime(exp);
16725
16860
  const signedToken = await token.sign(Buffer.from(key));
16726
16861
  // Encrypt and format payload
16727
16862
  return cryptoJsExports.AES.encrypt(signedToken, key).toString();
@@ -16759,6 +16894,7 @@ class BaseApi extends BaseApiAbstract {
16759
16894
  });
16760
16895
  }
16761
16896
  getPartnerSite() {
16897
+ // biome-ignore lint/complexity/useOptionalChain: Type guard required before property access
16762
16898
  if (typeof window !== 'undefined' && window.location) {
16763
16899
  return window.location.origin;
16764
16900
  }
@@ -16801,6 +16937,7 @@ class BaseApi extends BaseApiAbstract {
16801
16937
  async post(path, data, configOverrides) {
16802
16938
  let requestData = data;
16803
16939
  if (![RMN_ENV.LOCAL, RMN_ENV.DEVELOPMENT].includes(this.authInfo.env)) {
16940
+ // biome-ignore lint/complexity/useDateNow: Timestamp needed for authentication headers
16804
16941
  const timestamp = new Date().getTime();
16805
16942
  configOverrides = {
16806
16943
  ...configOverrides,
@@ -16869,20 +17006,17 @@ class BaseApi extends BaseApiAbstract {
16869
17006
  let responseData = (response === null || response === void 0 ? void 0 : response.data) ? response.data : null;
16870
17007
  let isEncrypted = false;
16871
17008
  let timestamp = 0;
16872
- if ((response === null || response === void 0 ? void 0 : response.headers) &&
17009
+ if (
17010
+ // biome-ignore lint/complexity/useOptionalChain: Explicit null checks preferred for readability
17011
+ (response === null || response === void 0 ? void 0 : response.headers) &&
16873
17012
  ((_a = response === null || response === void 0 ? void 0 : response.headers) === null || _a === void 0 ? void 0 : _a.has) &&
16874
17013
  ((_b = response === null || response === void 0 ? void 0 : response.headers) === null || _b === void 0 ? void 0 : _b.has(REQUEST_CLOUD_PROTECTED_KEY)) &&
16875
17014
  ((_c = response === null || response === void 0 ? void 0 : response.headers) === null || _c === void 0 ? void 0 : _c.has(REQUEST_CLOUD_PROTECTED_TIMESTAMP)) &&
16876
17015
  ((_d = response === null || response === void 0 ? void 0 : response.headers) === null || _d === void 0 ? void 0 : _d.get)) {
16877
17016
  isEncrypted = ((_e = response === null || response === void 0 ? void 0 : response.headers) === null || _e === void 0 ? void 0 : _e.get(REQUEST_CLOUD_PROTECTED_KEY)) === 'true';
16878
- timestamp = ((_f = response === null || response === void 0 ? void 0 : response.headers) === null || _f === void 0 ? void 0 : _f.get(REQUEST_CLOUD_PROTECTED_TIMESTAMP))
16879
- ? Number((_g = response === null || response === void 0 ? void 0 : response.headers) === null || _g === void 0 ? void 0 : _g.get(REQUEST_CLOUD_PROTECTED_TIMESTAMP))
16880
- : 0;
16881
- }
16882
- if (responseData &&
16883
- isEncrypted &&
16884
- this.objectHelper.includes(responseData, 't') &&
16885
- timestamp > 0) {
17017
+ timestamp = ((_f = response === null || response === void 0 ? void 0 : response.headers) === null || _f === void 0 ? void 0 : _f.get(REQUEST_CLOUD_PROTECTED_TIMESTAMP)) ? Number((_g = response === null || response === void 0 ? void 0 : response.headers) === null || _g === void 0 ? void 0 : _g.get(REQUEST_CLOUD_PROTECTED_TIMESTAMP)) : 0;
17018
+ }
17019
+ if (responseData && isEncrypted && this.objectHelper.includes(responseData, 't') && timestamp > 0) {
16886
17020
  const { t: encryptedPayload } = responseData;
16887
17021
  const decryptedData = await this.encryptedApi.handleDecryption(encryptedPayload, timestamp);
16888
17022
  if (decryptedData === null || decryptedData === void 0 ? void 0 : decryptedData.payload) {
@@ -16971,6 +17105,8 @@ const SPOT_DIMENSIONS = {
16971
17105
  [RMN_SPOT_TYPE.RB_VIDEO_PLAYER]: { width: 1280, height: 720 },
16972
17106
  [RMN_SPOT_TYPE.RB_IN_TEXT]: { width: 1, height: 1 },
16973
17107
  [RMN_SPOT_TYPE.RB_CAROUSEL_HORIZONTAL_INFO_CARD]: { width: 592, height: 386 },
17108
+ [RMN_SPOT_TYPE.RB_CAROUSEL_VERTICAL_SMALL_IMAGE_INFO_CARD]: { width: 285, height: 386 },
17109
+ [RMN_SPOT_TYPE.RB_CAROUSEL_HORIZONTAL_SHORT_INFO_CARD]: { width: 285, height: 416 },
16974
17110
  [RMN_SPOT_TYPE.SMALL_RECTANGLE]: { width: 180, height: 150 },
16975
17111
  [RMN_SPOT_TYPE.MEDIUM_RECTANGLE]: { width: 300, height: 250 },
16976
17112
  [RMN_SPOT_TYPE.LARGE_RECTANGLE]: { width: 336, height: 280 },
@@ -17039,9 +17175,7 @@ class BaseSpotComponent extends BaseElement {
17039
17175
  if (!this.initialized || !this.dataInitialized || !isBrowser) {
17040
17176
  return;
17041
17177
  }
17042
- this._container = this._config.useShadowDom
17043
- ? this.shadowRoot || this.attachShadow({ mode: 'open' })
17044
- : this;
17178
+ this._container = this._config.useShadowDom ? this.shadowRoot || this.attachShadow({ mode: 'open' }) : this;
17045
17179
  this._container.innerHTML = '';
17046
17180
  const style = document.createElement('style');
17047
17181
  style.textContent = this.baseStyles() + this.styles();
@@ -17240,10 +17374,7 @@ class LocalStorageService {
17240
17374
  const decryptedData = this.decryptData(localStorageData);
17241
17375
  const parsedData = JSON.parse(decryptedData);
17242
17376
  if (Array.isArray(parsedData)) {
17243
- const data = Object.fromEntries(parsedData.map((spot) => [
17244
- spot[ENUM_SPOT_ARRAY_INDEX.SPOT_ID],
17245
- this.spotArrayToObject(spot),
17246
- ]));
17377
+ const data = Object.fromEntries(parsedData.map((spot) => [spot[ENUM_SPOT_ARRAY_INDEX.SPOT_ID], this.spotArrayToObject(spot)]));
17247
17378
  this.spots = this.objectToMap(data);
17248
17379
  }
17249
17380
  else {
@@ -17259,7 +17390,7 @@ class LocalStorageService {
17259
17390
  updateLocalStorage() {
17260
17391
  var _a;
17261
17392
  if (!this.spots)
17262
- return undefined;
17393
+ return;
17263
17394
  const spotsObj = this.mapToObject(this.spots);
17264
17395
  const data = Object.values(spotsObj).map((spot) => this.spotObjectToArray(spot));
17265
17396
  try {
@@ -17697,9 +17828,9 @@ function convertHexToRgba(hex, opacity = 1) {
17697
17828
  // Remove # if present
17698
17829
  const cleanHex = hex.replace('#', '');
17699
17830
  // Convert hex to RGB
17700
- const r = parseInt(cleanHex.substring(0, 2), 16);
17701
- const g = parseInt(cleanHex.substring(2, 4), 16);
17702
- const b = parseInt(cleanHex.substring(4, 6), 16);
17831
+ const r = Number.parseInt(cleanHex.substring(0, 2), 16);
17832
+ const g = Number.parseInt(cleanHex.substring(2, 4), 16);
17833
+ const b = Number.parseInt(cleanHex.substring(4, 6), 16);
17703
17834
  // Return rgba string
17704
17835
  return `rgba(${r}, ${g}, ${b}, ${opacity})`;
17705
17836
  }
@@ -17727,10 +17858,7 @@ function generateGradientColor(overlay, fallback = '') {
17727
17858
  }
17728
17859
  function importFonts(...fonts) {
17729
17860
  const fontsToImport = fonts.length === 0 ? ['sourceSans', 'cormorant'] : fonts;
17730
- return [
17731
- FONTS.preconnect,
17732
- ...fontsToImport.map((font) => FONTS[font]),
17733
- ].join('');
17861
+ return [FONTS.preconnect, ...fontsToImport.map((font) => FONTS[font])].join('');
17734
17862
  }
17735
17863
  function renderElement(tag, className, content) {
17736
17864
  return (content === null || content === void 0 ? void 0 : content.trim()) ? `<${tag} class="${className}">${content}</${tag}>` : '';
@@ -17777,7 +17905,7 @@ class BillboardV1SE extends BaseSpotComponent {
17777
17905
  elements.forEach((element) => {
17778
17906
  if (element instanceof HTMLElement) {
17779
17907
  if (!this.originalFontSizes.has(element)) {
17780
- const originalSize = parseFloat(window.getComputedStyle(element).fontSize);
17908
+ const originalSize = Number.parseFloat(window.getComputedStyle(element).fontSize);
17781
17909
  this.originalFontSizes.set(element, originalSize);
17782
17910
  }
17783
17911
  const originalSize = this.originalFontSizes.get(element);
@@ -17988,7 +18116,7 @@ class RbCarouselHorizontalInfoCardSE extends BaseSpotComponent {
17988
18116
  `;
17989
18117
  }
17990
18118
  styles() {
17991
- const { headerColor = '#212121', textColor = '#616161', backgroundColor = '#e8e6de', ctaTextColor = '#b5914a', primaryImage, mobilePrimaryImage = primaryImage, } = this._data;
18119
+ const { headerColor = '#212121', textColor = '#616161', backgroundColor = '#f7f5f3', ctaTextColor = '#b5914a', primaryImage, mobilePrimaryImage = primaryImage, } = this._data;
17992
18120
  const prefix = this._config.prefix;
17993
18121
  return `
17994
18122
  .${prefix} {
@@ -18040,8 +18168,7 @@ class RbCarouselHorizontalInfoCardSE extends BaseSpotComponent {
18040
18168
  margin: 0;
18041
18169
  color:${headerColor};
18042
18170
  font-family: "Cormorant", system-ui;
18043
- font-weight: 700;
18044
- font-size: 8px;
18171
+ font-size: ${this._isMobileDevice ? '8px' : '9px'};
18045
18172
  line-height: normal;
18046
18173
  letter-spacing: 0.8px;
18047
18174
  }
@@ -18051,7 +18178,7 @@ class RbCarouselHorizontalInfoCardSE extends BaseSpotComponent {
18051
18178
  color: ${headerColor};
18052
18179
  font-family: "Cormorant", system-ui;
18053
18180
  font-weight: bold;
18054
- font-size: 16px;
18181
+ font-size: ${this._isMobileDevice ? '16px' : '18px'};
18055
18182
  line-height: 24px;
18056
18183
  position: relative;
18057
18184
  padding-bottom: 10px;
@@ -18078,10 +18205,9 @@ class RbCarouselHorizontalInfoCardSE extends BaseSpotComponent {
18078
18205
 
18079
18206
  .${prefix}__cta-button {
18080
18207
  color: ${ctaTextColor};
18081
- font-size: 10px;
18208
+ font-size: ${this._isMobileDevice ? '10px' : '12px'};
18082
18209
  font-weight: 700;
18083
18210
  font-family: "Source Sans 3", system-ui;
18084
- letter-spacing: 1.4px;
18085
18211
  border: none;
18086
18212
  cursor: pointer;
18087
18213
  padding: 10px 0;
@@ -18157,19 +18283,12 @@ class RbCarouselHorizontalInfoCardSE extends BaseSpotComponent {
18157
18283
  font-size: 14px;
18158
18284
  }
18159
18285
 
18160
- .${prefix}__cta-button {
18161
- font-size: 13px;
18162
- }
18163
18286
  }
18164
18287
 
18165
18288
  @container (min-width: 1280px) {
18166
18289
  .${prefix}__header {
18167
18290
  font-size: 24px;
18168
18291
  }
18169
-
18170
- .${prefix}__cta-button {
18171
- font-size: 14px;
18172
- }
18173
18292
  }
18174
18293
  `;
18175
18294
  }
@@ -18179,7 +18298,409 @@ class RbCarouselHorizontalInfoCardSE extends BaseSpotComponent {
18179
18298
  enableMobileTexts = true, } = this._data;
18180
18299
  const content = this._isMobileDevice && enableMobileTexts
18181
18300
  ? {
18182
- preheader: mobilePreHeader,
18301
+ preHeader: mobilePreHeader,
18302
+ header: mobileHeader,
18303
+ description: mobileDescription,
18304
+ ctaText: mobileCtaText,
18305
+ }
18306
+ : { preHeader, header, description, ctaText };
18307
+ return Object.values(content).some(Boolean);
18308
+ }
18309
+ }
18310
+
18311
+ class RbCarouselHorizontalShortInfoCardSE extends BaseSpotComponent {
18312
+ constructor() {
18313
+ super();
18314
+ this.reRenderOnDeviceChange = true;
18315
+ }
18316
+ template() {
18317
+ const prefix = this._config.prefix;
18318
+ const { preHeader, mobilePreHeader, header, mobileHeader, description, mobileDescription, ctaText, mobileCtaText, textBlockPosition = ENUM_TEXT_BLOCK_POSITION.BOTTOM,
18319
+ // eslint-disable-next-line @typescript-eslint/naming-convention
18320
+ enableMobileTexts = true, } = this._data;
18321
+ const content = this._isMobileDevice && enableMobileTexts
18322
+ ? {
18323
+ preHeader: mobilePreHeader,
18324
+ header: mobileHeader,
18325
+ description: mobileDescription,
18326
+ ctaText: mobileCtaText,
18327
+ }
18328
+ : { preHeader, header, description, ctaText };
18329
+ const elements = this.hasContent
18330
+ ? [
18331
+ renderElement('p', `${prefix}__preHeader`, content.preHeader),
18332
+ renderElement('h2', `${prefix}__header`, content.header),
18333
+ renderElement('p', `${prefix}__description`, content.description),
18334
+ renderElement('span', `${prefix}__cta-button`, content.ctaText),
18335
+ ]
18336
+ : [];
18337
+ return `
18338
+ ${importFonts()}
18339
+ <div class="${prefix}">
18340
+ <div class="${prefix}__content ${prefix}__text-block--${textBlockPosition} ${prefix}__text-block-mobile--${textBlockPosition}">
18341
+ <div class="${prefix}__image"></div>
18342
+ <div class="${prefix}__text">
18343
+ <div class="${prefix}__text-container">
18344
+ ${elements.join('')}
18345
+ </div>
18346
+ </div>
18347
+ </div>
18348
+ </div>
18349
+ `;
18350
+ }
18351
+ styles() {
18352
+ const { headerColor = '#212121', textColor = '#616161', backgroundColor = '#f7f5f3', ctaTextColor = '#b5914a', primaryImage, mobilePrimaryImage = primaryImage, } = this._data;
18353
+ const prefix = this._config.prefix;
18354
+ return `
18355
+ .${prefix} {
18356
+ width: 100%;
18357
+ height: 100%;
18358
+ position: relative;
18359
+ border-radius: 5px;
18360
+ }
18361
+
18362
+ .${prefix}__content {
18363
+ width: 100%;
18364
+ height: 100%;
18365
+ display: flex;
18366
+ flex-direction: column;
18367
+ overflow: hidden;
18368
+ border-radius: 5px;
18369
+ }
18370
+
18371
+ .${prefix}__image {
18372
+ width: 100%;
18373
+ height: 62.5%;
18374
+ background-image: url("${this._isMobileDevice ? mobilePrimaryImage : primaryImage}");
18375
+ background-position: center;
18376
+ background-repeat: no-repeat;
18377
+ background-size: cover;
18378
+ min-width: 100px;
18379
+ overflow: hidden;
18380
+ }
18381
+
18382
+ .${prefix}__text {
18383
+ background-color: ${backgroundColor};
18384
+ display: flex;
18385
+ flex-direction: column;
18386
+ justify-content: center;
18387
+ width: 100%;
18388
+ height: 37.5%;
18389
+ padding: 15px;
18390
+ box-sizing: border-box;
18391
+ }
18392
+
18393
+ .${prefix}__text-container {
18394
+ display: flex;
18395
+ flex-direction: column;
18396
+ gap: 5px;
18397
+ }
18398
+
18399
+ .${prefix}__preHeader {
18400
+ margin: 0;
18401
+ color:${headerColor};
18402
+ font-family: "Cormorant", system-ui;
18403
+ font-size: ${this._isMobileDevice ? '8px' : '9px'};
18404
+ line-height: normal;
18405
+ letter-spacing: 0.8px;
18406
+ }
18407
+
18408
+ .${prefix}__header {
18409
+ margin: 0;
18410
+ color: ${headerColor};
18411
+ font-family: "Cormorant", system-ui;
18412
+ font-weight: bold;
18413
+ font-size: ${this._isMobileDevice ? '16px' : '18px'};
18414
+ line-height: 24px;
18415
+ position: relative;
18416
+ padding-bottom: 10px;
18417
+ margin-bottom: 5px;
18418
+ }
18419
+
18420
+ .${prefix}__header::after {
18421
+ content: '';
18422
+ position: absolute;
18423
+ bottom: 0;
18424
+ left: 0;
18425
+ width: 76px;
18426
+ height: 1px;
18427
+ background-color: ${ctaTextColor};
18428
+ }
18429
+
18430
+ .${prefix}__description {
18431
+ color: ${textColor};
18432
+ margin: 0;
18433
+ font-size: 10px;
18434
+ font-family: "Source Sans 3", system-ui;
18435
+ font-weight: 400;
18436
+ }
18437
+
18438
+ .${prefix}__cta-button {
18439
+ color: ${ctaTextColor};
18440
+ font-size: ${this._isMobileDevice ? '10px' : '12px'};
18441
+ font-weight: 700;
18442
+ font-family: "Source Sans 3", system-ui;
18443
+ border: none;
18444
+ cursor: pointer;
18445
+ transition: opacity 0.3s ease;
18446
+ display: inline-block;
18447
+ align-self: flex-end;
18448
+ text-decoration: none;
18449
+ margin-top: auto;
18450
+ }
18451
+
18452
+ .${prefix}__content:hover .${prefix}__cta-button {
18453
+ opacity: 0.8;
18454
+ }
18455
+
18456
+ @container (min-width: 768px) {
18457
+ .${prefix}__preHeader {
18458
+ font-size: 9px;
18459
+ }
18460
+
18461
+ .${prefix}__cta-button {
18462
+ font-size: 12px;
18463
+ }
18464
+ }
18465
+
18466
+ @container (min-width: 1024px) {
18467
+ .${prefix}__text {
18468
+ padding: 20px;
18469
+ }
18470
+
18471
+ .${prefix}__text-container {
18472
+ padding-right: 20px;
18473
+ }
18474
+
18475
+ .${prefix}__preHeader {
18476
+ font-size: 10px;
18477
+ }
18478
+
18479
+ .${prefix}__header {
18480
+ font-size: 18px;
18481
+ }
18482
+
18483
+ .${prefix}__description {
18484
+ font-size: 14px;
18485
+ }
18486
+ }
18487
+
18488
+ @container (min-width: 1280px) {
18489
+ .${prefix}__header {
18490
+ font-size: 24px;
18491
+ }
18492
+ }
18493
+ `;
18494
+ }
18495
+ get hasContent() {
18496
+ const { preHeader, mobilePreHeader, header, mobileHeader, description, mobileDescription, ctaText, mobileCtaText,
18497
+ // eslint-disable-next-line @typescript-eslint/naming-convention
18498
+ enableMobileTexts = true, } = this._data;
18499
+ const content = this._isMobileDevice && enableMobileTexts
18500
+ ? {
18501
+ preHeader: mobilePreHeader,
18502
+ header: mobileHeader,
18503
+ description: mobileDescription,
18504
+ ctaText: mobileCtaText,
18505
+ }
18506
+ : { preHeader, header, description, ctaText };
18507
+ return Object.values(content).some(Boolean);
18508
+ }
18509
+ }
18510
+
18511
+ class RbCarouselVerticalSmallImageInfoCardSE extends BaseSpotComponent {
18512
+ constructor() {
18513
+ super();
18514
+ this.reRenderOnDeviceChange = true;
18515
+ }
18516
+ template() {
18517
+ const prefix = this._config.prefix;
18518
+ const { preHeader, mobilePreHeader, header, mobileHeader, description, mobileDescription, ctaText, mobileCtaText, textBlockPosition = ENUM_TEXT_BLOCK_POSITION.BOTTOM,
18519
+ // eslint-disable-next-line @typescript-eslint/naming-convention
18520
+ enableMobileTexts = true, } = this._data;
18521
+ const content = this._isMobileDevice && enableMobileTexts
18522
+ ? {
18523
+ preHeader: mobilePreHeader,
18524
+ header: mobileHeader,
18525
+ description: mobileDescription,
18526
+ ctaText: mobileCtaText,
18527
+ }
18528
+ : { preHeader, header, description, ctaText };
18529
+ const elements = this.hasContent
18530
+ ? [
18531
+ renderElement('p', `${prefix}__preHeader`, content.preHeader),
18532
+ renderElement('h2', `${prefix}__header`, content.header),
18533
+ renderElement('p', `${prefix}__description`, content.description),
18534
+ renderElement('span', `${prefix}__cta-button`, content.ctaText),
18535
+ ]
18536
+ : [];
18537
+ return `
18538
+ ${importFonts()}
18539
+ <div class="${prefix}">
18540
+ <div class="${prefix}__content ${prefix}__text-block--${textBlockPosition} ${prefix}__text-block-mobile--${textBlockPosition}">
18541
+ <div class="${prefix}__image"></div>
18542
+ <div class="${prefix}__text">
18543
+ <div class="${prefix}__text-container">
18544
+ ${elements.join('')}
18545
+ </div>
18546
+ </div>
18547
+ </div>
18548
+ </div>
18549
+ `;
18550
+ }
18551
+ styles() {
18552
+ const { headerColor = '#212121', textColor = '#616161', backgroundColor = '#f7f5f3', ctaTextColor = '#b5914a', primaryImage, mobilePrimaryImage = primaryImage, } = this._data;
18553
+ const prefix = this._config.prefix;
18554
+ return `
18555
+ .${prefix} {
18556
+ width: 100%;
18557
+ height: 100%;
18558
+ position: relative;
18559
+ border-radius: 5px;
18560
+ }
18561
+
18562
+ .${prefix}__content {
18563
+ width: 100%;
18564
+ height: 100%;
18565
+ display: flex;
18566
+ flex-direction: column;
18567
+ overflow: hidden;
18568
+ border-radius: 5px;
18569
+ }
18570
+
18571
+ .${prefix}__image {
18572
+ width: 100%;
18573
+ height: 50%;
18574
+ background-image: url("${this._isMobileDevice ? mobilePrimaryImage : primaryImage}");
18575
+ background-position: center;
18576
+ background-repeat: no-repeat;
18577
+ background-size: cover;
18578
+ min-width: 100px;
18579
+ overflow: hidden;
18580
+ }
18581
+
18582
+ .${prefix}__text {
18583
+ background-color: ${backgroundColor};
18584
+ display: flex;
18585
+ flex-direction: column;
18586
+ justify-content: center;
18587
+ width: 100%;
18588
+ height: 50%;
18589
+ padding: 16px;
18590
+ box-sizing: border-box;
18591
+ }
18592
+
18593
+ .${prefix}__text-container {
18594
+ display: flex;
18595
+ flex-direction: column;
18596
+ gap: 5px;
18597
+ height: 100%;
18598
+ justify-content: space-between;
18599
+ }
18600
+
18601
+ .${prefix}__preHeader {
18602
+ margin: 0;
18603
+ color:${headerColor};
18604
+ font-family: "Cormorant", system-ui;
18605
+ font-size: ${this._isMobileDevice ? '8px' : '9px'};
18606
+ line-height: normal;
18607
+ letter-spacing: 0.8px;
18608
+ }
18609
+
18610
+ .${prefix}__header {
18611
+ margin: 0;
18612
+ color: ${headerColor};
18613
+ font-family: "Cormorant", system-ui;
18614
+ font-weight: bold;
18615
+ font-size: ${this._isMobileDevice ? '16px' : '18px'};
18616
+ line-height: 24px;
18617
+ position: relative;
18618
+ padding-bottom: 10px;
18619
+ margin-bottom: 5px;
18620
+ }
18621
+
18622
+ .${prefix}__header::after {
18623
+ content: '';
18624
+ position: absolute;
18625
+ bottom: 0;
18626
+ left: 0;
18627
+ width: 76px;
18628
+ height: 1px;
18629
+ background-color: ${ctaTextColor};
18630
+ }
18631
+
18632
+ .${prefix}__description {
18633
+ color: ${textColor};
18634
+ margin: 0;
18635
+ font-size: 10px;
18636
+ font-family: "Source Sans 3", system-ui;
18637
+ font-weight: 400;
18638
+ }
18639
+
18640
+ .${prefix}__cta-button {
18641
+ color: ${ctaTextColor};
18642
+ font-size: ${this._isMobileDevice ? '10px' : '12px'};
18643
+ font-weight: 700;
18644
+ font-family: "Source Sans 3", system-ui;
18645
+ border: none;
18646
+ cursor: pointer;
18647
+ transition: opacity 0.3s ease;
18648
+ display: inline-block;
18649
+ align-self: flex-end;
18650
+ text-decoration: none;
18651
+ margin-top: auto;
18652
+ }
18653
+
18654
+ .${prefix}__content:hover .${prefix}__cta-button {
18655
+ opacity: 0.8;
18656
+ }
18657
+
18658
+ @container (min-width: 768px) {
18659
+ .${prefix}__preHeader {
18660
+ font-size: 9px;
18661
+ }
18662
+
18663
+ .${prefix}__cta-button {
18664
+ font-size: 12px;
18665
+ }
18666
+ }
18667
+
18668
+ @container (min-width: 1024px) {
18669
+ .${prefix}__text {
18670
+ padding: 20px;
18671
+ }
18672
+
18673
+ .${prefix}__text-container {
18674
+ padding-right: 20px;
18675
+ }
18676
+
18677
+ .${prefix}__preHeader {
18678
+ font-size: 10px;
18679
+ }
18680
+
18681
+ .${prefix}__header {
18682
+ font-size: 18px;
18683
+ }
18684
+
18685
+ .${prefix}__description {
18686
+ font-size: 14px;
18687
+ }
18688
+ }
18689
+
18690
+ @container (min-width: 1280px) {
18691
+ .${prefix}__header {
18692
+ font-size: 24px;
18693
+ }
18694
+ }
18695
+ `;
18696
+ }
18697
+ get hasContent() {
18698
+ const { preHeader, mobilePreHeader, header, mobileHeader, description, mobileDescription, ctaText, mobileCtaText,
18699
+ // eslint-disable-next-line @typescript-eslint/naming-convention
18700
+ enableMobileTexts = true, } = this._data;
18701
+ const content = this._isMobileDevice && enableMobileTexts
18702
+ ? {
18703
+ preHeader: mobilePreHeader,
18183
18704
  header: mobileHeader,
18184
18705
  description: mobileDescription,
18185
18706
  ctaText: mobileCtaText,
@@ -18279,20 +18800,26 @@ class RbHomepageHeroFullImageSE extends BaseSpotComponent {
18279
18800
  `;
18280
18801
  }
18281
18802
  styles() {
18282
- const { textBlockPosition = ENUM_TEXT_BLOCK_POSITION.BOTTOM_LEFT, mobileTextBlockPosition = textBlockPosition, } = this._data;
18803
+ const { textBlockPosition = ENUM_TEXT_BLOCK_POSITION.BOTTOM_LEFT, mobileTextBlockPosition = textBlockPosition, showContentGradient = true, } = this._data;
18283
18804
  const desktopGradientDirection = this.getGradientDirection(textBlockPosition);
18284
18805
  const mobileGradientDirection = this.getGradientDirection(mobileTextBlockPosition);
18285
18806
  const linearGradient = generateGradientColor(this._config.overlay, 'rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 40%');
18286
18807
  const { textColor = '#ffffff', ctaTextColor = textColor, ctaBorderColor = ctaTextColor, primaryImage, mobilePrimaryImage = primaryImage, } = this._data;
18287
18808
  const prefix = this._config.prefix;
18809
+ // Determine mobile background image based on hasContent and enableGradient
18810
+ const mobileBackgroundImage = this.hasContent && showContentGradient
18811
+ ? `background-image: linear-gradient(${mobileGradientDirection}, ${linearGradient}), url("${mobilePrimaryImage}");`
18812
+ : `background-image: url("${mobilePrimaryImage}");`;
18813
+ // Determine desktop background image based on hasContent and enableGradient
18814
+ const desktopBackgroundImage = this.hasContent && showContentGradient
18815
+ ? `background-image: linear-gradient(${desktopGradientDirection}, ${linearGradient}), url("${primaryImage}");`
18816
+ : `background-image: url("${primaryImage}");`;
18288
18817
  return `
18289
18818
  .${prefix} {
18290
18819
  display: flex;
18291
18820
  width: 100%;
18292
18821
  height: 100%;
18293
- ${this.hasContent
18294
- ? `background-image: linear-gradient(${mobileGradientDirection}, ${linearGradient}), url("${mobilePrimaryImage}");`
18295
- : `background-image: url("${mobilePrimaryImage}");`}
18822
+ ${mobileBackgroundImage}
18296
18823
  background-size: cover;
18297
18824
  background-repeat: no-repeat;
18298
18825
  background-position: center;
@@ -18411,9 +18938,7 @@ class RbHomepageHeroFullImageSE extends BaseSpotComponent {
18411
18938
 
18412
18939
  @container (min-width: 640px) {
18413
18940
  .${prefix} {
18414
- ${this.hasContent
18415
- ? `background-image: linear-gradient(${desktopGradientDirection}, ${linearGradient}), url("${primaryImage}");`
18416
- : `background-image: url("${primaryImage}");`}
18941
+ ${desktopBackgroundImage}
18417
18942
  }
18418
18943
 
18419
18944
  .${prefix}__text > * {
@@ -19000,13 +19525,13 @@ class RbInTextSE extends BaseSpotComponent {
19000
19525
  `;
19001
19526
  }
19002
19527
  styles() {
19003
- const { textColor = '#212121', backgroundColor = 'transparent' } = this._data;
19528
+ const { textColor = '#212121', backgroundColor = 'transparent', textBlockPosition = ENUM_TEXT_BLOCK_POSITION.LEFT } = this._data;
19004
19529
  const prefix = this._config.prefix;
19005
19530
  return `
19006
19531
  .${prefix} {
19007
19532
  display: block;
19008
19533
  cursor: pointer;
19009
- max-width: fit-content;
19534
+ width: 100%;
19010
19535
  padding: 0;
19011
19536
  background-color: ${backgroundColor};
19012
19537
  }
@@ -19017,6 +19542,7 @@ class RbInTextSE extends BaseSpotComponent {
19017
19542
  color: ${textColor};
19018
19543
  font-family: "Source Sans 3", system-ui;
19019
19544
  margin: 0;
19545
+ text-align: ${textBlockPosition};
19020
19546
  }
19021
19547
  .${prefix}__header:hover {
19022
19548
  color: #b5914a;
@@ -19470,7 +19996,7 @@ class RbLongToutTallSE extends BaseSpotComponent {
19470
19996
  `;
19471
19997
  }
19472
19998
  styles() {
19473
- const { textBlockPosition = ENUM_TEXT_BLOCK_POSITION.MIDDLE_LEFT, mobileTextBlockPosition = textBlockPosition, } = this._data;
19999
+ const { textBlockPosition = ENUM_TEXT_BLOCK_POSITION.MIDDLE_LEFT, mobileTextBlockPosition = textBlockPosition } = this._data;
19474
20000
  const desktopGradientDirection = this.getGradientDirection(textBlockPosition);
19475
20001
  const mobileGradientDirection = this.getGradientDirection(mobileTextBlockPosition);
19476
20002
  const linearGradient = generateGradientColor(this._config.overlay, 'rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 40%');
@@ -19932,7 +20458,7 @@ class RbSmallDiscoverToutSE extends BaseSpotComponent {
19932
20458
  `;
19933
20459
  }
19934
20460
  styles() {
19935
- const { textColor = '#000000', backgroundColor = 'transparent', primaryImage, mobilePrimaryImage = primaryImage, } = this._data;
20461
+ const { textColor = '#000000', backgroundColor = 'transparent', primaryImage, mobilePrimaryImage = primaryImage } = this._data;
19936
20462
  const prefix = this._config.prefix;
19937
20463
  return `
19938
20464
  .${prefix} {
@@ -20102,10 +20628,7 @@ class RbVideoPlayerSE extends BaseSpotComponent {
20102
20628
  description: mobileDescription,
20103
20629
  }
20104
20630
  : { header, description };
20105
- const elements = [
20106
- renderElement('h2', `${prefix}__header`, content.header),
20107
- renderElement('p', `${prefix}__description`, content.description),
20108
- ];
20631
+ const elements = [renderElement('h2', `${prefix}__header`, content.header), renderElement('p', `${prefix}__description`, content.description)];
20109
20632
  return `
20110
20633
  <div class="${prefix}__text ${prefix}__text-block--${textBlockPosition} ${prefix}__text-block-mobile--${mobileTextBlockPosition}">
20111
20634
  ${elements.join('')}
@@ -20244,9 +20767,7 @@ class RbVideoPlayerSE extends BaseSpotComponent {
20244
20767
 
20245
20768
  @container (max-width: 639px) {
20246
20769
  .${prefix}::before {
20247
- ${this.hasContent
20248
- ? `background: linear-gradient(${mobileGradientDirection}, ${linearGradient});`
20249
- : ``}
20770
+ ${this.hasContent ? `background: linear-gradient(${mobileGradientDirection}, ${linearGradient});` : ''}
20250
20771
  }
20251
20772
 
20252
20773
  .${prefix}__text-block-mobile--${ENUM_TEXT_BLOCK_POSITION.TOP_LEFT} {
@@ -20302,9 +20823,7 @@ class RbVideoPlayerSE extends BaseSpotComponent {
20302
20823
 
20303
20824
  @container (min-width: 640px) {
20304
20825
  .${prefix}::before {
20305
- ${this.hasContent
20306
- ? `background: linear-gradient(${desktopGradientDirection}, ${linearGradient});`
20307
- : ``}
20826
+ ${this.hasContent ? `background: linear-gradient(${desktopGradientDirection}, ${linearGradient});` : ''}
20308
20827
  }
20309
20828
 
20310
20829
  .${prefix}__text > * {
@@ -20512,6 +21031,12 @@ class SpotTemplateService {
20512
21031
  [RMN_SPOT_TYPE.RB_CAROUSEL_HORIZONTAL_INFO_CARD]: {
20513
21032
  rbCarouselHorizontalInfoCard: RbCarouselHorizontalInfoCardSE,
20514
21033
  },
21034
+ [RMN_SPOT_TYPE.RB_CAROUSEL_VERTICAL_SMALL_IMAGE_INFO_CARD]: {
21035
+ rbCarouselVerticalSmallImageInfoCard: RbCarouselVerticalSmallImageInfoCardSE,
21036
+ },
21037
+ [RMN_SPOT_TYPE.RB_CAROUSEL_HORIZONTAL_SHORT_INFO_CARD]: {
21038
+ rbCarouselHorizontalShortInfoCard: RbCarouselHorizontalShortInfoCardSE,
21039
+ },
20515
21040
  };
20516
21041
  }
20517
21042
  initializeIabTemplates() {
@@ -20918,18 +21443,14 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
20918
21443
  this.cloneToOriginalMap.set(newSpot, original);
20919
21444
  // Add event delegation
20920
21445
  let isDragging = false;
20921
- slideElement.addEventListener('mousedown', () => (isDragging = false));
20922
- slideElement.addEventListener('mousemove', () => (isDragging = true));
21446
+ slideElement.addEventListener('mousedown', () => {
21447
+ isDragging = false;
21448
+ });
21449
+ slideElement.addEventListener('mousemove', () => {
21450
+ isDragging = true;
21451
+ });
20923
21452
  // Delegate all events to the original element
20924
- const eventTypes = [
20925
- 'click',
20926
- 'mouseenter',
20927
- 'mouseleave',
20928
- 'mouseover',
20929
- 'mouseout',
20930
- 'focus',
20931
- 'blur',
20932
- ];
21453
+ const eventTypes = ['click', 'mouseenter', 'mouseleave', 'mouseover', 'mouseout', 'focus', 'blur'];
20933
21454
  eventTypes.forEach((eventType) => {
20934
21455
  newSpot.addEventListener(eventType, (e) => {
20935
21456
  if (eventType === 'click' && isDragging) {
@@ -21216,8 +21737,7 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
21216
21737
  updateDragPosition() {
21217
21738
  if (!this.elements.slidesContainer || this.state.isTransitioning)
21218
21739
  return;
21219
- const translateX = -this.state.virtualIndex * 100 -
21220
- (this.state.dragDistance / this.state.containerWidth) * 100;
21740
+ const translateX = -this.state.virtualIndex * 100 - (this.state.dragDistance / this.state.containerWidth) * 100;
21221
21741
  this.elements.slidesContainer.style.transform = `translateX(${translateX}%)`;
21222
21742
  this.elements.slidesContainer.style.transition = 'none';
21223
21743
  }
@@ -21225,6 +21745,7 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
21225
21745
  * Navigates to a specific slide
21226
21746
  * Used primarily by dot navigation
21227
21747
  */
21748
+ // biome-ignore lint/correctness/noUnusedPrivateClassMembers: Used for dot navigation
21228
21749
  goToSlide(index) {
21229
21750
  if (this.state.isTransitioning)
21230
21751
  return;
@@ -21410,9 +21931,7 @@ if (typeof window !== 'undefined' && typeof window.customElements !== 'undefined
21410
21931
  * Ensures only valid positions are used
21411
21932
  */
21412
21933
  validateButtonsPosition() {
21413
- if (this.state.useButtons &&
21414
- !this.state.buttons.together &&
21415
- this.state.buttons.position !== 'middle-sides') {
21934
+ if (this.state.useButtons && !this.state.buttons.together && this.state.buttons.position !== 'middle-sides') {
21416
21935
  console.warn('LiquidCommerce Rmn Sdk: When buttons are not together, only "middle-sides" is allowed. Defaulting to "middle-sides".');
21417
21936
  this.state.buttons.position = 'middle-sides';
21418
21937
  }
@@ -21809,7 +22328,7 @@ class MonitorService {
21809
22328
  }
21810
22329
  }
21811
22330
  }
21812
- async fireAndPublishSpotEvent({ spotEvent, eventUrl, placementId, spotId, spotType, }) {
22331
+ async fireAndPublishSpotEvent({ spotEvent, eventUrl, placementId, spotId, spotType }) {
21813
22332
  await fireEvent({
21814
22333
  spotType,
21815
22334
  event: spotEvent,
@@ -21828,8 +22347,7 @@ class MonitorService {
21828
22347
  return AnalyticsTool.Other;
21829
22348
  }
21830
22349
  // Check for GTM
21831
- if (typeof window.google_tag_manager !== 'undefined' ||
21832
- typeof window.dataLayer !== 'undefined') {
22350
+ if (typeof window.google_tag_manager !== 'undefined' || typeof window.dataLayer !== 'undefined') {
21833
22351
  return AnalyticsTool.GoogleTagManager;
21834
22352
  }
21835
22353
  // Check for GA (both Universal Analytics and GA4)
@@ -22012,14 +22530,10 @@ class SpotManagerService {
22012
22530
  }
22013
22531
  deepMerge(current, updates) {
22014
22532
  return {
22015
- identifier: updates.identifier
22016
- ? { ...current.identifier, ...updates.identifier }
22017
- : current.identifier,
22533
+ identifier: updates.identifier ? { ...current.identifier, ...updates.identifier } : current.identifier,
22018
22534
  dom: updates.dom ? { ...current.dom, ...updates.dom } : current.dom,
22019
22535
  state: updates.state ? { ...current.state, ...updates.state } : current.state,
22020
- displayConfig: updates.displayConfig
22021
- ? { ...current.displayConfig, ...updates.displayConfig }
22022
- : current.displayConfig,
22536
+ displayConfig: updates.displayConfig ? { ...current.displayConfig, ...updates.displayConfig } : current.displayConfig,
22023
22537
  };
22024
22538
  }
22025
22539
  }
@@ -22220,9 +22734,7 @@ class BrowserRmnClient {
22220
22734
  if (!placement || !injectData) {
22221
22735
  this.spotManagerService.updateSpotLifecycleState(placementId, {
22222
22736
  state: {
22223
- error: !placement
22224
- ? `Placement element not found for id "${placementId}".`
22225
- : `Placement not found for id "${placementId}".`,
22737
+ error: !placement ? `Placement element not found for id "${placementId}".` : `Placement not found for id "${placementId}".`,
22226
22738
  mounted: false,
22227
22739
  loading: false,
22228
22740
  },
@@ -22244,7 +22756,7 @@ class BrowserRmnClient {
22244
22756
  if (!skeletonElement) {
22245
22757
  this.spotManagerService.updateSpotLifecycleState(injectData.placementId, {
22246
22758
  state: {
22247
- error: `Failed to create skeleton loader element.`,
22759
+ error: 'Failed to create skeleton loader element.',
22248
22760
  loading: true,
22249
22761
  },
22250
22762
  });
@@ -22457,7 +22969,7 @@ class BrowserRmnClient {
22457
22969
  if (!carouselElement) {
22458
22970
  this.spotManagerService.updateSpotLifecycleState(placementId, {
22459
22971
  state: {
22460
- error: `Failed to inject spot carousel element. Could not create spot carousel element.`,
22972
+ error: 'Failed to inject spot carousel element. Could not create spot carousel element.',
22461
22973
  mounted: false,
22462
22974
  loading: false,
22463
22975
  },
@@ -22532,23 +23044,21 @@ class ServerRmnClient {
22532
23044
  /**
22533
23045
  * Publishes the spot data for a given placement ID to the RMN.
22534
23046
  *
22535
- * @param {string} placementId - The unique identifier for the placement.
22536
- * @param {ISpot} spot - The spot data.
23047
+ * @param {string} _placementId - The unique identifier for the placement.
23048
+ * @param {ISpot} _spot - The spot data.
22537
23049
  * @return {void} - Does not return any value.
22538
23050
  */
22539
- // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-unused-vars
22540
- publishSpotToRmn(placementId, spot) {
23051
+ publishSpotToRmn(_placementId, _spot) {
22541
23052
  console.warn('RmnSdk: Publishing spot elements is not supported in server-side environment.');
22542
23053
  }
22543
23054
  /**
22544
23055
  * Injects the spot elements into their provided placement.
22545
23056
  *
22546
- * @param {IInjectSpotElementParams} params - Parameters for injecting spot elements.
23057
+ * @param {IInjectSpotElementParams} _params - Parameters for injecting spot elements.
22547
23058
  *
22548
23059
  * @return {Promise<void>} - A promise that resolves when the spot elements are injected.
22549
23060
  */
22550
- // eslint-disable-next-line @typescript-eslint/no-unused-vars,no-unused-vars
22551
- async injectSpotElement(params) {
23061
+ async injectSpotElement(_params) {
22552
23062
  console.warn('RmnSdk: Injecting spot elements is not supported in server-side environment.');
22553
23063
  }
22554
23064
  }