@win2win/shared-ui 0.3.20 → 0.3.22

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.
@@ -5,7 +5,7 @@ export declare function useFetchPages<T = any>(pagination: MaybeRef<QTablePagina
5
5
  pending: Ref<false, false> | Ref<true, true>;
6
6
  fetching: Ref<boolean, boolean>;
7
7
  error: Ref<Error, Error> | Ref<null, null>;
8
- items: import("vue").ComputedRef<T[] | null>;
8
+ items: import("vue").ComputedRef<T[]>;
9
9
  refetch: (options?: import("@tanstack/vue-query").RefetchOptions) => Promise<import("@tanstack/vue-query").QueryObserverResult<DataCollectionResponse<T> | null, Error>>;
10
10
  invalidate: () => Promise<void>;
11
11
  count: import("vue").WritableComputedRef<number, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"useFetchPages.d.ts","sourceRoot":"","sources":["../../../src/composables/fetching/useFetchPages.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EAGlB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAmB,QAAQ,EAAE,GAAG,EAAS,MAAM,KAAK,CAAC;AAG5D,OAAO,EACL,sBAAsB,EAEtB,YAAY,EACZ,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,aAAa,CAAC,CAAC,GAAG,GAAG,EACnC,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACtC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EACtB,OAAO,CAAC,EAAE,YAAY;;;;;;;;;;;;;EAyGvB"}
1
+ {"version":3,"file":"useFetchPages.d.ts","sourceRoot":"","sources":["../../../src/composables/fetching/useFetchPages.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,iBAAiB,EAGlB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAmB,QAAQ,EAAE,GAAG,EAAS,MAAM,KAAK,CAAC;AAG5D,OAAO,EACL,sBAAsB,EAEtB,YAAY,EACZ,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,aAAa,CAAC,CAAC,GAAG,GAAG,EACnC,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,EACtC,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EACpC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EACtB,OAAO,CAAC,EAAE,YAAY;;;;;;;;;;;;;EAiHvB"}
@@ -3176,7 +3176,7 @@ const oW = r1({
3176
3176
  handleHide: A,
3177
3177
  hideOnRouteChange: W,
3178
3178
  processOnMount: !0
3179
- }), { showPortal: F, hidePortal: M0, renderPortal: w } = de(s, O, f0, "menu"), z0 = {
3179
+ }), { showPortal: F, hidePortal: M0, renderPortal: w } = de(s, O, P0, "menu"), z0 = {
3180
3180
  anchorEl: B,
3181
3181
  innerRef: O,
3182
3182
  onClickOutside(n0) {
@@ -3255,7 +3255,7 @@ const oW = r1({
3255
3255
  maxWidth: l.maxWidth
3256
3256
  });
3257
3257
  }
3258
- function f0() {
3258
+ function P0() {
3259
3259
  return g(
3260
3260
  xl,
3261
3261
  C.value,
@@ -3477,7 +3477,7 @@ pp.exports;
3477
3477
  ["partial", S],
3478
3478
  ["partialRight", H],
3479
3479
  ["rearg", c0]
3480
- ], N0 = "[object Arguments]", G0 = "[object Array]", O0 = "[object AsyncFunction]", f0 = "[object Boolean]", n0 = "[object Date]", P1 = "[object DOMException]", u2 = "[object Error]", n2 = "[object Function]", R = "[object GeneratorFunction]", _ = "[object Map]", $ = "[object Number]", W0 = "[object Null]", j0 = "[object Object]", c1 = "[object Promise]", A1 = "[object Proxy]", M1 = "[object RegExp]", B0 = "[object Set]", c2 = "[object String]", ol = "[object Symbol]", Tc = "[object Undefined]", Hb = "[object WeakMap]", Dd = "[object WeakSet]", gl = "[object ArrayBuffer]", ub = "[object DataView]", Vc = "[object Float32Array]", Zl = "[object Float64Array]", Yl = "[object Int8Array]", nb = "[object Int16Array]", rM = "[object Int32Array]", Bb = "[object Uint8Array]", Rc = "[object Uint8ClampedArray]", Ic = "[object Uint16Array]", rc = "[object Uint32Array]", kd = /\b__p \+= '';/g, Cd = /\b(__p \+=) '' \+/g, Jd = /(__e\(.*?\)|\b__t\)) \+\n'';/g, jd = /&(?:amp|lt|gt|quot|#39);/g, Ud = /[&<>"']/g, Fd = RegExp(jd.source), Ot = RegExp(Ud.source), gd = /<%-([\s\S]+?)%>/g, Sc = /<%([\s\S]+?)%>/g, Wb = /<%=([\s\S]+?)%>/g, mb = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Nt = /^\w*$/, Gt = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, SM = /[\\^$.*+?()[\]{}|]/g, Xt = RegExp(SM.source), wM = /^\s+/, ht = /\s/, Lt = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Yt = /\{\n\/\* \[wrapped with (.+)\] \*/, yt = /,? & /, Ob = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, Nb = /[()=,{}\[\]\/\s]/, Kl = /\\(\\)?/g, Gb = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, wc = /\w*$/, Tt = /^[-+]0x[0-9a-f]+$/i, Kd = /^0b[01]+$/i, Ed = /^\[object .+?Constructor\]$/, vd = /^0o[0-7]+$/i, fd = /^(?:0|[1-9]\d*)$/, I = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, h0 = /($^)/, V0 = /['\n\r\u2028\u2029\\]/g, $0 = "\\ud800-\\udfff", R1 = "\\u0300-\\u036f", E1 = "\\ufe20-\\ufe2f", I1 = "\\u20d0-\\u20ff", F1 = R1 + E1 + I1, El = "\\u2700-\\u27bf", Qe = "a-z\\xdf-\\xf6\\xf8-\\xff", F3 = "\\xac\\xb1\\xd7\\xf7", g3 = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", K3 = "\\u2000-\\u206f", E3 = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", qe = "A-Z\\xc0-\\xd6\\xd8-\\xde", _e = "\\ufe0e\\ufe0f", $e = F3 + g3 + K3 + E3, Vt = "['’]", v3 = "[" + $0 + "]", lo = "[" + $e + "]", Pd = "[" + F1 + "]", bo = "\\d+", f3 = "[" + El + "]", co = "[" + Qe + "]", Mo = "[^" + $0 + $e + bo + El + Qe + qe + "]", Rt = "\\ud83c[\\udffb-\\udfff]", P3 = "(?:" + Pd + "|" + Rt + ")", zo = "[^" + $0 + "]", It = "(?:\\ud83c[\\udde6-\\uddff]){2}", rt = "[\\ud800-\\udbff][\\udc00-\\udfff]", Ac = "[" + qe + "]", po = "\\u200d", to = "(?:" + co + "|" + Mo + ")", H3 = "(?:" + Ac + "|" + Mo + ")", io = "(?:" + Vt + "(?:d|ll|m|re|s|t|ve))?", ao = "(?:" + Vt + "(?:D|LL|M|RE|S|T|VE))?", eo = P3 + "?", oo = "[" + _e + "]?", B3 = "(?:" + po + "(?:" + [zo, It, rt].join("|") + ")" + oo + eo + ")*", Q3 = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", q3 = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", Zo = oo + eo + B3, _3 = "(?:" + [f3, It, rt].join("|") + ")" + Zo, $3 = "(?:" + [zo + Pd + "?", Pd, It, rt, v3].join("|") + ")", lO = RegExp(Vt, "g"), bO = RegExp(Pd, "g"), St = RegExp(Rt + "(?=" + Rt + ")|" + $3 + Zo, "g"), cO = RegExp([
3480
+ ], N0 = "[object Arguments]", G0 = "[object Array]", O0 = "[object AsyncFunction]", P0 = "[object Boolean]", n0 = "[object Date]", P1 = "[object DOMException]", u2 = "[object Error]", n2 = "[object Function]", R = "[object GeneratorFunction]", _ = "[object Map]", $ = "[object Number]", W0 = "[object Null]", j0 = "[object Object]", c1 = "[object Promise]", A1 = "[object Proxy]", M1 = "[object RegExp]", B0 = "[object Set]", c2 = "[object String]", ol = "[object Symbol]", Tc = "[object Undefined]", Hb = "[object WeakMap]", Dd = "[object WeakSet]", gl = "[object ArrayBuffer]", ub = "[object DataView]", Vc = "[object Float32Array]", Zl = "[object Float64Array]", Yl = "[object Int8Array]", nb = "[object Int16Array]", rM = "[object Int32Array]", Bb = "[object Uint8Array]", Rc = "[object Uint8ClampedArray]", Ic = "[object Uint16Array]", rc = "[object Uint32Array]", kd = /\b__p \+= '';/g, Cd = /\b(__p \+=) '' \+/g, Jd = /(__e\(.*?\)|\b__t\)) \+\n'';/g, jd = /&(?:amp|lt|gt|quot|#39);/g, Ud = /[&<>"']/g, Fd = RegExp(jd.source), Ot = RegExp(Ud.source), gd = /<%-([\s\S]+?)%>/g, Sc = /<%([\s\S]+?)%>/g, Wb = /<%=([\s\S]+?)%>/g, mb = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, Nt = /^\w*$/, Gt = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, SM = /[\\^$.*+?()[\]{}|]/g, Xt = RegExp(SM.source), wM = /^\s+/, ht = /\s/, Lt = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, Yt = /\{\n\/\* \[wrapped with (.+)\] \*/, yt = /,? & /, Ob = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g, Nb = /[()=,{}\[\]\/\s]/, Kl = /\\(\\)?/g, Gb = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g, wc = /\w*$/, Tt = /^[-+]0x[0-9a-f]+$/i, Kd = /^0b[01]+$/i, Ed = /^\[object .+?Constructor\]$/, vd = /^0o[0-7]+$/i, fd = /^(?:0|[1-9]\d*)$/, I = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, h0 = /($^)/, V0 = /['\n\r\u2028\u2029\\]/g, $0 = "\\ud800-\\udfff", R1 = "\\u0300-\\u036f", E1 = "\\ufe20-\\ufe2f", I1 = "\\u20d0-\\u20ff", F1 = R1 + E1 + I1, El = "\\u2700-\\u27bf", Qe = "a-z\\xdf-\\xf6\\xf8-\\xff", F3 = "\\xac\\xb1\\xd7\\xf7", g3 = "\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf", K3 = "\\u2000-\\u206f", E3 = " \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000", qe = "A-Z\\xc0-\\xd6\\xd8-\\xde", _e = "\\ufe0e\\ufe0f", $e = F3 + g3 + K3 + E3, Vt = "['’]", v3 = "[" + $0 + "]", lo = "[" + $e + "]", Pd = "[" + F1 + "]", bo = "\\d+", f3 = "[" + El + "]", co = "[" + Qe + "]", Mo = "[^" + $0 + $e + bo + El + Qe + qe + "]", Rt = "\\ud83c[\\udffb-\\udfff]", P3 = "(?:" + Pd + "|" + Rt + ")", zo = "[^" + $0 + "]", It = "(?:\\ud83c[\\udde6-\\uddff]){2}", rt = "[\\ud800-\\udbff][\\udc00-\\udfff]", Ac = "[" + qe + "]", po = "\\u200d", to = "(?:" + co + "|" + Mo + ")", H3 = "(?:" + Ac + "|" + Mo + ")", io = "(?:" + Vt + "(?:d|ll|m|re|s|t|ve))?", ao = "(?:" + Vt + "(?:D|LL|M|RE|S|T|VE))?", eo = P3 + "?", oo = "[" + _e + "]?", B3 = "(?:" + po + "(?:" + [zo, It, rt].join("|") + ")" + oo + eo + ")*", Q3 = "\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])", q3 = "\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])", Zo = oo + eo + B3, _3 = "(?:" + [f3, It, rt].join("|") + ")" + Zo, $3 = "(?:" + [zo + Pd + "?", Pd, It, rt, v3].join("|") + ")", lO = RegExp(Vt, "g"), bO = RegExp(Pd, "g"), St = RegExp(Rt + "(?=" + Rt + ")|" + $3 + Zo, "g"), cO = RegExp([
3481
3481
  Ac + "?" + co + "+" + io + "(?=" + [lo, Ac, "$"].join("|") + ")",
3482
3482
  H3 + "+" + ao + "(?=" + [lo, Ac + to, "$"].join("|") + ")",
3483
3483
  Ac + "?" + to + "+" + io,
@@ -3518,9 +3518,9 @@ pp.exports;
3518
3518
  "parseInt",
3519
3519
  "setTimeout"
3520
3520
  ], pO = -1, k1 = {};
3521
- k1[Vc] = k1[Zl] = k1[Yl] = k1[nb] = k1[rM] = k1[Bb] = k1[Rc] = k1[Ic] = k1[rc] = !0, k1[N0] = k1[G0] = k1[gl] = k1[f0] = k1[ub] = k1[n0] = k1[u2] = k1[n2] = k1[_] = k1[$] = k1[j0] = k1[M1] = k1[B0] = k1[c2] = k1[Hb] = !1;
3521
+ k1[Vc] = k1[Zl] = k1[Yl] = k1[nb] = k1[rM] = k1[Bb] = k1[Rc] = k1[Ic] = k1[rc] = !0, k1[N0] = k1[G0] = k1[gl] = k1[P0] = k1[ub] = k1[n0] = k1[u2] = k1[n2] = k1[_] = k1[$] = k1[j0] = k1[M1] = k1[B0] = k1[c2] = k1[Hb] = !1;
3522
3522
  var x1 = {};
3523
- x1[N0] = x1[G0] = x1[gl] = x1[ub] = x1[f0] = x1[n0] = x1[Vc] = x1[Zl] = x1[Yl] = x1[nb] = x1[rM] = x1[_] = x1[$] = x1[j0] = x1[M1] = x1[B0] = x1[c2] = x1[ol] = x1[Bb] = x1[Rc] = x1[Ic] = x1[rc] = !0, x1[u2] = x1[n2] = x1[Hb] = !1;
3523
+ x1[N0] = x1[G0] = x1[gl] = x1[ub] = x1[P0] = x1[n0] = x1[Vc] = x1[Zl] = x1[Yl] = x1[nb] = x1[rM] = x1[_] = x1[$] = x1[j0] = x1[M1] = x1[B0] = x1[c2] = x1[ol] = x1[Bb] = x1[Rc] = x1[Ic] = x1[rc] = !0, x1[u2] = x1[n2] = x1[Hb] = !1;
3524
3524
  var tO = {
3525
3525
  // Latin-1 Supplement block.
3526
3526
  À: "A",
@@ -5315,7 +5315,7 @@ pp.exports;
5315
5315
  d = d.buffer, p = p.buffer;
5316
5316
  case gl:
5317
5317
  return !(d.byteLength != p.byteLength || !L(new cz(d), new cz(p)));
5318
- case f0:
5318
+ case P0:
5319
5319
  case n0:
5320
5320
  case $:
5321
5321
  return nl(+d, +p);
@@ -5498,7 +5498,7 @@ pp.exports;
5498
5498
  switch (p) {
5499
5499
  case gl:
5500
5500
  return ei(d);
5501
- case f0:
5501
+ case P0:
5502
5502
  case n0:
5503
5503
  return new Z(+d);
5504
5504
  case ub:
@@ -6348,7 +6348,7 @@ pp.exports;
6348
6348
  return H1(d) && r2(d);
6349
6349
  }
6350
6350
  function AX(d) {
6351
- return d === !0 || d === !1 || H1(d) && Y2(d) == f0;
6351
+ return d === !0 || d === !1 || H1(d) && Y2(d) == P0;
6352
6352
  }
6353
6353
  var Ib = PO || ki, xX = Wo ? j2(Wo) : F5;
6354
6354
  function DX(d) {
@@ -7126,7 +7126,7 @@ function print() { __p += __j.call(arguments, '') }
7126
7126
  Qb ? ((Qb.exports = Cc)._ = Cc, wt._ = Cc) : W2._ = Cc;
7127
7127
  }).call(C0);
7128
7128
  })(pp, pp.exports);
7129
- var P0 = pp.exports, l2 = {}, Ze = {}, uM = {};
7129
+ var f0 = pp.exports, l2 = {}, Ze = {}, uM = {};
7130
7130
  Object.defineProperty(uM, "__esModule", { value: !0 });
7131
7131
  uM.EstadoCaptacion = uM.TipoCaptacion = void 0;
7132
7132
  var js;
@@ -7239,7 +7239,7 @@ tl.toCurrency = iT;
7239
7239
  tl.mergeObjects = WW;
7240
7240
  tl.capitalize = mW;
7241
7241
  tl.formatContactName = aT;
7242
- const ld = P0, sW = Up;
7242
+ const ld = f0, sW = Up;
7243
7243
  function Fp(l, b) {
7244
7244
  const { context: c = {}, run: M = !1, useInvisibleContext: z = !1 } = b || {};
7245
7245
  if (!l || typeof l != "string")
@@ -8121,9 +8121,9 @@ const na = [l2.ControlType.DYNAMIC_ARRAY, l2.ControlType.OBJECT], sT = {
8121
8121
  var b;
8122
8122
  if (l.controlType === l2.ControlType.LOCATION) {
8123
8123
  const { value: c } = l.value;
8124
- return P0.values(P0.omit(c, "catastro")).every((M) => !P0.isNil(M) && M !== "") && (c != null && c.catastro ? uT(c == null ? void 0 : c.catastro) : !0);
8124
+ return f0.values(f0.omit(c, "catastro")).every((M) => !f0.isNil(M) && M !== "") && (c != null && c.catastro ? uT(c == null ? void 0 : c.catastro) : !0);
8125
8125
  }
8126
- return l.controlType === l2.ControlType.DYNAMIC_ARRAY || l.multiple ? (((b = l.value) == null ? void 0 : b.length) || 0) > 0 : !P0.isNil(l.value) && l.value !== "";
8126
+ return l.controlType === l2.ControlType.DYNAMIC_ARRAY || l.multiple ? (((b = l.value) == null ? void 0 : b.length) || 0) > 0 : !f0.isNil(l.value) && l.value !== "";
8127
8127
  },
8128
8128
  message: "Este campo es requerido"
8129
8129
  },
@@ -8216,7 +8216,7 @@ function OT(l, b, c) {
8216
8216
  }
8217
8217
  function vW(l, b, c) {
8218
8218
  const M = b.structure;
8219
- return P0.chunk(M, c).map(
8219
+ return f0.chunk(M, c).map(
8220
8220
  (t) => ({
8221
8221
  ...l,
8222
8222
  controls: fW(t).map((i) => {
@@ -8231,7 +8231,7 @@ function vW(l, b, c) {
8231
8231
  );
8232
8232
  }
8233
8233
  function NT(l) {
8234
- return P0.chain(l).groupBy("group").toPairs().orderBy(([c, M]) => c).map(([c, M]) => {
8234
+ return f0.chain(l).groupBy("group").toPairs().orderBy(([c, M]) => c).map(([c, M]) => {
8235
8235
  var i;
8236
8236
  const z = ((i = M.find((e) => {
8237
8237
  var s;
@@ -8270,7 +8270,7 @@ function fW(l) {
8270
8270
  });
8271
8271
  }
8272
8272
  function XT(l) {
8273
- if (!P0.isNil(l.defaultValue)) return l.defaultValue;
8273
+ if (!f0.isNil(l.defaultValue)) return l.defaultValue;
8274
8274
  switch (l.controlType) {
8275
8275
  case "input_text":
8276
8276
  return "";
@@ -8315,7 +8315,7 @@ const YM = cY("form", {
8315
8315
  const { id: c, value: M, code: z } = b, t = this.formSteps[l].controls.find(
8316
8316
  (i) => i.id === c
8317
8317
  );
8318
- t && (na.includes(t.controlType) ? P0.set(t.value, z, M) : t.value = M);
8318
+ t && (na.includes(t.controlType) ? f0.set(t.value, z, M) : t.value = M);
8319
8319
  },
8320
8320
  setControlVisibility(l, b, c) {
8321
8321
  const M = this.formSteps[l].controls.find(
@@ -8362,7 +8362,7 @@ class au {
8362
8362
  }));
8363
8363
  }
8364
8364
  fromRaw(b) {
8365
- return P0.orderBy(b, "ORDEN").filter((M) => M.PREGUNTAS.length && M.ESTADO === 1).map((M) => {
8365
+ return f0.orderBy(b, "ORDEN").filter((M) => M.PREGUNTAS.length && M.ESTADO === 1).map((M) => {
8366
8366
  const z = M.NOMBRE, t = M.ORDEN, i = M.DESCRIPCION, e = M.CLAVE, s = M.ID_CUESTIONARIO, u = M.PREGUNTAS.filter((o) => o.ESTADO === 1).map(
8367
8367
  (o) => this.parseControl(o)
8368
8368
  );
@@ -8517,7 +8517,7 @@ const hT = yd(
8517
8517
  const b = Nl(l, "modelValue"), c = l, { control: M } = C2(c);
8518
8518
  function z(e) {
8519
8519
  if (M.value.multiple) {
8520
- let s = P0.cloneDeep(b.value);
8520
+ let s = f0.cloneDeep(b.value);
8521
8521
  e.exclusive ? s = [e.value] : (s = s.filter(
8522
8522
  (u) => {
8523
8523
  var o, O;
@@ -10563,10 +10563,10 @@ const SV = {
10563
10563
  u = l.noRefocus === !1 && document.activeElement !== null ? document.activeElement : null, S0(l.maximized), J(), e.value = !0, l.noFocus !== !0 ? ((N0 = document.activeElement) == null || N0.blur(), h(e0)) : N(), n(() => {
10564
10564
  if (z.proxy.$q.platform.is.ios === !0) {
10565
10565
  if (l.seamless !== !0 && document.activeElement) {
10566
- const { top: G0, bottom: O0 } = document.activeElement.getBoundingClientRect(), { innerHeight: f0 } = window, n0 = window.visualViewport !== void 0 ? window.visualViewport.height : f0;
10566
+ const { top: G0, bottom: O0 } = document.activeElement.getBoundingClientRect(), { innerHeight: P0 } = window, n0 = window.visualViewport !== void 0 ? window.visualViewport.height : P0;
10567
10567
  G0 > 0 && O0 > n0 / 2 && (document.scrollingElement.scrollTop = Math.min(
10568
10568
  document.scrollingElement.scrollHeight - n0,
10569
- O0 >= f0 ? 1 / 0 : Math.ceil(document.scrollingElement.scrollTop + O0 - n0 / 2)
10569
+ O0 >= P0 ? 1 / 0 : Math.ceil(document.scrollingElement.scrollTop + O0 - n0 / 2)
10570
10570
  )), document.activeElement.scrollIntoView();
10571
10571
  }
10572
10572
  O = !0, t.value.click(), O = !1;
@@ -10831,24 +10831,24 @@ function kV({
10831
10831
  );
10832
10832
  return;
10833
10833
  }
10834
- let G0 = 0, O0 = x.scrollStart - x.offsetStart, f0 = O0;
10834
+ let G0 = 0, O0 = x.scrollStart - x.offsetStart, P0 = O0;
10835
10835
  if (O0 <= i0 && O0 + x.scrollViewSize >= n.value)
10836
- O0 -= n.value, G0 = J.value.from, f0 = O0;
10836
+ O0 -= n.value, G0 = J.value.from, P0 = O0;
10837
10837
  else
10838
10838
  for (let n0 = 0; O0 >= G[n0] && G0 < p0; n0++)
10839
10839
  O0 -= G[n0], G0 += ml;
10840
10840
  for (; O0 > 0 && G0 < p0; )
10841
- O0 -= W[G0], O0 > -x.scrollViewSize ? (G0++, f0 = O0) : f0 = W[G0] + O0;
10841
+ O0 -= W[G0], O0 > -x.scrollViewSize ? (G0++, P0 = O0) : P0 = W[G0] + O0;
10842
10842
  w(
10843
10843
  A,
10844
10844
  x,
10845
10845
  G0,
10846
- f0
10846
+ P0
10847
10847
  );
10848
10848
  }
10849
10849
  function w(A, x, p0, i0, N0) {
10850
- const G0 = typeof N0 == "string" && N0.indexOf("-force") !== -1, O0 = G0 === !0 ? N0.replace("-force", "") : N0, f0 = O0 !== void 0 ? O0 : "start";
10851
- let n0 = Math.max(0, p0 - N.value[f0]), P1 = n0 + N.value.total;
10850
+ const G0 = typeof N0 == "string" && N0.indexOf("-force") !== -1, O0 = G0 === !0 ? N0.replace("-force", "") : N0, P0 = O0 !== void 0 ? O0 : "start";
10851
+ let n0 = Math.max(0, p0 - N.value[P0]), P1 = n0 + N.value.total;
10852
10852
  P1 > l.value && (P1 = l.value, n0 = Math.max(0, P1 - N.value.total)), u = x.scrollStart;
10853
10853
  const u2 = n0 !== J.value.from || P1 !== J.value.to;
10854
10854
  if (u2 === !1 && O0 === void 0) {
@@ -10890,11 +10890,11 @@ function kV({
10890
10890
  x.children,
10891
10891
  (n0) => n0.classList && n0.classList.contains("q-virtual-scroll--skip") === !1
10892
10892
  ), i0 = p0.length, N0 = t.virtualScrollHorizontal === !0 ? (n0) => n0.getBoundingClientRect().width : (n0) => n0.offsetHeight;
10893
- let G0 = A, O0, f0;
10893
+ let G0 = A, O0, P0;
10894
10894
  for (let n0 = 0; n0 < i0; ) {
10895
10895
  for (O0 = N0(p0[n0]), n0++; n0 < i0 && p0[n0].classList.contains("q-virtual-scroll--with-prev") === !0; )
10896
10896
  O0 += N0(p0[n0]), n0++;
10897
- f0 = O0 - W[G0], f0 !== 0 && (W[G0] += f0, G[Math.floor(G0 / ml)] += f0), G0++;
10897
+ P0 = O0 - W[G0], P0 !== 0 && (W[G0] += P0, G[Math.floor(G0 / ml)] += P0), G0++;
10898
10898
  }
10899
10899
  }
10900
10900
  }
@@ -10913,8 +10913,8 @@ function kV({
10913
10913
  G = [];
10914
10914
  for (let G0 = 0; G0 <= N0; G0++) {
10915
10915
  let O0 = 0;
10916
- const f0 = Math.min((G0 + 1) * ml, l.value);
10917
- for (let n0 = G0 * ml; n0 < f0; n0++)
10916
+ const P0 = Math.min((G0 + 1) * ml, l.value);
10917
+ for (let n0 = G0 * ml; n0 < P0; n0++)
10918
10918
  O0 += W[n0];
10919
10919
  G.push(O0);
10920
10920
  }
@@ -11173,7 +11173,7 @@ const pm = r1({
11173
11173
  return l.hideSelected === !0 || x.value.length === 0 ? [I, l.inputClass] : (I += " q-field__input--padding", l.inputClass === void 0 ? I : [I, l.inputClass]);
11174
11174
  }), O0 = Y(
11175
11175
  () => (l.virtualScrollHorizontal === !0 ? "q-virtual-scroll--horizontal" : "") + (l.popupContentClass ? " " + l.popupContentClass : "")
11176
- ), f0 = Y(() => w.value === 0), n0 = Y(
11176
+ ), P0 = Y(() => w.value === 0), n0 = Y(
11177
11177
  () => x.value.map((I) => c2.value(I)).join(", ")
11178
11178
  ), P1 = Y(() => l.displayValue !== void 0 ? l.displayValue : n0.value), u2 = Y(() => l.optionsHtml === !0 ? () => !0 : (I) => (I == null ? void 0 : I.html) === !0), n2 = Y(() => l.displayValueHtml === !0 || l.displayValue === void 0 && (l.optionsHtml === !0 || x.value.some(u2.value))), R = Y(() => A.focused.value === !0 ? l.tabindex : -1), _ = Y(() => {
11179
11179
  const I = {
@@ -11461,7 +11461,7 @@ const pm = r1({
11461
11461
  ];
11462
11462
  }
11463
11463
  function Fd() {
11464
- if (f0.value === !0)
11464
+ if (P0.value === !0)
11465
11465
  return b["no-option"] !== void 0 ? b["no-option"]({ inputValue: s.value }) : void 0;
11466
11466
  const I = b.option !== void 0 ? b.option : (V0) => g(pW, {
11467
11467
  key: V0.index,
@@ -11541,7 +11541,7 @@ const pm = r1({
11541
11541
  style: l.popupContentStyle,
11542
11542
  modelValue: t.value,
11543
11543
  fit: l.menuShrink !== !0,
11544
- cover: l.optionsCover === !0 && f0.value !== !0 && l.useInput !== !0,
11544
+ cover: l.optionsCover === !0 && P0.value !== !0 && l.useInput !== !0,
11545
11545
  anchor: l.menuAnchor,
11546
11546
  self: l.menuSelf,
11547
11547
  offset: l.menuOffset,
@@ -11642,7 +11642,7 @@ const pm = r1({
11642
11642
  function Nb(I) {
11643
11643
  A.editable.value === !0 && (n === !0 ? (A.onControlFocusin(I), i.value = !0, i2(() => {
11644
11644
  A.focus();
11645
- })) : A.focus(), l.onFilter !== void 0 ? mb(s.value) : (f0.value !== !0 || b["no-option"] !== void 0) && (t.value = !0));
11645
+ })) : A.focus(), l.onFilter !== void 0 ? mb(s.value) : (P0.value !== !0 || b["no-option"] !== void 0) && (t.value = !0));
11646
11646
  }
11647
11647
  function Kl() {
11648
11648
  i.value = !1, Ob();
@@ -11680,7 +11680,7 @@ const pm = r1({
11680
11680
  I !== void 0 && Il(I), c("popupHide", I), A.hasPopupOpen = !1, A.onControlFocusout(I);
11681
11681
  }
11682
11682
  function fd() {
11683
- n = z.platform.is.mobile !== !0 && l.behavior !== "dialog" ? !1 : l.behavior !== "menu" && (l.useInput === !0 ? b["no-option"] !== void 0 || l.onFilter !== void 0 || f0.value === !1 : !0), C = z.platform.is.ios === !0 && n === !0 && l.useInput === !0 ? "fade" : l.transitionShow;
11683
+ n = z.platform.is.mobile !== !0 && l.behavior !== "dialog" ? !1 : l.behavior !== "menu" && (l.useInput === !0 ? b["no-option"] !== void 0 || l.onFilter !== void 0 || P0.value === !1 : !0), C = z.platform.is.ios === !0 && n === !0 && l.useInput === !0 ? "fade" : l.transitionShow;
11684
11684
  }
11685
11685
  return wn(fd), HL(Kd), fd(), s2(() => {
11686
11686
  O !== null && clearTimeout(O), G !== null && clearTimeout(G);
@@ -11714,7 +11714,7 @@ const pm = r1({
11714
11714
  () => l.hideSelected !== !0 && N0.value === !0 || typeof s.value == "number" || s.value.length !== 0 || sd(l.displayValue)
11715
11715
  ),
11716
11716
  getControlChild: () => {
11717
- if (A.editable.value !== !1 && (i.value === !0 || f0.value !== !0 || b["no-option"] !== void 0))
11717
+ if (A.editable.value !== !1 && (i.value === !0 || P0.value !== !0 || b["no-option"] !== void 0))
11718
11718
  return n === !0 ? ht() : Nt();
11719
11719
  A.hasPopupOpen === !0 && (A.hasPopupOpen = !1);
11720
11720
  },
@@ -11826,7 +11826,7 @@ const pm = r1({
11826
11826
  function o(O, G) {
11827
11827
  if (O === "") {
11828
11828
  G(() => {
11829
- b.value = P0.cloneDeep(s.value);
11829
+ b.value = f0.cloneDeep(s.value);
11830
11830
  });
11831
11831
  return;
11832
11832
  }
@@ -11922,7 +11922,7 @@ function im(l, b) {
11922
11922
  n.push(...J);
11923
11923
  } else
11924
11924
  C.controls.push(j);
11925
- }), i.value = P0.orderBy(n, "order").map((N) => ({
11925
+ }), i.value = f0.orderBy(n, "order").map((N) => ({
11926
11926
  ...N,
11927
11927
  id: N.controls.map((r) => r.id).join("-")
11928
11928
  // esto es para que al reconstruir el modelo, no se pierda el renderizado de los controles en los v-for (este id se usa como key)
@@ -12011,10 +12011,10 @@ const vV = {
12011
12011
  const b = l, c = YM(), { model: M, onControlValueUpdate: z } = im(b.index), t = Y(() => M.value.length), i = d0(0), e = Y(
12012
12012
  () => M.value[i.value]
12013
12013
  ), s = (o) => {
12014
- const O = P0.toPairs(P0.groupBy(o, "row"));
12015
- return P0.orderBy(O, ([G, W]) => Number(G), "asc").map(
12014
+ const O = f0.toPairs(f0.groupBy(o, "row"));
12015
+ return f0.orderBy(O, ([G, W]) => Number(G), "asc").map(
12016
12016
  ([G, W]) => ({
12017
- controls: P0.orderBy(W, "col", "asc")
12017
+ controls: f0.orderBy(W, "col", "asc")
12018
12018
  })
12019
12019
  );
12020
12020
  };
@@ -12191,8 +12191,8 @@ const vV = {
12191
12191
  // location: MapLocation
12192
12192
  }[s] || Qi;
12193
12193
  }
12194
- const t = (s) => P0.orderBy(P0.toPairs(P0.groupBy(s, "row")), "row").map(([u, o]) => ({
12195
- controls: P0.orderBy(o, "col")
12194
+ const t = (s) => f0.orderBy(f0.toPairs(f0.groupBy(s, "row")), "row").map(([u, o]) => ({
12195
+ controls: f0.orderBy(o, "col")
12196
12196
  }));
12197
12197
  function i(s) {
12198
12198
  return [
@@ -12332,13 +12332,13 @@ const vV = {
12332
12332
  },
12333
12333
  emits: ["onSubmit"],
12334
12334
  setup(l, { emit: b }) {
12335
- const c = l, M = b, z = d0(!1), t = YM(), i = (s) => P0.keys(P0.groupBy(s.controls, "group")).length === 1;
12335
+ const c = l, M = b, z = d0(!1), t = YM(), i = (s) => f0.keys(f0.groupBy(s.controls, "group")).length === 1;
12336
12336
  A0(() => c.forms, (s) => {
12337
12337
  const o = new au().fromRaw(s);
12338
12338
  t.setFormSteps(o);
12339
12339
  }, { immediate: !0 });
12340
12340
  function e() {
12341
- const s = P0.cloneDeep(t.formSteps), o = new au().toRaw(s);
12341
+ const s = f0.cloneDeep(t.formSteps), o = new au().toRaw(s);
12342
12342
  M("onSubmit", o);
12343
12343
  }
12344
12344
  return (s, u) => (T(), K(e1, null, [
@@ -12493,10 +12493,10 @@ const vV = {
12493
12493
  }
12494
12494
  const G0 = u.value[i0].value[0];
12495
12495
  var x = N0.getViewport({ scale: 1 }), p0 = (G0.parentNode.clientWidth - 4) / x.width;
12496
- const O0 = G0.getContext("2d"), f0 = N0.getViewport({ scale: p0 * i.value });
12497
- G0.width = f0.width, G0.height = f0.height, N.value[i0] = A += f0.height / i.value + e.value, await N0.render({
12496
+ const O0 = G0.getContext("2d"), P0 = N0.getViewport({ scale: p0 * i.value });
12497
+ G0.width = P0.width, G0.height = P0.height, N.value[i0] = A += P0.height / i.value + e.value, await N0.render({
12498
12498
  canvasContext: O0,
12499
- viewport: f0
12499
+ viewport: P0
12500
12500
  });
12501
12501
  } catch (N0) {
12502
12502
  console.error("Error rendering PDF:", N0);
@@ -12554,8 +12554,8 @@ const vV = {
12554
12554
  let R0;
12555
12555
  const Z0 = (A) => 1 - Math.pow(1 - A, 3), S0 = () => {
12556
12556
  const A = r.value.scrollTop, x = performance.now(), p0 = (i0) => {
12557
- const N0 = i0 - x, G0 = Math.min(N0 / 500, 1), O0 = Z0(G0), f0 = A * (1 - O0);
12558
- r.value.scrollTo(0, f0), G0 < 1 && (R0 = requestAnimationFrame(p0));
12557
+ const N0 = i0 - x, G0 = Math.min(N0 / 500, 1), O0 = Z0(G0), P0 = A * (1 - O0);
12558
+ r.value.scrollTo(0, P0), G0 < 1 && (R0 = requestAnimationFrame(p0));
12559
12559
  };
12560
12560
  cancelAnimationFrame(R0), requestAnimationFrame(p0);
12561
12561
  };
@@ -13171,7 +13171,7 @@ const vR = /* @__PURE__ */ F0({
13171
13171
  A0(
13172
13172
  M,
13173
13173
  (O) => {
13174
- z.value = P0.cloneDeep(O);
13174
+ z.value = f0.cloneDeep(O);
13175
13175
  },
13176
13176
  { deep: !0, immediate: !0 }
13177
13177
  );
@@ -13385,7 +13385,7 @@ const vR = /* @__PURE__ */ F0({
13385
13385
  marrón: "#8B4513"
13386
13386
  }, g9 = (l) => {
13387
13387
  if (!l) return null;
13388
- const b = P0.mapKeys(
13388
+ const b = f0.mapKeys(
13389
13389
  l,
13390
13390
  (i, e) => e.toLowerCase()
13391
13391
  ), c = b.id_producto || b.id, M = b.estado || b.tabla_estado, t = (b.r_img || b.images || []).filter(Boolean).map((i) => K9(i)).filter((i) => i.estado > -1).sort((i, e) => i.posicion - e.posicion);
@@ -13396,7 +13396,7 @@ const vR = /* @__PURE__ */ F0({
13396
13396
  images: t
13397
13397
  };
13398
13398
  }, K9 = (l) => {
13399
- const b = P0.mapKeys(
13399
+ const b = f0.mapKeys(
13400
13400
  l,
13401
13401
  (t, i) => i.toLowerCase()
13402
13402
  ), c = b.id_archivo || b.id, M = b.public || b.publico, z = b.tipo || b.filetype;
@@ -13414,7 +13414,7 @@ const vR = /* @__PURE__ */ F0({
13414
13414
  },
13415
13415
  setup(l) {
13416
13416
  const b = l, { size: c = "medium" } = C2(b), M = Y(
13417
- () => P0.mapKeys(b.product || {}, (n, h) => h.toUpperCase())
13417
+ () => f0.mapKeys(b.product || {}, (n, h) => h.toUpperCase())
13418
13418
  ), z = Y(() => {
13419
13419
  var n;
13420
13420
  return ((n = M.value) == null ? void 0 : n.DETALLE_PACK) || [];
@@ -13597,7 +13597,7 @@ const vR = /* @__PURE__ */ F0({
13597
13597
  }, t = (W) => {
13598
13598
  var N;
13599
13599
  const n = c.value[W], h = M.value.find((r) => r.code === W);
13600
- return (N = h == null ? void 0 : h.options) != null && N.length ? P0.isArray(n) ? n.map((r) => z(h.options, r)).join(", ") : z(h.options, n) : n;
13600
+ return (N = h == null ? void 0 : h.options) != null && N.length ? f0.isArray(n) ? n.map((r) => z(h.options, r)).join(", ") : z(h.options, n) : n;
13601
13601
  }, i = (W) => {
13602
13602
  if (typeof W == "string") {
13603
13603
  let n = Number(W.replace(/[^0-9.-]/g, "").trim());
@@ -13704,7 +13704,7 @@ const vR = /* @__PURE__ */ F0({
13704
13704
  }
13705
13705
  ].filter((W) => {
13706
13706
  var n, h;
13707
- return P0.isNil(W.value) || W.value === "" ? !1 : b != null && b.hiddenProps && ((n = b == null ? void 0 : b.hiddenProps) != null && n.length) ? !((h = b == null ? void 0 : b.hiddenProps) != null && h.includes(W.key)) : !0;
13707
+ return f0.isNil(W.value) || W.value === "" ? !1 : b != null && b.hiddenProps && ((n = b == null ? void 0 : b.hiddenProps) != null && n.length) ? !((h = b == null ? void 0 : b.hiddenProps) != null && h.includes(W.key)) : !0;
13708
13708
  })
13709
13709
  ), G = Y(() => {
13710
13710
  var W;
@@ -13782,15 +13782,15 @@ const vR = /* @__PURE__ */ F0({
13782
13782
  n[4] || (n[4] = l1(" Material: ")),
13783
13783
  E("span", zI, m0(t("material")), 1)
13784
13784
  ])) : L0("", !0),
13785
- (B = Q(c)) != null && B.usos_habituales && Q(P0.isArray)((c0 = Q(c)) == null ? void 0 : c0.usos_habituales) ? (T(), K("div", pI, [
13785
+ (B = Q(c)) != null && B.usos_habituales && Q(f0.isArray)((c0 = Q(c)) == null ? void 0 : c0.usos_habituales) ? (T(), K("div", pI, [
13786
13786
  n[5] || (n[5] = l1(" Usos habituales: ")),
13787
13787
  E("span", tI, m0(t("usos_habituales")), 1)
13788
13788
  ])) : L0("", !0),
13789
- (v = Q(c)) != null && v.propositos_generales && Q(P0.isArray)((F = Q(c)) == null ? void 0 : F.propositos_generales) ? (T(), K("div", iI, [
13789
+ (v = Q(c)) != null && v.propositos_generales && Q(f0.isArray)((F = Q(c)) == null ? void 0 : F.propositos_generales) ? (T(), K("div", iI, [
13790
13790
  n[6] || (n[6] = l1(" Propositos generales: ")),
13791
13791
  E("span", aI, m0(t("propositos_generales")), 1)
13792
13792
  ])) : L0("", !0),
13793
- (M0 = Q(c)) != null && M0.controladoras_compatibles && Q(P0.isArray)((w = Q(c)) == null ? void 0 : w.controladoras_compatibles) ? (T(), K("div", eI, [
13793
+ (M0 = Q(c)) != null && M0.controladoras_compatibles && Q(f0.isArray)((w = Q(c)) == null ? void 0 : w.controladoras_compatibles) ? (T(), K("div", eI, [
13794
13794
  n[7] || (n[7] = l1(" Controladoras compatibles: ")),
13795
13795
  E("span", oI, m0(t("controladoras_compatibles")), 1)
13796
13796
  ])) : L0("", !0),
@@ -13936,7 +13936,7 @@ const vR = /* @__PURE__ */ F0({
13936
13936
  return !!((S = (J = u.value) == null ? void 0 : J.PROPS) != null && S.a_medida) && !((H = u.value) != null && H.PACK);
13937
13937
  }), O = Y(() => {
13938
13938
  var J;
13939
- return P0.upperFirst((J = u.value) == null ? void 0 : J.NOMBRE);
13939
+ return f0.upperFirst((J = u.value) == null ? void 0 : J.NOMBRE);
13940
13940
  }), G = Y(() => {
13941
13941
  var J;
13942
13942
  return (((J = u.value) == null ? void 0 : J.DESCRIPCION) || "").trim();
@@ -13950,7 +13950,7 @@ const vR = /* @__PURE__ */ F0({
13950
13950
  () => {
13951
13951
  var J;
13952
13952
  return (((J = u.value) == null ? void 0 : J.R_IMG) || []).map(
13953
- (S) => P0.mapKeys(S, (H, B) => P0.snakeCase(B))
13953
+ (S) => f0.mapKeys(S, (H, B) => f0.snakeCase(B))
13954
13954
  );
13955
13955
  }
13956
13956
  ), C = Y(
@@ -21298,7 +21298,7 @@ function VC(l) {
21298
21298
  cancelToken: e.token
21299
21299
  }).then((s) => {
21300
21300
  const u = (s == null ? void 0 : s.data) || null;
21301
- return P0.isNil(u) ? null : u;
21301
+ return f0.isNil(u) ? null : u;
21302
21302
  }).catch(() => null) : Promise.resolve(null);
21303
21303
  };
21304
21304
  }
@@ -22005,7 +22005,7 @@ const cl = (l, b = null) => {
22005
22005
  }
22006
22006
  };
22007
22007
  function IC(l, b, c, M, z) {
22008
- const t = `${b}_${P0.uniqueId()}`, i = Ve(), e = async (C) => {
22008
+ const t = `${b}_${f0.uniqueId()}`, i = Ve(), e = async (C) => {
22009
22009
  const j = Km();
22010
22010
  if (!j)
22011
22011
  throw new Error("FetchUniq provider is not available");
@@ -22036,9 +22036,9 @@ function IC(l, b, c, M, z) {
22036
22036
  };
22037
22037
  }
22038
22038
  function rC(l, b, c, M) {
22039
- const z = { ...Em, ...M }, t = `${c}_${P0.uniqueId()}`, i = Y(() => {
22039
+ const z = { ...Em, ...M }, t = `${c}_${f0.uniqueId()}`, i = Y(() => {
22040
22040
  const S = YS(cl(l, {})), H = cl(b, {});
22041
- return P0.cloneDeep({
22041
+ return f0.cloneDeep({
22042
22042
  ...H,
22043
22043
  ...S
22044
22044
  });
@@ -22077,24 +22077,33 @@ function rC(l, b, c, M) {
22077
22077
  queryKey: [c, i],
22078
22078
  queryFn: () => u(c, i),
22079
22079
  placeholderData: z.keepPreviousData ? dS : void 0,
22080
- ...P0.omit(z, "keepPreviousData")
22080
+ ...f0.omit(z, "keepPreviousData")
22081
22081
  });
22082
22082
  A0(
22083
22083
  n,
22084
22084
  (S) => {
22085
- G.value && P0.isNil(S) || (s.value = (S == null ? void 0 : S.count) || 0);
22085
+ G.value && f0.isNil(S) || (s.value = (S == null ? void 0 : S.count) || 0);
22086
22086
  },
22087
22087
  { immediate: !0 }
22088
22088
  );
22089
22089
  const C = () => {
22090
- N.value || (e.value = Math.max(e.value - 1, 1));
22090
+ e.value = Math.max(e.value - 1, 1);
22091
22091
  }, j = () => {
22092
- N.value || (e.value = e.value + 1);
22092
+ e.value = e.value + 1;
22093
22093
  }, J = Y(() => {
22094
22094
  var S;
22095
- return ((S = n.value) == null ? void 0 : S.items) ?? null;
22095
+ return ((S = n.value) == null ? void 0 : S.items) || [];
22096
22096
  });
22097
- return {
22097
+ return A0(
22098
+ () => {
22099
+ var S;
22100
+ return (S = n.value) == null ? void 0 : S.items;
22101
+ },
22102
+ (S) => {
22103
+ G.value || f0.isNil(S) && O();
22104
+ },
22105
+ { immediate: !0 }
22106
+ ), {
22098
22107
  pending: W,
22099
22108
  fetching: G,
22100
22109
  error: r,
@@ -22124,7 +22133,7 @@ function TS(l, b, c, M) {
22124
22133
  var G;
22125
22134
  (G = l.value) == null || G.forEach((W) => {
22126
22135
  let n = M != null && M.idKey ? W[M.idKey] : null;
22127
- n === null && (n = P0.uniqueId()), W[z] = String(n);
22136
+ n === null && (n = f0.uniqueId()), W[z] = String(n);
22128
22137
  });
22129
22138
  };
22130
22139
  A0(
@@ -22164,7 +22173,7 @@ function TS(l, b, c, M) {
22164
22173
  if (!W) return;
22165
22174
  const h = (W == null ? void 0 : W.id) ?? null;
22166
22175
  if (h === null) return;
22167
- const N = P0.cloneDeep(l.value), r = N.findIndex((J) => J[z] == n), C = N.findIndex((J) => J[z] == h);
22176
+ const N = f0.cloneDeep(l.value), r = N.findIndex((J) => J[z] == n), C = N.findIndex((J) => J[z] == h);
22168
22177
  if (r === -1 || C === -1) return;
22169
22178
  const [j] = N.splice(r, 1);
22170
22179
  N.splice(C, 0, j), l.value = N, c(N);
@@ -22485,7 +22494,7 @@ const VS = ["id", "draggable"], RS = ["onClick"], IS = {
22485
22494
  emits: ["update:quantity", "update:detail"],
22486
22495
  setup(l) {
22487
22496
  const b = l, c = Nl(l, "quantity"), M = Nl(l, "detail"), z = Y(
22488
- () => P0.mapKeys(b.product || {}, (h, N) => N.toUpperCase())
22497
+ () => f0.mapKeys(b.product || {}, (h, N) => N.toUpperCase())
22489
22498
  ), t = Y(() => {
22490
22499
  var h;
22491
22500
  return ((h = z.value) == null ? void 0 : h.PROPS) || {};
@@ -22595,9 +22604,9 @@ const VS = ["id", "draggable"], RS = ["onClick"], IS = {
22595
22604
  }, O = () => {
22596
22605
  e.value++;
22597
22606
  }, G = () => {
22598
- const n = P0.omit(b.value, "images", "table_estado");
22607
+ const n = f0.omit(b.value, "images", "table_estado");
22599
22608
  t("add_to_shopcart", {
22600
- product: P0.mapKeys(
22609
+ product: f0.mapKeys(
22601
22610
  { ...n, id_producto: n.id },
22602
22611
  (h, N) => N.toUpperCase()
22603
22612
  ),
@@ -26632,7 +26641,7 @@ const kk = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
26632
26641
  return !b.isMoment(R) && N0(W0) && (j0 = a0($)) && W0.add(j0.parse(W0), "minutes"), W0.tz($), W0;
26633
26642
  }
26634
26643
  O0.version = c, O0.dataVersion = "", O0._zones = M, O0._links = z, O0._names = i, O0._countries = t, O0.add = e0, O0.link = S0, O0.load = p0, O0.zone = a0, O0.zoneExists = i0, O0.guess = z0, O0.names = R0, O0.Zone = C, O0.unpack = r, O0.unpackBase60 = W, O0.needsOffset = N0, O0.moveInvalidForward = !0, O0.moveAmbiguousForward = !1, O0.countries = Z0, O0.zonesForCountry = x;
26635
- var f0 = b.fn;
26644
+ var P0 = b.fn;
26636
26645
  b.tz = O0, b.defaultZone = null, b.updateOffset = function(R, _) {
26637
26646
  var $ = b.defaultZone, W0;
26638
26647
  if (R._z === void 0 && ($ && N0(R) && !R._isUTC && R.isValid() && (R._d = b.utc(R._a)._d, R.utc().add($.parse(R), "minutes")), R._z = $), R._z)
@@ -26641,7 +26650,7 @@ const kk = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
26641
26650
  R.utcOffset(-W0, _), R._z = j0;
26642
26651
  } else
26643
26652
  R.zone(W0, _);
26644
- }, f0.tz = function(R, _) {
26653
+ }, P0.tz = function(R, _) {
26645
26654
  if (R) {
26646
26655
  if (typeof R != "string")
26647
26656
  throw new Error("Time zone name must be a string, got " + R + " [" + typeof R + "]");
@@ -26665,7 +26674,7 @@ const kk = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
26665
26674
  return arguments.length > 0 && (this._z = null), R.apply(this, arguments);
26666
26675
  };
26667
26676
  }
26668
- f0.zoneName = n0(f0.zoneName), f0.zoneAbbr = n0(f0.zoneAbbr), f0.utc = P1(f0.utc), f0.local = P1(f0.local), f0.utcOffset = u2(f0.utcOffset), b.tz.setDefault = function(R) {
26677
+ P0.zoneName = n0(P0.zoneName), P0.zoneAbbr = n0(P0.zoneAbbr), P0.utc = P1(P0.utc), P0.local = P1(P0.local), P0.utcOffset = u2(P0.utcOffset), b.tz.setDefault = function(R) {
26669
26678
  return (o < 2 || o === 2 && O < 9) && G0("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js " + b.version + "."), b.defaultZone = R ? a0(R) : null, b;
26670
26679
  };
26671
26680
  var n2 = b.momentProperties;
@@ -28204,9 +28213,9 @@ Facilidad de instalación, se fija a la pared con tornillos de forma sencilla. M
28204
28213
  labelKey: "COD_CAPTACION"
28205
28214
  }
28206
28215
  }
28207
- }, dC = P0.mapValues(
28216
+ }, dC = f0.mapValues(
28208
28217
  MC,
28209
- (l) => P0.omit(l, "mock")
28218
+ (l) => f0.omit(l, "mock")
28210
28219
  ), SC = {
28211
28220
  install(l, b) {
28212
28221
  if (b != null && b.pinia)
@@ -40,7 +40,7 @@ Facilidad de instalación, se fija a la pared con tornillos de forma sencilla. M
40
40
  `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(s){return s instanceof this?s:new this(s)}static concat(s,...M){const u=new this(s);return M.forEach(z=>u.set(z)),u}static accessor(s){const u=(this[$internals]=this[$internals]={accessors:{}}).accessors,z=this.prototype;function Z(r){const N=normalizeHeader(r);u[N]||(buildAccessors(z,r),u[N]=!0)}return utils$1.isArray(s)?s.forEach(Z):Z(s),this}};AxiosHeaders$1.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),utils$1.reduceDescriptors(AxiosHeaders$1.prototype,({value:o},s)=>{let M=s[0].toUpperCase()+s.slice(1);return{get:()=>o,set(u){this[M]=u}}}),utils$1.freezeMethods(AxiosHeaders$1);function transformData(o,s){const M=this||defaults$1,u=s||M,z=AxiosHeaders$1.from(u.headers);let Z=u.data;return utils$1.forEach(o,function(N){Z=N.call(M,Z,z.normalize(),s?s.status:void 0)}),z.normalize(),Z}function isCancel$1(o){return!!(o&&o.__CANCEL__)}function CanceledError$1(o,s,M){AxiosError$1.call(this,o??"canceled",AxiosError$1.ERR_CANCELED,s,M),this.name="CanceledError"}utils$1.inherits(CanceledError$1,AxiosError$1,{__CANCEL__:!0});function settle(o,s,M){const u=M.config.validateStatus;!M.status||!u||u(M.status)?o(M):s(new AxiosError$1("Request failed with status code "+M.status,[AxiosError$1.ERR_BAD_REQUEST,AxiosError$1.ERR_BAD_RESPONSE][Math.floor(M.status/100)-4],M.config,M.request,M))}function parseProtocol(o){const s=/^([-+\w]{1,25})(:?\/\/|:)/.exec(o);return s&&s[1]||""}function speedometer(o,s){o=o||10;const M=new Array(o),u=new Array(o);let z=0,Z=0,r;return s=s!==void 0?s:1e3,function(X){const y=Date.now(),G=u[Z];r||(r=y),M[z]=X,u[z]=y;let V=Z,D=0;for(;V!==z;)D+=M[V++],V=V%o;if(z=(z+1)%o,z===Z&&(Z=(Z+1)%o),y-r<s)return;const R=G&&y-G;return R?Math.round(D*1e3/R):void 0}}function throttle(o,s){let M=0,u=1e3/s,z,Z;const r=(y,G=Date.now())=>{M=G,z=null,Z&&(clearTimeout(Z),Z=null),o.apply(null,y)};return[(...y)=>{const G=Date.now(),V=G-M;V>=u?r(y,G):(z=y,Z||(Z=setTimeout(()=>{Z=null,r(z)},u-V)))},()=>z&&r(z)]}const progressEventReducer=(o,s,M=3)=>{let u=0;const z=speedometer(50,250);return throttle(Z=>{const r=Z.loaded,N=Z.lengthComputable?Z.total:void 0,X=r-u,y=z(X),G=r<=N;u=r;const V={loaded:r,total:N,progress:N?r/N:void 0,bytes:X,rate:y||void 0,estimated:y&&N&&G?(N-r)/y:void 0,event:Z,lengthComputable:N!=null,[s?"download":"upload"]:!0};o(V)},M)},progressEventDecorator=(o,s)=>{const M=o!=null;return[u=>s[0]({lengthComputable:M,total:o,loaded:u}),s[1]]},asyncDecorator=o=>(...s)=>utils$1.asap(()=>o(...s)),isURLSameOrigin=platform.hasStandardBrowserEnv?((o,s)=>M=>(M=new URL(M,platform.origin),o.protocol===M.protocol&&o.host===M.host&&(s||o.port===M.port)))(new URL(platform.origin),platform.navigator&&/(msie|trident)/i.test(platform.navigator.userAgent)):()=>!0,cookies=platform.hasStandardBrowserEnv?{write(o,s,M,u,z,Z){const r=[o+"="+encodeURIComponent(s)];utils$1.isNumber(M)&&r.push("expires="+new Date(M).toGMTString()),utils$1.isString(u)&&r.push("path="+u),utils$1.isString(z)&&r.push("domain="+z),Z===!0&&r.push("secure"),document.cookie=r.join("; ")},read(o){const s=document.cookie.match(new RegExp("(^|;\\s*)("+o+")=([^;]*)"));return s?decodeURIComponent(s[3]):null},remove(o){this.write(o,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function isAbsoluteURL(o){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(o)}function combineURLs(o,s){return s?o.replace(/\/?\/$/,"")+"/"+s.replace(/^\/+/,""):o}function buildFullPath(o,s,M){let u=!isAbsoluteURL(s);return o&&(u||M==!1)?combineURLs(o,s):s}const headersToObject=o=>o instanceof AxiosHeaders$1?{...o}:o;function mergeConfig$1(o,s){s=s||{};const M={};function u(y,G,V,D){return utils$1.isPlainObject(y)&&utils$1.isPlainObject(G)?utils$1.merge.call({caseless:D},y,G):utils$1.isPlainObject(G)?utils$1.merge({},G):utils$1.isArray(G)?G.slice():G}function z(y,G,V,D){if(utils$1.isUndefined(G)){if(!utils$1.isUndefined(y))return u(void 0,y,V,D)}else return u(y,G,V,D)}function Z(y,G){if(!utils$1.isUndefined(G))return u(void 0,G)}function r(y,G){if(utils$1.isUndefined(G)){if(!utils$1.isUndefined(y))return u(void 0,y)}else return u(void 0,G)}function N(y,G,V){if(V in s)return u(y,G);if(V in o)return u(void 0,y)}const X={url:Z,method:Z,data:Z,baseURL:r,transformRequest:r,transformResponse:r,paramsSerializer:r,timeout:r,timeoutMessage:r,withCredentials:r,withXSRFToken:r,adapter:r,responseType:r,xsrfCookieName:r,xsrfHeaderName:r,onUploadProgress:r,onDownloadProgress:r,decompress:r,maxContentLength:r,maxBodyLength:r,beforeRedirect:r,transport:r,httpAgent:r,httpsAgent:r,cancelToken:r,socketPath:r,responseEncoding:r,validateStatus:N,headers:(y,G,V)=>z(headersToObject(y),headersToObject(G),V,!0)};return utils$1.forEach(Object.keys(Object.assign({},o,s)),function(G){const V=X[G]||z,D=V(o[G],s[G],G);utils$1.isUndefined(D)&&V!==N||(M[G]=D)}),M}const resolveConfig=o=>{const s=mergeConfig$1({},o);let{data:M,withXSRFToken:u,xsrfHeaderName:z,xsrfCookieName:Z,headers:r,auth:N}=s;s.headers=r=AxiosHeaders$1.from(r),s.url=buildURL(buildFullPath(s.baseURL,s.url,s.allowAbsoluteUrls),o.params,o.paramsSerializer),N&&r.set("Authorization","Basic "+btoa((N.username||"")+":"+(N.password?unescape(encodeURIComponent(N.password)):"")));let X;if(utils$1.isFormData(M)){if(platform.hasStandardBrowserEnv||platform.hasStandardBrowserWebWorkerEnv)r.setContentType(void 0);else if((X=r.getContentType())!==!1){const[y,...G]=X?X.split(";").map(V=>V.trim()).filter(Boolean):[];r.setContentType([y||"multipart/form-data",...G].join("; "))}}if(platform.hasStandardBrowserEnv&&(u&&utils$1.isFunction(u)&&(u=u(s)),u||u!==!1&&isURLSameOrigin(s.url))){const y=z&&Z&&cookies.read(Z);y&&r.set(z,y)}return s},isXHRAdapterSupported=typeof XMLHttpRequest<"u",xhrAdapter=isXHRAdapterSupported&&function(o){return new Promise(function(M,u){const z=resolveConfig(o);let Z=z.data;const r=AxiosHeaders$1.from(z.headers).normalize();let{responseType:N,onUploadProgress:X,onDownloadProgress:y}=z,G,V,D,R,S;function C(){R&&R(),S&&S(),z.cancelToken&&z.cancelToken.unsubscribe(G),z.signal&&z.signal.removeEventListener("abort",G)}let j=new XMLHttpRequest;j.open(z.method.toUpperCase(),z.url,!0),j.timeout=z.timeout;function P(){if(!j)return;const U=AxiosHeaders$1.from("getAllResponseHeaders"in j&&j.getAllResponseHeaders()),g={data:!N||N==="text"||N==="json"?j.responseText:j.response,status:j.status,statusText:j.statusText,headers:U,config:o,request:j};settle(function(q){M(q),C()},function(q){u(q),C()},g),j=null}"onloadend"in j?j.onloadend=P:j.onreadystatechange=function(){!j||j.readyState!==4||j.status===0&&!(j.responseURL&&j.responseURL.indexOf("file:")===0)||setTimeout(P)},j.onabort=function(){j&&(u(new AxiosError$1("Request aborted",AxiosError$1.ECONNABORTED,o,j)),j=null)},j.onerror=function(){u(new AxiosError$1("Network Error",AxiosError$1.ERR_NETWORK,o,j)),j=null},j.ontimeout=function(){let E=z.timeout?"timeout of "+z.timeout+"ms exceeded":"timeout exceeded";const g=z.transitional||transitionalDefaults;z.timeoutErrorMessage&&(E=z.timeoutErrorMessage),u(new AxiosError$1(E,g.clarifyTimeoutError?AxiosError$1.ETIMEDOUT:AxiosError$1.ECONNABORTED,o,j)),j=null},Z===void 0&&r.setContentType(null),"setRequestHeader"in j&&utils$1.forEach(r.toJSON(),function(E,g){j.setRequestHeader(g,E)}),utils$1.isUndefined(z.withCredentials)||(j.withCredentials=!!z.withCredentials),N&&N!=="json"&&(j.responseType=z.responseType),y&&([D,S]=progressEventReducer(y,!0),j.addEventListener("progress",D)),X&&j.upload&&([V,R]=progressEventReducer(X),j.upload.addEventListener("progress",V),j.upload.addEventListener("loadend",R)),(z.cancelToken||z.signal)&&(G=U=>{j&&(u(!U||U.type?new CanceledError$1(null,o,j):U),j.abort(),j=null)},z.cancelToken&&z.cancelToken.subscribe(G),z.signal&&(z.signal.aborted?G():z.signal.addEventListener("abort",G)));const F=parseProtocol(z.url);if(F&&platform.protocols.indexOf(F)===-1){u(new AxiosError$1("Unsupported protocol "+F+":",AxiosError$1.ERR_BAD_REQUEST,o));return}j.send(Z||null)})},composeSignals=(o,s)=>{const{length:M}=o=o?o.filter(Boolean):[];if(s||M){let u=new AbortController,z;const Z=function(y){if(!z){z=!0,N();const G=y instanceof Error?y:this.reason;u.abort(G instanceof AxiosError$1?G:new CanceledError$1(G instanceof Error?G.message:G))}};let r=s&&setTimeout(()=>{r=null,Z(new AxiosError$1(`timeout ${s} of ms exceeded`,AxiosError$1.ETIMEDOUT))},s);const N=()=>{o&&(r&&clearTimeout(r),r=null,o.forEach(y=>{y.unsubscribe?y.unsubscribe(Z):y.removeEventListener("abort",Z)}),o=null)};o.forEach(y=>y.addEventListener("abort",Z));const{signal:X}=u;return X.unsubscribe=()=>utils$1.asap(N),X}},streamChunk=function*(o,s){let M=o.byteLength;if(M<s){yield o;return}let u=0,z;for(;u<M;)z=u+s,yield o.slice(u,z),u=z},readBytes=async function*(o,s){for await(const M of readStream(o))yield*streamChunk(M,s)},readStream=async function*(o){if(o[Symbol.asyncIterator]){yield*o;return}const s=o.getReader();try{for(;;){const{done:M,value:u}=await s.read();if(M)break;yield u}}finally{await s.cancel()}},trackStream=(o,s,M,u)=>{const z=readBytes(o,s);let Z=0,r,N=X=>{r||(r=!0,u&&u(X))};return new ReadableStream({async pull(X){try{const{done:y,value:G}=await z.next();if(y){N(),X.close();return}let V=G.byteLength;if(M){let D=Z+=V;M(D)}X.enqueue(new Uint8Array(G))}catch(y){throw N(y),y}},cancel(X){return N(X),z.return()}},{highWaterMark:2})},isFetchSupported=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",isReadableStreamSupported=isFetchSupported&&typeof ReadableStream=="function",encodeText=isFetchSupported&&(typeof TextEncoder=="function"?(o=>s=>o.encode(s))(new TextEncoder):async o=>new Uint8Array(await new Response(o).arrayBuffer())),test=(o,...s)=>{try{return!!o(...s)}catch{return!1}},supportsRequestStream=isReadableStreamSupported&&test(()=>{let o=!1;const s=new Request(platform.origin,{body:new ReadableStream,method:"POST",get duplex(){return o=!0,"half"}}).headers.has("Content-Type");return o&&!s}),DEFAULT_CHUNK_SIZE=64*1024,supportsResponseStream=isReadableStreamSupported&&test(()=>utils$1.isReadableStream(new Response("").body)),resolvers={stream:supportsResponseStream&&(o=>o.body)};isFetchSupported&&(o=>{["text","arrayBuffer","blob","formData","stream"].forEach(s=>{!resolvers[s]&&(resolvers[s]=utils$1.isFunction(o[s])?M=>M[s]():(M,u)=>{throw new AxiosError$1(`Response type '${s}' is not supported`,AxiosError$1.ERR_NOT_SUPPORT,u)})})})(new Response);const getBodyLength=async o=>{if(o==null)return 0;if(utils$1.isBlob(o))return o.size;if(utils$1.isSpecCompliantForm(o))return(await new Request(platform.origin,{method:"POST",body:o}).arrayBuffer()).byteLength;if(utils$1.isArrayBufferView(o)||utils$1.isArrayBuffer(o))return o.byteLength;if(utils$1.isURLSearchParams(o)&&(o=o+""),utils$1.isString(o))return(await encodeText(o)).byteLength},resolveBodyLength=async(o,s)=>{const M=utils$1.toFiniteNumber(o.getContentLength());return M??getBodyLength(s)},fetchAdapter=isFetchSupported&&(async o=>{let{url:s,method:M,data:u,signal:z,cancelToken:Z,timeout:r,onDownloadProgress:N,onUploadProgress:X,responseType:y,headers:G,withCredentials:V="same-origin",fetchOptions:D}=resolveConfig(o);y=y?(y+"").toLowerCase():"text";let R=composeSignals([z,Z&&Z.toAbortSignal()],r),S;const C=R&&R.unsubscribe&&(()=>{R.unsubscribe()});let j;try{if(X&&supportsRequestStream&&M!=="get"&&M!=="head"&&(j=await resolveBodyLength(G,u))!==0){let g=new Request(s,{method:"POST",body:u,duplex:"half"}),v;if(utils$1.isFormData(u)&&(v=g.headers.get("content-type"))&&G.setContentType(v),g.body){const[q,o0]=progressEventDecorator(j,progressEventReducer(asyncDecorator(X)));u=trackStream(g.body,DEFAULT_CHUNK_SIZE,q,o0)}}utils$1.isString(V)||(V=V?"include":"omit");const P="credentials"in Request.prototype;S=new Request(s,{...D,signal:R,method:M.toUpperCase(),headers:G.normalize().toJSON(),body:u,duplex:"half",credentials:P?V:void 0});let F=await fetch(S);const U=supportsResponseStream&&(y==="stream"||y==="response");if(supportsResponseStream&&(N||U&&C)){const g={};["status","statusText","headers"].forEach(c0=>{g[c0]=F[c0]});const v=utils$1.toFiniteNumber(F.headers.get("content-length")),[q,o0]=N&&progressEventDecorator(v,progressEventReducer(asyncDecorator(N),!0))||[];F=new Response(trackStream(F.body,DEFAULT_CHUNK_SIZE,q,()=>{o0&&o0(),C&&C()}),g)}y=y||"text";let E=await resolvers[utils$1.findKey(resolvers,y)||"text"](F,o);return!U&&C&&C(),await new Promise((g,v)=>{settle(g,v,{data:E,headers:AxiosHeaders$1.from(F.headers),status:F.status,statusText:F.statusText,config:o,request:S})})}catch(P){throw C&&C(),P&&P.name==="TypeError"&&/Load failed|fetch/i.test(P.message)?Object.assign(new AxiosError$1("Network Error",AxiosError$1.ERR_NETWORK,o,S),{cause:P.cause||P}):AxiosError$1.from(P,P&&P.code,o,S)}}),knownAdapters={http:httpAdapter,xhr:xhrAdapter,fetch:fetchAdapter};utils$1.forEach(knownAdapters,(o,s)=>{if(o){try{Object.defineProperty(o,"name",{value:s})}catch{}Object.defineProperty(o,"adapterName",{value:s})}});const renderReason=o=>`- ${o}`,isResolvedHandle=o=>utils$1.isFunction(o)||o===null||o===!1,adapters={getAdapter:o=>{o=utils$1.isArray(o)?o:[o];const{length:s}=o;let M,u;const z={};for(let Z=0;Z<s;Z++){M=o[Z];let r;if(u=M,!isResolvedHandle(M)&&(u=knownAdapters[(r=String(M)).toLowerCase()],u===void 0))throw new AxiosError$1(`Unknown adapter '${r}'`);if(u)break;z[r||"#"+Z]=u}if(!u){const Z=Object.entries(z).map(([N,X])=>`adapter ${N} `+(X===!1?"is not supported by the environment":"is not available in the build"));let r=s?Z.length>1?`since :
41
41
  `+Z.map(renderReason).join(`
42
42
  `):" "+renderReason(Z[0]):"as no adapter specified";throw new AxiosError$1("There is no suitable adapter to dispatch the request "+r,"ERR_NOT_SUPPORT")}return u},adapters:knownAdapters};function throwIfCancellationRequested(o){if(o.cancelToken&&o.cancelToken.throwIfRequested(),o.signal&&o.signal.aborted)throw new CanceledError$1(null,o)}function dispatchRequest(o){return throwIfCancellationRequested(o),o.headers=AxiosHeaders$1.from(o.headers),o.data=transformData.call(o,o.transformRequest),["post","put","patch"].indexOf(o.method)!==-1&&o.headers.setContentType("application/x-www-form-urlencoded",!1),adapters.getAdapter(o.adapter||defaults$1.adapter)(o).then(function(u){return throwIfCancellationRequested(o),u.data=transformData.call(o,o.transformResponse,u),u.headers=AxiosHeaders$1.from(u.headers),u},function(u){return isCancel$1(u)||(throwIfCancellationRequested(o),u&&u.response&&(u.response.data=transformData.call(o,o.transformResponse,u.response),u.response.headers=AxiosHeaders$1.from(u.response.headers))),Promise.reject(u)})}const VERSION$1="1.9.0",validators$1={};["object","boolean","number","function","string","symbol"].forEach((o,s)=>{validators$1[o]=function(u){return typeof u===o||"a"+(s<1?"n ":" ")+o}});const deprecatedWarnings={};validators$1.transitional=function(s,M,u){function z(Z,r){return"[Axios v"+VERSION$1+"] Transitional option '"+Z+"'"+r+(u?". "+u:"")}return(Z,r,N)=>{if(s===!1)throw new AxiosError$1(z(r," has been removed"+(M?" in "+M:"")),AxiosError$1.ERR_DEPRECATED);return M&&!deprecatedWarnings[r]&&(deprecatedWarnings[r]=!0,console.warn(z(r," has been deprecated since v"+M+" and will be removed in the near future"))),s?s(Z,r,N):!0}},validators$1.spelling=function(s){return(M,u)=>(console.warn(`${u} is likely a misspelling of ${s}`),!0)};function assertOptions(o,s,M){if(typeof o!="object")throw new AxiosError$1("options must be an object",AxiosError$1.ERR_BAD_OPTION_VALUE);const u=Object.keys(o);let z=u.length;for(;z-- >0;){const Z=u[z],r=s[Z];if(r){const N=o[Z],X=N===void 0||r(N,Z,o);if(X!==!0)throw new AxiosError$1("option "+Z+" must be "+X,AxiosError$1.ERR_BAD_OPTION_VALUE);continue}if(M!==!0)throw new AxiosError$1("Unknown option "+Z,AxiosError$1.ERR_BAD_OPTION)}}const validator={assertOptions,validators:validators$1},validators=validator.validators;let Axios$1=class{constructor(s){this.defaults=s||{},this.interceptors={request:new InterceptorManager,response:new InterceptorManager}}async request(s,M){try{return await this._request(s,M)}catch(u){if(u instanceof Error){let z={};Error.captureStackTrace?Error.captureStackTrace(z):z=new Error;const Z=z.stack?z.stack.replace(/^.+\n/,""):"";try{u.stack?Z&&!String(u.stack).endsWith(Z.replace(/^.+\n.+\n/,""))&&(u.stack+=`
43
- `+Z):u.stack=Z}catch{}}throw u}}_request(s,M){typeof s=="string"?(M=M||{},M.url=s):M=s||{},M=mergeConfig$1(this.defaults,M);const{transitional:u,paramsSerializer:z,headers:Z}=M;u!==void 0&&validator.assertOptions(u,{silentJSONParsing:validators.transitional(validators.boolean),forcedJSONParsing:validators.transitional(validators.boolean),clarifyTimeoutError:validators.transitional(validators.boolean)},!1),z!=null&&(utils$1.isFunction(z)?M.paramsSerializer={serialize:z}:validator.assertOptions(z,{encode:validators.function,serialize:validators.function},!0)),M.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?M.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:M.allowAbsoluteUrls=!0),validator.assertOptions(M,{baseUrl:validators.spelling("baseURL"),withXsrfToken:validators.spelling("withXSRFToken")},!0),M.method=(M.method||this.defaults.method||"get").toLowerCase();let r=Z&&utils$1.merge(Z.common,Z[M.method]);Z&&utils$1.forEach(["delete","get","head","post","put","patch","common"],S=>{delete Z[S]}),M.headers=AxiosHeaders$1.concat(r,Z);const N=[];let X=!0;this.interceptors.request.forEach(function(C){typeof C.runWhen=="function"&&C.runWhen(M)===!1||(X=X&&C.synchronous,N.unshift(C.fulfilled,C.rejected))});const y=[];this.interceptors.response.forEach(function(C){y.push(C.fulfilled,C.rejected)});let G,V=0,D;if(!X){const S=[dispatchRequest.bind(this),void 0];for(S.unshift.apply(S,N),S.push.apply(S,y),D=S.length,G=Promise.resolve(M);V<D;)G=G.then(S[V++],S[V++]);return G}D=N.length;let R=M;for(V=0;V<D;){const S=N[V++],C=N[V++];try{R=S(R)}catch(j){C.call(this,j);break}}try{G=dispatchRequest.call(this,R)}catch(S){return Promise.reject(S)}for(V=0,D=y.length;V<D;)G=G.then(y[V++],y[V++]);return G}getUri(s){s=mergeConfig$1(this.defaults,s);const M=buildFullPath(s.baseURL,s.url,s.allowAbsoluteUrls);return buildURL(M,s.params,s.paramsSerializer)}};utils$1.forEach(["delete","get","head","options"],function(s){Axios$1.prototype[s]=function(M,u){return this.request(mergeConfig$1(u||{},{method:s,url:M,data:(u||{}).data}))}}),utils$1.forEach(["post","put","patch"],function(s){function M(u){return function(Z,r,N){return this.request(mergeConfig$1(N||{},{method:s,headers:u?{"Content-Type":"multipart/form-data"}:{},url:Z,data:r}))}}Axios$1.prototype[s]=M(),Axios$1.prototype[s+"Form"]=M(!0)});let CancelToken$1=class Zi{constructor(s){if(typeof s!="function")throw new TypeError("executor must be a function.");let M;this.promise=new Promise(function(Z){M=Z});const u=this;this.promise.then(z=>{if(!u._listeners)return;let Z=u._listeners.length;for(;Z-- >0;)u._listeners[Z](z);u._listeners=null}),this.promise.then=z=>{let Z;const r=new Promise(N=>{u.subscribe(N),Z=N}).then(z);return r.cancel=function(){u.unsubscribe(Z)},r},s(function(Z,r,N){u.reason||(u.reason=new CanceledError$1(Z,r,N),M(u.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(s){if(this.reason){s(this.reason);return}this._listeners?this._listeners.push(s):this._listeners=[s]}unsubscribe(s){if(!this._listeners)return;const M=this._listeners.indexOf(s);M!==-1&&this._listeners.splice(M,1)}toAbortSignal(){const s=new AbortController,M=u=>{s.abort(u)};return this.subscribe(M),s.signal.unsubscribe=()=>this.unsubscribe(M),s.signal}static source(){let s;return{token:new Zi(function(z){s=z}),cancel:s}}};function spread$1(o){return function(M){return o.apply(null,M)}}function isAxiosError$1(o){return utils$1.isObject(o)&&o.isAxiosError===!0}const HttpStatusCode$1={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(HttpStatusCode$1).forEach(([o,s])=>{HttpStatusCode$1[s]=o});function createInstance(o){const s=new Axios$1(o),M=bind(Axios$1.prototype.request,s);return utils$1.extend(M,Axios$1.prototype,s,{allOwnKeys:!0}),utils$1.extend(M,s,null,{allOwnKeys:!0}),M.create=function(z){return createInstance(mergeConfig$1(o,z))},M}const axios=createInstance(defaults$1);axios.Axios=Axios$1,axios.CanceledError=CanceledError$1,axios.CancelToken=CancelToken$1,axios.isCancel=isCancel$1,axios.VERSION=VERSION$1,axios.toFormData=toFormData$1,axios.AxiosError=AxiosError$1,axios.Cancel=axios.CanceledError,axios.all=function(s){return Promise.all(s)},axios.spread=spread$1,axios.isAxiosError=isAxiosError$1,axios.mergeConfig=mergeConfig$1,axios.AxiosHeaders=AxiosHeaders$1,axios.formToJSON=o=>formDataToJSON(utils$1.isHTMLForm(o)?new FormData(o):o),axios.getAdapter=adapters.getAdapter,axios.HttpStatusCode=HttpStatusCode$1,axios.default=axios;const{Axios,AxiosError,CanceledError,isCancel,CancelToken,VERSION,all,Cancel,isAxiosError,spread,toFormData,AxiosHeaders,HttpStatusCode,formToJSON,getAdapter,mergeConfig}=axios,createCancelToken=()=>axios.CancelToken.source();function createFetchUniq(o){const s={};return async function(u,z,Z){const r=s[Z];r&&r.cancel("Solicitud reemplazada por una nueva");const N=createCancelToken();return s[Z]=N,u?o.get(u,{params:z,cancelToken:N.token}).then(X=>{const y=(X==null?void 0:X.data)||null;return lodashExports.isNil(y)?null:y}).catch(()=>null):Promise.resolve(null)}}let fetchUniqInstance=null;function setFetchUniq(o){fetchUniqInstance=o}function getFetchUniq(){if(!fetchUniqInstance)throw new Error("fetchUniq has not been set. Please call setFetchUniq() before using it.");return fetchUniqInstance}const DEFAULT_FETCH_OPTIONS={refetchType:"active",retry:1,refetchOnMount:!1,refetchOnWindowFocus:!1,staleTime:5*60*1e3,keepPreviousData:!0};var Subscribable=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(o){return this.listeners.add(o),this.onSubscribe(),()=>{this.listeners.delete(o),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},define_process_env_default$1={},isServer=typeof window>"u"||"Deno"in globalThis;function noop(){}function isValidTimeout(o){return typeof o=="number"&&o>=0&&o!==1/0}function timeUntilStale(o,s){return Math.max(o+(s||0)-Date.now(),0)}function resolveStaleTime(o,s){return typeof o=="function"?o(s):o}function resolveEnabled(o,s){return typeof o=="function"?o(s):o}function replaceEqualDeep(o,s){if(o===s)return o;const M=isPlainArray(o)&&isPlainArray(s);if(M||isPlainObject$1(o)&&isPlainObject$1(s)){const u=M?o:Object.keys(o),z=u.length,Z=M?s:Object.keys(s),r=Z.length,N=M?[]:{},X=new Set(u);let y=0;for(let G=0;G<r;G++){const V=M?G:Z[G];(!M&&X.has(V)||M)&&o[V]===void 0&&s[V]===void 0?(N[V]=void 0,y++):(N[V]=replaceEqualDeep(o[V],s[V]),N[V]===o[V]&&o[V]!==void 0&&y++)}return z===r&&y===z?o:N}return s}function shallowEqualObjects(o,s){if(!s||Object.keys(o).length!==Object.keys(s).length)return!1;for(const M in o)if(o[M]!==s[M])return!1;return!0}function isPlainArray(o){return Array.isArray(o)&&o.length===Object.keys(o).length}function isPlainObject$1(o){if(!hasObjectPrototype(o))return!1;const s=o.constructor;if(s===void 0)return!0;const M=s.prototype;return!(!hasObjectPrototype(M)||!M.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(o)!==Object.prototype)}function hasObjectPrototype(o){return Object.prototype.toString.call(o)==="[object Object]"}function replaceData(o,s,M){if(typeof M.structuralSharing=="function")return M.structuralSharing(o,s);if(M.structuralSharing!==!1){if(define_process_env_default$1.NODE_ENV!=="production")try{return replaceEqualDeep(o,s)}catch(u){throw console.error(`Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${M.queryHash}]: ${u}`),u}return replaceEqualDeep(o,s)}return s}function keepPreviousData(o){return o}function shouldThrowError(o,s){return typeof o=="function"?o(...s):!!o}var FocusManager=(ht=class extends Subscribable{constructor(){super();cl(this,x1);cl(this,E1);cl(this,sl);w1(this,sl,s=>{if(!isServer&&window.addEventListener){const M=()=>s();return window.addEventListener("visibilitychange",M,!1),()=>{window.removeEventListener("visibilitychange",M)}}})}onSubscribe(){H0(this,E1)||this.setEventListener(H0(this,sl))}onUnsubscribe(){var s;this.hasListeners()||((s=H0(this,E1))==null||s.call(this),w1(this,E1,void 0))}setEventListener(s){var M;w1(this,sl,s),(M=H0(this,E1))==null||M.call(this),w1(this,E1,s(u=>{typeof u=="boolean"?this.setFocused(u):this.onFocus()}))}setFocused(s){H0(this,x1)!==s&&(w1(this,x1,s),this.onFocus())}onFocus(){const s=this.isFocused();this.listeners.forEach(M=>{M(s)})}isFocused(){var s;return typeof H0(this,x1)=="boolean"?H0(this,x1):((s=globalThis.document)==null?void 0:s.visibilityState)!=="hidden"}},x1=new WeakMap,E1=new WeakMap,sl=new WeakMap,ht),focusManager=new FocusManager,OnlineManager=(f2=class extends Subscribable{constructor(){super();cl(this,He,!0);cl(this,he);cl(this,Qe);w1(this,Qe,s=>{if(!isServer&&window.addEventListener){const M=()=>s(!0),u=()=>s(!1);return window.addEventListener("online",M,!1),window.addEventListener("offline",u,!1),()=>{window.removeEventListener("online",M),window.removeEventListener("offline",u)}}})}onSubscribe(){H0(this,he)||this.setEventListener(H0(this,Qe))}onUnsubscribe(){var s;this.hasListeners()||((s=H0(this,he))==null||s.call(this),w1(this,he,void 0))}setEventListener(s){var M;w1(this,Qe,s),(M=H0(this,he))==null||M.call(this),w1(this,he,s(this.setOnline.bind(this)))}setOnline(s){H0(this,He)!==s&&(w1(this,He,s),this.listeners.forEach(u=>{u(s)}))}isOnline(){return H0(this,He)}},He=new WeakMap,he=new WeakMap,Qe=new WeakMap,f2),onlineManager=new OnlineManager;function pendingThenable(){let o,s;const M=new Promise((z,Z)=>{o=z,s=Z});M.status="pending",M.catch(()=>{});function u(z){Object.assign(M,z),delete M.resolve,delete M.reject}return M.resolve=z=>{u({status:"fulfilled",value:z}),o(z)},M.reject=z=>{u({status:"rejected",reason:z}),s(z)},M}function canFetch(o){return(o??"online")==="online"?onlineManager.isOnline():!0}var defaultScheduler=o=>setTimeout(o,0);function createNotifyManager(){let o=[],s=0,M=N=>{N()},u=N=>{N()},z=defaultScheduler;const Z=N=>{s?o.push(N):z(()=>{M(N)})},r=()=>{const N=o;o=[],N.length&&z(()=>{u(()=>{N.forEach(X=>{M(X)})})})};return{batch:N=>{let X;s++;try{X=N()}finally{s--,s||r()}return X},batchCalls:N=>(...X)=>{Z(()=>{N(...X)})},schedule:Z,setNotifyFunction:N=>{M=N},setBatchNotifyFunction:N=>{u=N},setScheduler:N=>{z=N}}}var notifyManager=createNotifyManager();function fetchState(o,s){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:canFetch(s.networkMode)?"fetching":"paused",...o===void 0&&{error:null,status:"pending"}}}var QueryObserver=(E2=class extends Subscribable{constructor(s,M){super();cl(this,g1);cl(this,Sl);cl(this,R1);cl(this,Nt);cl(this,Nl);cl(this,ge);cl(this,qe);cl(this,Ne);cl(this,Ge);cl(this,Gt);cl(this,$e);cl(this,lt);cl(this,ke);cl(this,Ce);cl(this,Xe);cl(this,tt,new Set);this.options=M,w1(this,Sl,s),w1(this,Ge,null),w1(this,Ne,pendingThenable()),this.options.experimental_prefetchInRender||H0(this,Ne).reject(new Error("experimental_prefetchInRender feature flag is not enabled")),this.bindMethods(),this.setOptions(M)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(H0(this,R1).addObserver(this),shouldFetchOnMount(H0(this,R1),this.options)?ol(this,g1,jt).call(this):this.updateResult(),ol(this,g1,F2).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return shouldFetchOn(H0(this,R1),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return shouldFetchOn(H0(this,R1),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,ol(this,g1,U2).call(this),ol(this,g1,J2).call(this),H0(this,R1).removeObserver(this)}setOptions(s){const M=this.options,u=H0(this,R1);if(this.options=H0(this,Sl).defaultQueryOptions(s),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof resolveEnabled(this.options.enabled,H0(this,R1))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");ol(this,g1,v2).call(this),H0(this,R1).setOptions(this.options),M._defaulted&&!shallowEqualObjects(this.options,M)&&H0(this,Sl).getQueryCache().notify({type:"observerOptionsUpdated",query:H0(this,R1),observer:this});const z=this.hasListeners();z&&shouldFetchOptionally(H0(this,R1),u,this.options,M)&&ol(this,g1,jt).call(this),this.updateResult(),z&&(H0(this,R1)!==u||resolveEnabled(this.options.enabled,H0(this,R1))!==resolveEnabled(M.enabled,H0(this,R1))||resolveStaleTime(this.options.staleTime,H0(this,R1))!==resolveStaleTime(M.staleTime,H0(this,R1)))&&ol(this,g1,k2).call(this);const Z=ol(this,g1,C2).call(this);z&&(H0(this,R1)!==u||resolveEnabled(this.options.enabled,H0(this,R1))!==resolveEnabled(M.enabled,H0(this,R1))||Z!==H0(this,Xe))&&ol(this,g1,j2).call(this,Z)}getOptimisticResult(s){const M=H0(this,Sl).getQueryCache().build(H0(this,Sl),s),u=this.createResult(M,s);return shouldAssignObserverCurrentProperties(this,u)&&(w1(this,Nl,u),w1(this,qe,this.options),w1(this,ge,H0(this,R1).state)),u}getCurrentResult(){return H0(this,Nl)}trackResult(s,M){return new Proxy(s,{get:(u,z)=>(this.trackProp(z),M==null||M(z),Reflect.get(u,z))})}trackProp(s){H0(this,tt).add(s)}getCurrentQuery(){return H0(this,R1)}refetch({...s}={}){return this.fetch({...s})}fetchOptimistic(s){const M=H0(this,Sl).defaultQueryOptions(s),u=H0(this,Sl).getQueryCache().build(H0(this,Sl),M);return u.fetch().then(()=>this.createResult(u,M))}fetch(s){return ol(this,g1,jt).call(this,{...s,cancelRefetch:s.cancelRefetch??!0}).then(()=>(this.updateResult(),H0(this,Nl)))}createResult(s,M){var c0;const u=H0(this,R1),z=this.options,Z=H0(this,Nl),r=H0(this,ge),N=H0(this,qe),y=s!==u?s.state:H0(this,Nt),{state:G}=s;let V={...G},D=!1,R;if(M._optimisticResults){const B=this.hasListeners(),b0=!B&&shouldFetchOnMount(s,M),a0=B&&shouldFetchOptionally(s,u,M,z);(b0||a0)&&(V={...V,...fetchState(G.data,s.options)}),M._optimisticResults==="isRestoring"&&(V.fetchStatus="idle")}let{error:S,errorUpdatedAt:C,status:j}=V;R=V.data;let P=!1;if(M.placeholderData!==void 0&&R===void 0&&j==="pending"){let B;Z!=null&&Z.isPlaceholderData&&M.placeholderData===(N==null?void 0:N.placeholderData)?(B=Z.data,P=!0):B=typeof M.placeholderData=="function"?M.placeholderData((c0=H0(this,lt))==null?void 0:c0.state.data,H0(this,lt)):M.placeholderData,B!==void 0&&(j="success",R=replaceData(Z==null?void 0:Z.data,B,M),D=!0)}if(M.select&&R!==void 0&&!P)if(Z&&R===(r==null?void 0:r.data)&&M.select===H0(this,Gt))R=H0(this,$e);else try{w1(this,Gt,M.select),R=M.select(R),R=replaceData(Z==null?void 0:Z.data,R,M),w1(this,$e,R),w1(this,Ge,null)}catch(B){w1(this,Ge,B)}H0(this,Ge)&&(S=H0(this,Ge),R=H0(this,$e),C=Date.now(),j="error");const F=V.fetchStatus==="fetching",U=j==="pending",E=j==="error",g=U&&F,v=R!==void 0,o0={status:j,fetchStatus:V.fetchStatus,isPending:U,isSuccess:j==="success",isError:E,isInitialLoading:g,isLoading:g,data:R,dataUpdatedAt:V.dataUpdatedAt,error:S,errorUpdatedAt:C,failureCount:V.fetchFailureCount,failureReason:V.fetchFailureReason,errorUpdateCount:V.errorUpdateCount,isFetched:V.dataUpdateCount>0||V.errorUpdateCount>0,isFetchedAfterMount:V.dataUpdateCount>y.dataUpdateCount||V.errorUpdateCount>y.errorUpdateCount,isFetching:F,isRefetching:F&&!U,isLoadingError:E&&!v,isPaused:V.fetchStatus==="paused",isPlaceholderData:D,isRefetchError:E&&v,isStale:isStale(s,M),refetch:this.refetch,promise:H0(this,Ne)};if(this.options.experimental_prefetchInRender){const B=O0=>{o0.status==="error"?O0.reject(o0.error):o0.data!==void 0&&O0.resolve(o0.data)},b0=()=>{const O0=w1(this,Ne,o0.promise=pendingThenable());B(O0)},a0=H0(this,Ne);switch(a0.status){case"pending":s.queryHash===u.queryHash&&B(a0);break;case"fulfilled":(o0.status==="error"||o0.data!==a0.value)&&b0();break;case"rejected":(o0.status!=="error"||o0.error!==a0.reason)&&b0();break}}return o0}updateResult(){const s=H0(this,Nl),M=this.createResult(H0(this,R1),this.options);if(w1(this,ge,H0(this,R1).state),w1(this,qe,this.options),H0(this,ge).data!==void 0&&w1(this,lt,H0(this,R1)),shallowEqualObjects(M,s))return;w1(this,Nl,M);const u=()=>{if(!s)return!0;const{notifyOnChangeProps:z}=this.options,Z=typeof z=="function"?z():z;if(Z==="all"||!Z&&!H0(this,tt).size)return!0;const r=new Set(Z??H0(this,tt));return this.options.throwOnError&&r.add("error"),Object.keys(H0(this,Nl)).some(N=>{const X=N;return H0(this,Nl)[X]!==s[X]&&r.has(X)})};ol(this,g1,Wi).call(this,{listeners:u()})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&ol(this,g1,F2).call(this)}},Sl=new WeakMap,R1=new WeakMap,Nt=new WeakMap,Nl=new WeakMap,ge=new WeakMap,qe=new WeakMap,Ne=new WeakMap,Ge=new WeakMap,Gt=new WeakMap,$e=new WeakMap,lt=new WeakMap,ke=new WeakMap,Ce=new WeakMap,Xe=new WeakMap,tt=new WeakMap,g1=new WeakSet,jt=function(s){ol(this,g1,v2).call(this);let M=H0(this,R1).fetch(this.options,s);return s!=null&&s.throwOnError||(M=M.catch(noop)),M},k2=function(){ol(this,g1,U2).call(this);const s=resolveStaleTime(this.options.staleTime,H0(this,R1));if(isServer||H0(this,Nl).isStale||!isValidTimeout(s))return;const u=timeUntilStale(H0(this,Nl).dataUpdatedAt,s)+1;w1(this,ke,setTimeout(()=>{H0(this,Nl).isStale||this.updateResult()},u))},C2=function(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(H0(this,R1)):this.options.refetchInterval)??!1},j2=function(s){ol(this,g1,J2).call(this),w1(this,Xe,s),!(isServer||resolveEnabled(this.options.enabled,H0(this,R1))===!1||!isValidTimeout(H0(this,Xe))||H0(this,Xe)===0)&&w1(this,Ce,setInterval(()=>{(this.options.refetchIntervalInBackground||focusManager.isFocused())&&ol(this,g1,jt).call(this)},H0(this,Xe)))},F2=function(){ol(this,g1,k2).call(this),ol(this,g1,j2).call(this,ol(this,g1,C2).call(this))},U2=function(){H0(this,ke)&&(clearTimeout(H0(this,ke)),w1(this,ke,void 0))},J2=function(){H0(this,Ce)&&(clearInterval(H0(this,Ce)),w1(this,Ce,void 0))},v2=function(){const s=H0(this,Sl).getQueryCache().build(H0(this,Sl),this.options);if(s===H0(this,R1))return;const M=H0(this,R1);w1(this,R1,s),w1(this,Nt,s.state),this.hasListeners()&&(M==null||M.removeObserver(this),s.addObserver(this))},Wi=function(s){notifyManager.batch(()=>{s.listeners&&this.listeners.forEach(M=>{M(H0(this,Nl))}),H0(this,Sl).getQueryCache().notify({query:H0(this,R1),type:"observerResultsUpdated"})})},E2);function shouldLoadOnMount(o,s){return resolveEnabled(s.enabled,o)!==!1&&o.state.data===void 0&&!(o.state.status==="error"&&s.retryOnMount===!1)}function shouldFetchOnMount(o,s){return shouldLoadOnMount(o,s)||o.state.data!==void 0&&shouldFetchOn(o,s,s.refetchOnMount)}function shouldFetchOn(o,s,M){if(resolveEnabled(s.enabled,o)!==!1&&resolveStaleTime(s.staleTime,o)!=="static"){const u=typeof M=="function"?M(o):M;return u==="always"||u!==!1&&isStale(o,s)}return!1}function shouldFetchOptionally(o,s,M,u){return(o!==s||resolveEnabled(u.enabled,o)===!1)&&(!M.suspense||o.state.status!=="error")&&isStale(o,M)}function isStale(o,s){return resolveEnabled(s.enabled,o)!==!1&&o.isStaleByTime(resolveStaleTime(s.staleTime,o))}function shouldAssignObserverCurrentProperties(o,s){return!shallowEqualObjects(o.getCurrentResult(),s)}var VUE_QUERY_CLIENT="VUE_QUERY_CLIENT";function getClientKey(o){const s=o?`:${o}`:"";return`${VUE_QUERY_CLIENT}${s}`}function updateState(o,s){Object.keys(o).forEach(M=>{o[M]=s[M]})}function _cloneDeep(o,s,M="",u=0){if(s){const z=s(o,M,u);if(z===void 0&&vue.isRef(o)||z!==void 0)return z}if(Array.isArray(o))return o.map((z,Z)=>_cloneDeep(z,s,String(Z),u+1));if(typeof o=="object"&&isPlainObject(o)){const z=Object.entries(o).map(([Z,r])=>[Z,_cloneDeep(r,s,Z,u+1)]);return Object.fromEntries(z)}return o}function cloneDeep(o,s){return _cloneDeep(o,s)}function cloneDeepUnref(o,s=!1){return cloneDeep(o,(M,u,z)=>{if(z===1&&u==="queryKey")return cloneDeepUnref(M,!0);if(s&&isFunction$1(M))return cloneDeepUnref(M(),s);if(vue.isRef(M))return cloneDeepUnref(vue.unref(M),s)})}function isPlainObject(o){if(Object.prototype.toString.call(o)!=="[object Object]")return!1;const s=Object.getPrototypeOf(o);return s===null||s===Object.prototype}function isFunction$1(o){return typeof o=="function"}function useQueryClient(o=""){if(!vue.hasInjectionContext())throw new Error("vue-query hooks can only be used inside setup() function or functions that support injection context.");const s=getClientKey(o),M=vue.inject(s);if(!M)throw new Error("No 'queryClient' found in Vue context, use 'VueQueryPlugin' to properly initialize the library.");return M}var define_process_env_default={};function useBaseQuery(o,s,M){define_process_env_default.NODE_ENV==="development"&&(vue.getCurrentScope()||console.warn('vue-query composable like "useQuery()" should only be used inside a "setup()" function or a running effect scope. They might otherwise lead to memory leaks.'));const u=useQueryClient(),z=vue.computed(()=>{var C;const R=cloneDeepUnref(s);typeof R.enabled=="function"&&(R.enabled=R.enabled());const S=u.defaultQueryOptions(R);return S._optimisticResults=(C=u.isRestoring)!=null&&C.value?"isRestoring":"optimistic",S}),Z=new o(u,z.value),r=z.value.shallow?vue.shallowReactive(Z.getCurrentResult()):vue.reactive(Z.getCurrentResult());let N=()=>{};u.isRestoring&&vue.watch(u.isRestoring,R=>{R||(N(),N=Z.subscribe(S=>{updateState(r,S)}))},{immediate:!0});const X=()=>{Z.setOptions(z.value),updateState(r,Z.getCurrentResult())};vue.watch(z,X),vue.onScopeDispose(()=>{N()});const y=(...R)=>(X(),r.refetch(...R)),G=()=>new Promise((R,S)=>{let C=()=>{};const j=()=>{if(z.value.enabled!==!1){Z.setOptions(z.value);const P=Z.getOptimisticResult(z.value);P.isStale?(C(),Z.fetchOptimistic(z.value).then(R,F=>{shouldThrowError(z.value.throwOnError,[F,Z.getCurrentQuery()])?S(F):R(Z.getCurrentResult())})):(C(),R(P))}};j(),C=vue.watch(z,j)});vue.watch(()=>r.error,R=>{if(r.isError&&!r.isFetching&&shouldThrowError(z.value.throwOnError,[R,Z.getCurrentQuery()]))throw R});const V=z.value.shallow?vue.shallowReadonly(r):vue.readonly(r),D=vue.toRefs(V);for(const R in r)typeof r[R]=="function"&&(D[R]=r[R]);return D.suspense=G,D.refetch=y,D}function useQuery(o,s){return useBaseQuery(QueryObserver,o)}const getValue=(o,s=null)=>{try{return(vue.isRef(o)?o==null?void 0:o.value:o)??s}catch{return s}};function useFetch(o,s,M,u,z){const Z=`${s}_${lodashExports.uniqueId()}`,r=useQueryClient(),N=async F=>{const U=getFetchUniq();if(!U)throw new Error("FetchUniq provider is not available");return F?U(F,getValue(M,{}),Z).then(E=>u?u(E):E):Promise.resolve(null)},X={...DEFAULT_FETCH_OPTIONS,...z},y=vue.computed(()=>[...getValue(o,[]),getValue(M,{})]),G=()=>useQuery({queryKey:y,queryFn:()=>N(getValue(s,"")),...X}),V=async()=>{r.invalidateQueries({queryKey:getValue(o),exact:!1,refetchType:X.refetchType})},{isFetching:D,isPending:R,data:S,refetch:C,error:j}=G(),P=vue.computed(()=>S.value??(z==null?void 0:z.defaultValue));return{pending:R,fetching:D,data:P,refetch:C,invalidate:V,error:j}}function useFetchPages(o,s,M,u){const z={...DEFAULT_FETCH_OPTIONS,...u},Z=`${M}_${lodashExports.uniqueId()}`,r=vue.computed(()=>{const g=formatPagination(getValue(o,{})),v=getValue(s,{});return lodashExports.cloneDeep({...v,...g})}),N=vue.computed({get(){var g;return((g=getValue(o))==null?void 0:g.page)||1},set(g){vue.isRef(o)?o.value.page=g:o.page=g}}),X=vue.computed({get(){var g;return((g=getValue(o))==null?void 0:g.rowsNumber)||0},set(g){vue.isRef(o)?o.value.rowsNumber=g:o.rowsNumber=g}}),y=(g,v)=>{const q=getFetchUniq();if(!q)throw new Error("FetchUniq provider is not available");return q(getValue(g,""),getValue(v),Z)},G=useQueryClient(),V=async()=>{G.invalidateQueries({queryKey:[getValue(M),r.value],exact:!1,refetchType:"active"})},{isFetching:D,isPending:R,data:S,refetch:C,isPlaceholderData:j,error:P}=useQuery({queryKey:[M,r],queryFn:()=>y(M,r),placeholderData:z.keepPreviousData?keepPreviousData:void 0,...lodashExports.omit(z,"keepPreviousData")});vue.watch(S,g=>{D.value&&lodashExports.isNil(g)||(X.value=(g==null?void 0:g.count)||0)},{immediate:!0});const F=()=>{j.value||(N.value=Math.max(N.value-1,1))},U=()=>{j.value||(N.value=N.value+1)},E=vue.computed(()=>{var g;return((g=S.value)==null?void 0:g.items)??null});return{pending:R,fetching:D,error:P,items:E,refetch:C,invalidate:V,count:X,page:N,prevPage:F,nextPage:U,isPlaceholderData:j,rawData:S}}function formatPagination(o){const s=(o.page-1)*o.rowsPerPage,M=o.rowsPerPage;return{startRow:s,fetchCount:M,sortBy:o.sortBy,descending:o.descending}}const ID_KEY="_id";function useDragAndDrop(o,s,M,u){const z=(u==null?void 0:u.idKey)??ID_KEY,Z=()=>{var D;(D=o.value)==null||D.forEach(R=>{let S=u!=null&&u.idKey?R[u.idKey]:null;S===null&&(S=lodashExports.uniqueId()),R[z]=String(S)})};vue.watch(()=>{var D;return(D=o.value)==null?void 0:D.length},()=>{Z()},{immediate:!0});function r(){return!0}function N(D){D.dataTransfer.setData("id",D.target.id),D.dataTransfer.dropEffect="move"}function X(D){if(D.preventDefault(),!D.target)return;const R=D.target.closest(s);R&&(R!=null&&R.contains(D.relatedTarget)||R.classList.remove("drag-enter"))}function y(D){if(D.preventDefault(),!D.target)return;const R=D.target.closest(s);R&&R.classList.add("drag-enter")}function G(D){D.preventDefault();const R=D.target.closest(s);if(V(R),!(R!=null&&R.draggable))return;const S=D.dataTransfer.getData("id");if(!R)return;const C=(R==null?void 0:R.id)??null;if(C===null)return;const j=lodashExports.cloneDeep(o.value),P=j.findIndex(E=>E[z]==S),F=j.findIndex(E=>E[z]==C);if(P===-1||F===-1)return;const[U]=j.splice(P,1);j.splice(F,0,U),o.value=j,M(j)}function V(D){const R=D==null?void 0:D.parentElement;if(!R)return;const S=R.children;for(let C=0;C<S.length;C++)S[C].classList.remove("drag-enter")}return{handler:r,onDragLeave:X,onDragStart:N,onDragOver:y,onDrop:G,idKey:z}}function useWidgetEvent(){const o=vue.inject("emit");return{emitEvent:(M,u)=>{o("on-event",{code:M,payload:u})}}}function useContext(){const o=vue.inject("context"),s=vue.computed(()=>o.product.value),M=o.slide,u=o.isPublic,z=o.images,Z=o.selectedPackProduct,r=vue.computed(()=>!u.value),N=vue.computed(()=>{var y;return((y=s.value)==null?void 0:y.detalle_pack)||[]}),X=vue.computed(()=>{var y;return((y=s.value)==null?void 0:y.props)||{}});return vue.watch(s,()=>{var G;const y=((G=s.value)==null?void 0:G.images)||[];z.value=y},{immediate:!0}),vue.watch(N,y=>{var G;y&&(Z.value=(G=y[0])==null?void 0:G.DETALLE)},{immediate:!0,deep:!0}),{product:s,isPublic:u,isPrivate:r,images:z,detallePack:N,productProps:X,selectedPackProduct:Z,slide:M,gamaProps:o.gamaProps,count:o.count,addToShopcartLabel:o.addToShopcartLabel,goToCatalogLabel:o.goToCatalogLabel}}const _hoisted_1$a=["id","draggable"],_hoisted_2$8=["onClick"],_hoisted_3$6={key:0,class:"row items-center justify-center bg-grey-2 media-card",style:{"border-radius":"8px",border:"1px dashed #c9c9c9"}},_hoisted_4$5={key:2,class:"media-card"},_hoisted_5$5=["src"],_hoisted_6$3={class:"video-icon"},_sfc_main$a=vue.defineComponent({__name:"ImagesMiniature",setup(o){const{images:s,slide:M,isPrivate:u}=useContext(),{emitEvent:z}=useWidgetEvent(),{handler:Z,onDragLeave:r,onDragOver:N,onDragStart:X,onDrop:y,idKey:G}=useDragAndDrop(s,".image-miniature",V=>z("update_images_position",{images:V}));return(V,D)=>vue.unref(s).length?vue.withDirectives((vue.openBlock(),vue.createElementBlock("div",{key:0,class:"images-miniature",onDragleave:D[1]||(D[1]=(...R)=>vue.unref(r)&&vue.unref(r)(...R)),onDragover:D[2]||(D[2]=(...R)=>vue.unref(N)&&vue.unref(N)(...R)),onDrop:D[3]||(D[3]=(...R)=>vue.unref(y)&&vue.unref(y)(...R))},[(vue.openBlock(!0),vue.createElementBlock(vue.Fragment,null,vue.renderList(vue.unref(s),(R,S)=>(vue.openBlock(),vue.createElementBlock("div",{class:"q-mb-md image-miniature q-px-sm",key:S,id:R[vue.unref(G)],onDragstart:D[0]||(D[0]=(...C)=>vue.unref(X)&&vue.unref(X)(...C)),draggable:vue.unref(u)},[R?(vue.openBlock(),vue.createElementBlock("div",{key:0,onClick:C=>M.value=S+1,style:vue.normalizeStyle({cursor:"pointer",borderWidth:"0.7px",borderStyle:"solid",borderRadius:"0.5rem",borderColor:S===vue.unref(M)-1?"#015979 ":"transparent"}),class:"q-pb-sm win-card"},[R!=null&&R.location?R.tipo==="image"?(vue.openBlock(),vue.createBlock(QImg,{key:1,src:R.location,fit:"cover",class:"media-card"},null,8,["src"])):R.tipo==="video"?(vue.openBlock(),vue.createElementBlock("div",_hoisted_4$5,[vue.createElementVNode("video",{src:R.location,style:{width:"100%",height:"100%",background:"black"}},null,8,_hoisted_5$5),vue.createElementVNode("div",_hoisted_6$3,[vue.createVNode(QIcon,{size:"lg",name:"o_play_circle",color:"white"})])])):vue.createCommentVNode("",!0):(vue.openBlock(),vue.createElementBlock("div",_hoisted_3$6,[vue.createVNode(QIcon,{name:"upload_file",color:"grey-5",size:"33px"})]))],12,_hoisted_2$8)):vue.createCommentVNode("",!0)],40,_hoisted_1$a))),128))],32)),[[Mutation,vue.unref(Z)]]):vue.createCommentVNode("",!0)}}),ImagesMiniature=_export_sfc(_sfc_main$a,[["__scopeId","data-v-c16b73ab"]]),_hoisted_1$9={class:"text-weight-medium"},_hoisted_2$7={key:0,class:"row justify-end items-center"},_sfc_main$9=vue.defineComponent({__name:"ProductCustomizableIndicator",props:{label:{default:"A medida"}},setup(o){const{productProps:s,product:M}=useContext(),u=vue.computed(()=>{var z,Z;return!!((z=s.value)!=null&&z.a_medida)&&!((Z=M.value)!=null&&Z.pack)});return(z,Z)=>(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$9,[u.value?(vue.openBlock(),vue.createElementBlock("div",_hoisted_2$7,[vue.createVNode(QChip,{color:"blue","text-color":"white",size:"12px"},{default:vue.withCtx(()=>Z[0]||(Z[0]=[vue.createTextVNode("A medida")])),_:1,__:[0]})])):vue.createCommentVNode("",!0)]))}}),_hoisted_1$8={class:"row q-mt-md q-pa-sm",style:{"overflow-x":"auto"}},_hoisted_2$6=["onClick"],_hoisted_3$5={class:"q-pa-sm"},_hoisted_4$4={class:"text-weight-medium ellipsis"},_hoisted_5$4={class:"text-caption"},_hoisted_6$2={key:0,class:"q-mt-md"},_hoisted_7$1={class:"text-h6"},_sfc_main$8=vue.defineComponent({__name:"ProductDetallePack",setup(o){const{detallePack:s,selectedPackProduct:M,gamaProps:u}=useContext(),z=r=>{M.value=r},Z=vue.computed(()=>{var r,N;return((r=M.value)==null?void 0:r.PROPS)||((N=M.value)==null?void 0:N.props)||{}});return(r,N)=>{var X;return vue.openBlock(),vue.createElementBlock(vue.Fragment,null,[vue.createElementVNode("div",_hoisted_1$8,[(vue.openBlock(!0),vue.createElementBlock(vue.Fragment,null,vue.renderList(vue.unref(s),(y,G)=>{var V,D,R,S;return vue.openBlock(),vue.createElementBlock("div",{key:G,class:vue.normalizeClass(`q-mr-md glass-card detalle-pack ${((V=vue.unref(M))==null?void 0:V.ID_PRODUCTO)==y.ID_PRODUCTO_DETALLE?"selected":""}`),onClick:C=>z(y.DETALLE)},[(R=(D=y==null?void 0:y.DETALLE)==null?void 0:D.ARCHIVOS)!=null&&R.length?(vue.openBlock(),vue.createBlock(QImg,{key:0,src:y.DETALLE.ARCHIVOS[0].LOCATION||"placeholder.webp",style:{height:"120px","border-radius":"8px"},fit:"contain"},null,8,["src"])):vue.createCommentVNode("",!0),vue.createElementVNode("div",_hoisted_3$5,[vue.createElementVNode("div",_hoisted_4$4,vue.toDisplayString((S=y==null?void 0:y.DETALLE)==null?void 0:S.NOMBRE),1),vue.createElementVNode("div",_hoisted_5$4,vue.toDisplayString(y==null?void 0:y.CANTIDAD)+"X",1)])],10,_hoisted_2$6)}),128))]),vue.unref(M)?(vue.openBlock(),vue.createElementBlock("div",_hoisted_6$2,[vue.createElementVNode("div",_hoisted_7$1,vue.toDisplayString(vue.unref(M).NOMBRE),1),vue.createElementVNode("div",null,"SKU: "+vue.toDisplayString((X=vue.unref(M).PROPS)==null?void 0:X.sku),1),vue.createVNode(_sfc_main$e,{class:"q-mt-md","product-props":Z.value,"gama-props":vue.unref(u)},null,8,["product-props","gama-props"])])):vue.createCommentVNode("",!0)],64)}}}),ProductDetallePack=_export_sfc(_sfc_main$8,[["__scopeId","data-v-f898c9ff"]]),_hoisted_1$7={class:"product-image-header"},_hoisted_2$5={class:"product-code"},_hoisted_3$4={class:"media-count"},_sfc_main$7=vue.defineComponent({__name:"ProductImageHeader",setup(o){const{product:s,images:M,slide:u,isPrivate:z}=useContext(),Z=vue.computed(()=>{var y,G;return(((G=(y=s.value)==null?void 0:y.tags)==null?void 0:G.split(","))||[]).filter(Boolean)}),r=vue.computed(()=>{var y;return(y=s.value)==null?void 0:y.codigo}),{emitEvent:N}=useWidgetEvent(),X=()=>{var y;return N("edit_tags",{id:(y=s.value)==null?void 0:y.id})};return(y,G)=>{var V,D;return vue.openBlock(),vue.createElementBlock("div",_hoisted_1$7,[vue.createElementVNode("div",_hoisted_2$5,vue.toDisplayString(r.value),1),vue.createElementVNode("div",{onClick:X,class:"tags",style:vue.normalizeStyle({overflowX:"auto",cursor:vue.unref(z)?"pointer":"default"})},[(vue.openBlock(!0),vue.createElementBlock(vue.Fragment,null,vue.renderList(Z.value,R=>(vue.openBlock(),vue.createBlock(ProductTag,{tag:R},null,8,["tag"]))),256)),!Z.value.length&&vue.unref(z)?(vue.openBlock(),vue.createBlock(QChip,{key:0,class:"tag",size:"12px"},{default:vue.withCtx(()=>G[0]||(G[0]=[vue.createTextVNode("Editar etiquetas")])),_:1,__:[0]})):vue.createCommentVNode("",!0)],4),vue.createElementVNode("div",_hoisted_3$4,[vue.createTextVNode(vue.toDisplayString((V=vue.unref(M))!=null&&V.length?vue.unref(u):0)+"/"+vue.toDisplayString(((D=vue.unref(M))==null?void 0:D.length)||0)+" ",1),vue.createVNode(QIcon,{name:"sym_o_image",size:"sm",class:"q-ml-xs"})])])}}}),ProductImageHeader=_export_sfc(_sfc_main$7,[["__scopeId","data-v-86923709"]]),_hoisted_1$6={key:0,class:"q-mt-md text-black col-12"},_sfc_main$6=vue.defineComponent({__name:"ProductLongDescription",setup(o){const{product:s}=useContext(),M=vue.computed(()=>{var u;return(u=s.value)==null?void 0:u.descripcion});return(u,z)=>M.value?(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$6,[z[0]||(z[0]=vue.createElementVNode("div",{class:"font-bold text-h6"},"Información del producto",-1)),vue.createElementVNode("div",null,vue.toDisplayString(M.value),1)])):vue.createCommentVNode("",!0)}}),_hoisted_1$5={class:"full-width simple-grid"},_hoisted_2$4={class:"bg-grey-2 values"},_hoisted_3$3={class:"text-bold"},_hoisted_4$3={class:"text-bold"},_hoisted_5$3={class:"text-bold"},convertToMeters=(o,s)=>{let M;switch(typeof o=="string"?M=Number(o.replaceAll(/[^0-9.-]/g,"").trim()):M=o,s){case"m":return M;case"cm":return M/100;case"mm":return M/1e3;default:throw new Error(`Unidad no soportada: ${s}`)}},getPanelesFn=o=>{const s=Number(o.ancho)||0,M=Number(o.alto)||0,u=o.unidad_de_medida||"cm",z=convertToMeters(s,u),Z=convertToMeters(M,u);let r=z*Z;return r<=0&&(r=1),N=>{const X=1/r,y=getSquareMeters(N);return Math.ceil(y*X)}},toDecimals=(o,s=2)=>Number(o.toFixed(s)),getSquareMeters=o=>{const s=Number((o==null?void 0:o.ancho)||0),M=Number((o==null?void 0:o.alto)||0);return toDecimals(s*M)},_sfc_main$5=vue.defineComponent({__name:"ProductConfiguration",props:vue.mergeModels({product:{}},{quantity:{required:!0,default:1},quantityModifiers:{},detail:{required:!0},detailModifiers:{}}),emits:["update:quantity","update:detail"],setup(o){const s=o,M=vue.useModel(o,"quantity"),u=vue.useModel(o,"detail"),z=vue.computed(()=>lodashExports.mapKeys(s.product||{},(C,j)=>j.toUpperCase())),Z=vue.computed(()=>{var C;return((C=z.value)==null?void 0:C.PROPS)||{}}),r=vue.computed(()=>Z.value.unidad_de_medida||"cm"),N=vue.computed(()=>getPanelesFn(Z.value||{}));vue.watch(u,C=>{M.value=N.value(u.value)},{immediate:!0,deep:!0});const X=C=>C.toLocaleString("es-ES",{minimumFractionDigits:2,maximumFractionDigits:2}),y=vue.computed(()=>{var j;return(Number((j=z.value)==null?void 0:j.PRECIO)||0)*M.value}),G=vue.computed(()=>getSquareMeters(u.value)),V=vue.computed(()=>{var C;return convertToMeters(((C=Z.value)==null?void 0:C.ancho)||0,r.value)}),D=vue.computed(()=>{var C;return convertToMeters(((C=Z.value)==null?void 0:C.alto)||0,r.value)}),R=vue.computed(()=>V.value*D.value),S=vue.computed(()=>{var j;const C=((j=z.value)==null?void 0:j.PRECIO)||0;return!C||!R.value?0:toCurrency(C/R.value)});return vue.watch(()=>u.value.ancho,C=>{C%V.value!==0&&(u.value.ancho=toDecimals(Math.ceil(C/V.value)*V.value))}),vue.watch(()=>u.value.alto,C=>{C%D.value!==0&&(u.value.alto=toDecimals(Math.ceil(C/D.value)*D.value))}),(C,j)=>(vue.openBlock(),vue.createElementBlock(vue.Fragment,null,[j[6]||(j[6]=vue.createElementVNode("div",{class:"prices text-bold q-mb-md"}," Define la configuración para este producto ",-1)),vue.createElementVNode("div",_hoisted_1$5,[vue.createElementVNode("div",null,[vue.createVNode(QInput,{type:"number",outlined:"",class:"q-mb-md",modelValue:u.value.ancho,"onUpdate:modelValue":j[0]||(j[0]=P=>u.value.ancho=P),modelModifiers:{number:!0},label:"Ancho",suffix:"metros",step:V.value,min:"0"},null,8,["modelValue","step"]),vue.createVNode(QInput,{type:"number",outlined:"",modelValue:u.value.alto,"onUpdate:modelValue":j[1]||(j[1]=P=>u.value.alto=P),modelModifiers:{number:!0},label:"Alto",suffix:"metros",step:D.value,min:"0"},null,8,["modelValue","step"])]),vue.createElementVNode("div",_hoisted_2$4,[vue.createElementVNode("div",null,[vue.createTextVNode(" Área panel: "+vue.toDisplayString(X(R.value))+" m",1),j[2]||(j[2]=vue.createElementVNode("sup",null,"2",-1))]),vue.createElementVNode("div",null,[j[3]||(j[3]=vue.createTextVNode(" Importe m")),j[4]||(j[4]=vue.createElementVNode("sup",null,"2",-1)),vue.createTextVNode(": "+vue.toDisplayString(S.value),1)]),vue.createElementVNode("div",_hoisted_3$3,[vue.createTextVNode("Área total: "+vue.toDisplayString(X(G.value))+" m",1),j[5]||(j[5]=vue.createElementVNode("sup",null,"2",-1))]),vue.createElementVNode("div",_hoisted_4$3,"Paneles: "+vue.toDisplayString(M.value),1),vue.createElementVNode("div",_hoisted_5$3,"Importe total: "+vue.toDisplayString(vue.unref(toCurrency)(y.value)),1)])])],64))}}),ProductConfiguration=_export_sfc(_sfc_main$5,[["__scopeId","data-v-dab89e2e"]]),_hoisted_1$4={key:0,class:"q-mt-lg"},_hoisted_2$3={class:"row justify-between"},_hoisted_3$2={key:0,class:"counter q-mr-lg q-mt-md"},_hoisted_4$2={class:"quantity"},_hoisted_5$2={key:1},_hoisted_6$1={class:"q-mt-md"},_sfc_main$4=vue.defineComponent({__name:"ProductShopcartActions",setup(o){const{product:s,productProps:M,addToShopcartLabel:u,goToCatalogLabel:z}=useContext(),{emitEvent:Z}=useWidgetEvent(),r=vue.computed(()=>{var S,C;return!!((S=M.value)!=null&&S.a_medida)&&!((C=s.value)!=null&&C.pack)}),N=vue.ref(r.value?0:1),X=vue.ref({}),y=vue.computed(()=>r.value&&N.value<=0),G=()=>{N.value=Math.max(1,N.value-1)},V=()=>{N.value++},D=()=>{const S=lodashExports.omit(s.value,"images","table_estado");Z("add_to_shopcart",{product:lodashExports.mapKeys({...S,id_producto:S.id},(C,j)=>j.toUpperCase()),quantity:N.value,props:X.value||{}})},R=()=>{Z("go_to_catalog")};return(S,C)=>vue.unref(s)?(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$4,[r.value?(vue.openBlock(),vue.createBlock(ProductConfiguration,{key:0,product:vue.unref(s),quantity:N.value,"onUpdate:quantity":C[0]||(C[0]=j=>N.value=j),detail:X.value,"onUpdate:detail":C[1]||(C[1]=j=>X.value=j)},null,8,["product","quantity","detail"])):vue.createCommentVNode("",!0),vue.createElementVNode("div",_hoisted_2$3,[r.value?(vue.openBlock(),vue.createElementBlock("div",_hoisted_5$2)):(vue.openBlock(),vue.createElementBlock("div",_hoisted_3$2,[vue.createVNode(IconButton,{outline:"",size:"sm",onClick:G,icon:"remove"}),vue.createElementVNode("span",_hoisted_4$2,vue.toDisplayString(N.value),1),vue.createVNode(IconButton,{outline:"",size:"sm",custom:"",onClick:V,icon:"add"})])),vue.createElementVNode("div",_hoisted_6$1,[vue.createVNode(_sfc_main$R,{onClick:R,disable:y.value,label:vue.unref(z)||"Seguir comprando",class:"q-mr-md"},null,8,["disable","label"]),vue.createVNode(_sfc_main$R,{onClick:D,disable:y.value,main:"",label:vue.unref(u)||"Agregar al carrito"},null,8,["disable","label"])])])])):vue.createCommentVNode("",!0)}}),ProductShopcartActions=_export_sfc(_sfc_main$4,[["__scopeId","data-v-72c2babe"]]),_hoisted_1$3={style:{"font-size":"16px","max-height":"300px","overflow-y":"auto"}},_hoisted_2$2={key:0,class:"text-black"},_sfc_main$3=vue.defineComponent({__name:"ProductShortDescription",setup(o){const{product:s}=useContext(),M=vue.computed(()=>{var u;return((u=s.value)==null?void 0:u.descripcion_corta)||""});return(u,z)=>(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$3,[M.value?(vue.openBlock(),vue.createElementBlock("div",_hoisted_2$2,vue.toDisplayString(M.value),1)):vue.createCommentVNode("",!0)]))}}),_hoisted_1$2={key:0,class:"visibility-icon-container top-right"},_sfc_main$2=vue.defineComponent({__name:"PublicImageButton",setup(o){const{images:s,slide:M,isPrivate:u}=useContext(),z=vue.computed(()=>{var X;return(X=s.value[M.value-1])==null?void 0:X.id}),Z=vue.computed(()=>{var X;return(X=s.value[M.value-1])==null?void 0:X.public}),{emitEvent:r}=useWidgetEvent(),N=()=>r("change_image_visibility",{ID_ARCHIVO:z.value,PUBLICO:!Z.value});return(X,y)=>{var G;return(G=vue.unref(s))!=null&&G.length&&vue.unref(u)?(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$2,[vue.createVNode(QBtn,{onClick:vue.withModifiers(N,["stop"]),size:"12px",icon:Z.value?"public":"public_off","text-color":Z.value?"green":"red",color:"white",padding:"4px",round:""},{default:vue.withCtx(()=>[vue.createVNode(QTooltip,null,{default:vue.withCtx(()=>[vue.createTextVNode(vue.toDisplayString(Z.value?"Visible al público":"Privado"),1)]),_:1})]),_:1},8,["icon","text-color"])])):vue.createCommentVNode("",!0)}}}),PublicImageButton=_export_sfc(_sfc_main$2,[["__scopeId","data-v-3a4b0b68"]]),_hoisted_1$1={class:"row justify-end"},_hoisted_2$1={class:"grid"},_hoisted_3$1={class:"images-container"},_hoisted_4$1={class:"carousel-container"},_hoisted_5$1={class:"text-h5 text-bold"},_hoisted_6={class:"row justify-between"},_hoisted_7={key:0},_hoisted_8={class:"row items-center justify-between"},_hoisted_9={class:"text-weight-medium"},_hoisted_10={class:"row"},_sfc_main$1=vue.defineComponent({__name:"LinvermediaProductDetail",props:{isPublic:{type:Boolean},fetching:{type:Boolean},scale:{},count:{},view:{default:"detail"},title:{},data:{},gamaProps:{},addToShopcartLabel:{},goToCatalogLabel:{}},emits:["on-event"],setup(o,{emit:s}){const M=vue.computed(()=>Screen.lt.md),u=s;vue.provide("emit",u);const z=o,Z=vue.ref(1),{data:r,isPublic:N,gamaProps:X,count:y}=vue.toRefs(z),G=vue.computed(()=>toProductLite(r.value)),V=vue.ref(null),D=vue.ref([]),R={product:G,slide:Z,isPublic:N,selectedPackProduct:V,images:D,count:y,gamaProps:X,addToShopcartLabel:z.addToShopcartLabel,goToCatalogLabel:z.goToCatalogLabel};vue.provide("context",R);const S=vue.computed(()=>{var j;return!!((j=G.value)!=null&&j.pack)}),C=()=>{var j;return u("on-event",{code:"edit_product",payload:{id:(j=G.value)==null?void 0:j.id}})};return(j,P)=>{var E,g,v,q,o0,c0,B;const F=vue.resolveComponent("v-else"),U=vue.resolveComponent("ProductAvailableColors");return vue.openBlock(),vue.createElementBlock(vue.Fragment,null,[vue.createElementVNode("div",_hoisted_1$1,[vue.unref(N)?vue.createCommentVNode("",!0):(vue.openBlock(),vue.createBlock(IconButton,{key:0,icon:"edit",sm:"",onClick:C}))]),vue.createElementVNode("div",_hoisted_2$1,[vue.createElementVNode("div",_hoisted_3$1,[vue.createVNode(ImagesMiniature,{class:"gt-sm"}),vue.createElementVNode("div",_hoisted_4$1,[vue.createVNode(ProductImageHeader),vue.createVNode(_sfc_main$M,{style:{"border-radius":"8px"},items:D.value,modelValue:Z.value,"onUpdate:modelValue":P[0]||(P[0]=b0=>Z.value=b0),height:M.value?"450px":"600px"},null,8,["items","modelValue","height"]),vue.createVNode(PublicImageButton)]),vue.createVNode(ImagesMiniature,{class:"lt-md"})]),vue.createElementVNode("div",null,[vue.createElementVNode("div",_hoisted_5$1,vue.toDisplayString(vue.unref(capitalize)(((E=G.value)==null?void 0:E.nombre)||"")),1),vue.createElementVNode("div",_hoisted_6,[vue.unref(N)?vue.createCommentVNode("",!0):(vue.openBlock(),vue.createElementBlock("div",_hoisted_7,"SKU: "+vue.toDisplayString((v=(g=G.value)==null?void 0:g.props)==null?void 0:v.sku),1)),vue.createVNode(F,{div:""}),!vue.unref(N)&&((q=G.value)!=null&&q.estado)?(vue.openBlock(),vue.createBlock(StateIndicator,{key:1,label:G.value.estado.name,color:G.value.estado.color},null,8,["label","color"])):vue.createCommentVNode("",!0)]),vue.createElementVNode("div",_hoisted_8,[vue.createVNode(ProductPrice,{product:G.value},null,8,["product"]),vue.createElementVNode("div",_hoisted_9,vue.toDisplayString(vue.unref(capitalize)(((c0=(o0=G.value)==null?void 0:o0.props)==null?void 0:c0.ubicacion)||"")),1),vue.createVNode(_sfc_main$9)]),vue.createVNode(U),vue.createVNode(_sfc_main$3),S.value?(vue.openBlock(),vue.createBlock(ProductDetallePack,{key:0})):(vue.openBlock(),vue.createBlock(_sfc_main$e,{key:1,"product-props":(B=G.value)==null?void 0:B.props,"gama-props":vue.unref(X)},null,8,["product-props","gama-props"])),vue.unref(N)?(vue.openBlock(),vue.createBlock(ProductShopcartActions,{key:2})):vue.createCommentVNode("",!0)])]),vue.createElementVNode("div",_hoisted_10,[vue.createVNode(_sfc_main$6)])],64)}}}),LinvermediaProductDetail=_export_sfc(_sfc_main$1,[["__scopeId","data-v-0a6c5474"]]),LINVERMEDIA_PRODUCT_DETAIL_MOCK_DATA=Object.freeze([{ID_PRODUCTO:121,ID_EMPRESA:1,COD_ART_MVX:"00000044",CAPTACION_COUNT:0,CODIGO_EXTERNO:null,nombre:"Panel Modular LED P1.8 Escaparate de Alto Brillo",DESCRIPCION:"La Pantalla LED P1.8 Escaparate de Alto Brillo (4500 nits) es la herramienta definitiva para transformar tu fachada en un potente canal de comunicación. Con un pixel pitch de 1.8mm, garantiza una claridad y detalle asombrosos, incluso a corta distancia, mientras que sus 4500 nits de brillo aseguran una visibilidad perfecta bajo la luz solar directa. Su diseño está optimizado para la resistencia en exteriores y un impacto visual máximo con su 3840 Hz de refresco de alta gama. Ideal para tiendas minoristas, concesionarios y cualquier negocio que busque atraer clientes desde la calle con promociones dinámicas y branding impactante. Tu escaparate destacará como nunca, invierte en la tecnología LED que convierte miradas en ventas. ",DESCRIPCION_CORTA:"Cautiva a tu audiencia con la pantalla LED P1.8 de escaparate, con un brillo extremo y nitidez para destacar tu negocio bajo cualquier luz.",ID_CAPTACION:null,ID_PROVEEDOR:null,ID_PRODUCTO_REF:null,TIPO:"1",ESTADO:"1",ID_GAMA:23,ID_TIE_DEF:null,TAGS:null,PUBLICO:!0,PACK:!1,CONFIGURABLE:!1,GRUPO:null,PAQUETE:!1,ID_PRODUCTOS_PAQUETE:null,PRECIO:"1800.00",PRECIOS:null,ID_ESTADO:"c241a8a9-51a6-4274-831c-d11503726458",ID_SEGMENTOS:null,TIPO_IVA:"exento",FECHA_ALTA:"2025-06-01",FECHA_UPD:"2025-06-26T03:59:53.673Z",FECHA_CREADO:"2025-05-29T16:16:18.124Z",UBICACION:null,DETALLE_PACK:[],R_IMG:[{ID_ARCHIVO:894,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/e87801c563b48669_Panel%20Modular%20LED%20Pantalla%20LED%20Interior%20de%20Alta%20Resoluci%C3%B3n%20%281%29.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Panel Modular LED Pantalla LED Interior de Alta Resolución (1).png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T21:07:13.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:121,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:1}],UNDBASICA:null,FACTORAGR:null,CONTROLLOTE:null,TIPO_CLIENTE:null,PROPS:{sku:"LED-P18-ES",alto:"48",gama:"pantallas_led_modulares",ancho:"96",pitch:"1_8_mm",brillo:"4500_nits",peso_kg:"7 - 12 (aprox.) ",subgama:"led",a_medida:!0,material:"aluminio",ubicacion:"escaparate",tipo_montaje:"matriz",proteccion_ip:"ip_20_productos_de_interior",tasa_refresco:"3840",tipo_servicio:"back",consumo_maximo:"200W",consumo_medio_w:"100W",usos_habituales:["salas_de_control_estudios_de_tv_salas_de_videoconferencia_auditorios","tiendas_recepciones_hall_salas_de_espera_showrooms_galerias"],consumo_maximo_w:"200W ",tipo_instalacion:"montaje_interior_orientado_al_exterior",unidad_de_medida:"cm",colores_disponibles:[],compatible_videowall:!0,propositos_generales:["publicidad_senaletica_informativo_decorativo_corporativo_contenido_comercial"],controladoras_compatibles:["novastar_vx_600","taurus_tb_30"]}},{ID_PRODUCTO:123,ID_EMPRESA:1,COD_ART_MVX:"00000046",CAPTACION_COUNT:0,CODIGO_EXTERNO:null,nombre:"Panel Modular LED P2.9 Exterior Trasera de Alto Brillo",DESCRIPCION:"Para instalaciones fijas en exteriores que requieren un acceso de servicio tradicional, la Pantalla LED P2.9 Exterior Trasera de Alto Brillo es la elección perfecta. Con un pixel pitch de 2.9mm y un brillo de 4000 nits, esta pantalla garantiza una visibilidad excepcional y una calidad de imagen sorprendente en grandes formatos publicitarios, estadios o fachadas arquitectónicas. Su construcción en aluminio fundido y su robustez la hacen ideal para soportar condiciones climáticas adversas. El mantenimiento trasero es óptimo para estructuras con espacio posterior, permitiendo una instalación más integrada visualmente. Con consumo máximo de 160W y medio de 80W, combina potencia con eficiencia. La durabilidad y el impacto visual que tu proyecto exterior necesita.",DESCRIPCION_CORTA:"Una solución robusta y de alto rendimiento para instalaciones fijas en exterior, con mantenimiento trasero para una integración discreta.",ID_CAPTACION:null,ID_PROVEEDOR:null,ID_PRODUCTO_REF:null,TIPO:"1",ESTADO:"1",ID_GAMA:23,ID_TIE_DEF:null,TAGS:null,PUBLICO:!0,PACK:!1,CONFIGURABLE:!1,GRUPO:null,PAQUETE:!1,ID_PRODUCTOS_PAQUETE:null,PRECIO:"937.50",PRECIOS:null,ID_ESTADO:"c241a8a9-51a6-4274-831c-d11503726458",ID_SEGMENTOS:null,TIPO_IVA:"exento",FECHA_ALTA:"2025-06-01",FECHA_UPD:"2025-06-26T03:59:54.506Z",FECHA_CREADO:"2025-05-29T16:27:31.729Z",UBICACION:null,DETALLE_PACK:[],R_IMG:[{ID_ARCHIVO:878,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/7eec48aa4f7a0d9d_Pantalla%20LED%20Exterior%20de%20Gran%20Brillo%20y%20Visibilidad%20500%20mmm.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Pantalla LED Exterior de Gran Brillo y Visibilidad 500 mmm.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T12:47:23.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:123,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:1}],UNDBASICA:null,FACTORAGR:null,CONTROLLOTE:null,TIPO_CLIENTE:null,PROPS:{sku:"LED-P29-BK",alto:"50 cm",gama:"pantallas_led_modulares",ancho:"50",pitch:"2_9_mm",brillo:"4000_nits",peso_kg:"7",subgama:"led",a_medida:!0,material:["aluminio_fundido"],ubicacion:"exterior",tipo_montaje:"matriz",proteccion_ip:"ip_65_ip_43",tasa_refresco:"3840",tipo_servicio:"back",consumo_maximo:"160W",consumo_medio_w:"80",usos_habituales:["eventos_estadios_mobiliario_urbano"],consumo_maximo_w:"160",tipo_instalacion:"estructura_exterior_soporte_metalico",colores_disponibles:[],compatible_videowall:!0,propositos_generales:["publicidad_exterior_fachadas_contenido_comercial_videowall_exterior"],controladoras_compatibles:["novastar_vx_600","taurus_tb_40"]}},{id:151,nombre:"Pantalla LED 3x2 P2.9 Escaparate",precio:21879.5,tipo_iva:"exento",descripcion:"Potente solución para escaparates grandes o interiores espaciosos. Con su formato cuadrado y gran superficie, es perfecta para videowalls que transmitan una imagen de marca sólida y profesional. La controladora Novastar Taurus TB50 garantiza un rendimiento óptimo y una gestión avanzada de contenidos complejos y en tiempo real.",descripcion_corta:"Pantalla LED 3x2m (6m²) 24 cabinets",estado:1,props:{sku:"LED-P29-FS",alto:"50",gama:"pantallas_led_modulares",ancho:"50",pitch:"2_9_mm",brillo:"4000_nits",peso_kg:"7",subgama:"led",a_medida:!0,material:"aluminio_fundido",ubicacion:"exterior",tipo_montaje:"matriz",proteccion_ip:"ip_65_ip_43",tasa_refresco:"3840",tipo_servicio:"full_front",consumo_maximo:"160W",consumo_medio_w:"80",usos_habituales:["eventos_estadios_mobiliario_urbano"],consumo_maximo_w:"160",tipo_instalacion:"estructura_exterior_soporte_metalico",unidad_de_medida:"cm",colores_disponibles:[],compatible_videowall:!0,propositos_generales:["publicidad_exterior_fachadas_contenido_comercial_videowall_exterior"],controladoras_compatibles:["novastar_vx_600","novastar_vx_1000","taurus_tb_40"]},tags:null,codigo:"00000073",fecha_creado:"2025-06-07T00:38:46.071Z",id_captacion:null,id_estado:"c241a8a9-51a6-4274-831c-d11503726458",id_gama:23,id_proveedor:null,paquete:0,pack:1,fecha_alta:"2025-06-06T04:00:00.000Z",documentos:[{id:909,estado:1,aprobado:-1,id_producto:151,id_captacion:null,id_tipo_documento:28,id_documento_firmado:null,location:"https://w2w-files.s3.amazonaws.com/linvermedia/c39831025394e8f0_Pantalla%20LED%20Exterior%20Mantenimiento%20Frontal%20Completo.png",public:1,tipo:"image",firmable:0,tags:null,posicion:2},{id:910,estado:1,aprobado:-1,id_producto:151,id_captacion:null,id_tipo_documento:28,id_documento_firmado:null,location:"https://w2w-files.s3.amazonaws.com/linvermedia/7eec48aa4f7a0d9d_Pantalla%20LED%20Exterior%20de%20Gran%20Brillo%20y%20Visibilidad%20500%20mmm.png",public:1,tipo:"image",firmable:0,tags:null,posicion:1},{id:911,estado:1,aprobado:-1,id_producto:151,id_captacion:null,id_tipo_documento:28,id_documento_firmado:null,location:"https://w2w-files.s3.amazonaws.com/linvermedia/51f4d42fb93178e3_to%20LED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida.png",public:1,tipo:"image",firmable:0,tags:null,posicion:3},{id:912,estado:1,aprobado:-1,id_producto:151,id_captacion:null,id_tipo_documento:28,id_documento_firmado:null,location:"https://w2w-files.s3.amazonaws.com/linvermedia/48deda3825a497a9_ED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida%20%281%29.png",public:1,tipo:"image",firmable:0,tags:null,posicion:4},{id:913,estado:1,aprobado:-1,id_producto:151,id_captacion:null,id_tipo_documento:28,id_documento_firmado:null,location:"https://w2w-files.s3.amazonaws.com/linvermedia/eaea5eb4e9899055_ED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida%20%281%29.png",public:1,tipo:"image",firmable:0,tags:null,posicion:5}],detalle_pack:[{ID_PRODUCTO_DETALLE_PACK:15,ID_PRODUCTO_PACK:151,ID_PRODUCTO_DETALLE:122,CANTIDAD:24,DESCUENTO:"10.00",PROPS:{alto:"2",ancho:"3"},PRINCIPAL:!0,DETALLE:{ID_PRODUCTO:122,ID_EMPRESA:1,COD_ART_MVX:"00000045",CAPTACION_COUNT:0,CODIGO_EXTERNO:null,NOMBRE:"Panel Modular LED P2.9 Exterior Frontal de Alto Brillo",DESCRIPCION:"La Pantalla LED P2.9 Exterior Frontal de Alto Brillo está diseñada para ofrecer un rendimiento impecable en los entornos más exigentes. Su pixel pitch de 2.9mm ofrece una excelente resolución para vallas publicitarias, eventos deportivos y grandes escenarios al aire libre, con un brillo de 4000 nits que garantiza visibilidad incluso bajo el sol más intenso. Fabricada en aluminio fundido, es resistente y cuenta con mantenimiento frontal, facilitando el servicio en instalaciones de pared o estructuras fijas. Con un consumo máximo de 160W y medio de 80W, para eficiencia energética. Su clasificación IP65/IP43 asegura protección contra el polvo y el agua. Tus mensaje brillarán con la máxima potencia y fiabilidad en exteriores.",DESCRIPCION_CORTA:"Robusta y brillante, la pantalla LED P2.9 Exterior con mantenimiento frontal es ideal para publicidad y eventos al aire libre bajo cualquier condición.",ID_CAPTACION:null,ID_PROVEEDOR:null,ID_PRODUCTO_REF:null,TIPO:"1",ESTADO:"1",ID_GAMA:23,ID_TIE_DEF:null,TAGS:null,PROPS:{sku:"LED-P29-FS",alto:"50",gama:"pantallas_led_modulares",ancho:"50",pitch:"2_9_mm",brillo:"4000_nits",peso_kg:"7",subgama:"led",a_medida:!0,material:"aluminio_fundido",ubicacion:"exterior",tipo_montaje:"matriz",proteccion_ip:"ip_65_ip_43",tasa_refresco:"3840",tipo_servicio:"full_front",consumo_maximo:"160W",consumo_medio_w:"80",usos_habituales:["eventos_estadios_mobiliario_urbano"],consumo_maximo_w:"160",tipo_instalacion:"estructura_exterior_soporte_metalico",unidad_de_medida:"cm",colores_disponibles:[],compatible_videowall:!0,propositos_generales:["publicidad_exterior_fachadas_contenido_comercial_videowall_exterior"],controladoras_compatibles:["novastar_vx_600","novastar_vx_1000","taurus_tb_40"]},PUBLICO:!0,PACK:!1,CONFIGURABLE:!1,GRUPO:null,PAQUETE:!1,ID_PRODUCTOS_PAQUETE:null,PRECIO:"1000.00",PRECIOS:null,ID_ESTADO:"c241a8a9-51a6-4274-831c-d11503726458",ID_SEGMENTOS:null,TIPO_IVA:"exento",FECHA_ALTA:"2025-06-01",FECHA_UPD:"2025-06-26T03:59:54.090Z",FECHA_CREADO:"2025-05-29T16:24:25.545Z",ARCHIVOS:[{ID_ARCHIVO:883,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/c39831025394e8f0_Pantalla%20LED%20Exterior%20Mantenimiento%20Frontal%20Completo.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Pantalla LED Exterior Mantenimiento Frontal Completo.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T15:06:30.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:122,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:1},{ID_ARCHIVO:884,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/7eec48aa4f7a0d9d_Pantalla%20LED%20Exterior%20de%20Gran%20Brillo%20y%20Visibilidad%20500%20mmm.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Pantalla LED Exterior de Gran Brillo y Visibilidad 500 mmm.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T15:06:42.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:122,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:2}],UNDBASICA:null,FACTORAGR:null,CONTROLLOTE:null,TIPO_CLIENTE:null}},{ID_PRODUCTO_DETALLE_PACK:16,ID_PRODUCTO_PACK:151,ID_PRODUCTO_DETALLE:144,CANTIDAD:1,DESCUENTO:"0.00",PROPS:{alto:"",ancho:""},PRINCIPAL:!1,DETALLE:{ID_PRODUCTO:144,ID_EMPRESA:1,COD_ART_MVX:"00000067",CAPTACION_COUNT:0,CODIGO_EXTERNO:null,NOMBRE:"Controladora LED Novastar Taurus TB40 (Rendimiento Superior)",DESCRIPCION:"Esta controladora asíncrona de alto rendimiento está diseñada para los proyectos más exigentes, ofreciendo una potencia de procesamiento superior y una mayor capacidad de carga de pixels. Es ideal para pantallas LED de gran tamaño, aplicaciones interactivas o proyectos que requieren actualizaciones de contenido frecuentes y complejas. Con múltiples opciones de conectividad y una estabilidad excepcional, la TB40 garantiza una gestión remota fluida y fiable de tu contenido. Su robustez y eficiencia la convierten en la elección preferida para publicidad dinámica, información en tiempo real y experiencias visuales inmersivas.",DESCRIPCION_CORTA:"La Taurus TB40 de Novastar es una controladora asíncrona de alto rendimiento, diseñada para proyectos LED complejos que exigen máxima potencia y versatilida",ID_CAPTACION:null,ID_PROVEEDOR:null,ID_PRODUCTO_REF:null,TIPO:"1",ESTADO:"1",ID_GAMA:23,ID_TIE_DEF:null,TAGS:null,PROPS:{sku:"CTRL-TB40",gama:"controladoras",serie:"novastar_taurus",subgama:"controladoras_asincronas_reproductores_multimedia",ubicacion:"panel_led_modular",proteccion_ip:"ip_20_productos_de_interior",tipo_servicio:null,sistema_operativo:"android",compatibilidad_de_senal:["red_lan_wi_fi_4_g","usb"]},PUBLICO:!0,PACK:!1,CONFIGURABLE:!1,GRUPO:null,PAQUETE:!1,ID_PRODUCTOS_PAQUETE:null,PRECIO:"279.50",PRECIOS:null,ID_ESTADO:"c241a8a9-51a6-4274-831c-d11503726458",ID_SEGMENTOS:null,TIPO_IVA:"exento",FECHA_ALTA:null,FECHA_UPD:"2025-06-26T04:00:03.280Z",FECHA_CREADO:"2025-06-02T01:55:32.799Z",ARCHIVOS:[{ID_ARCHIVO:819,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/51f4d42fb93178e3_to%20LED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"1 Controladora LED Novastar Taurus TB40 (Rendimiento Superior) Controladora LED Novastar Taurus TB40, alto rendimiento LED, señalización digital compleja, controlador asíncrono premium, publicida.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-03T23:41:18.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:144,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:null},{ID_ARCHIVO:836,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/48deda3825a497a9_ED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida%20%281%29.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"2 Controladora LED Novastar Taurus TB40 (Rendimiento Superior) Controladora LED Novastar Taurus TB40, alto rendimiento LED, señalización digital compleja, controlador asíncrono premium, publicida (1).png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-04T00:20:58.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:144,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:null},{ID_ARCHIVO:839,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/eaea5eb4e9899055_ED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida%20%281%29.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"3 Controladora LED Novastar Taurus TB40 (Rendimiento Superior) Controladora LED Novastar Taurus TB40, alto rendimiento LED, señalización digital compleja, controlador asíncrono premium, publicida (1).png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-04T00:30:31.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:144,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:null}],UNDBASICA:null,FACTORAGR:null,CONTROLLOTE:null,TIPO_CLIENTE:null}}]},{ID_PRODUCTO:119,ID_EMPRESA:1,COD_ART_MVX:"00000042",CAPTACION_COUNT:0,CODIGO_EXTERNO:null,nombre:"Panel Modular LED P2.5 Interior Versátil",NOMBRE:"Panel Modular LED P2.5 Interior Versátil",DESCRIPCION:"La Pantalla LED P2.5 Interior Versátil es la solución ideal para proyectos que buscan una excelente calidad de imagen con flexibilidad. Con un pixel pitch de 2.5mm, proporciona imágenes claras y brillantes para auditorios, centros comerciales, salas de conferencias y espacios de eventos. Su construcción en aluminio fundido garantiza ligereza y resistencia, facilitando la instalación y el mantenimiento (frontal y trasero). Con un brillo de 1000 nits y una frecuencia de refresco de 3840Hz, asegura una visualización óptima y fluida ya que evita el parpadeo visible tanto al ojo humano como para las cámaras de video. Es perfecta para publicidad digital, información en puntos de venta o fondos de escenario. Disfruta de un consumo energético eficiente (120W máximo / 60W medio) que reduce los costes operativos. Eleva la comunicación visual en tu negocio con esta pantalla LED de alto rendimiento.",DESCRIPCION_CORTA:"Pantalla LED P2.5 Interior ofrece un equilibrio perfecto entre alta definición y versatilidad para una amplia gama de aplicaciones en interiores.",ID_CAPTACION:null,ID_PROVEEDOR:null,ID_PRODUCTO_REF:null,TIPO:"1",ESTADO:"1",ID_GAMA:23,ID_TIE_DEF:null,TAGS:null,PUBLICO:!0,PACK:!1,CONFIGURABLE:!1,GRUPO:null,PAQUETE:!1,ID_PRODUCTOS_PAQUETE:null,PRECIO:"775.00",PRECIOS:null,ID_ESTADO:"c241a8a9-51a6-4274-831c-d11503726458",ID_SEGMENTOS:null,TIPO_IVA:"exento",FECHA_ALTA:"2025-06-01",FECHA_UPD:"2025-06-26T03:59:52.832Z",FECHA_CREADO:"2025-05-29T16:01:15.064Z",UBICACION:null,R_IMG:[{ID_ARCHIVO:885,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/3b331997a4a4555b_Panel%20Modular%20LED%20Pantalla%20LED%20Interior%20de%20Alta%20Resoluci%C3%B3n.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Panel Modular LED Pantalla LED Interior de Alta Resolución.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T15:11:00.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:119,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:1},{ID_ARCHIVO:886,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/e777804b4bc63fd0_Panel%20Modular%20LED%20Pantalla%20LEDInterior%20de%20Alta%20Resoluci%C3%B3n.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Panel Modular LED Pantalla LEDInterior de Alta Resolución.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T15:11:09.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:119,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:2},{ID_ARCHIVO:903,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/0075bc2e598888e6_T%C3%B3tem%20LED%20P2.0%20Interior%20con%20GOB%20%282%29.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Tótem LED P2.0 Interior con GOB (2).png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-06T23:58:01.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:119,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:3}],UNDBASICA:null,FACTORAGR:null,CONTROLLOTE:null,TIPO_CLIENTE:null,PROPS:{sku:"LED-P25-IN",alto:"48 ",gama:"pantallas_led_modulares",ancho:"64",pitch:"2_5_mm",brillo:"800_nits",peso_kg:"7 ",subgama:"led",a_medida:!0,material:"aluminio_fundido",ubicacion:"interior",tipo_montaje:"matriz",proteccion_ip:"ip_20_productos_de_interior",tasa_refresco:"3840",tipo_servicio:"back",consumo_maximo:"120W",consumo_medio_w:"60W",usos_habituales:["salas_de_control_estudios_de_tv_salas_de_videoconferencia_auditorios","tiendas_recepciones_hall_salas_de_espera_showrooms_galerias"],consumo_maximo_w:"1",tipo_instalacion:"anclado_a_pared_o_estructura_interior",unidad_de_medida:"cm",colores_disponibles:[],compatible_videowall:!0,propositos_generales:["publicidad_senaletica_informativo_decorativo_corporativo_contenido_comercial"],controladoras_compatibles:["novastar_vx_400","taurus_tb_2"]}},{id:371,nombre:'Pantalla LCD 65" Ultra Brillo 4K',precio:2227.5,tipo_iva:"exento",descripcion:'Eleva tu comunicación visual con la Pantalla LCD 65" 4K de Ultra Brillo. Esta impresionante pantalla, con su resolución 4K y un nivel de brillo excepcional (generalmente superior a 1500-2000 nits), es perfecta para entornos donde la visibilidad y el impacto son cruciales, como grandes escaparates, centros comerciales, aeropuertos o espacios de eventos. Su gran tamaño asegura que tu mensaje sea visible desde lejos, mientras que la claridad 4K garantiza que cada detalle se aprecie. Su diseño está optimizado para la eficiencia y la durabilidad en uso continuo. Una solución premium para proyectos que exigen la máxima calidad y presencia visual. ',descripcion_corta:'Gran formato y brillo extremo: la pantalla LCD 65" 4K de alta brillantez es ideal para espacios que demandan visibilidad impactante',estado:1,props:{sku:"LCD-65-HB",gama:"pantallas_lcd",brillo:"alta_brillantez_4_k_lcd",tamano:"65",peso_kg:">25-40",subgama:"lcd",material:"material_robusto_y_duradero",ubicacion:"escaparate",resolucion:"4_k",tipo_montaje:"mural",proteccion_ip:"ip_20_productos_de_interior",tasa_refresco:"60",tipo_servicio:null,usos_habituales:["escaparates_o_vitrinas_expuestas_al_sol","salas_de_control_estudios_de_tv_salas_de_videoconferencia_auditorios"],tipo_instalacion:"pared_o_soporte_vesa",colores_disponibles:[],propositos_generales:["publicidad_senaletica_informativo_decorativo_corporativo_contenido_comercial"],gran_formato_independiente:"si"},tags:"destacado,oferta",codigo:"T0000057",fecha_creado:"2025-05-30T04:02:19.415Z",id_captacion:null,id_estado:"c241a8a9-51a6-4274-831c-d11503726458",id_gama:23,id_proveedor:null,paquete:0,pack:0,fecha_alta:null,table_estado:{id:"c241a8a9-51a6-4274-831c-d11503726458",name:"No disponible",color:"#9c9c9c",code:"no_disponible",id_gama:23,enabled:1}},{id:167,nombre:"Pantalla LED",precio:2e4,tipo_iva:"general",descripcion:"Pantalla LED de alta calidad diseñada para aplicaciones interiores. Ofrece un brillo excepcional, resolución adaptable y un diseño ligero de aluminio, ideal para publicidad, videowalls y escaparates. Su doble cara y sistema operativo Android garantizan versatilidad y facilidad de uso.",descripcion_corta:"Pantalla LED interior de alta calidad, ligera y versátil.",estado:2,props:{gob:"si",sku:"TOT-LED-P18",alto:null,gama:"totems",ancho:null,marca:"Testing",pitch:"3_076_mm",brillo:"4500_nits",modelo:"Test",tamano:null,peso_kg:"3.5",subgama:"led",a_medida:!0,material:"aluminio",ubicacion:"interior",uso_final:"interior",doble_cara:!0,resolucion:null,subfamilia:"led",interactivo:null,profundidad:null,proteccion_ip:"ip_43_protegido_contra_objetos_de_mas_de_1_mm_y_agua_pulverizada",tipo_servicio:"front",consumo_medio_w:"200",tipo_de_montaje:"matriz",usos_habituales:[],consumo_maximo_w:"300",tipo_de_servicio:"full_front",tipo_instalacion:"montaje_interior_orientado_al_exterior",sistema_operativo:"android",colores_disponibles:["negro","blanco"],tasa_de_refresco_hz:"500",tipo_de_instalacion:"autoportante_de_suelo",propositos_generales:["publicidad_exterior_fachadas_contenido_comercial_videowall_exterior"],aplicacion_recomendada:["escaparates_o_vitrinas_expuestas_al_sol"],controladoras_compatibles:["novastar_vx_600","taurus_tb_30","novastar_vx_1000"]},tags:"destacado",codigo:"00000079",fecha_creado:"2025-06-11T03:04:21.800Z",id_captacion:null,id_estado:"c45eae87-d78c-4f2c-9f81-27eb87b5bc94",id_gama:23,id_proveedor:null,paquete:0,pack:1,fecha_alta:"2025-06-10T04:00:00.000Z",table_estado:{id:"c45eae87-d78c-4f2c-9f81-27eb87b5bc94",name:"Disponible",color:"#10c94b",code:"disponible",id_gama:23,enabled:1},images:[{id:840,location:"https://w2w-landings.s3.amazonaws.com/linvermedia_test/dbd480ff0130270f_WhatsApp%20Image%202025-05-08%20at%2018.43.22%20%282%29.jpeg",id_producto:167,public:1,tag_temporal:null,tipo:"image",estado:1,posicion:5},{id:841,location:"https://w2w-landings.s3.amazonaws.com/linvermedia_test/c3416442188506c1_WhatsApp%20Image%202025-05-08%20at%2018.43.22.jpeg",id_producto:167,public:1,tag_temporal:null,tipo:"image",estado:1,posicion:3},{id:842,location:"https://w2w-landings.s3.amazonaws.com/linvermedia_test/69f7f669f37d3223_WhatsApp%20Image%202025-05-08%20at%2018.43.23.jpeg",id_producto:167,public:1,tag_temporal:null,tipo:"image",estado:1,posicion:4},{id:843,location:"https://w2w-landings.s3.amazonaws.com/linvermedia_test/08ffe62e7e731aa3_WhatsApp%20Image%202025-05-08%20at%2018.43.23%20%281%29.jpeg",id_producto:167,public:1,tag_temporal:null,tipo:"image",estado:1,posicion:2}]},{id:379,nombre:"Controladora LED Novastar Taurus TB2 Avanzada",precio:227.5,tipo_iva:"exento",descripcion:"Esta unidad asíncrona ofrece una mayor capacidad de carga y un rendimiento mejorado respecto a la TB1, haciéndola perfecta para proyectos de señalización digital más ambiciosos. Permite la publicación de contenido de forma remota a través de múltiples opciones de conectividad (Gigabit Ethernet, Wi-Fi, 4G opcional), asegurando una actualización de mensajes fluida y fiable en cualquier momento y lugar. Su diseño robusto y estable garantiza un funcionamiento 24/7, crucial para aplicaciones comerciales, informativas o publicitarias. La TB2 es la solución robusta y eficiente para una gestión inteligente de tu señalización LED.",descripcion_corta:"Taurus TB2 es una controladora LED asíncrona potente, ideal para redes de señalización digital medianas que exigen estabilidad y gestión flexible de contenido.",estado:1,props:{sku:"CTRL-TB2",gama:"controladoras",serie:"novastar_taurus",subgama:"controladoras_asincronas_reproductores_multimedia",ubicacion:"led_modular",proteccion_ip:"ip_20_productos_de_interior",tipo_servicio:null,sistema_operativo:"android",compatibilidad_de_senal:["red_lan_wi_fi_4_g","usb"]},tags:null,codigo:"T0000065",fecha_creado:"2025-06-02T01:09:38.307Z",id_captacion:null,id_estado:"c241a8a9-51a6-4274-831c-d11503726458",id_gama:23,id_proveedor:null,paquete:0,pack:0,fecha_alta:null,table_estado:{id:"c241a8a9-51a6-4274-831c-d11503726458",name:"No disponible",color:"#9c9c9c",code:"no_disponible",id_gama:23,enabled:1}}]),LINVERMEDIA_PRODUCT_DETAIL_MOCK_PROPS={isPublic:!0,data:null,fetching:!1,scale:1,count:0,gamaProps:PROPS},LinvermediaProductDetailPropsSchema=WidgetPropsSchema.extend({view:enumType(["detail","summary"]).optional(),title:stringType().optional(),gamaProps:arrayType(recordType(stringType(),anyType()))});var momentTimezone$1={exports:{}},momentTimezone={exports:{}};//! moment.js
43
+ `+Z):u.stack=Z}catch{}}throw u}}_request(s,M){typeof s=="string"?(M=M||{},M.url=s):M=s||{},M=mergeConfig$1(this.defaults,M);const{transitional:u,paramsSerializer:z,headers:Z}=M;u!==void 0&&validator.assertOptions(u,{silentJSONParsing:validators.transitional(validators.boolean),forcedJSONParsing:validators.transitional(validators.boolean),clarifyTimeoutError:validators.transitional(validators.boolean)},!1),z!=null&&(utils$1.isFunction(z)?M.paramsSerializer={serialize:z}:validator.assertOptions(z,{encode:validators.function,serialize:validators.function},!0)),M.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?M.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:M.allowAbsoluteUrls=!0),validator.assertOptions(M,{baseUrl:validators.spelling("baseURL"),withXsrfToken:validators.spelling("withXSRFToken")},!0),M.method=(M.method||this.defaults.method||"get").toLowerCase();let r=Z&&utils$1.merge(Z.common,Z[M.method]);Z&&utils$1.forEach(["delete","get","head","post","put","patch","common"],S=>{delete Z[S]}),M.headers=AxiosHeaders$1.concat(r,Z);const N=[];let X=!0;this.interceptors.request.forEach(function(C){typeof C.runWhen=="function"&&C.runWhen(M)===!1||(X=X&&C.synchronous,N.unshift(C.fulfilled,C.rejected))});const y=[];this.interceptors.response.forEach(function(C){y.push(C.fulfilled,C.rejected)});let G,V=0,D;if(!X){const S=[dispatchRequest.bind(this),void 0];for(S.unshift.apply(S,N),S.push.apply(S,y),D=S.length,G=Promise.resolve(M);V<D;)G=G.then(S[V++],S[V++]);return G}D=N.length;let R=M;for(V=0;V<D;){const S=N[V++],C=N[V++];try{R=S(R)}catch(j){C.call(this,j);break}}try{G=dispatchRequest.call(this,R)}catch(S){return Promise.reject(S)}for(V=0,D=y.length;V<D;)G=G.then(y[V++],y[V++]);return G}getUri(s){s=mergeConfig$1(this.defaults,s);const M=buildFullPath(s.baseURL,s.url,s.allowAbsoluteUrls);return buildURL(M,s.params,s.paramsSerializer)}};utils$1.forEach(["delete","get","head","options"],function(s){Axios$1.prototype[s]=function(M,u){return this.request(mergeConfig$1(u||{},{method:s,url:M,data:(u||{}).data}))}}),utils$1.forEach(["post","put","patch"],function(s){function M(u){return function(Z,r,N){return this.request(mergeConfig$1(N||{},{method:s,headers:u?{"Content-Type":"multipart/form-data"}:{},url:Z,data:r}))}}Axios$1.prototype[s]=M(),Axios$1.prototype[s+"Form"]=M(!0)});let CancelToken$1=class Zi{constructor(s){if(typeof s!="function")throw new TypeError("executor must be a function.");let M;this.promise=new Promise(function(Z){M=Z});const u=this;this.promise.then(z=>{if(!u._listeners)return;let Z=u._listeners.length;for(;Z-- >0;)u._listeners[Z](z);u._listeners=null}),this.promise.then=z=>{let Z;const r=new Promise(N=>{u.subscribe(N),Z=N}).then(z);return r.cancel=function(){u.unsubscribe(Z)},r},s(function(Z,r,N){u.reason||(u.reason=new CanceledError$1(Z,r,N),M(u.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(s){if(this.reason){s(this.reason);return}this._listeners?this._listeners.push(s):this._listeners=[s]}unsubscribe(s){if(!this._listeners)return;const M=this._listeners.indexOf(s);M!==-1&&this._listeners.splice(M,1)}toAbortSignal(){const s=new AbortController,M=u=>{s.abort(u)};return this.subscribe(M),s.signal.unsubscribe=()=>this.unsubscribe(M),s.signal}static source(){let s;return{token:new Zi(function(z){s=z}),cancel:s}}};function spread$1(o){return function(M){return o.apply(null,M)}}function isAxiosError$1(o){return utils$1.isObject(o)&&o.isAxiosError===!0}const HttpStatusCode$1={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(HttpStatusCode$1).forEach(([o,s])=>{HttpStatusCode$1[s]=o});function createInstance(o){const s=new Axios$1(o),M=bind(Axios$1.prototype.request,s);return utils$1.extend(M,Axios$1.prototype,s,{allOwnKeys:!0}),utils$1.extend(M,s,null,{allOwnKeys:!0}),M.create=function(z){return createInstance(mergeConfig$1(o,z))},M}const axios=createInstance(defaults$1);axios.Axios=Axios$1,axios.CanceledError=CanceledError$1,axios.CancelToken=CancelToken$1,axios.isCancel=isCancel$1,axios.VERSION=VERSION$1,axios.toFormData=toFormData$1,axios.AxiosError=AxiosError$1,axios.Cancel=axios.CanceledError,axios.all=function(s){return Promise.all(s)},axios.spread=spread$1,axios.isAxiosError=isAxiosError$1,axios.mergeConfig=mergeConfig$1,axios.AxiosHeaders=AxiosHeaders$1,axios.formToJSON=o=>formDataToJSON(utils$1.isHTMLForm(o)?new FormData(o):o),axios.getAdapter=adapters.getAdapter,axios.HttpStatusCode=HttpStatusCode$1,axios.default=axios;const{Axios,AxiosError,CanceledError,isCancel,CancelToken,VERSION,all,Cancel,isAxiosError,spread,toFormData,AxiosHeaders,HttpStatusCode,formToJSON,getAdapter,mergeConfig}=axios,createCancelToken=()=>axios.CancelToken.source();function createFetchUniq(o){const s={};return async function(u,z,Z){const r=s[Z];r&&r.cancel("Solicitud reemplazada por una nueva");const N=createCancelToken();return s[Z]=N,u?o.get(u,{params:z,cancelToken:N.token}).then(X=>{const y=(X==null?void 0:X.data)||null;return lodashExports.isNil(y)?null:y}).catch(()=>null):Promise.resolve(null)}}let fetchUniqInstance=null;function setFetchUniq(o){fetchUniqInstance=o}function getFetchUniq(){if(!fetchUniqInstance)throw new Error("fetchUniq has not been set. Please call setFetchUniq() before using it.");return fetchUniqInstance}const DEFAULT_FETCH_OPTIONS={refetchType:"active",retry:1,refetchOnMount:!1,refetchOnWindowFocus:!1,staleTime:5*60*1e3,keepPreviousData:!0};var Subscribable=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(o){return this.listeners.add(o),this.onSubscribe(),()=>{this.listeners.delete(o),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},define_process_env_default$1={},isServer=typeof window>"u"||"Deno"in globalThis;function noop(){}function isValidTimeout(o){return typeof o=="number"&&o>=0&&o!==1/0}function timeUntilStale(o,s){return Math.max(o+(s||0)-Date.now(),0)}function resolveStaleTime(o,s){return typeof o=="function"?o(s):o}function resolveEnabled(o,s){return typeof o=="function"?o(s):o}function replaceEqualDeep(o,s){if(o===s)return o;const M=isPlainArray(o)&&isPlainArray(s);if(M||isPlainObject$1(o)&&isPlainObject$1(s)){const u=M?o:Object.keys(o),z=u.length,Z=M?s:Object.keys(s),r=Z.length,N=M?[]:{},X=new Set(u);let y=0;for(let G=0;G<r;G++){const V=M?G:Z[G];(!M&&X.has(V)||M)&&o[V]===void 0&&s[V]===void 0?(N[V]=void 0,y++):(N[V]=replaceEqualDeep(o[V],s[V]),N[V]===o[V]&&o[V]!==void 0&&y++)}return z===r&&y===z?o:N}return s}function shallowEqualObjects(o,s){if(!s||Object.keys(o).length!==Object.keys(s).length)return!1;for(const M in o)if(o[M]!==s[M])return!1;return!0}function isPlainArray(o){return Array.isArray(o)&&o.length===Object.keys(o).length}function isPlainObject$1(o){if(!hasObjectPrototype(o))return!1;const s=o.constructor;if(s===void 0)return!0;const M=s.prototype;return!(!hasObjectPrototype(M)||!M.hasOwnProperty("isPrototypeOf")||Object.getPrototypeOf(o)!==Object.prototype)}function hasObjectPrototype(o){return Object.prototype.toString.call(o)==="[object Object]"}function replaceData(o,s,M){if(typeof M.structuralSharing=="function")return M.structuralSharing(o,s);if(M.structuralSharing!==!1){if(define_process_env_default$1.NODE_ENV!=="production")try{return replaceEqualDeep(o,s)}catch(u){throw console.error(`Structural sharing requires data to be JSON serializable. To fix this, turn off structuralSharing or return JSON-serializable data from your queryFn. [${M.queryHash}]: ${u}`),u}return replaceEqualDeep(o,s)}return s}function keepPreviousData(o){return o}function shouldThrowError(o,s){return typeof o=="function"?o(...s):!!o}var FocusManager=(ht=class extends Subscribable{constructor(){super();cl(this,x1);cl(this,E1);cl(this,sl);w1(this,sl,s=>{if(!isServer&&window.addEventListener){const M=()=>s();return window.addEventListener("visibilitychange",M,!1),()=>{window.removeEventListener("visibilitychange",M)}}})}onSubscribe(){H0(this,E1)||this.setEventListener(H0(this,sl))}onUnsubscribe(){var s;this.hasListeners()||((s=H0(this,E1))==null||s.call(this),w1(this,E1,void 0))}setEventListener(s){var M;w1(this,sl,s),(M=H0(this,E1))==null||M.call(this),w1(this,E1,s(u=>{typeof u=="boolean"?this.setFocused(u):this.onFocus()}))}setFocused(s){H0(this,x1)!==s&&(w1(this,x1,s),this.onFocus())}onFocus(){const s=this.isFocused();this.listeners.forEach(M=>{M(s)})}isFocused(){var s;return typeof H0(this,x1)=="boolean"?H0(this,x1):((s=globalThis.document)==null?void 0:s.visibilityState)!=="hidden"}},x1=new WeakMap,E1=new WeakMap,sl=new WeakMap,ht),focusManager=new FocusManager,OnlineManager=(f2=class extends Subscribable{constructor(){super();cl(this,He,!0);cl(this,he);cl(this,Qe);w1(this,Qe,s=>{if(!isServer&&window.addEventListener){const M=()=>s(!0),u=()=>s(!1);return window.addEventListener("online",M,!1),window.addEventListener("offline",u,!1),()=>{window.removeEventListener("online",M),window.removeEventListener("offline",u)}}})}onSubscribe(){H0(this,he)||this.setEventListener(H0(this,Qe))}onUnsubscribe(){var s;this.hasListeners()||((s=H0(this,he))==null||s.call(this),w1(this,he,void 0))}setEventListener(s){var M;w1(this,Qe,s),(M=H0(this,he))==null||M.call(this),w1(this,he,s(this.setOnline.bind(this)))}setOnline(s){H0(this,He)!==s&&(w1(this,He,s),this.listeners.forEach(u=>{u(s)}))}isOnline(){return H0(this,He)}},He=new WeakMap,he=new WeakMap,Qe=new WeakMap,f2),onlineManager=new OnlineManager;function pendingThenable(){let o,s;const M=new Promise((z,Z)=>{o=z,s=Z});M.status="pending",M.catch(()=>{});function u(z){Object.assign(M,z),delete M.resolve,delete M.reject}return M.resolve=z=>{u({status:"fulfilled",value:z}),o(z)},M.reject=z=>{u({status:"rejected",reason:z}),s(z)},M}function canFetch(o){return(o??"online")==="online"?onlineManager.isOnline():!0}var defaultScheduler=o=>setTimeout(o,0);function createNotifyManager(){let o=[],s=0,M=N=>{N()},u=N=>{N()},z=defaultScheduler;const Z=N=>{s?o.push(N):z(()=>{M(N)})},r=()=>{const N=o;o=[],N.length&&z(()=>{u(()=>{N.forEach(X=>{M(X)})})})};return{batch:N=>{let X;s++;try{X=N()}finally{s--,s||r()}return X},batchCalls:N=>(...X)=>{Z(()=>{N(...X)})},schedule:Z,setNotifyFunction:N=>{M=N},setBatchNotifyFunction:N=>{u=N},setScheduler:N=>{z=N}}}var notifyManager=createNotifyManager();function fetchState(o,s){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:canFetch(s.networkMode)?"fetching":"paused",...o===void 0&&{error:null,status:"pending"}}}var QueryObserver=(E2=class extends Subscribable{constructor(s,M){super();cl(this,g1);cl(this,Sl);cl(this,R1);cl(this,Nt);cl(this,Nl);cl(this,ge);cl(this,qe);cl(this,Ne);cl(this,Ge);cl(this,Gt);cl(this,$e);cl(this,lt);cl(this,ke);cl(this,Ce);cl(this,Xe);cl(this,tt,new Set);this.options=M,w1(this,Sl,s),w1(this,Ge,null),w1(this,Ne,pendingThenable()),this.options.experimental_prefetchInRender||H0(this,Ne).reject(new Error("experimental_prefetchInRender feature flag is not enabled")),this.bindMethods(),this.setOptions(M)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(H0(this,R1).addObserver(this),shouldFetchOnMount(H0(this,R1),this.options)?ol(this,g1,jt).call(this):this.updateResult(),ol(this,g1,F2).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return shouldFetchOn(H0(this,R1),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return shouldFetchOn(H0(this,R1),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,ol(this,g1,U2).call(this),ol(this,g1,J2).call(this),H0(this,R1).removeObserver(this)}setOptions(s){const M=this.options,u=H0(this,R1);if(this.options=H0(this,Sl).defaultQueryOptions(s),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof resolveEnabled(this.options.enabled,H0(this,R1))!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");ol(this,g1,v2).call(this),H0(this,R1).setOptions(this.options),M._defaulted&&!shallowEqualObjects(this.options,M)&&H0(this,Sl).getQueryCache().notify({type:"observerOptionsUpdated",query:H0(this,R1),observer:this});const z=this.hasListeners();z&&shouldFetchOptionally(H0(this,R1),u,this.options,M)&&ol(this,g1,jt).call(this),this.updateResult(),z&&(H0(this,R1)!==u||resolveEnabled(this.options.enabled,H0(this,R1))!==resolveEnabled(M.enabled,H0(this,R1))||resolveStaleTime(this.options.staleTime,H0(this,R1))!==resolveStaleTime(M.staleTime,H0(this,R1)))&&ol(this,g1,k2).call(this);const Z=ol(this,g1,C2).call(this);z&&(H0(this,R1)!==u||resolveEnabled(this.options.enabled,H0(this,R1))!==resolveEnabled(M.enabled,H0(this,R1))||Z!==H0(this,Xe))&&ol(this,g1,j2).call(this,Z)}getOptimisticResult(s){const M=H0(this,Sl).getQueryCache().build(H0(this,Sl),s),u=this.createResult(M,s);return shouldAssignObserverCurrentProperties(this,u)&&(w1(this,Nl,u),w1(this,qe,this.options),w1(this,ge,H0(this,R1).state)),u}getCurrentResult(){return H0(this,Nl)}trackResult(s,M){return new Proxy(s,{get:(u,z)=>(this.trackProp(z),M==null||M(z),Reflect.get(u,z))})}trackProp(s){H0(this,tt).add(s)}getCurrentQuery(){return H0(this,R1)}refetch({...s}={}){return this.fetch({...s})}fetchOptimistic(s){const M=H0(this,Sl).defaultQueryOptions(s),u=H0(this,Sl).getQueryCache().build(H0(this,Sl),M);return u.fetch().then(()=>this.createResult(u,M))}fetch(s){return ol(this,g1,jt).call(this,{...s,cancelRefetch:s.cancelRefetch??!0}).then(()=>(this.updateResult(),H0(this,Nl)))}createResult(s,M){var c0;const u=H0(this,R1),z=this.options,Z=H0(this,Nl),r=H0(this,ge),N=H0(this,qe),y=s!==u?s.state:H0(this,Nt),{state:G}=s;let V={...G},D=!1,R;if(M._optimisticResults){const B=this.hasListeners(),b0=!B&&shouldFetchOnMount(s,M),a0=B&&shouldFetchOptionally(s,u,M,z);(b0||a0)&&(V={...V,...fetchState(G.data,s.options)}),M._optimisticResults==="isRestoring"&&(V.fetchStatus="idle")}let{error:S,errorUpdatedAt:C,status:j}=V;R=V.data;let P=!1;if(M.placeholderData!==void 0&&R===void 0&&j==="pending"){let B;Z!=null&&Z.isPlaceholderData&&M.placeholderData===(N==null?void 0:N.placeholderData)?(B=Z.data,P=!0):B=typeof M.placeholderData=="function"?M.placeholderData((c0=H0(this,lt))==null?void 0:c0.state.data,H0(this,lt)):M.placeholderData,B!==void 0&&(j="success",R=replaceData(Z==null?void 0:Z.data,B,M),D=!0)}if(M.select&&R!==void 0&&!P)if(Z&&R===(r==null?void 0:r.data)&&M.select===H0(this,Gt))R=H0(this,$e);else try{w1(this,Gt,M.select),R=M.select(R),R=replaceData(Z==null?void 0:Z.data,R,M),w1(this,$e,R),w1(this,Ge,null)}catch(B){w1(this,Ge,B)}H0(this,Ge)&&(S=H0(this,Ge),R=H0(this,$e),C=Date.now(),j="error");const F=V.fetchStatus==="fetching",U=j==="pending",E=j==="error",g=U&&F,v=R!==void 0,o0={status:j,fetchStatus:V.fetchStatus,isPending:U,isSuccess:j==="success",isError:E,isInitialLoading:g,isLoading:g,data:R,dataUpdatedAt:V.dataUpdatedAt,error:S,errorUpdatedAt:C,failureCount:V.fetchFailureCount,failureReason:V.fetchFailureReason,errorUpdateCount:V.errorUpdateCount,isFetched:V.dataUpdateCount>0||V.errorUpdateCount>0,isFetchedAfterMount:V.dataUpdateCount>y.dataUpdateCount||V.errorUpdateCount>y.errorUpdateCount,isFetching:F,isRefetching:F&&!U,isLoadingError:E&&!v,isPaused:V.fetchStatus==="paused",isPlaceholderData:D,isRefetchError:E&&v,isStale:isStale(s,M),refetch:this.refetch,promise:H0(this,Ne)};if(this.options.experimental_prefetchInRender){const B=O0=>{o0.status==="error"?O0.reject(o0.error):o0.data!==void 0&&O0.resolve(o0.data)},b0=()=>{const O0=w1(this,Ne,o0.promise=pendingThenable());B(O0)},a0=H0(this,Ne);switch(a0.status){case"pending":s.queryHash===u.queryHash&&B(a0);break;case"fulfilled":(o0.status==="error"||o0.data!==a0.value)&&b0();break;case"rejected":(o0.status!=="error"||o0.error!==a0.reason)&&b0();break}}return o0}updateResult(){const s=H0(this,Nl),M=this.createResult(H0(this,R1),this.options);if(w1(this,ge,H0(this,R1).state),w1(this,qe,this.options),H0(this,ge).data!==void 0&&w1(this,lt,H0(this,R1)),shallowEqualObjects(M,s))return;w1(this,Nl,M);const u=()=>{if(!s)return!0;const{notifyOnChangeProps:z}=this.options,Z=typeof z=="function"?z():z;if(Z==="all"||!Z&&!H0(this,tt).size)return!0;const r=new Set(Z??H0(this,tt));return this.options.throwOnError&&r.add("error"),Object.keys(H0(this,Nl)).some(N=>{const X=N;return H0(this,Nl)[X]!==s[X]&&r.has(X)})};ol(this,g1,Wi).call(this,{listeners:u()})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&ol(this,g1,F2).call(this)}},Sl=new WeakMap,R1=new WeakMap,Nt=new WeakMap,Nl=new WeakMap,ge=new WeakMap,qe=new WeakMap,Ne=new WeakMap,Ge=new WeakMap,Gt=new WeakMap,$e=new WeakMap,lt=new WeakMap,ke=new WeakMap,Ce=new WeakMap,Xe=new WeakMap,tt=new WeakMap,g1=new WeakSet,jt=function(s){ol(this,g1,v2).call(this);let M=H0(this,R1).fetch(this.options,s);return s!=null&&s.throwOnError||(M=M.catch(noop)),M},k2=function(){ol(this,g1,U2).call(this);const s=resolveStaleTime(this.options.staleTime,H0(this,R1));if(isServer||H0(this,Nl).isStale||!isValidTimeout(s))return;const u=timeUntilStale(H0(this,Nl).dataUpdatedAt,s)+1;w1(this,ke,setTimeout(()=>{H0(this,Nl).isStale||this.updateResult()},u))},C2=function(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(H0(this,R1)):this.options.refetchInterval)??!1},j2=function(s){ol(this,g1,J2).call(this),w1(this,Xe,s),!(isServer||resolveEnabled(this.options.enabled,H0(this,R1))===!1||!isValidTimeout(H0(this,Xe))||H0(this,Xe)===0)&&w1(this,Ce,setInterval(()=>{(this.options.refetchIntervalInBackground||focusManager.isFocused())&&ol(this,g1,jt).call(this)},H0(this,Xe)))},F2=function(){ol(this,g1,k2).call(this),ol(this,g1,j2).call(this,ol(this,g1,C2).call(this))},U2=function(){H0(this,ke)&&(clearTimeout(H0(this,ke)),w1(this,ke,void 0))},J2=function(){H0(this,Ce)&&(clearInterval(H0(this,Ce)),w1(this,Ce,void 0))},v2=function(){const s=H0(this,Sl).getQueryCache().build(H0(this,Sl),this.options);if(s===H0(this,R1))return;const M=H0(this,R1);w1(this,R1,s),w1(this,Nt,s.state),this.hasListeners()&&(M==null||M.removeObserver(this),s.addObserver(this))},Wi=function(s){notifyManager.batch(()=>{s.listeners&&this.listeners.forEach(M=>{M(H0(this,Nl))}),H0(this,Sl).getQueryCache().notify({query:H0(this,R1),type:"observerResultsUpdated"})})},E2);function shouldLoadOnMount(o,s){return resolveEnabled(s.enabled,o)!==!1&&o.state.data===void 0&&!(o.state.status==="error"&&s.retryOnMount===!1)}function shouldFetchOnMount(o,s){return shouldLoadOnMount(o,s)||o.state.data!==void 0&&shouldFetchOn(o,s,s.refetchOnMount)}function shouldFetchOn(o,s,M){if(resolveEnabled(s.enabled,o)!==!1&&resolveStaleTime(s.staleTime,o)!=="static"){const u=typeof M=="function"?M(o):M;return u==="always"||u!==!1&&isStale(o,s)}return!1}function shouldFetchOptionally(o,s,M,u){return(o!==s||resolveEnabled(u.enabled,o)===!1)&&(!M.suspense||o.state.status!=="error")&&isStale(o,M)}function isStale(o,s){return resolveEnabled(s.enabled,o)!==!1&&o.isStaleByTime(resolveStaleTime(s.staleTime,o))}function shouldAssignObserverCurrentProperties(o,s){return!shallowEqualObjects(o.getCurrentResult(),s)}var VUE_QUERY_CLIENT="VUE_QUERY_CLIENT";function getClientKey(o){const s=o?`:${o}`:"";return`${VUE_QUERY_CLIENT}${s}`}function updateState(o,s){Object.keys(o).forEach(M=>{o[M]=s[M]})}function _cloneDeep(o,s,M="",u=0){if(s){const z=s(o,M,u);if(z===void 0&&vue.isRef(o)||z!==void 0)return z}if(Array.isArray(o))return o.map((z,Z)=>_cloneDeep(z,s,String(Z),u+1));if(typeof o=="object"&&isPlainObject(o)){const z=Object.entries(o).map(([Z,r])=>[Z,_cloneDeep(r,s,Z,u+1)]);return Object.fromEntries(z)}return o}function cloneDeep(o,s){return _cloneDeep(o,s)}function cloneDeepUnref(o,s=!1){return cloneDeep(o,(M,u,z)=>{if(z===1&&u==="queryKey")return cloneDeepUnref(M,!0);if(s&&isFunction$1(M))return cloneDeepUnref(M(),s);if(vue.isRef(M))return cloneDeepUnref(vue.unref(M),s)})}function isPlainObject(o){if(Object.prototype.toString.call(o)!=="[object Object]")return!1;const s=Object.getPrototypeOf(o);return s===null||s===Object.prototype}function isFunction$1(o){return typeof o=="function"}function useQueryClient(o=""){if(!vue.hasInjectionContext())throw new Error("vue-query hooks can only be used inside setup() function or functions that support injection context.");const s=getClientKey(o),M=vue.inject(s);if(!M)throw new Error("No 'queryClient' found in Vue context, use 'VueQueryPlugin' to properly initialize the library.");return M}var define_process_env_default={};function useBaseQuery(o,s,M){define_process_env_default.NODE_ENV==="development"&&(vue.getCurrentScope()||console.warn('vue-query composable like "useQuery()" should only be used inside a "setup()" function or a running effect scope. They might otherwise lead to memory leaks.'));const u=useQueryClient(),z=vue.computed(()=>{var C;const R=cloneDeepUnref(s);typeof R.enabled=="function"&&(R.enabled=R.enabled());const S=u.defaultQueryOptions(R);return S._optimisticResults=(C=u.isRestoring)!=null&&C.value?"isRestoring":"optimistic",S}),Z=new o(u,z.value),r=z.value.shallow?vue.shallowReactive(Z.getCurrentResult()):vue.reactive(Z.getCurrentResult());let N=()=>{};u.isRestoring&&vue.watch(u.isRestoring,R=>{R||(N(),N=Z.subscribe(S=>{updateState(r,S)}))},{immediate:!0});const X=()=>{Z.setOptions(z.value),updateState(r,Z.getCurrentResult())};vue.watch(z,X),vue.onScopeDispose(()=>{N()});const y=(...R)=>(X(),r.refetch(...R)),G=()=>new Promise((R,S)=>{let C=()=>{};const j=()=>{if(z.value.enabled!==!1){Z.setOptions(z.value);const P=Z.getOptimisticResult(z.value);P.isStale?(C(),Z.fetchOptimistic(z.value).then(R,F=>{shouldThrowError(z.value.throwOnError,[F,Z.getCurrentQuery()])?S(F):R(Z.getCurrentResult())})):(C(),R(P))}};j(),C=vue.watch(z,j)});vue.watch(()=>r.error,R=>{if(r.isError&&!r.isFetching&&shouldThrowError(z.value.throwOnError,[R,Z.getCurrentQuery()]))throw R});const V=z.value.shallow?vue.shallowReadonly(r):vue.readonly(r),D=vue.toRefs(V);for(const R in r)typeof r[R]=="function"&&(D[R]=r[R]);return D.suspense=G,D.refetch=y,D}function useQuery(o,s){return useBaseQuery(QueryObserver,o)}const getValue=(o,s=null)=>{try{return(vue.isRef(o)?o==null?void 0:o.value:o)??s}catch{return s}};function useFetch(o,s,M,u,z){const Z=`${s}_${lodashExports.uniqueId()}`,r=useQueryClient(),N=async F=>{const U=getFetchUniq();if(!U)throw new Error("FetchUniq provider is not available");return F?U(F,getValue(M,{}),Z).then(E=>u?u(E):E):Promise.resolve(null)},X={...DEFAULT_FETCH_OPTIONS,...z},y=vue.computed(()=>[...getValue(o,[]),getValue(M,{})]),G=()=>useQuery({queryKey:y,queryFn:()=>N(getValue(s,"")),...X}),V=async()=>{r.invalidateQueries({queryKey:getValue(o),exact:!1,refetchType:X.refetchType})},{isFetching:D,isPending:R,data:S,refetch:C,error:j}=G(),P=vue.computed(()=>S.value??(z==null?void 0:z.defaultValue));return{pending:R,fetching:D,data:P,refetch:C,invalidate:V,error:j}}function useFetchPages(o,s,M,u){const z={...DEFAULT_FETCH_OPTIONS,...u},Z=`${M}_${lodashExports.uniqueId()}`,r=vue.computed(()=>{const g=formatPagination(getValue(o,{})),v=getValue(s,{});return lodashExports.cloneDeep({...v,...g})}),N=vue.computed({get(){var g;return((g=getValue(o))==null?void 0:g.page)||1},set(g){vue.isRef(o)?o.value.page=g:o.page=g}}),X=vue.computed({get(){var g;return((g=getValue(o))==null?void 0:g.rowsNumber)||0},set(g){vue.isRef(o)?o.value.rowsNumber=g:o.rowsNumber=g}}),y=(g,v)=>{const q=getFetchUniq();if(!q)throw new Error("FetchUniq provider is not available");return q(getValue(g,""),getValue(v),Z)},G=useQueryClient(),V=async()=>{G.invalidateQueries({queryKey:[getValue(M),r.value],exact:!1,refetchType:"active"})},{isFetching:D,isPending:R,data:S,refetch:C,isPlaceholderData:j,error:P}=useQuery({queryKey:[M,r],queryFn:()=>y(M,r),placeholderData:z.keepPreviousData?keepPreviousData:void 0,...lodashExports.omit(z,"keepPreviousData")});vue.watch(S,g=>{D.value&&lodashExports.isNil(g)||(X.value=(g==null?void 0:g.count)||0)},{immediate:!0});const F=()=>{N.value=Math.max(N.value-1,1)},U=()=>{N.value=N.value+1},E=vue.computed(()=>{var g;return((g=S.value)==null?void 0:g.items)||[]});return vue.watch(()=>{var g;return(g=S.value)==null?void 0:g.items},g=>{D.value||lodashExports.isNil(g)&&V()},{immediate:!0}),{pending:R,fetching:D,error:P,items:E,refetch:C,invalidate:V,count:X,page:N,prevPage:F,nextPage:U,isPlaceholderData:j,rawData:S}}function formatPagination(o){const s=(o.page-1)*o.rowsPerPage,M=o.rowsPerPage;return{startRow:s,fetchCount:M,sortBy:o.sortBy,descending:o.descending}}const ID_KEY="_id";function useDragAndDrop(o,s,M,u){const z=(u==null?void 0:u.idKey)??ID_KEY,Z=()=>{var D;(D=o.value)==null||D.forEach(R=>{let S=u!=null&&u.idKey?R[u.idKey]:null;S===null&&(S=lodashExports.uniqueId()),R[z]=String(S)})};vue.watch(()=>{var D;return(D=o.value)==null?void 0:D.length},()=>{Z()},{immediate:!0});function r(){return!0}function N(D){D.dataTransfer.setData("id",D.target.id),D.dataTransfer.dropEffect="move"}function X(D){if(D.preventDefault(),!D.target)return;const R=D.target.closest(s);R&&(R!=null&&R.contains(D.relatedTarget)||R.classList.remove("drag-enter"))}function y(D){if(D.preventDefault(),!D.target)return;const R=D.target.closest(s);R&&R.classList.add("drag-enter")}function G(D){D.preventDefault();const R=D.target.closest(s);if(V(R),!(R!=null&&R.draggable))return;const S=D.dataTransfer.getData("id");if(!R)return;const C=(R==null?void 0:R.id)??null;if(C===null)return;const j=lodashExports.cloneDeep(o.value),P=j.findIndex(E=>E[z]==S),F=j.findIndex(E=>E[z]==C);if(P===-1||F===-1)return;const[U]=j.splice(P,1);j.splice(F,0,U),o.value=j,M(j)}function V(D){const R=D==null?void 0:D.parentElement;if(!R)return;const S=R.children;for(let C=0;C<S.length;C++)S[C].classList.remove("drag-enter")}return{handler:r,onDragLeave:X,onDragStart:N,onDragOver:y,onDrop:G,idKey:z}}function useWidgetEvent(){const o=vue.inject("emit");return{emitEvent:(M,u)=>{o("on-event",{code:M,payload:u})}}}function useContext(){const o=vue.inject("context"),s=vue.computed(()=>o.product.value),M=o.slide,u=o.isPublic,z=o.images,Z=o.selectedPackProduct,r=vue.computed(()=>!u.value),N=vue.computed(()=>{var y;return((y=s.value)==null?void 0:y.detalle_pack)||[]}),X=vue.computed(()=>{var y;return((y=s.value)==null?void 0:y.props)||{}});return vue.watch(s,()=>{var G;const y=((G=s.value)==null?void 0:G.images)||[];z.value=y},{immediate:!0}),vue.watch(N,y=>{var G;y&&(Z.value=(G=y[0])==null?void 0:G.DETALLE)},{immediate:!0,deep:!0}),{product:s,isPublic:u,isPrivate:r,images:z,detallePack:N,productProps:X,selectedPackProduct:Z,slide:M,gamaProps:o.gamaProps,count:o.count,addToShopcartLabel:o.addToShopcartLabel,goToCatalogLabel:o.goToCatalogLabel}}const _hoisted_1$a=["id","draggable"],_hoisted_2$8=["onClick"],_hoisted_3$6={key:0,class:"row items-center justify-center bg-grey-2 media-card",style:{"border-radius":"8px",border:"1px dashed #c9c9c9"}},_hoisted_4$5={key:2,class:"media-card"},_hoisted_5$5=["src"],_hoisted_6$3={class:"video-icon"},_sfc_main$a=vue.defineComponent({__name:"ImagesMiniature",setup(o){const{images:s,slide:M,isPrivate:u}=useContext(),{emitEvent:z}=useWidgetEvent(),{handler:Z,onDragLeave:r,onDragOver:N,onDragStart:X,onDrop:y,idKey:G}=useDragAndDrop(s,".image-miniature",V=>z("update_images_position",{images:V}));return(V,D)=>vue.unref(s).length?vue.withDirectives((vue.openBlock(),vue.createElementBlock("div",{key:0,class:"images-miniature",onDragleave:D[1]||(D[1]=(...R)=>vue.unref(r)&&vue.unref(r)(...R)),onDragover:D[2]||(D[2]=(...R)=>vue.unref(N)&&vue.unref(N)(...R)),onDrop:D[3]||(D[3]=(...R)=>vue.unref(y)&&vue.unref(y)(...R))},[(vue.openBlock(!0),vue.createElementBlock(vue.Fragment,null,vue.renderList(vue.unref(s),(R,S)=>(vue.openBlock(),vue.createElementBlock("div",{class:"q-mb-md image-miniature q-px-sm",key:S,id:R[vue.unref(G)],onDragstart:D[0]||(D[0]=(...C)=>vue.unref(X)&&vue.unref(X)(...C)),draggable:vue.unref(u)},[R?(vue.openBlock(),vue.createElementBlock("div",{key:0,onClick:C=>M.value=S+1,style:vue.normalizeStyle({cursor:"pointer",borderWidth:"0.7px",borderStyle:"solid",borderRadius:"0.5rem",borderColor:S===vue.unref(M)-1?"#015979 ":"transparent"}),class:"q-pb-sm win-card"},[R!=null&&R.location?R.tipo==="image"?(vue.openBlock(),vue.createBlock(QImg,{key:1,src:R.location,fit:"cover",class:"media-card"},null,8,["src"])):R.tipo==="video"?(vue.openBlock(),vue.createElementBlock("div",_hoisted_4$5,[vue.createElementVNode("video",{src:R.location,style:{width:"100%",height:"100%",background:"black"}},null,8,_hoisted_5$5),vue.createElementVNode("div",_hoisted_6$3,[vue.createVNode(QIcon,{size:"lg",name:"o_play_circle",color:"white"})])])):vue.createCommentVNode("",!0):(vue.openBlock(),vue.createElementBlock("div",_hoisted_3$6,[vue.createVNode(QIcon,{name:"upload_file",color:"grey-5",size:"33px"})]))],12,_hoisted_2$8)):vue.createCommentVNode("",!0)],40,_hoisted_1$a))),128))],32)),[[Mutation,vue.unref(Z)]]):vue.createCommentVNode("",!0)}}),ImagesMiniature=_export_sfc(_sfc_main$a,[["__scopeId","data-v-c16b73ab"]]),_hoisted_1$9={class:"text-weight-medium"},_hoisted_2$7={key:0,class:"row justify-end items-center"},_sfc_main$9=vue.defineComponent({__name:"ProductCustomizableIndicator",props:{label:{default:"A medida"}},setup(o){const{productProps:s,product:M}=useContext(),u=vue.computed(()=>{var z,Z;return!!((z=s.value)!=null&&z.a_medida)&&!((Z=M.value)!=null&&Z.pack)});return(z,Z)=>(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$9,[u.value?(vue.openBlock(),vue.createElementBlock("div",_hoisted_2$7,[vue.createVNode(QChip,{color:"blue","text-color":"white",size:"12px"},{default:vue.withCtx(()=>Z[0]||(Z[0]=[vue.createTextVNode("A medida")])),_:1,__:[0]})])):vue.createCommentVNode("",!0)]))}}),_hoisted_1$8={class:"row q-mt-md q-pa-sm",style:{"overflow-x":"auto"}},_hoisted_2$6=["onClick"],_hoisted_3$5={class:"q-pa-sm"},_hoisted_4$4={class:"text-weight-medium ellipsis"},_hoisted_5$4={class:"text-caption"},_hoisted_6$2={key:0,class:"q-mt-md"},_hoisted_7$1={class:"text-h6"},_sfc_main$8=vue.defineComponent({__name:"ProductDetallePack",setup(o){const{detallePack:s,selectedPackProduct:M,gamaProps:u}=useContext(),z=r=>{M.value=r},Z=vue.computed(()=>{var r,N;return((r=M.value)==null?void 0:r.PROPS)||((N=M.value)==null?void 0:N.props)||{}});return(r,N)=>{var X;return vue.openBlock(),vue.createElementBlock(vue.Fragment,null,[vue.createElementVNode("div",_hoisted_1$8,[(vue.openBlock(!0),vue.createElementBlock(vue.Fragment,null,vue.renderList(vue.unref(s),(y,G)=>{var V,D,R,S;return vue.openBlock(),vue.createElementBlock("div",{key:G,class:vue.normalizeClass(`q-mr-md glass-card detalle-pack ${((V=vue.unref(M))==null?void 0:V.ID_PRODUCTO)==y.ID_PRODUCTO_DETALLE?"selected":""}`),onClick:C=>z(y.DETALLE)},[(R=(D=y==null?void 0:y.DETALLE)==null?void 0:D.ARCHIVOS)!=null&&R.length?(vue.openBlock(),vue.createBlock(QImg,{key:0,src:y.DETALLE.ARCHIVOS[0].LOCATION||"placeholder.webp",style:{height:"120px","border-radius":"8px"},fit:"contain"},null,8,["src"])):vue.createCommentVNode("",!0),vue.createElementVNode("div",_hoisted_3$5,[vue.createElementVNode("div",_hoisted_4$4,vue.toDisplayString((S=y==null?void 0:y.DETALLE)==null?void 0:S.NOMBRE),1),vue.createElementVNode("div",_hoisted_5$4,vue.toDisplayString(y==null?void 0:y.CANTIDAD)+"X",1)])],10,_hoisted_2$6)}),128))]),vue.unref(M)?(vue.openBlock(),vue.createElementBlock("div",_hoisted_6$2,[vue.createElementVNode("div",_hoisted_7$1,vue.toDisplayString(vue.unref(M).NOMBRE),1),vue.createElementVNode("div",null,"SKU: "+vue.toDisplayString((X=vue.unref(M).PROPS)==null?void 0:X.sku),1),vue.createVNode(_sfc_main$e,{class:"q-mt-md","product-props":Z.value,"gama-props":vue.unref(u)},null,8,["product-props","gama-props"])])):vue.createCommentVNode("",!0)],64)}}}),ProductDetallePack=_export_sfc(_sfc_main$8,[["__scopeId","data-v-f898c9ff"]]),_hoisted_1$7={class:"product-image-header"},_hoisted_2$5={class:"product-code"},_hoisted_3$4={class:"media-count"},_sfc_main$7=vue.defineComponent({__name:"ProductImageHeader",setup(o){const{product:s,images:M,slide:u,isPrivate:z}=useContext(),Z=vue.computed(()=>{var y,G;return(((G=(y=s.value)==null?void 0:y.tags)==null?void 0:G.split(","))||[]).filter(Boolean)}),r=vue.computed(()=>{var y;return(y=s.value)==null?void 0:y.codigo}),{emitEvent:N}=useWidgetEvent(),X=()=>{var y;return N("edit_tags",{id:(y=s.value)==null?void 0:y.id})};return(y,G)=>{var V,D;return vue.openBlock(),vue.createElementBlock("div",_hoisted_1$7,[vue.createElementVNode("div",_hoisted_2$5,vue.toDisplayString(r.value),1),vue.createElementVNode("div",{onClick:X,class:"tags",style:vue.normalizeStyle({overflowX:"auto",cursor:vue.unref(z)?"pointer":"default"})},[(vue.openBlock(!0),vue.createElementBlock(vue.Fragment,null,vue.renderList(Z.value,R=>(vue.openBlock(),vue.createBlock(ProductTag,{tag:R},null,8,["tag"]))),256)),!Z.value.length&&vue.unref(z)?(vue.openBlock(),vue.createBlock(QChip,{key:0,class:"tag",size:"12px"},{default:vue.withCtx(()=>G[0]||(G[0]=[vue.createTextVNode("Editar etiquetas")])),_:1,__:[0]})):vue.createCommentVNode("",!0)],4),vue.createElementVNode("div",_hoisted_3$4,[vue.createTextVNode(vue.toDisplayString((V=vue.unref(M))!=null&&V.length?vue.unref(u):0)+"/"+vue.toDisplayString(((D=vue.unref(M))==null?void 0:D.length)||0)+" ",1),vue.createVNode(QIcon,{name:"sym_o_image",size:"sm",class:"q-ml-xs"})])])}}}),ProductImageHeader=_export_sfc(_sfc_main$7,[["__scopeId","data-v-86923709"]]),_hoisted_1$6={key:0,class:"q-mt-md text-black col-12"},_sfc_main$6=vue.defineComponent({__name:"ProductLongDescription",setup(o){const{product:s}=useContext(),M=vue.computed(()=>{var u;return(u=s.value)==null?void 0:u.descripcion});return(u,z)=>M.value?(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$6,[z[0]||(z[0]=vue.createElementVNode("div",{class:"font-bold text-h6"},"Información del producto",-1)),vue.createElementVNode("div",null,vue.toDisplayString(M.value),1)])):vue.createCommentVNode("",!0)}}),_hoisted_1$5={class:"full-width simple-grid"},_hoisted_2$4={class:"bg-grey-2 values"},_hoisted_3$3={class:"text-bold"},_hoisted_4$3={class:"text-bold"},_hoisted_5$3={class:"text-bold"},convertToMeters=(o,s)=>{let M;switch(typeof o=="string"?M=Number(o.replaceAll(/[^0-9.-]/g,"").trim()):M=o,s){case"m":return M;case"cm":return M/100;case"mm":return M/1e3;default:throw new Error(`Unidad no soportada: ${s}`)}},getPanelesFn=o=>{const s=Number(o.ancho)||0,M=Number(o.alto)||0,u=o.unidad_de_medida||"cm",z=convertToMeters(s,u),Z=convertToMeters(M,u);let r=z*Z;return r<=0&&(r=1),N=>{const X=1/r,y=getSquareMeters(N);return Math.ceil(y*X)}},toDecimals=(o,s=2)=>Number(o.toFixed(s)),getSquareMeters=o=>{const s=Number((o==null?void 0:o.ancho)||0),M=Number((o==null?void 0:o.alto)||0);return toDecimals(s*M)},_sfc_main$5=vue.defineComponent({__name:"ProductConfiguration",props:vue.mergeModels({product:{}},{quantity:{required:!0,default:1},quantityModifiers:{},detail:{required:!0},detailModifiers:{}}),emits:["update:quantity","update:detail"],setup(o){const s=o,M=vue.useModel(o,"quantity"),u=vue.useModel(o,"detail"),z=vue.computed(()=>lodashExports.mapKeys(s.product||{},(C,j)=>j.toUpperCase())),Z=vue.computed(()=>{var C;return((C=z.value)==null?void 0:C.PROPS)||{}}),r=vue.computed(()=>Z.value.unidad_de_medida||"cm"),N=vue.computed(()=>getPanelesFn(Z.value||{}));vue.watch(u,C=>{M.value=N.value(u.value)},{immediate:!0,deep:!0});const X=C=>C.toLocaleString("es-ES",{minimumFractionDigits:2,maximumFractionDigits:2}),y=vue.computed(()=>{var j;return(Number((j=z.value)==null?void 0:j.PRECIO)||0)*M.value}),G=vue.computed(()=>getSquareMeters(u.value)),V=vue.computed(()=>{var C;return convertToMeters(((C=Z.value)==null?void 0:C.ancho)||0,r.value)}),D=vue.computed(()=>{var C;return convertToMeters(((C=Z.value)==null?void 0:C.alto)||0,r.value)}),R=vue.computed(()=>V.value*D.value),S=vue.computed(()=>{var j;const C=((j=z.value)==null?void 0:j.PRECIO)||0;return!C||!R.value?0:toCurrency(C/R.value)});return vue.watch(()=>u.value.ancho,C=>{C%V.value!==0&&(u.value.ancho=toDecimals(Math.ceil(C/V.value)*V.value))}),vue.watch(()=>u.value.alto,C=>{C%D.value!==0&&(u.value.alto=toDecimals(Math.ceil(C/D.value)*D.value))}),(C,j)=>(vue.openBlock(),vue.createElementBlock(vue.Fragment,null,[j[6]||(j[6]=vue.createElementVNode("div",{class:"prices text-bold q-mb-md"}," Define la configuración para este producto ",-1)),vue.createElementVNode("div",_hoisted_1$5,[vue.createElementVNode("div",null,[vue.createVNode(QInput,{type:"number",outlined:"",class:"q-mb-md",modelValue:u.value.ancho,"onUpdate:modelValue":j[0]||(j[0]=P=>u.value.ancho=P),modelModifiers:{number:!0},label:"Ancho",suffix:"metros",step:V.value,min:"0"},null,8,["modelValue","step"]),vue.createVNode(QInput,{type:"number",outlined:"",modelValue:u.value.alto,"onUpdate:modelValue":j[1]||(j[1]=P=>u.value.alto=P),modelModifiers:{number:!0},label:"Alto",suffix:"metros",step:D.value,min:"0"},null,8,["modelValue","step"])]),vue.createElementVNode("div",_hoisted_2$4,[vue.createElementVNode("div",null,[vue.createTextVNode(" Área panel: "+vue.toDisplayString(X(R.value))+" m",1),j[2]||(j[2]=vue.createElementVNode("sup",null,"2",-1))]),vue.createElementVNode("div",null,[j[3]||(j[3]=vue.createTextVNode(" Importe m")),j[4]||(j[4]=vue.createElementVNode("sup",null,"2",-1)),vue.createTextVNode(": "+vue.toDisplayString(S.value),1)]),vue.createElementVNode("div",_hoisted_3$3,[vue.createTextVNode("Área total: "+vue.toDisplayString(X(G.value))+" m",1),j[5]||(j[5]=vue.createElementVNode("sup",null,"2",-1))]),vue.createElementVNode("div",_hoisted_4$3,"Paneles: "+vue.toDisplayString(M.value),1),vue.createElementVNode("div",_hoisted_5$3,"Importe total: "+vue.toDisplayString(vue.unref(toCurrency)(y.value)),1)])])],64))}}),ProductConfiguration=_export_sfc(_sfc_main$5,[["__scopeId","data-v-dab89e2e"]]),_hoisted_1$4={key:0,class:"q-mt-lg"},_hoisted_2$3={class:"row justify-between"},_hoisted_3$2={key:0,class:"counter q-mr-lg q-mt-md"},_hoisted_4$2={class:"quantity"},_hoisted_5$2={key:1},_hoisted_6$1={class:"q-mt-md"},_sfc_main$4=vue.defineComponent({__name:"ProductShopcartActions",setup(o){const{product:s,productProps:M,addToShopcartLabel:u,goToCatalogLabel:z}=useContext(),{emitEvent:Z}=useWidgetEvent(),r=vue.computed(()=>{var S,C;return!!((S=M.value)!=null&&S.a_medida)&&!((C=s.value)!=null&&C.pack)}),N=vue.ref(r.value?0:1),X=vue.ref({}),y=vue.computed(()=>r.value&&N.value<=0),G=()=>{N.value=Math.max(1,N.value-1)},V=()=>{N.value++},D=()=>{const S=lodashExports.omit(s.value,"images","table_estado");Z("add_to_shopcart",{product:lodashExports.mapKeys({...S,id_producto:S.id},(C,j)=>j.toUpperCase()),quantity:N.value,props:X.value||{}})},R=()=>{Z("go_to_catalog")};return(S,C)=>vue.unref(s)?(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$4,[r.value?(vue.openBlock(),vue.createBlock(ProductConfiguration,{key:0,product:vue.unref(s),quantity:N.value,"onUpdate:quantity":C[0]||(C[0]=j=>N.value=j),detail:X.value,"onUpdate:detail":C[1]||(C[1]=j=>X.value=j)},null,8,["product","quantity","detail"])):vue.createCommentVNode("",!0),vue.createElementVNode("div",_hoisted_2$3,[r.value?(vue.openBlock(),vue.createElementBlock("div",_hoisted_5$2)):(vue.openBlock(),vue.createElementBlock("div",_hoisted_3$2,[vue.createVNode(IconButton,{outline:"",size:"sm",onClick:G,icon:"remove"}),vue.createElementVNode("span",_hoisted_4$2,vue.toDisplayString(N.value),1),vue.createVNode(IconButton,{outline:"",size:"sm",custom:"",onClick:V,icon:"add"})])),vue.createElementVNode("div",_hoisted_6$1,[vue.createVNode(_sfc_main$R,{onClick:R,disable:y.value,label:vue.unref(z)||"Seguir comprando",class:"q-mr-md"},null,8,["disable","label"]),vue.createVNode(_sfc_main$R,{onClick:D,disable:y.value,main:"",label:vue.unref(u)||"Agregar al carrito"},null,8,["disable","label"])])])])):vue.createCommentVNode("",!0)}}),ProductShopcartActions=_export_sfc(_sfc_main$4,[["__scopeId","data-v-72c2babe"]]),_hoisted_1$3={style:{"font-size":"16px","max-height":"300px","overflow-y":"auto"}},_hoisted_2$2={key:0,class:"text-black"},_sfc_main$3=vue.defineComponent({__name:"ProductShortDescription",setup(o){const{product:s}=useContext(),M=vue.computed(()=>{var u;return((u=s.value)==null?void 0:u.descripcion_corta)||""});return(u,z)=>(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$3,[M.value?(vue.openBlock(),vue.createElementBlock("div",_hoisted_2$2,vue.toDisplayString(M.value),1)):vue.createCommentVNode("",!0)]))}}),_hoisted_1$2={key:0,class:"visibility-icon-container top-right"},_sfc_main$2=vue.defineComponent({__name:"PublicImageButton",setup(o){const{images:s,slide:M,isPrivate:u}=useContext(),z=vue.computed(()=>{var X;return(X=s.value[M.value-1])==null?void 0:X.id}),Z=vue.computed(()=>{var X;return(X=s.value[M.value-1])==null?void 0:X.public}),{emitEvent:r}=useWidgetEvent(),N=()=>r("change_image_visibility",{ID_ARCHIVO:z.value,PUBLICO:!Z.value});return(X,y)=>{var G;return(G=vue.unref(s))!=null&&G.length&&vue.unref(u)?(vue.openBlock(),vue.createElementBlock("div",_hoisted_1$2,[vue.createVNode(QBtn,{onClick:vue.withModifiers(N,["stop"]),size:"12px",icon:Z.value?"public":"public_off","text-color":Z.value?"green":"red",color:"white",padding:"4px",round:""},{default:vue.withCtx(()=>[vue.createVNode(QTooltip,null,{default:vue.withCtx(()=>[vue.createTextVNode(vue.toDisplayString(Z.value?"Visible al público":"Privado"),1)]),_:1})]),_:1},8,["icon","text-color"])])):vue.createCommentVNode("",!0)}}}),PublicImageButton=_export_sfc(_sfc_main$2,[["__scopeId","data-v-3a4b0b68"]]),_hoisted_1$1={class:"row justify-end"},_hoisted_2$1={class:"grid"},_hoisted_3$1={class:"images-container"},_hoisted_4$1={class:"carousel-container"},_hoisted_5$1={class:"text-h5 text-bold"},_hoisted_6={class:"row justify-between"},_hoisted_7={key:0},_hoisted_8={class:"row items-center justify-between"},_hoisted_9={class:"text-weight-medium"},_hoisted_10={class:"row"},_sfc_main$1=vue.defineComponent({__name:"LinvermediaProductDetail",props:{isPublic:{type:Boolean},fetching:{type:Boolean},scale:{},count:{},view:{default:"detail"},title:{},data:{},gamaProps:{},addToShopcartLabel:{},goToCatalogLabel:{}},emits:["on-event"],setup(o,{emit:s}){const M=vue.computed(()=>Screen.lt.md),u=s;vue.provide("emit",u);const z=o,Z=vue.ref(1),{data:r,isPublic:N,gamaProps:X,count:y}=vue.toRefs(z),G=vue.computed(()=>toProductLite(r.value)),V=vue.ref(null),D=vue.ref([]),R={product:G,slide:Z,isPublic:N,selectedPackProduct:V,images:D,count:y,gamaProps:X,addToShopcartLabel:z.addToShopcartLabel,goToCatalogLabel:z.goToCatalogLabel};vue.provide("context",R);const S=vue.computed(()=>{var j;return!!((j=G.value)!=null&&j.pack)}),C=()=>{var j;return u("on-event",{code:"edit_product",payload:{id:(j=G.value)==null?void 0:j.id}})};return(j,P)=>{var E,g,v,q,o0,c0,B;const F=vue.resolveComponent("v-else"),U=vue.resolveComponent("ProductAvailableColors");return vue.openBlock(),vue.createElementBlock(vue.Fragment,null,[vue.createElementVNode("div",_hoisted_1$1,[vue.unref(N)?vue.createCommentVNode("",!0):(vue.openBlock(),vue.createBlock(IconButton,{key:0,icon:"edit",sm:"",onClick:C}))]),vue.createElementVNode("div",_hoisted_2$1,[vue.createElementVNode("div",_hoisted_3$1,[vue.createVNode(ImagesMiniature,{class:"gt-sm"}),vue.createElementVNode("div",_hoisted_4$1,[vue.createVNode(ProductImageHeader),vue.createVNode(_sfc_main$M,{style:{"border-radius":"8px"},items:D.value,modelValue:Z.value,"onUpdate:modelValue":P[0]||(P[0]=b0=>Z.value=b0),height:M.value?"450px":"600px"},null,8,["items","modelValue","height"]),vue.createVNode(PublicImageButton)]),vue.createVNode(ImagesMiniature,{class:"lt-md"})]),vue.createElementVNode("div",null,[vue.createElementVNode("div",_hoisted_5$1,vue.toDisplayString(vue.unref(capitalize)(((E=G.value)==null?void 0:E.nombre)||"")),1),vue.createElementVNode("div",_hoisted_6,[vue.unref(N)?vue.createCommentVNode("",!0):(vue.openBlock(),vue.createElementBlock("div",_hoisted_7,"SKU: "+vue.toDisplayString((v=(g=G.value)==null?void 0:g.props)==null?void 0:v.sku),1)),vue.createVNode(F,{div:""}),!vue.unref(N)&&((q=G.value)!=null&&q.estado)?(vue.openBlock(),vue.createBlock(StateIndicator,{key:1,label:G.value.estado.name,color:G.value.estado.color},null,8,["label","color"])):vue.createCommentVNode("",!0)]),vue.createElementVNode("div",_hoisted_8,[vue.createVNode(ProductPrice,{product:G.value},null,8,["product"]),vue.createElementVNode("div",_hoisted_9,vue.toDisplayString(vue.unref(capitalize)(((c0=(o0=G.value)==null?void 0:o0.props)==null?void 0:c0.ubicacion)||"")),1),vue.createVNode(_sfc_main$9)]),vue.createVNode(U),vue.createVNode(_sfc_main$3),S.value?(vue.openBlock(),vue.createBlock(ProductDetallePack,{key:0})):(vue.openBlock(),vue.createBlock(_sfc_main$e,{key:1,"product-props":(B=G.value)==null?void 0:B.props,"gama-props":vue.unref(X)},null,8,["product-props","gama-props"])),vue.unref(N)?(vue.openBlock(),vue.createBlock(ProductShopcartActions,{key:2})):vue.createCommentVNode("",!0)])]),vue.createElementVNode("div",_hoisted_10,[vue.createVNode(_sfc_main$6)])],64)}}}),LinvermediaProductDetail=_export_sfc(_sfc_main$1,[["__scopeId","data-v-0a6c5474"]]),LINVERMEDIA_PRODUCT_DETAIL_MOCK_DATA=Object.freeze([{ID_PRODUCTO:121,ID_EMPRESA:1,COD_ART_MVX:"00000044",CAPTACION_COUNT:0,CODIGO_EXTERNO:null,nombre:"Panel Modular LED P1.8 Escaparate de Alto Brillo",DESCRIPCION:"La Pantalla LED P1.8 Escaparate de Alto Brillo (4500 nits) es la herramienta definitiva para transformar tu fachada en un potente canal de comunicación. Con un pixel pitch de 1.8mm, garantiza una claridad y detalle asombrosos, incluso a corta distancia, mientras que sus 4500 nits de brillo aseguran una visibilidad perfecta bajo la luz solar directa. Su diseño está optimizado para la resistencia en exteriores y un impacto visual máximo con su 3840 Hz de refresco de alta gama. Ideal para tiendas minoristas, concesionarios y cualquier negocio que busque atraer clientes desde la calle con promociones dinámicas y branding impactante. Tu escaparate destacará como nunca, invierte en la tecnología LED que convierte miradas en ventas. ",DESCRIPCION_CORTA:"Cautiva a tu audiencia con la pantalla LED P1.8 de escaparate, con un brillo extremo y nitidez para destacar tu negocio bajo cualquier luz.",ID_CAPTACION:null,ID_PROVEEDOR:null,ID_PRODUCTO_REF:null,TIPO:"1",ESTADO:"1",ID_GAMA:23,ID_TIE_DEF:null,TAGS:null,PUBLICO:!0,PACK:!1,CONFIGURABLE:!1,GRUPO:null,PAQUETE:!1,ID_PRODUCTOS_PAQUETE:null,PRECIO:"1800.00",PRECIOS:null,ID_ESTADO:"c241a8a9-51a6-4274-831c-d11503726458",ID_SEGMENTOS:null,TIPO_IVA:"exento",FECHA_ALTA:"2025-06-01",FECHA_UPD:"2025-06-26T03:59:53.673Z",FECHA_CREADO:"2025-05-29T16:16:18.124Z",UBICACION:null,DETALLE_PACK:[],R_IMG:[{ID_ARCHIVO:894,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/e87801c563b48669_Panel%20Modular%20LED%20Pantalla%20LED%20Interior%20de%20Alta%20Resoluci%C3%B3n%20%281%29.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Panel Modular LED Pantalla LED Interior de Alta Resolución (1).png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T21:07:13.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:121,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:1}],UNDBASICA:null,FACTORAGR:null,CONTROLLOTE:null,TIPO_CLIENTE:null,PROPS:{sku:"LED-P18-ES",alto:"48",gama:"pantallas_led_modulares",ancho:"96",pitch:"1_8_mm",brillo:"4500_nits",peso_kg:"7 - 12 (aprox.) ",subgama:"led",a_medida:!0,material:"aluminio",ubicacion:"escaparate",tipo_montaje:"matriz",proteccion_ip:"ip_20_productos_de_interior",tasa_refresco:"3840",tipo_servicio:"back",consumo_maximo:"200W",consumo_medio_w:"100W",usos_habituales:["salas_de_control_estudios_de_tv_salas_de_videoconferencia_auditorios","tiendas_recepciones_hall_salas_de_espera_showrooms_galerias"],consumo_maximo_w:"200W ",tipo_instalacion:"montaje_interior_orientado_al_exterior",unidad_de_medida:"cm",colores_disponibles:[],compatible_videowall:!0,propositos_generales:["publicidad_senaletica_informativo_decorativo_corporativo_contenido_comercial"],controladoras_compatibles:["novastar_vx_600","taurus_tb_30"]}},{ID_PRODUCTO:123,ID_EMPRESA:1,COD_ART_MVX:"00000046",CAPTACION_COUNT:0,CODIGO_EXTERNO:null,nombre:"Panel Modular LED P2.9 Exterior Trasera de Alto Brillo",DESCRIPCION:"Para instalaciones fijas en exteriores que requieren un acceso de servicio tradicional, la Pantalla LED P2.9 Exterior Trasera de Alto Brillo es la elección perfecta. Con un pixel pitch de 2.9mm y un brillo de 4000 nits, esta pantalla garantiza una visibilidad excepcional y una calidad de imagen sorprendente en grandes formatos publicitarios, estadios o fachadas arquitectónicas. Su construcción en aluminio fundido y su robustez la hacen ideal para soportar condiciones climáticas adversas. El mantenimiento trasero es óptimo para estructuras con espacio posterior, permitiendo una instalación más integrada visualmente. Con consumo máximo de 160W y medio de 80W, combina potencia con eficiencia. La durabilidad y el impacto visual que tu proyecto exterior necesita.",DESCRIPCION_CORTA:"Una solución robusta y de alto rendimiento para instalaciones fijas en exterior, con mantenimiento trasero para una integración discreta.",ID_CAPTACION:null,ID_PROVEEDOR:null,ID_PRODUCTO_REF:null,TIPO:"1",ESTADO:"1",ID_GAMA:23,ID_TIE_DEF:null,TAGS:null,PUBLICO:!0,PACK:!1,CONFIGURABLE:!1,GRUPO:null,PAQUETE:!1,ID_PRODUCTOS_PAQUETE:null,PRECIO:"937.50",PRECIOS:null,ID_ESTADO:"c241a8a9-51a6-4274-831c-d11503726458",ID_SEGMENTOS:null,TIPO_IVA:"exento",FECHA_ALTA:"2025-06-01",FECHA_UPD:"2025-06-26T03:59:54.506Z",FECHA_CREADO:"2025-05-29T16:27:31.729Z",UBICACION:null,DETALLE_PACK:[],R_IMG:[{ID_ARCHIVO:878,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/7eec48aa4f7a0d9d_Pantalla%20LED%20Exterior%20de%20Gran%20Brillo%20y%20Visibilidad%20500%20mmm.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Pantalla LED Exterior de Gran Brillo y Visibilidad 500 mmm.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T12:47:23.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:123,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:1}],UNDBASICA:null,FACTORAGR:null,CONTROLLOTE:null,TIPO_CLIENTE:null,PROPS:{sku:"LED-P29-BK",alto:"50 cm",gama:"pantallas_led_modulares",ancho:"50",pitch:"2_9_mm",brillo:"4000_nits",peso_kg:"7",subgama:"led",a_medida:!0,material:["aluminio_fundido"],ubicacion:"exterior",tipo_montaje:"matriz",proteccion_ip:"ip_65_ip_43",tasa_refresco:"3840",tipo_servicio:"back",consumo_maximo:"160W",consumo_medio_w:"80",usos_habituales:["eventos_estadios_mobiliario_urbano"],consumo_maximo_w:"160",tipo_instalacion:"estructura_exterior_soporte_metalico",colores_disponibles:[],compatible_videowall:!0,propositos_generales:["publicidad_exterior_fachadas_contenido_comercial_videowall_exterior"],controladoras_compatibles:["novastar_vx_600","taurus_tb_40"]}},{id:151,nombre:"Pantalla LED 3x2 P2.9 Escaparate",precio:21879.5,tipo_iva:"exento",descripcion:"Potente solución para escaparates grandes o interiores espaciosos. Con su formato cuadrado y gran superficie, es perfecta para videowalls que transmitan una imagen de marca sólida y profesional. La controladora Novastar Taurus TB50 garantiza un rendimiento óptimo y una gestión avanzada de contenidos complejos y en tiempo real.",descripcion_corta:"Pantalla LED 3x2m (6m²) 24 cabinets",estado:1,props:{sku:"LED-P29-FS",alto:"50",gama:"pantallas_led_modulares",ancho:"50",pitch:"2_9_mm",brillo:"4000_nits",peso_kg:"7",subgama:"led",a_medida:!0,material:"aluminio_fundido",ubicacion:"exterior",tipo_montaje:"matriz",proteccion_ip:"ip_65_ip_43",tasa_refresco:"3840",tipo_servicio:"full_front",consumo_maximo:"160W",consumo_medio_w:"80",usos_habituales:["eventos_estadios_mobiliario_urbano"],consumo_maximo_w:"160",tipo_instalacion:"estructura_exterior_soporte_metalico",unidad_de_medida:"cm",colores_disponibles:[],compatible_videowall:!0,propositos_generales:["publicidad_exterior_fachadas_contenido_comercial_videowall_exterior"],controladoras_compatibles:["novastar_vx_600","novastar_vx_1000","taurus_tb_40"]},tags:null,codigo:"00000073",fecha_creado:"2025-06-07T00:38:46.071Z",id_captacion:null,id_estado:"c241a8a9-51a6-4274-831c-d11503726458",id_gama:23,id_proveedor:null,paquete:0,pack:1,fecha_alta:"2025-06-06T04:00:00.000Z",documentos:[{id:909,estado:1,aprobado:-1,id_producto:151,id_captacion:null,id_tipo_documento:28,id_documento_firmado:null,location:"https://w2w-files.s3.amazonaws.com/linvermedia/c39831025394e8f0_Pantalla%20LED%20Exterior%20Mantenimiento%20Frontal%20Completo.png",public:1,tipo:"image",firmable:0,tags:null,posicion:2},{id:910,estado:1,aprobado:-1,id_producto:151,id_captacion:null,id_tipo_documento:28,id_documento_firmado:null,location:"https://w2w-files.s3.amazonaws.com/linvermedia/7eec48aa4f7a0d9d_Pantalla%20LED%20Exterior%20de%20Gran%20Brillo%20y%20Visibilidad%20500%20mmm.png",public:1,tipo:"image",firmable:0,tags:null,posicion:1},{id:911,estado:1,aprobado:-1,id_producto:151,id_captacion:null,id_tipo_documento:28,id_documento_firmado:null,location:"https://w2w-files.s3.amazonaws.com/linvermedia/51f4d42fb93178e3_to%20LED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida.png",public:1,tipo:"image",firmable:0,tags:null,posicion:3},{id:912,estado:1,aprobado:-1,id_producto:151,id_captacion:null,id_tipo_documento:28,id_documento_firmado:null,location:"https://w2w-files.s3.amazonaws.com/linvermedia/48deda3825a497a9_ED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida%20%281%29.png",public:1,tipo:"image",firmable:0,tags:null,posicion:4},{id:913,estado:1,aprobado:-1,id_producto:151,id_captacion:null,id_tipo_documento:28,id_documento_firmado:null,location:"https://w2w-files.s3.amazonaws.com/linvermedia/eaea5eb4e9899055_ED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida%20%281%29.png",public:1,tipo:"image",firmable:0,tags:null,posicion:5}],detalle_pack:[{ID_PRODUCTO_DETALLE_PACK:15,ID_PRODUCTO_PACK:151,ID_PRODUCTO_DETALLE:122,CANTIDAD:24,DESCUENTO:"10.00",PROPS:{alto:"2",ancho:"3"},PRINCIPAL:!0,DETALLE:{ID_PRODUCTO:122,ID_EMPRESA:1,COD_ART_MVX:"00000045",CAPTACION_COUNT:0,CODIGO_EXTERNO:null,NOMBRE:"Panel Modular LED P2.9 Exterior Frontal de Alto Brillo",DESCRIPCION:"La Pantalla LED P2.9 Exterior Frontal de Alto Brillo está diseñada para ofrecer un rendimiento impecable en los entornos más exigentes. Su pixel pitch de 2.9mm ofrece una excelente resolución para vallas publicitarias, eventos deportivos y grandes escenarios al aire libre, con un brillo de 4000 nits que garantiza visibilidad incluso bajo el sol más intenso. Fabricada en aluminio fundido, es resistente y cuenta con mantenimiento frontal, facilitando el servicio en instalaciones de pared o estructuras fijas. Con un consumo máximo de 160W y medio de 80W, para eficiencia energética. Su clasificación IP65/IP43 asegura protección contra el polvo y el agua. Tus mensaje brillarán con la máxima potencia y fiabilidad en exteriores.",DESCRIPCION_CORTA:"Robusta y brillante, la pantalla LED P2.9 Exterior con mantenimiento frontal es ideal para publicidad y eventos al aire libre bajo cualquier condición.",ID_CAPTACION:null,ID_PROVEEDOR:null,ID_PRODUCTO_REF:null,TIPO:"1",ESTADO:"1",ID_GAMA:23,ID_TIE_DEF:null,TAGS:null,PROPS:{sku:"LED-P29-FS",alto:"50",gama:"pantallas_led_modulares",ancho:"50",pitch:"2_9_mm",brillo:"4000_nits",peso_kg:"7",subgama:"led",a_medida:!0,material:"aluminio_fundido",ubicacion:"exterior",tipo_montaje:"matriz",proteccion_ip:"ip_65_ip_43",tasa_refresco:"3840",tipo_servicio:"full_front",consumo_maximo:"160W",consumo_medio_w:"80",usos_habituales:["eventos_estadios_mobiliario_urbano"],consumo_maximo_w:"160",tipo_instalacion:"estructura_exterior_soporte_metalico",unidad_de_medida:"cm",colores_disponibles:[],compatible_videowall:!0,propositos_generales:["publicidad_exterior_fachadas_contenido_comercial_videowall_exterior"],controladoras_compatibles:["novastar_vx_600","novastar_vx_1000","taurus_tb_40"]},PUBLICO:!0,PACK:!1,CONFIGURABLE:!1,GRUPO:null,PAQUETE:!1,ID_PRODUCTOS_PAQUETE:null,PRECIO:"1000.00",PRECIOS:null,ID_ESTADO:"c241a8a9-51a6-4274-831c-d11503726458",ID_SEGMENTOS:null,TIPO_IVA:"exento",FECHA_ALTA:"2025-06-01",FECHA_UPD:"2025-06-26T03:59:54.090Z",FECHA_CREADO:"2025-05-29T16:24:25.545Z",ARCHIVOS:[{ID_ARCHIVO:883,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/c39831025394e8f0_Pantalla%20LED%20Exterior%20Mantenimiento%20Frontal%20Completo.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Pantalla LED Exterior Mantenimiento Frontal Completo.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T15:06:30.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:122,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:1},{ID_ARCHIVO:884,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/7eec48aa4f7a0d9d_Pantalla%20LED%20Exterior%20de%20Gran%20Brillo%20y%20Visibilidad%20500%20mmm.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Pantalla LED Exterior de Gran Brillo y Visibilidad 500 mmm.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T15:06:42.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:122,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:2}],UNDBASICA:null,FACTORAGR:null,CONTROLLOTE:null,TIPO_CLIENTE:null}},{ID_PRODUCTO_DETALLE_PACK:16,ID_PRODUCTO_PACK:151,ID_PRODUCTO_DETALLE:144,CANTIDAD:1,DESCUENTO:"0.00",PROPS:{alto:"",ancho:""},PRINCIPAL:!1,DETALLE:{ID_PRODUCTO:144,ID_EMPRESA:1,COD_ART_MVX:"00000067",CAPTACION_COUNT:0,CODIGO_EXTERNO:null,NOMBRE:"Controladora LED Novastar Taurus TB40 (Rendimiento Superior)",DESCRIPCION:"Esta controladora asíncrona de alto rendimiento está diseñada para los proyectos más exigentes, ofreciendo una potencia de procesamiento superior y una mayor capacidad de carga de pixels. Es ideal para pantallas LED de gran tamaño, aplicaciones interactivas o proyectos que requieren actualizaciones de contenido frecuentes y complejas. Con múltiples opciones de conectividad y una estabilidad excepcional, la TB40 garantiza una gestión remota fluida y fiable de tu contenido. Su robustez y eficiencia la convierten en la elección preferida para publicidad dinámica, información en tiempo real y experiencias visuales inmersivas.",DESCRIPCION_CORTA:"La Taurus TB40 de Novastar es una controladora asíncrona de alto rendimiento, diseñada para proyectos LED complejos que exigen máxima potencia y versatilida",ID_CAPTACION:null,ID_PROVEEDOR:null,ID_PRODUCTO_REF:null,TIPO:"1",ESTADO:"1",ID_GAMA:23,ID_TIE_DEF:null,TAGS:null,PROPS:{sku:"CTRL-TB40",gama:"controladoras",serie:"novastar_taurus",subgama:"controladoras_asincronas_reproductores_multimedia",ubicacion:"panel_led_modular",proteccion_ip:"ip_20_productos_de_interior",tipo_servicio:null,sistema_operativo:"android",compatibilidad_de_senal:["red_lan_wi_fi_4_g","usb"]},PUBLICO:!0,PACK:!1,CONFIGURABLE:!1,GRUPO:null,PAQUETE:!1,ID_PRODUCTOS_PAQUETE:null,PRECIO:"279.50",PRECIOS:null,ID_ESTADO:"c241a8a9-51a6-4274-831c-d11503726458",ID_SEGMENTOS:null,TIPO_IVA:"exento",FECHA_ALTA:null,FECHA_UPD:"2025-06-26T04:00:03.280Z",FECHA_CREADO:"2025-06-02T01:55:32.799Z",ARCHIVOS:[{ID_ARCHIVO:819,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/51f4d42fb93178e3_to%20LED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"1 Controladora LED Novastar Taurus TB40 (Rendimiento Superior) Controladora LED Novastar Taurus TB40, alto rendimiento LED, señalización digital compleja, controlador asíncrono premium, publicida.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-03T23:41:18.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:144,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:null},{ID_ARCHIVO:836,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/48deda3825a497a9_ED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida%20%281%29.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"2 Controladora LED Novastar Taurus TB40 (Rendimiento Superior) Controladora LED Novastar Taurus TB40, alto rendimiento LED, señalización digital compleja, controlador asíncrono premium, publicida (1).png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-04T00:20:58.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:144,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:null},{ID_ARCHIVO:839,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/eaea5eb4e9899055_ED%2C%20se%C3%B1alizaci%C3%B3n%20digital%20compleja%2C%20controlador%20as%C3%ADncrono%20premium%2C%20publicida%20%281%29.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"3 Controladora LED Novastar Taurus TB40 (Rendimiento Superior) Controladora LED Novastar Taurus TB40, alto rendimiento LED, señalización digital compleja, controlador asíncrono premium, publicida (1).png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-04T00:30:31.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:144,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:null}],UNDBASICA:null,FACTORAGR:null,CONTROLLOTE:null,TIPO_CLIENTE:null}}]},{ID_PRODUCTO:119,ID_EMPRESA:1,COD_ART_MVX:"00000042",CAPTACION_COUNT:0,CODIGO_EXTERNO:null,nombre:"Panel Modular LED P2.5 Interior Versátil",NOMBRE:"Panel Modular LED P2.5 Interior Versátil",DESCRIPCION:"La Pantalla LED P2.5 Interior Versátil es la solución ideal para proyectos que buscan una excelente calidad de imagen con flexibilidad. Con un pixel pitch de 2.5mm, proporciona imágenes claras y brillantes para auditorios, centros comerciales, salas de conferencias y espacios de eventos. Su construcción en aluminio fundido garantiza ligereza y resistencia, facilitando la instalación y el mantenimiento (frontal y trasero). Con un brillo de 1000 nits y una frecuencia de refresco de 3840Hz, asegura una visualización óptima y fluida ya que evita el parpadeo visible tanto al ojo humano como para las cámaras de video. Es perfecta para publicidad digital, información en puntos de venta o fondos de escenario. Disfruta de un consumo energético eficiente (120W máximo / 60W medio) que reduce los costes operativos. Eleva la comunicación visual en tu negocio con esta pantalla LED de alto rendimiento.",DESCRIPCION_CORTA:"Pantalla LED P2.5 Interior ofrece un equilibrio perfecto entre alta definición y versatilidad para una amplia gama de aplicaciones en interiores.",ID_CAPTACION:null,ID_PROVEEDOR:null,ID_PRODUCTO_REF:null,TIPO:"1",ESTADO:"1",ID_GAMA:23,ID_TIE_DEF:null,TAGS:null,PUBLICO:!0,PACK:!1,CONFIGURABLE:!1,GRUPO:null,PAQUETE:!1,ID_PRODUCTOS_PAQUETE:null,PRECIO:"775.00",PRECIOS:null,ID_ESTADO:"c241a8a9-51a6-4274-831c-d11503726458",ID_SEGMENTOS:null,TIPO_IVA:"exento",FECHA_ALTA:"2025-06-01",FECHA_UPD:"2025-06-26T03:59:52.832Z",FECHA_CREADO:"2025-05-29T16:01:15.064Z",UBICACION:null,R_IMG:[{ID_ARCHIVO:885,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/3b331997a4a4555b_Panel%20Modular%20LED%20Pantalla%20LED%20Interior%20de%20Alta%20Resoluci%C3%B3n.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Panel Modular LED Pantalla LED Interior de Alta Resolución.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T15:11:00.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:119,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:1},{ID_ARCHIVO:886,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/e777804b4bc63fd0_Panel%20Modular%20LED%20Pantalla%20LEDInterior%20de%20Alta%20Resoluci%C3%B3n.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Panel Modular LED Pantalla LEDInterior de Alta Resolución.png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-05T15:11:09.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:119,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:2},{ID_ARCHIVO:903,LOCATION:"https://w2w-files.s3.amazonaws.com/linvermedia/0075bc2e598888e6_T%C3%B3tem%20LED%20P2.0%20Interior%20con%20GOB%20%282%29.png",ID_ARCHIVO_FIRMADO:null,ID_ARCHIVO_FUENTE:null,FIRMABLE:!1,DETALLE_FIRMA:null,FILENAME:"Tótem LED P2.0 Interior con GOB (2).png",FILETYPE:"image",ID_TIPO_DOCUMENTO:28,DESCRIPCION:null,OBSERVACION:null,TAGS:null,TAG_TEMPORAL:null,APROBADA:"-1",ESTADO:1,SUBIDO_POR:null,APROBADO_POR:null,FECHA_SUBIDA:"2025-06-06T23:58:01.000Z",FECHA_APROBADO:null,ID_CONTACTO:null,ID_PRODUCTO:119,ID_PRODUCTO_PEDIDO:null,ID_INGRESO:null,ID_DEUDA:null,ID_GARANTIA:null,ID_CAPTACION:null,PUBLICO:!0,PRINCIPAL:!1,POSICION:3}],UNDBASICA:null,FACTORAGR:null,CONTROLLOTE:null,TIPO_CLIENTE:null,PROPS:{sku:"LED-P25-IN",alto:"48 ",gama:"pantallas_led_modulares",ancho:"64",pitch:"2_5_mm",brillo:"800_nits",peso_kg:"7 ",subgama:"led",a_medida:!0,material:"aluminio_fundido",ubicacion:"interior",tipo_montaje:"matriz",proteccion_ip:"ip_20_productos_de_interior",tasa_refresco:"3840",tipo_servicio:"back",consumo_maximo:"120W",consumo_medio_w:"60W",usos_habituales:["salas_de_control_estudios_de_tv_salas_de_videoconferencia_auditorios","tiendas_recepciones_hall_salas_de_espera_showrooms_galerias"],consumo_maximo_w:"1",tipo_instalacion:"anclado_a_pared_o_estructura_interior",unidad_de_medida:"cm",colores_disponibles:[],compatible_videowall:!0,propositos_generales:["publicidad_senaletica_informativo_decorativo_corporativo_contenido_comercial"],controladoras_compatibles:["novastar_vx_400","taurus_tb_2"]}},{id:371,nombre:'Pantalla LCD 65" Ultra Brillo 4K',precio:2227.5,tipo_iva:"exento",descripcion:'Eleva tu comunicación visual con la Pantalla LCD 65" 4K de Ultra Brillo. Esta impresionante pantalla, con su resolución 4K y un nivel de brillo excepcional (generalmente superior a 1500-2000 nits), es perfecta para entornos donde la visibilidad y el impacto son cruciales, como grandes escaparates, centros comerciales, aeropuertos o espacios de eventos. Su gran tamaño asegura que tu mensaje sea visible desde lejos, mientras que la claridad 4K garantiza que cada detalle se aprecie. Su diseño está optimizado para la eficiencia y la durabilidad en uso continuo. Una solución premium para proyectos que exigen la máxima calidad y presencia visual. ',descripcion_corta:'Gran formato y brillo extremo: la pantalla LCD 65" 4K de alta brillantez es ideal para espacios que demandan visibilidad impactante',estado:1,props:{sku:"LCD-65-HB",gama:"pantallas_lcd",brillo:"alta_brillantez_4_k_lcd",tamano:"65",peso_kg:">25-40",subgama:"lcd",material:"material_robusto_y_duradero",ubicacion:"escaparate",resolucion:"4_k",tipo_montaje:"mural",proteccion_ip:"ip_20_productos_de_interior",tasa_refresco:"60",tipo_servicio:null,usos_habituales:["escaparates_o_vitrinas_expuestas_al_sol","salas_de_control_estudios_de_tv_salas_de_videoconferencia_auditorios"],tipo_instalacion:"pared_o_soporte_vesa",colores_disponibles:[],propositos_generales:["publicidad_senaletica_informativo_decorativo_corporativo_contenido_comercial"],gran_formato_independiente:"si"},tags:"destacado,oferta",codigo:"T0000057",fecha_creado:"2025-05-30T04:02:19.415Z",id_captacion:null,id_estado:"c241a8a9-51a6-4274-831c-d11503726458",id_gama:23,id_proveedor:null,paquete:0,pack:0,fecha_alta:null,table_estado:{id:"c241a8a9-51a6-4274-831c-d11503726458",name:"No disponible",color:"#9c9c9c",code:"no_disponible",id_gama:23,enabled:1}},{id:167,nombre:"Pantalla LED",precio:2e4,tipo_iva:"general",descripcion:"Pantalla LED de alta calidad diseñada para aplicaciones interiores. Ofrece un brillo excepcional, resolución adaptable y un diseño ligero de aluminio, ideal para publicidad, videowalls y escaparates. Su doble cara y sistema operativo Android garantizan versatilidad y facilidad de uso.",descripcion_corta:"Pantalla LED interior de alta calidad, ligera y versátil.",estado:2,props:{gob:"si",sku:"TOT-LED-P18",alto:null,gama:"totems",ancho:null,marca:"Testing",pitch:"3_076_mm",brillo:"4500_nits",modelo:"Test",tamano:null,peso_kg:"3.5",subgama:"led",a_medida:!0,material:"aluminio",ubicacion:"interior",uso_final:"interior",doble_cara:!0,resolucion:null,subfamilia:"led",interactivo:null,profundidad:null,proteccion_ip:"ip_43_protegido_contra_objetos_de_mas_de_1_mm_y_agua_pulverizada",tipo_servicio:"front",consumo_medio_w:"200",tipo_de_montaje:"matriz",usos_habituales:[],consumo_maximo_w:"300",tipo_de_servicio:"full_front",tipo_instalacion:"montaje_interior_orientado_al_exterior",sistema_operativo:"android",colores_disponibles:["negro","blanco"],tasa_de_refresco_hz:"500",tipo_de_instalacion:"autoportante_de_suelo",propositos_generales:["publicidad_exterior_fachadas_contenido_comercial_videowall_exterior"],aplicacion_recomendada:["escaparates_o_vitrinas_expuestas_al_sol"],controladoras_compatibles:["novastar_vx_600","taurus_tb_30","novastar_vx_1000"]},tags:"destacado",codigo:"00000079",fecha_creado:"2025-06-11T03:04:21.800Z",id_captacion:null,id_estado:"c45eae87-d78c-4f2c-9f81-27eb87b5bc94",id_gama:23,id_proveedor:null,paquete:0,pack:1,fecha_alta:"2025-06-10T04:00:00.000Z",table_estado:{id:"c45eae87-d78c-4f2c-9f81-27eb87b5bc94",name:"Disponible",color:"#10c94b",code:"disponible",id_gama:23,enabled:1},images:[{id:840,location:"https://w2w-landings.s3.amazonaws.com/linvermedia_test/dbd480ff0130270f_WhatsApp%20Image%202025-05-08%20at%2018.43.22%20%282%29.jpeg",id_producto:167,public:1,tag_temporal:null,tipo:"image",estado:1,posicion:5},{id:841,location:"https://w2w-landings.s3.amazonaws.com/linvermedia_test/c3416442188506c1_WhatsApp%20Image%202025-05-08%20at%2018.43.22.jpeg",id_producto:167,public:1,tag_temporal:null,tipo:"image",estado:1,posicion:3},{id:842,location:"https://w2w-landings.s3.amazonaws.com/linvermedia_test/69f7f669f37d3223_WhatsApp%20Image%202025-05-08%20at%2018.43.23.jpeg",id_producto:167,public:1,tag_temporal:null,tipo:"image",estado:1,posicion:4},{id:843,location:"https://w2w-landings.s3.amazonaws.com/linvermedia_test/08ffe62e7e731aa3_WhatsApp%20Image%202025-05-08%20at%2018.43.23%20%281%29.jpeg",id_producto:167,public:1,tag_temporal:null,tipo:"image",estado:1,posicion:2}]},{id:379,nombre:"Controladora LED Novastar Taurus TB2 Avanzada",precio:227.5,tipo_iva:"exento",descripcion:"Esta unidad asíncrona ofrece una mayor capacidad de carga y un rendimiento mejorado respecto a la TB1, haciéndola perfecta para proyectos de señalización digital más ambiciosos. Permite la publicación de contenido de forma remota a través de múltiples opciones de conectividad (Gigabit Ethernet, Wi-Fi, 4G opcional), asegurando una actualización de mensajes fluida y fiable en cualquier momento y lugar. Su diseño robusto y estable garantiza un funcionamiento 24/7, crucial para aplicaciones comerciales, informativas o publicitarias. La TB2 es la solución robusta y eficiente para una gestión inteligente de tu señalización LED.",descripcion_corta:"Taurus TB2 es una controladora LED asíncrona potente, ideal para redes de señalización digital medianas que exigen estabilidad y gestión flexible de contenido.",estado:1,props:{sku:"CTRL-TB2",gama:"controladoras",serie:"novastar_taurus",subgama:"controladoras_asincronas_reproductores_multimedia",ubicacion:"led_modular",proteccion_ip:"ip_20_productos_de_interior",tipo_servicio:null,sistema_operativo:"android",compatibilidad_de_senal:["red_lan_wi_fi_4_g","usb"]},tags:null,codigo:"T0000065",fecha_creado:"2025-06-02T01:09:38.307Z",id_captacion:null,id_estado:"c241a8a9-51a6-4274-831c-d11503726458",id_gama:23,id_proveedor:null,paquete:0,pack:0,fecha_alta:null,table_estado:{id:"c241a8a9-51a6-4274-831c-d11503726458",name:"No disponible",color:"#9c9c9c",code:"no_disponible",id_gama:23,enabled:1}}]),LINVERMEDIA_PRODUCT_DETAIL_MOCK_PROPS={isPublic:!0,data:null,fetching:!1,scale:1,count:0,gamaProps:PROPS},LinvermediaProductDetailPropsSchema=WidgetPropsSchema.extend({view:enumType(["detail","summary"]).optional(),title:stringType().optional(),gamaProps:arrayType(recordType(stringType(),anyType()))});var momentTimezone$1={exports:{}},momentTimezone={exports:{}};//! moment.js
44
44
  //! version : 2.30.1
45
45
  //! authors : Tim Wood, Iskren Chernev, Moment.js contributors
46
46
  //! license : MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@win2win/shared-ui",
3
- "version": "0.3.20",
3
+ "version": "0.3.22",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "files": [