Przeglądaj źródła

Fix babeal config

Tatiana Inama 7 lat temu
rodzic
commit
ab498bfaa7
9 zmienionych plików z 48 dodań i 14860 usunięć
  1. 5 2
      babel.config.js
  2. 3 3
      index.html
  3. 10 16
      js/vademecum.js
  4. 0 6881
      lib/polyfill.min.js
  5. 0 6293
      lib/react-dom.production.min.js
  6. 0 857
      lib/react.production.min.js
  7. 0 772
      lib/retard.js
  8. 28 34
      lib/vademecum.js
  9. 2 2
      package.json

+ 5 - 2
babel.config.js

@@ -3,9 +3,12 @@ const presets = [
       "@babel/env",
       {
         targets: {
-          esmodules: true,
+          edge: "17",
+          firefox: "60",
+          chrome: "67",
+          safari: "11.1",
+          ie: "11",
         },
-        useBuiltIns: "usage",
       },
     ], [
         "@babel/preset-react",

+ 3 - 3
index.html

@@ -8,7 +8,7 @@
     <link rel="stylesheet" href="css/main.css">
     <link href="https://fonts.googleapis.com/css?family=Fira+Sans|Raleway:300,300i,400,400i|Roboto" rel="stylesheet">
     <!-- Polyfill file for wkhtmltopdf -->
-    <script src="lib/polyfill.min.js"></script>
+    <script src="js/polyfill.min.js"></script>
     
   </head>
   <body>
@@ -42,8 +42,8 @@
 
     <!-- Load React. -->
     <!-- Note: when deploying, replace "development.js" with "production.min.js". -->
-    <script src="lib/react.production.min.js"></script>
-    <script src="lib/react-dom.production.min.js"></script>
+    <script src="js/react.production.min.js"></script>
+    <script src="js/react-dom.production.min.js"></script>
     <!-- Load our React component. -->
     <script src="lib/vademecum.js"></script>
 

+ 10 - 16
js/vademecum.js

@@ -1142,7 +1142,7 @@ const products = {
   ]
 }
 
-const e = React.createElement;
+const dom = React.createElement;
 
 
 const categories = [
@@ -1169,21 +1169,15 @@ const Section = (title, paragraph) => (
   </div>
 );
 
-const Product = (product, key) => (
-  <div className="product-container">
-
-  </div>
-);
-
 const Product = (product, key) => {
-  return e(
+  return dom(
     'div',
     {key, className: 'product-container'},
-    e('h3', {className: 'product-name'}, product.name),
-    e(
+    dom('h3', {className: 'product-name'}, product.name),
+    dom(
       'div',
       {className: 'product-body'},
-      e('p', {className: 'product-short-desc'}, product.shortDesc),
+      dom('p', {className: 'product-short-desc'}, product.shortDesc),
       Section('Descripción', product.fullDesc),
       Section('Aplicación', product.application)
     )
@@ -1191,11 +1185,11 @@ const Product = (product, key) => {
 }
 
 const Category = (categoryName, products) => {
-  return e(
+  return dom(
     'div',
     {className: 'category-container'},
-    e('div', {className: 'category-title', id: categoryName.toLowerCase().replace(' ', '-')}, 
-      e('h2', {className: 'category-name'}, categoryName)
+    dom('div', {className: 'category-title', id: categoryName.toLowerCase().replace(' ', '-')}, 
+      dom('h2', {className: 'category-name'}, categoryName)
     ),
     products.map((p, i) => Product(p, i))
   )
@@ -1203,7 +1197,7 @@ const Category = (categoryName, products) => {
 
 const Vademecum = () => {
      return categories.map((categoryName, i) => {
-      return e(
+      return dom(
         'div',
         {key: i},
         Category(categoryName, products[categoryName])
@@ -1213,7 +1207,7 @@ const Vademecum = () => {
 
 const domContainer = document.querySelector('#vademecum');
 
-ReactDOM.render(e(
+ReactDOM.render(dom(
   'div',
   {className: ''},
   Vademecum()

Plik diff jest za duży
+ 0 - 6881
lib/polyfill.min.js


Plik diff jest za duży
+ 0 - 6293
lib/react-dom.production.min.js


+ 0 - 857
lib/react.production.min.js

@@ -1,857 +0,0 @@
-/** @license React v16.8.6
- * react.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-'use strict';
-
-require("core-js/modules/es6.regexp.split");
-
-require("core-js/modules/es7.symbol.async-iterator");
-
-require("core-js/modules/es6.symbol");
-
-require("core-js/modules/es6.regexp.to-string");
-
-require("core-js/modules/web.dom.iterable");
-
-require("core-js/modules/es6.regexp.replace");
-
-(function (N, q) {
-  "object" === typeof exports && "undefined" !== typeof module ? module.exports = q() : "function" === typeof define && define.amd ? define(q) : N.React = q();
-})(void 0, function () {
-  function N(a, b, d, g, p, c, e, h) {
-    if (!a) {
-      a = void 0;
-      if (void 0 === b) a = Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else {
-        var n = [d, g, p, c, e, h],
-            f = 0;
-        a = Error(b.replace(/%s/g, function () {
-          return n[f++];
-        }));
-        a.name = "Invariant Violation";
-      }
-      a.framesToPop = 1;
-      throw a;
-    }
-  }
-
-  function q(a) {
-    for (var b = arguments.length - 1, d = "https://reactjs.org/docs/error-decoder.html?invariant=" + a, g = 0; g < b; g++) d += "&args[]=" + encodeURIComponent(arguments[g + 1]);
-
-    N(!1, "Minified React error #" + a + "; visit %s for the full message or use the non-minified dev environment for full errors and additional helpful warnings. ", d);
-  }
-
-  function t(a, b, d) {
-    this.props = a;
-    this.context = b;
-    this.refs = ba;
-    this.updater = d || ca;
-  }
-
-  function da() {}
-
-  function O(a, b, d) {
-    this.props = a;
-    this.context = b;
-    this.refs = ba;
-    this.updater = d || ca;
-  }
-
-  function u() {
-    if (!x) {
-      var a = c.expirationTime;
-      C ? P() : C = !0;
-
-      _D(ta, a);
-    }
-  }
-
-  function Q() {
-    var a = c,
-        b = c.next;
-    if (c === b) c = null;else {
-      var d = c.previous;
-      c = d.next = b;
-      b.previous = d;
-    }
-    a.next = a.previous = null;
-    d = a.callback;
-    b = a.expirationTime;
-    a = a.priorityLevel;
-    var g = f,
-        p = E;
-    f = a;
-    E = b;
-
-    try {
-      var n = d();
-    } finally {
-      f = g, E = p;
-    }
-
-    if ("function" === typeof n) if (n = {
-      callback: n,
-      priorityLevel: a,
-      expirationTime: b,
-      next: null,
-      previous: null
-    }, null === c) c = n.next = n.previous = n;else {
-      d = null;
-      a = c;
-
-      do {
-        if (a.expirationTime >= b) {
-          d = a;
-          break;
-        }
-
-        a = a.next;
-      } while (a !== c);
-
-      null === d ? d = c : d === c && (c = n, u());
-      b = d.previous;
-      b.next = d.previous = n;
-      n.next = d;
-      n.previous = b;
-    }
-  }
-
-  function F() {
-    if (-1 === k && null !== c && 1 === c.priorityLevel) {
-      x = !0;
-
-      try {
-        do Q(); while (null !== c && 1 === c.priorityLevel);
-      } finally {
-        x = !1, null !== c ? u() : C = !1;
-      }
-    }
-  }
-
-  function ta(a) {
-    x = !0;
-    var b = G;
-    G = a;
-
-    try {
-      if (a) for (; null !== c;) {
-        var d = l();
-
-        if (c.expirationTime <= d) {
-          do Q(); while (null !== c && c.expirationTime <= d);
-        } else break;
-      } else if (null !== c) {
-        do Q(); while (null !== c && !H());
-      }
-    } finally {
-      x = !1, G = b, null !== c ? u() : C = !1, F();
-    }
-  }
-
-  function ea(a, b, d) {
-    var g = void 0,
-        p = {},
-        c = null,
-        e = null;
-    if (null != b) for (g in void 0 !== b.ref && (e = b.ref), void 0 !== b.key && (c = "" + b.key), b) fa.call(b, g) && !ha.hasOwnProperty(g) && (p[g] = b[g]);
-    var h = arguments.length - 2;
-    if (1 === h) p.children = d;else if (1 < h) {
-      for (var f = Array(h), k = 0; k < h; k++) f[k] = arguments[k + 2];
-
-      p.children = f;
-    }
-    if (a && a.defaultProps) for (g in h = a.defaultProps, h) void 0 === p[g] && (p[g] = h[g]);
-    return {
-      $$typeof: y,
-      type: a,
-      key: c,
-      ref: e,
-      props: p,
-      _owner: R.current
-    };
-  }
-
-  function ua(a, b) {
-    return {
-      $$typeof: y,
-      type: a.type,
-      key: b,
-      ref: a.ref,
-      props: a.props,
-      _owner: a._owner
-    };
-  }
-
-  function S(a) {
-    return "object" === typeof a && null !== a && a.$$typeof === y;
-  }
-
-  function va(a) {
-    var b = {
-      "=": "=0",
-      ":": "=2"
-    };
-    return "$" + ("" + a).replace(/[=:]/g, function (a) {
-      return b[a];
-    });
-  }
-
-  function ia(a, b, d, g) {
-    if (I.length) {
-      var c = I.pop();
-      c.result = a;
-      c.keyPrefix = b;
-      c.func = d;
-      c.context = g;
-      c.count = 0;
-      return c;
-    }
-
-    return {
-      result: a,
-      keyPrefix: b,
-      func: d,
-      context: g,
-      count: 0
-    };
-  }
-
-  function ja(a) {
-    a.result = null;
-    a.keyPrefix = null;
-    a.func = null;
-    a.context = null;
-    a.count = 0;
-    10 > I.length && I.push(a);
-  }
-
-  function T(a, b, d, g) {
-    var c = typeof a;
-    if ("undefined" === c || "boolean" === c) a = null;
-    var e = !1;
-    if (null === a) e = !0;else switch (c) {
-      case "string":
-      case "number":
-        e = !0;
-        break;
-
-      case "object":
-        switch (a.$$typeof) {
-          case y:
-          case wa:
-            e = !0;
-        }
-
-    }
-    if (e) return d(g, a, "" === b ? "." + U(a, 0) : b), 1;
-    e = 0;
-    b = "" === b ? "." : b + ":";
-    if (Array.isArray(a)) for (var f = 0; f < a.length; f++) {
-      c = a[f];
-      var h = b + U(c, f);
-      e += T(c, h, d, g);
-    } else if (null === a || "object" !== typeof a ? h = null : (h = ka && a[ka] || a["@@iterator"], h = "function" === typeof h ? h : null), "function" === typeof h) for (a = h.call(a), f = 0; !(c = a.next()).done;) c = c.value, h = b + U(c, f++), e += T(c, h, d, g);else "object" === c && (d = "" + a, q("31", "[object Object]" === d ? "object with keys {" + Object.keys(a).join(", ") + "}" : d, ""));
-    return e;
-  }
-
-  function V(a, b, d) {
-    return null == a ? 0 : T(a, "", b, d);
-  }
-
-  function U(a, b) {
-    return "object" === typeof a && null !== a && null != a.key ? va(a.key) : b.toString(36);
-  }
-
-  function xa(a, b, d) {
-    a.func.call(a.context, b, a.count++);
-  }
-
-  function ya(a, b, d) {
-    var g = a.result,
-        c = a.keyPrefix;
-    a = a.func.call(a.context, b, a.count++);
-    Array.isArray(a) ? W(a, g, d, function (a) {
-      return a;
-    }) : null != a && (S(a) && (a = ua(a, c + (!a.key || b && b.key === a.key ? "" : ("" + a.key).replace(la, "$&/") + "/") + d)), g.push(a));
-  }
-
-  function W(a, b, d, g, c) {
-    var e = "";
-    null != d && (e = ("" + d).replace(la, "$&/") + "/");
-    b = ia(b, e, g, c);
-    V(a, ya, b);
-    ja(b);
-  }
-
-  function m() {
-    var a = ma.current;
-    null === a ? q("321") : void 0;
-    return a;
-  }
-
-  var e = "function" === typeof Symbol && Symbol.for,
-      y = e ? Symbol.for("react.element") : 60103,
-      wa = e ? Symbol.for("react.portal") : 60106,
-      r = e ? Symbol.for("react.fragment") : 60107,
-      X = e ? Symbol.for("react.strict_mode") : 60108,
-      za = e ? Symbol.for("react.profiler") : 60114,
-      Aa = e ? Symbol.for("react.provider") : 60109,
-      Ba = e ? Symbol.for("react.context") : 60110,
-      Ca = e ? Symbol.for("react.concurrent_mode") : 60111,
-      Da = e ? Symbol.for("react.forward_ref") : 60112,
-      Ea = e ? Symbol.for("react.suspense") : 60113,
-      Fa = e ? Symbol.for("react.memo") : 60115,
-      Ga = e ? Symbol.for("react.lazy") : 60116,
-      ka = "function" === typeof Symbol && Symbol.iterator,
-      na = Object.getOwnPropertySymbols,
-      Ha = Object.prototype.hasOwnProperty,
-      Ia = Object.prototype.propertyIsEnumerable,
-      J = function () {
-    try {
-      if (!Object.assign) return !1;
-      var a = new String("abc");
-      a[5] = "de";
-      if ("5" === Object.getOwnPropertyNames(a)[0]) return !1;
-      var b = {};
-
-      for (a = 0; 10 > a; a++) b["_" + String.fromCharCode(a)] = a;
-
-      if ("0123456789" !== Object.getOwnPropertyNames(b).map(function (a) {
-        return b[a];
-      }).join("")) return !1;
-      var d = {};
-      "abcdefghijklmnopqrst".split("").forEach(function (a) {
-        d[a] = a;
-      });
-      return "abcdefghijklmnopqrst" !== Object.keys(Object.assign({}, d)).join("") ? !1 : !0;
-    } catch (g) {
-      return !1;
-    }
-  }() ? Object.assign : function (a, b) {
-    if (null === a || void 0 === a) throw new TypeError("Object.assign cannot be called with null or undefined");
-    var d = Object(a);
-
-    for (var c, e = 1; e < arguments.length; e++) {
-      var f = Object(arguments[e]);
-
-      for (var k in f) Ha.call(f, k) && (d[k] = f[k]);
-
-      if (na) {
-        c = na(f);
-
-        for (var h = 0; h < c.length; h++) Ia.call(f, c[h]) && (d[c[h]] = f[c[h]]);
-      }
-    }
-
-    return d;
-  },
-      ca = {
-    isMounted: function isMounted(a) {
-      return !1;
-    },
-    enqueueForceUpdate: function enqueueForceUpdate(a, b, d) {},
-    enqueueReplaceState: function enqueueReplaceState(a, b, d, c) {},
-    enqueueSetState: function enqueueSetState(a, b, d, c) {}
-  },
-      ba = {};
-  t.prototype.isReactComponent = {};
-
-  t.prototype.setState = function (a, b) {
-    "object" !== typeof a && "function" !== typeof a && null != a ? q("85") : void 0;
-    this.updater.enqueueSetState(this, a, b, "setState");
-  };
-
-  t.prototype.forceUpdate = function (a) {
-    this.updater.enqueueForceUpdate(this, a, "forceUpdate");
-  };
-
-  da.prototype = t.prototype;
-  e = O.prototype = new da();
-  e.constructor = O;
-  J(e, t.prototype);
-  e.isPureReactComponent = !0;
-
-  var c = null,
-      G = !1,
-      f = 3,
-      k = -1,
-      E = -1,
-      x = !1,
-      C = !1,
-      Ja = Date,
-      Ka = "function" === typeof setTimeout ? setTimeout : void 0,
-      La = "function" === typeof clearTimeout ? clearTimeout : void 0,
-      oa = "function" === typeof requestAnimationFrame ? requestAnimationFrame : void 0,
-      pa = "function" === typeof cancelAnimationFrame ? cancelAnimationFrame : void 0,
-      qa,
-      ra,
-      Y = function Y(a) {
-    qa = oa(function (b) {
-      La(ra);
-      a(b);
-    });
-    ra = Ka(function () {
-      pa(qa);
-      a(l());
-    }, 100);
-  };
-
-  if ("object" === typeof performance && "function" === typeof performance.now) {
-    var Ma = performance;
-
-    var l = function l() {
-      return Ma.now();
-    };
-  } else l = function l() {
-    return Ja.now();
-  };
-
-  e = null;
-  "undefined" !== typeof window ? e = window : "undefined" !== typeof global && (e = global);
-
-  if (e && e._schedMock) {
-    e = e._schedMock;
-    var _D = e[0];
-    var P = e[1];
-    var H = e[2];
-    l = e[3];
-  } else if ("undefined" === typeof window || "function" !== typeof MessageChannel) {
-    var v = null,
-        Na = function Na(a) {
-      if (null !== v) try {
-        v(a);
-      } finally {
-        v = null;
-      }
-    };
-
-    _D = function D(a, b) {
-      null !== v ? setTimeout(_D, 0, a) : (v = a, setTimeout(Na, 0, !1));
-    };
-
-    P = function P() {
-      v = null;
-    };
-
-    H = function H() {
-      return !1;
-    };
-  } else {
-    "undefined" !== typeof console && ("function" !== typeof oa && console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"), "function" !== typeof pa && console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"));
-    var w = null,
-        K = !1,
-        z = -1,
-        A = !1,
-        Z = !1,
-        L = 0,
-        M = 33,
-        B = 33;
-
-    H = function H() {
-      return L <= l();
-    };
-
-    e = new MessageChannel();
-    var sa = e.port2;
-
-    e.port1.onmessage = function (a) {
-      K = !1;
-      a = w;
-      var b = z;
-      w = null;
-      z = -1;
-      var d = l(),
-          c = !1;
-      if (0 >= L - d) if (-1 !== b && b <= d) c = !0;else {
-        A || (A = !0, Y(aa));
-        w = a;
-        z = b;
-        return;
-      }
-
-      if (null !== a) {
-        Z = !0;
-
-        try {
-          a(c);
-        } finally {
-          Z = !1;
-        }
-      }
-    };
-
-    var aa = function aa(a) {
-      if (null !== w) {
-        Y(aa);
-        var b = a - L + B;
-        b < B && M < B ? (8 > b && (b = 8), B = b < M ? M : b) : M = b;
-        L = a + B;
-        K || (K = !0, sa.postMessage(void 0));
-      } else A = !1;
-    };
-
-    _D = function _D(a, b) {
-      w = a;
-      z = b;
-      Z || 0 > b ? sa.postMessage(void 0) : A || (A = !0, Y(aa));
-    };
-
-    P = function P() {
-      w = null;
-      K = !1;
-      z = -1;
-    };
-  }
-
-  var Oa = 0,
-      ma = {
-    current: null
-  },
-      R = {
-    current: null
-  };
-  e = {
-    ReactCurrentDispatcher: ma,
-    ReactCurrentOwner: R,
-    assign: J
-  };
-  J(e, {
-    Scheduler: {
-      unstable_cancelCallback: function unstable_cancelCallback(a) {
-        var b = a.next;
-
-        if (null !== b) {
-          if (b === a) c = null;else {
-            a === c && (c = b);
-            var d = a.previous;
-            d.next = b;
-            b.previous = d;
-          }
-          a.next = a.previous = null;
-        }
-      },
-      unstable_shouldYield: function unstable_shouldYield() {
-        return !G && (null !== c && c.expirationTime < E || H());
-      },
-      unstable_now: l,
-      unstable_scheduleCallback: function unstable_scheduleCallback(a, b) {
-        var d = -1 !== k ? k : l();
-        if ("object" === typeof b && null !== b && "number" === typeof b.timeout) b = d + b.timeout;else switch (f) {
-          case 1:
-            b = d + -1;
-            break;
-
-          case 2:
-            b = d + 250;
-            break;
-
-          case 5:
-            b = d + 1073741823;
-            break;
-
-          case 4:
-            b = d + 1E4;
-            break;
-
-          default:
-            b = d + 5E3;
-        }
-        a = {
-          callback: a,
-          priorityLevel: f,
-          expirationTime: b,
-          next: null,
-          previous: null
-        };
-        if (null === c) c = a.next = a.previous = a, u();else {
-          d = null;
-          var g = c;
-
-          do {
-            if (g.expirationTime > b) {
-              d = g;
-              break;
-            }
-
-            g = g.next;
-          } while (g !== c);
-
-          null === d ? d = c : d === c && (c = a, u());
-          b = d.previous;
-          b.next = d.previous = a;
-          a.next = d;
-          a.previous = b;
-        }
-        return a;
-      },
-      unstable_runWithPriority: function unstable_runWithPriority(a, b) {
-        switch (a) {
-          case 1:
-          case 2:
-          case 3:
-          case 4:
-          case 5:
-            break;
-
-          default:
-            a = 3;
-        }
-
-        var d = f,
-            c = k;
-        f = a;
-        k = l();
-
-        try {
-          return b();
-        } finally {
-          f = d, k = c, F();
-        }
-      },
-      unstable_next: function unstable_next(a) {
-        switch (f) {
-          case 1:
-          case 2:
-          case 3:
-            var b = 3;
-            break;
-
-          default:
-            b = f;
-        }
-
-        var d = f,
-            c = k;
-        f = b;
-        k = l();
-
-        try {
-          return a();
-        } finally {
-          f = d, k = c, F();
-        }
-      },
-      unstable_wrapCallback: function unstable_wrapCallback(a) {
-        var b = f;
-        return function () {
-          var d = f,
-              c = k;
-          f = b;
-          k = l();
-
-          try {
-            return a.apply(this, arguments);
-          } finally {
-            f = d, k = c, F();
-          }
-        };
-      },
-      unstable_getFirstCallbackNode: function unstable_getFirstCallbackNode() {
-        return c;
-      },
-      unstable_pauseExecution: function unstable_pauseExecution() {},
-      unstable_continueExecution: function unstable_continueExecution() {
-        null !== c && u();
-      },
-      unstable_getCurrentPriorityLevel: function unstable_getCurrentPriorityLevel() {
-        return f;
-      },
-      unstable_IdlePriority: 5,
-      unstable_ImmediatePriority: 1,
-      unstable_LowPriority: 4,
-      unstable_NormalPriority: 3,
-      unstable_UserBlockingPriority: 2
-    },
-    SchedulerTracing: {
-      __interactionsRef: null,
-      __subscriberRef: null,
-      unstable_clear: function unstable_clear(a) {
-        return a();
-      },
-      unstable_getCurrent: function unstable_getCurrent() {
-        return null;
-      },
-      unstable_getThreadID: function unstable_getThreadID() {
-        return ++Oa;
-      },
-      unstable_subscribe: function unstable_subscribe(a) {},
-      unstable_trace: function unstable_trace(a, b, d) {
-        return d();
-      },
-      unstable_unsubscribe: function unstable_unsubscribe(a) {},
-      unstable_wrap: function unstable_wrap(a) {
-        return a;
-      }
-    }
-  });
-  var fa = Object.prototype.hasOwnProperty,
-      ha = {
-    key: !0,
-    ref: !0,
-    __self: !0,
-    __source: !0
-  },
-      la = /\/+/g,
-      I = [];
-  r = {
-    Children: {
-      map: function map(a, b, d) {
-        if (null == a) return a;
-        var c = [];
-        W(a, c, null, b, d);
-        return c;
-      },
-      forEach: function forEach(a, b, d) {
-        if (null == a) return a;
-        b = ia(null, null, b, d);
-        V(a, xa, b);
-        ja(b);
-      },
-      count: function count(a) {
-        return V(a, function () {
-          return null;
-        }, null);
-      },
-      toArray: function toArray(a) {
-        var b = [];
-        W(a, b, null, function (a) {
-          return a;
-        });
-        return b;
-      },
-      only: function only(a) {
-        S(a) ? void 0 : q("143");
-        return a;
-      }
-    },
-    createRef: function createRef() {
-      return {
-        current: null
-      };
-    },
-    Component: t,
-    PureComponent: O,
-    createContext: function createContext(a, b) {
-      void 0 === b && (b = null);
-      a = {
-        $$typeof: Ba,
-        _calculateChangedBits: b,
-        _currentValue: a,
-        _currentValue2: a,
-        _threadCount: 0,
-        Provider: null,
-        Consumer: null
-      };
-      a.Provider = {
-        $$typeof: Aa,
-        _context: a
-      };
-      return a.Consumer = a;
-    },
-    forwardRef: function forwardRef(a) {
-      return {
-        $$typeof: Da,
-        render: a
-      };
-    },
-    lazy: function lazy(a) {
-      return {
-        $$typeof: Ga,
-        _ctor: a,
-        _status: -1,
-        _result: null
-      };
-    },
-    memo: function memo(a, b) {
-      return {
-        $$typeof: Fa,
-        type: a,
-        compare: void 0 === b ? null : b
-      };
-    },
-    useCallback: function useCallback(a, b) {
-      return m().useCallback(a, b);
-    },
-    useContext: function useContext(a, b) {
-      return m().useContext(a, b);
-    },
-    useEffect: function useEffect(a, b) {
-      return m().useEffect(a, b);
-    },
-    useImperativeHandle: function useImperativeHandle(a, b, d) {
-      return m().useImperativeHandle(a, b, d);
-    },
-    useDebugValue: function useDebugValue(a, b) {},
-    useLayoutEffect: function useLayoutEffect(a, b) {
-      return m().useLayoutEffect(a, b);
-    },
-    useMemo: function useMemo(a, b) {
-      return m().useMemo(a, b);
-    },
-    useReducer: function useReducer(a, b, d) {
-      return m().useReducer(a, b, d);
-    },
-    useRef: function useRef(a) {
-      return m().useRef(a);
-    },
-    useState: function useState(a) {
-      return m().useState(a);
-    },
-    Fragment: r,
-    StrictMode: X,
-    Suspense: Ea,
-    createElement: ea,
-    cloneElement: function cloneElement(a, b, d) {
-      null === a || void 0 === a ? q("267", a) : void 0;
-      var c = void 0,
-          e = J({}, a.props),
-          f = a.key,
-          k = a.ref,
-          h = a._owner;
-
-      if (null != b) {
-        void 0 !== b.ref && (k = b.ref, h = R.current);
-        void 0 !== b.key && (f = "" + b.key);
-        var l = void 0;
-        a.type && a.type.defaultProps && (l = a.type.defaultProps);
-
-        for (c in b) fa.call(b, c) && !ha.hasOwnProperty(c) && (e[c] = void 0 === b[c] && void 0 !== l ? l[c] : b[c]);
-      }
-
-      c = arguments.length - 2;
-      if (1 === c) e.children = d;else if (1 < c) {
-        l = Array(c);
-
-        for (var m = 0; m < c; m++) l[m] = arguments[m + 2];
-
-        e.children = l;
-      }
-      return {
-        $$typeof: y,
-        type: a.type,
-        key: f,
-        ref: k,
-        props: e,
-        _owner: h
-      };
-    },
-    createFactory: function createFactory(a) {
-      var b = ea.bind(null, a);
-      b.type = a;
-      return b;
-    },
-    isValidElement: S,
-    version: "16.8.6",
-    unstable_ConcurrentMode: Ca,
-    unstable_Profiler: za,
-    __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: e
-  };
-  r = (X = {
-    default: r
-  }, r) || X;
-  return r.default || r;
-});

+ 0 - 772
lib/retard.js

@@ -1,772 +0,0 @@
-'use strict';
-
-require("core-js/modules/es6.regexp.replace");
-
-var products = {
-  "Protección Intensiva": [{
-    "category": ["Protección Intensiva"],
-    "shortDesc": "Potente acción antioxidante, un magnífico aporte de firmeza y elasticidad que mejora el color, la luminosidad y la hidratación de la piel retrasando el envejecimiento cutáneo. ",
-    "fullDesc": "Crema antioxidante, humecto – nutritiva, potenciada por la acción de una micro alga, Espirulina, que contiene los veinte aminoácidos en perfecto balance, minerales y proteínas. Textura suave, fluida. Indicada para pieles normales, deshidratadas, menopausia.",
-    "application": "Tras limpiar y tonificar rostro, cuello y escote, aplicar mañana y noche con un suave masaje.",
-    "actives": ["Vitamina A", "Vitamina C", "Vitamina E", "Espirulina"],
-    "ph": "",
-    "variants": [{
-      "code": 1001,
-      "content": "60 ml",
-      "price": 250,
-      "sellPrice": 500
-    }, {
-      "code": 2001,
-      "content": "250 ml.",
-      "price": 398,
-      "sellPrice": ""
-    }],
-    "name": "Complex Bio Vitamins A+E+C"
-  }, {
-    "category": ["Protección Intensiva"],
-    "shortDesc": "Una textura única, enriquecida con ingredientes capaces de activar signos claves de la juventud de la piel. Las arrugas se suavizan visiblemente. La piel recupera su luminosidad y turgencia",
-    "fullDesc": "Formulada específicamente para cubrir las necesidades de las pieles más secas. Dota a la piel de una nueva capacidad de autorregeneración y autodefensa. Fórmula rica y exclusiva, perfectamente equilibrada, de alto poder antioxidante. Reduce la profundidad y longitud de las arrugas y previene su aparición prematura. Reafirmante.",
-    "application": "Tras limpiar y tonificar rostro, cuello y escote, aplicar diariamente por la noche. Dependiendo de las necesidades de la piel, se combinará la Crema Sublime Uvit",
-    "actives": ["Polifenoles de pepitas de uva", "Salvia, Tocoferol", "Aceite de Jojoba"],
-    "ph": "",
-    "variants": [{
-      "code": 1002,
-      "content": "60 ml.",
-      "price": 250,
-      "sellPrice": 500
-    }, {
-      "code": 2002,
-      "content": "250 ml.",
-      "price": 398,
-      "sellPrice": ""
-    }],
-    "name": "Sublime Uvit - Crema Reparadora"
-  }, {
-    "category": ["Protección Intensiva"],
-    "shortDesc": "Acción altamente hidratante y regeneradora en pieles desvitalizadas. Promueve la formación de colágeno, Ayuda a evitar la pérdida de agua transepidérmica, estimula la liberación de citoquinas. Efecto luminoso en pieles secas, con necesidades. Compensa las carencias de la piel. Ayuda a disminuir estrías y cicatrices.",
-    "fullDesc": "Piel más confortable y aparece revitalizada. Incluso al final del día, la piel se siente nutrida e hidratada. Los signos de cansancio y de la edad parecen reducidos. La piel visiblemente reparada, con toda la luminosidad recuperada. Su textura rica y densa combate las arrugas y líneas de expresión y proporciona el confort que las pieles secas necesitan. Se absorbe con rapidez sin restos grasos.",
-    "application": "Aplicar en rostro, cuello y escote, luego de la crema Sublime Uvit. Aplicar en estrías y cicatrices con suave masaje circular.",
-    "actives": ["Acido Glicólico ( 7%)", "Extracto de algas"],
-    "ph": "",
-    "variants": [{
-      "code": 1003,
-      "content": "50 ml.",
-      "price": 250,
-      "sellPrice": 500
-    }, {
-      "code": 2003,
-      "content": "120 ml.",
-      "price": 380,
-      "sellPrice": ""
-    }],
-    "name": "Audace - Glico Activo"
-  }, {
-    "category": ["Protección Intensiva"],
-    "shortDesc": "Mejora la textura, la elasticidad, la tonicidad y la firmeza. Reduce la flacidez. ",
-    "fullDesc": "Mejora el proceso de renovación celular, ayuda a normalizar la queratinización, afinando y eliminando imperfecciones, mejora el sostén. Disminuye la profundidad de las arrugas, los signos visibles de cansancio, disminuye el contraste de manchas. Tono de piel mas uniforme y elástica, efecto matificante. Indicado para piel normal, cutis graso, de más de treinta años. Puede utilizarse en verano",
-    "application": "",
-    "actives": ["Retinol", "Aloe Barbadensis extract"],
-    "ph": "",
-    "variants": [{
-      "code": 1004,
-      "content": "50 ml.",
-      "price": 210,
-      "sellPrice": 420
-    }, {
-      "code": 2004,
-      "content": "120 ml.",
-      "price": 350,
-      "sellPrice": ""
-    }],
-    "name": "Bisome Retinol - Fluido Facial"
-  }, {
-    "category": ["Protección Intensiva"],
-    "shortDesc": "Una mirada más joven, las ojeras y los signos de cansancio disminuyen. Piel más fresca, clara y luminosa.",
-    "fullDesc": "Crema activa, formulada específicamente para ayudar a recuperar las funciones principales de la piel y mejorar la comunicación intercelular. Mejora la micro circulación palpebral, disminuye la hiperpigmentación, aumenta la firmeza. Protección activa frente al crono y foto envejecimiento. Testeadodermatológicamente.",
-    "application": "Aplicar diariamente, por la mañana.",
-    "actives": ["Polifenoles de pepitas de uva", "Citopeptinas", "Vitamina C", "Alfabisabolol", "FPS"],
-    "ph": "",
-    "variants": [{
-      "code": 1006,
-      "content": "30 ml.",
-      "price": 280,
-      "sellPrice": 560
-    }],
-    "name": "Repair Eye Contour"
-  }, {
-    "category": ["Protección Intensiva"],
-    "shortDesc": "Un tratamiento para impulsar las defensas naturales de la piel y hacerla más resistente a los efectos del estrés diario. Los signos de cansancio acumulado desaparecen, piel confortable y aliviada.",
-    "fullDesc": "Suero antioxidante intensivo, específicamente formulado para proteger a la piel de la acción medioambiental. Efecto relax en líneas de expresión. Reafirmante. Piel de seda. Indicado para todo tipo de piel. Testeado dermatológicamente.",
-    "application": "Tratamiento de peeling: Dejar actuar diez minutos, sin retirar aplicar RefreshingMask durante diez minutos, retirar con esponja y agua. Permeación de activos: Aplicar peeling Bio Regulador, dejar actuar durante tres minutos, retirar, aplicar activos concentrados del 1 al 7 de acuerdo al tratamiento a realizar",
-    "actives": ["Polifenoles de pepitas de uva", "Citopeptinas", "Vitamina C", "FPS"],
-    "ph": "5,5",
-    "variants": [{
-      "code": 1007,
-      "content": "50 ml.",
-      "price": 220,
-      "sellPrice": 440
-    }, {
-      "code": 2007,
-      "content": "120 ml.",
-      "price": 380,
-      "sellPrice": ""
-    }],
-    "name": "Uvit Serum Defense"
-  }, {
-    "category": ["Protección Intensiva"],
-    "shortDesc": "Innovadora fórmula desarrollada con un vehículo especializado, que no solo mejora la apariencia de la piel, sino que también actúa frente a las causas que generan el acné",
-    "fullDesc": "Específicamente formulado para actuar frente a las causas que generan el acné. Normaliza el PH de la piel, antiséptico, antinflamatorio, anti pruriginoso. Evita la deshidratación de la piel. FPS. Puede combinarse con peeling Biorregulador y Refreshing Mask en tratamiento en gabinete profesional",
-    "application": "Acné: tres aplicaciones diarias, mañana, tarde y noche. No retirar. Piel seborreica: Aplicar por la mañana. No retirar.",
-    "actives": ["Acido Salicílico", "Retinol, Resorcina", "FPS"],
-    "ph": "4,5",
-    "variants": [{
-      "code": 1011,
-      "content": "50 ml.",
-      "price": 180,
-      "sellPrice": 360
-    }, {
-      "code": 2011,
-      "content": "200 ml.",
-      "price": 320,
-      "sellPrice": ""
-    }],
-    "name": "Acne Skin Cleans"
-  }, {
-    "category": ["Protección Intensiva"],
-    "shortDesc": "Crema de tratamiento anti-edad inteligente, ayuda a proteger a la piel frente al paso del tiempo. La piel infunde con un desarrollado cóctel de embellecimiento. No sólo corrige, protege su piel de las agresiones externas.",
-    "fullDesc": "Un todo dinámico y simultáneo que protege las barreras de la piel para prevenir la pérdida de humedad, compensar, estimular y equilibrar la tonalidad, dejando la piel iluminada y naturalmente magnífica. Anti-envejecimiento . Hidratatante. Minimiza los poros. Minimiza Imperfecciones. Reduce Enrojecimiento. Mejora la tonalidad. Ilumina. Estimula las defensas. Mejora la vitalidad. Reafirma. Estimula la tonalidad. Estimula la tonallidad en forma pareja.",
-    "application": "Aplicar con la piel limpia por la mañana.",
-    "actives": ["Rosa Mosqueta", "Gluconolactona", "Sésamo", "Beta Caroteno", "Filtro Solar"],
-    "ph": "",
-    "variants": [{
-      "code": 1039,
-      "content": "50 ml.",
-      "price": 230,
-      "sellPrice": 460
-    }],
-    "name": "DD Cream"
-  }, {
-    "category": ["Protección Intensiva"],
-    "shortDesc": "Su fórmula rica en despigmentantes, con características anti- envejecimiento, anti-inflamatorios, actúa en un todo dinámico y simultáneo.",
-    "fullDesc": "Estimula los mecanismos de defensa, disminuye el estrés oxidativo, ayudando a disminuir los mecanismos de hiperpigmentación propios de la cascada pigmentaria. Marcada acción anti-envejecimiento, descongestiva- purificante. No contiene parabenos. Despigmentante. Homogeneizante. Anti-envejecimiento. Antioxidante. Descongestiva. Purificante. Foto-protectora.",
-    "application": "Aplicar diariamente por la noche, en las zonas hiperpigmentadas, dejar actuar durante 2 minutos, y extender a todo el rostro. Se puede potenciar el tratamiento con la aplicación de ampollas SKIN-DOSE.",
-    "actives": ["Skin Biolight", "Uva Ursi", "Regaliz", "Filtro solar"],
-    "ph": "",
-    "variants": [{
-      "code": 1040,
-      "content": "50 ml.",
-      "price": 200,
-      "sellPrice": 400
-    }, {
-      "code": 2040,
-      "content": "200 ml",
-      "price": 340,
-      "sellPrice": ""
-    }],
-    "name": "Whitening Cream"
-  }, {
-    "category": ["Protección Intensiva"],
-    "shortDesc": "Crema de tratamiento específicamente formulada para el cuidado de la piel sensible, rica en ácidos grasos insaturados, tocoferoles, beta-glucanos, minerales, oligoelementos y vitaminas que ayudan a calmar y proteger a la piel, frente a la acción medioambiental. Triple acción protectora del colágeno. Regeneradora.",
-    "fullDesc": "Equilibrante - reafirmante - antioxidante. Efecto voluminizante en lineas dinámicas. Disminuye la inflamacion. Hidrata la piel. Estimula la formación de colágeno. Estimula las defensas. Elimina bacterias. Reduce el enrojecimiento .",
-    "application": "Aplicar diariamente por la mañana Sensitive Skin, el tratamiento puede potenciarse con Monodosis-Vitamina F aplicadas durante la noche.",
-    "actives": ["Argán Oil", "Sepilifth DPHP", "Avena Sativa", "Filtro solar"],
-    "ph": "",
-    "variants": [{
-      "code": 1041,
-      "content": "50 ml.",
-      "price": 200,
-      "sellPrice": 400
-    }, {
-      "code": 2041,
-      "content": "200 ml",
-      "price": 340,
-      "sellPrice": ""
-    }],
-    "name": "Sensitive Cream"
-  }],
-  "Higiene": [{
-    "category": ["Higiene"],
-    "shortDesc": "Emulsión de limpieza, demaquillante, de PH neutro, hipoalergénica. Indicada para todo tipo de piel, aún las más sensibles.",
-    "fullDesc": "Limpia profundamente la epidermis, se equilibra el pH de la piel. Elimina suavemente las impurezas sin dañar la humedad y el equilibrio natural. Prepara, purificará y acondiciona a la piel para recibir los beneficios óptimos de los mejores cuidados. La piel está lista para recibir los productos propios de la Fase de Tratamiento.",
-    "application": "Aplicar con suaves maniobras, retirar",
-    "actives": ["Matricaria chamomilla"],
-    "ph": "7",
-    "variants": [{
-      "code": 1005,
-      "content": "120 ml.",
-      "price": 160,
-      "sellPrice": 320
-    }, {
-      "code": 2005,
-      "content": "500 ml.",
-      "price": 290,
-      "sellPrice": ""
-    }],
-    "name": "Emulsión de Higiene"
-  }, {
-    "category": ["Higiene"],
-    "shortDesc": "Piel fresca, descongestiva y limpia. Prepara a la piel para recibir el tratamiento posterior",
-    "fullDesc": "Suspensión de micro gránulos de silicatos naturales de tamaño heterogéneo. Indicado para exfoliación manual, aún en pieles sensibles. Hipoalergénico. Facial y corporal",
-    "application": "Aplicar sobre la piel, humedecer con agua y trabajar en forma suave y circular de tres a cinco minutos. Retirar con esponja y agua.",
-    "actives": ["Silicatos naturales"],
-    "ph": "",
-    "variants": [{
-      "code": 2008,
-      "content": "250 ml.",
-      "price": 290,
-      "sellPrice": ""
-    }],
-    "name": "Exfoliating Scrub"
-  }],
-  "Máscaras": [{
-    "category": ["Máscaras"],
-    "shortDesc": "Los ácidos Linoleico y Linolénico, aportan mayor protección a las células de Langerhans, mejorando notablemente la protección de la piel",
-    "fullDesc": "Máscara activa. Ayuda a aumentar los mecanismos de defensa de la piel, aportando beneficios en tratamientos de rosácea, acné, cutis graso, manchas cutáneas y pieles desvitalizadas. Aporta ácidos grasos insaturados esenciales, disminuye la inflamación, ayuda a normalizar la piel",
-    "application": "Aplicar con la piel limpia, luego de retirar Exfoliating Scrub, percibirá un suave picor durante un minuto al llegar a las zonas más profundas de la piel. Dejar actuar durante 20 minutos, observará al retirar una piel suave, limpia y fresca, aún en las instancias más sensibles. Puede combinarse en métodos sinérgicos con Micropeeling o Peeling Biorregulador",
-    "actives": ["Acido Linoleico", "Acido Linolénico", "Avena Sativa", "Malva", "Matricaria Chamomilla"],
-    "ph": "5,5",
-    "variants": [{
-      "code": 2009,
-      "content": "250 ml.",
-      "price": 330,
-      "sellPrice": ""
-    }],
-    "name": "Refreshing Mask"
-  }, {
-    "category": ["Máscaras"],
-    "shortDesc": "SpecificMask aporta máxima tecnología en renovación celular, disminuye las arrugas más profundas de la piel otorgando firmeza y radiante apariencia. Piel más lisa que recupera la belleza y juventud",
-    "fullDesc": "Evita la pérdida de agua transepidérmica. Disminuye arrugas dinámicas. Puede aplicarse sobre labios y párpados, aún en pieles sensibles. Aplicar en combinación con Monodosis Específicas o Micropeeling en tratamientos intensivos anti-envejecimiento.",
-    "application": "Aplicar en rostro, cuello y escote, dejar actuar durante veinte minutos, retirar mediante esponja y agua",
-    "actives": ["Vitamina A", "Vitamina E", "Acido Glicólico", "Acido Salicílico"],
-    "ph": "5,5",
-    "variants": [{
-      "code": 2010,
-      "content": "250 ml.",
-      "price": 350,
-      "sellPrice": ""
-    }],
-    "name": "Specific Mask"
-  }],
-  "Peeling": [{
-    "category": ["Peeling"],
-    "shortDesc": "Fórmula de alto desarrollo con doble función: tratamientos de peeling y aumento en la penetrabilidad de activos, mejorando la renovación celular.",
-    "fullDesc": "Fórmula de alto desarrollo con doble función: tratamientos de peeling, y aumento de penetrabilidad de activos, mejorando la recuperación celular. Indicado para Acné, piel seborreica, cutis graso, disminuir líneas de expresión.",
-    "application": "Tratamiento de peeling: Dejar actuar diez minutos, sin retirar aplicar Refreshing Mask durante diez minutos, retirar. Permeación de activos: Aplicar peeling Bio Regulador, dejar actuar durante tres minutos, retirar, aplicar Monodosis específicas o activos concentrados del 1 al 7 de acuerdo al tratamiento a realizar",
-    "actives": ["Acido Salicílico", "Acido Láctico", "Resorcina"],
-    "ph": "3,5",
-    "variants": [{
-      "code": 2012,
-      "content": "30 ml.",
-      "price": 165,
-      "sellPrice": ""
-    }],
-    "name": "Peeling Bio Regulador"
-  }, {
-    "category": ["Peeling"],
-    "shortDesc": "Peeling de efecto regenerativo de la piel. Ayuda a regular la melanogénesis actuando como blanqueador",
-    "fullDesc": "Peeling de efecto regenerativo de la piel. Ayuda a regular la melanogénesis, actuando como blanqueador. Ayuda a disminuir las imperfecciones de la piel, manchas cutáneas y de manos. Indicado para todo tipo de piel.",
-    "application": "Aplicar sobre piel limpia, luego de retirar ExfoliatingScrub, trabajar las zonas de manchas cutáneas en forma suave y circular durante tres a cinco minutos, extender a toda la piel del rostro y cuello. Dejar actuar durante cinco minutos y sin retirar aplicar SpecificMasck. Dejar actuar quince minutos y retirar mediante esponja y agua.",
-    "actives": ["Acido Glicólico", "Acido Fítico", "Acido Ascórbico"],
-    "ph": "3,5 / 10 %",
-    "variants": [{
-      "code": 2013,
-      "content": "30 ml.",
-      "price": 170,
-      "sellPrice": ""
-    }],
-    "name": "Micropeeling"
-  }],
-  "Ácido Hialurónico": [{
-    "category": ["Ácido Hialurónico"],
-    "shortDesc": "Microdermolift activa de forma inteligente los mecanismos propios de la piel, mediante la acción sinérgica del ácido hialurónico de máxima pureza y vehículos especializados.",
-    "fullDesc": "Piel hidratada con intensidad lisa y luminosa por más tiempo. Un contorno de ojos que alivia para reducir bolsas palpebrales y los signos de fatiga. Especialmente formulado para tratar la delicada zona del contorno de los ojos, esta única textura, reduce líneas de expresión y arrugas con una sensación aterciopelada",
-    "application": "Aplicar en la zona del contorno de los ojos y líneas de expresión",
-    "actives": ["Acido Hialurónico"],
-    "ph": "5,5",
-    "variants": [{
-      "code": 1016,
-      "content": "20 ml.",
-      "price": 260,
-      "sellPrice": 520
-    }],
-    "name": "Microdermo Lift"
-  }, {
-    "category": ["Ácido Hialurónico"],
-    "shortDesc": "Serum multi-acción intensivo, disminuye manchas cutáneas y evita el efecto rebote post-estacional. Aporta una intensa hidratación y resultados de suavidad incomparables",
-    "fullDesc": "Piel más firme, suave y elástica. Mejora visiblemente la luminosidad, coloración e hidratación profunda de la piel. Indicado para piel normal, manchas cutáneas, piel deshidratada. ",
-    "application": "Aplicar por la mañana",
-    "actives": ["Acido Hialurónico", "Acido Láctico", "FPS"],
-    "ph": "5,5",
-    "variants": [{
-      "code": 1017,
-      "content": "50 ml.",
-      "price": 220,
-      "sellPrice": 440
-    }, {
-      "code": 2017,
-      "content": "120 ml.",
-      "price": 380,
-      "sellPrice": ""
-    }],
-    "name": "Hydra Intensive Serum"
-  }, {
-    "category": ["Ácido Hialurónico"],
-    "shortDesc": "Resblece la hidratación, mejora la renovación celular, suavidad, elasticidad y firmeza, prolongando la juventud de la piel.",
-    "fullDesc": "Fórmula intensiva de acción sinérgica combinada, ayuda a reforzar la barrera protectora de la piel, para lograr una piel hidratada y re-nutrida. Protege a la piel del stress medioambiental. Aporta compensación intensa, inmediata, continua y calma las pieles sensibles.",
-    "application": "Aplicar por la mañana",
-    "actives": ["Acido Hialurónico", "Azuleno", "NMF", "FPS"],
-    "ph": "5,5",
-    "variants": [{
-      "code": 1018,
-      "content": "50 ml.",
-      "price": 210,
-      "sellPrice": 420
-    }, {
-      "code": 2018,
-      "content": "120 ml.",
-      "price": 320,
-      "sellPrice": ""
-    }],
-    "name": "Hydra Intensive Tonico"
-  }],
-  "Hombres": [{
-    "category": ["Hombres"],
-    "shortDesc": "Crema facial ultra ligera y elástica, específicamente formulada para la piel del hombre",
-    "fullDesc": "Piel lisa y firme. Disminuye líneas de expresión y arrugas. Indicado para piel con tendencia a seca",
-    "application": "aplicar por la mañana y por la noche",
-    "actives": ["retinol"],
-    "ph": "5",
-    "variants": [{
-      "code": 1020,
-      "content": "50 ml.",
-      "price": 210,
-      "sellPrice": 420
-    }],
-    "name": "RENOVATIO Retinol For Men"
-  }, {
-    "category": ["Hombres"],
-    "shortDesc": "Serum intensivo formulado específicamente para la piel del hombre con filtro solar.",
-    "fullDesc": "Disminuye líneas de expresión y arrugas.",
-    "application": "Aplicar después de afeitar, por la mañana y por la noche",
-    "actives": ["polifenoles de pepitas de uva", "Vitamina C", "FPS"],
-    "ph": "5,5",
-    "variants": [{
-      "code": 1021,
-      "content": "50 ml.",
-      "price": 210,
-      "sellPrice": 420
-    }],
-    "name": "RENOVATIO Serum For Men"
-  }, {
-    "category": ["Hombres"],
-    "shortDesc": "Crema facial ultra ligera y elástica formulada específicamente para la piel del hombre.",
-    "fullDesc": "Favorece el normal desarrollo de la piel, disminuye la oleosidad, aspecto saludable, uniforme y matificante de la piel. Indicado para cutis graso",
-    "application": "Aplicar después de afeitar, por la mañana y por la noche.",
-    "actives": ["Acido Salicílico", "Resorcina", "FPS"],
-    "ph": "",
-    "variants": [{
-      "code": 1022,
-      "content": "50 ml.",
-      "price": 210,
-      "sellPrice": 420
-    }],
-    "name": "RENOVATIO Skin Control For Men"
-  }],
-  "Activos Concentrados": [{
-    "category": ["Activos Concentrados"],
-    "shortDesc": "Fórmula de tecnología innovadora, que ayuda a enriquecer, estimular y proteger a la piel de la acción de los radicales libres, compensando las carencias de la piel. Facial y corporal.",
-    "fullDesc": "Puede combinarse con aparatología específica para cada tratamiento en particular",
-    "application": "Indicada para el tratamiento profesional.",
-    "actives": ["Vitamina C Liposomada"],
-    "ph": "",
-    "variants": [{
-      "code": 2023,
-      "content": "130 ml.",
-      "price": 210,
-      "sellPrice": ""
-    }],
-    "name": "1 Vitamina C Liposomada"
-  }, {
-    "category": ["Activos Concentrados"],
-    "shortDesc": "Concentrado activo antioxidante, ayuda a mejorar la firmeza y tonicidad de los tejidos, disminuye el fotoenvejecimieto de la piel. Facial y corporal.",
-    "fullDesc": "Puede combinarse con aparatología específica para cada tratamiento en particular",
-    "application": "Indicada para el tratamiento profesional.",
-    "actives": ["Acido Lipoico"],
-    "ph": "",
-    "variants": [{
-      "code": 2024,
-      "content": "130 ml.",
-      "price": 200,
-      "sellPrice": ""
-    }],
-    "name": "2 Acido Lipoico"
-  }, {
-    "category": ["Activos Concentrados"],
-    "shortDesc": "Serum concentrado activo, específicamente formulado para compensar las carencias de la piel involutiva, mediante la acción sinérgica de oligoelementos marinos y minerales. Facial y corporal",
-    "fullDesc": "Puede combinarse con aparatología específica para cada tratamiento en particular",
-    "application": "Indicada para el tratamiento profesional.",
-    "actives": ["Oligoelementos marinos", "Zinc", "Cobre"],
-    "ph": "",
-    "variants": [{
-      "code": 2025,
-      "content": "130 ml.",
-      "price": 190,
-      "sellPrice": ""
-    }],
-    "name": "3 Oligoelementos Marinos +Zn+Cu"
-  }, {
-    "category": ["Activos Concentrados"],
-    "shortDesc": "Lipolítico. Específicamente formulado para el tratamiento de adiposidad localizada en abdomen, cintura y flancos, caderas, glúteos, parte interna de muslos, rodillas y brazos",
-    "fullDesc": "Puede combinarse con aparatología específica para cada tratamiento en particular",
-    "application": "Indicada para el tratamiento profesional.",
-    "actives": ["Fosfatidilcolina"],
-    "ph": "",
-    "variants": [{
-      "code": 2026,
-      "content": "130 ml.",
-      "price": 210,
-      "sellPrice": ""
-    }],
-    "name": "4 Fosfatidilcolina"
-  }, {
-    "category": ["Activos Concentrados"],
-    "shortDesc": "Celu active concentrado, específicamente formulado para ayudar a disminuir la celulitis, reafirmar y modelar, en el tratamiento corporal.",
-    "fullDesc": "Puede combinarse con aparatología específica para cada tratamiento en particular",
-    "application": "Indicada para el tratamiento profesional.",
-    "actives": ["Centella Asiática"],
-    "variants": [{
-      "code": 2027,
-      "content": "130 ml.",
-      "price": 200,
-      "sellPrice": ""
-    }],
-    "name": "5 Centella Asiatica"
-  }, {
-    "category": ["Activos Concentrados"],
-    "shortDesc": "Concentrado activo rico en algas azules. Contiene los veinte aminoácidos esenciales en perfecto balance + proteínas. Reafirmante, reequilibrante. Facial y corporal",
-    "fullDesc": "Puede combinarse con aparatología específica para cada tratamiento en particular",
-    "application": "Indicada para el tratamiento profesional.",
-    "actives": ["Espirulina"],
-    "ph": "",
-    "variants": [{
-      "code": 2028,
-      "content": "130 ml.",
-      "price": 190,
-      "sellPrice": ""
-    }],
-    "name": "6 Espirulina"
-  }, {
-    "category": ["Activos Concentrados"],
-    "shortDesc": "Tratamiento reafirmante con alto poder nutritivo que, por su composición rica en activos compensadores, mejora en firmeza y elasticidad de la piel, recuperando toda su vitalidad y energía.",
-    "fullDesc": "Espuma corporal, específicamente formulada para potenciar el tratamiento reductor, anticelulítico y tonificante corporal. Ayuda a eliminar el aspecto visible de la celulitis, mejora la tonicidad de los tejidos, disminuye la sensación de piernas cansadas. Reequilibra a la piel en oligoelementos, minerales, aminoácidos y proteínas. Piel más lisa, firme, elástica, suave y luminosa. Puede utilizarse también como apoyo domiciliario",
-    "application": "Apoyo domiciliario: Aplicar antes de hacer ejercicio y después de ducharse. Indicada para todo tipo de piel",
-    "actives": ["Cafeína", "Centella asiática", "Acido Lipoico", "Fosfatidilcolina", "Espirulina", "Vitamina C liposomada", "Oligoelementos marinos + Zn + CU"],
-    "ph": "",
-    "variants": [{
-      "code": 2029,
-      "content": "130 ml.",
-      "price": 200,
-      "sellPrice": ""
-    }],
-    "name": "7 Cafeina"
-  }, {
-    "category": ["Activos Concentrados"],
-    "shortDesc": "Tratamiento reafirmante con alto poder nutritivo que, por su composición rica en activos compensadores, mejora en firmeza y elasticidad de la piel, recuperando toda su vitalidad y energía",
-    "fullDesc": "Espuma corporal, específicamente formulada para potenciar el tratamiento reductor, anticelulítico y tonificante corporal. Ayuda a eliminar el aspecto visible de la celulitis, mejora la tonicidad de los tejidos, disminuye la sensación de piernas cansadas. Reequilibra a la piel en oligoelementos, minerales, aminoácidos y proteínas. Piel más lisa, firme, elástica, suave y luminosa. Puede utilizarse también como apoyo domiciliario",
-    "actives": ["Cafeína", "Centella Asiática", "Acido Lipoico", "Fosfatidilcolina", "Espirulina", "Vitamina C Liposomada", "Oligoelementos marinos + Zn + CU"],
-    "application": "En gabinete, aplicar luego del Scrub, en sinergia con activos concentrados, Centella Asiática, Cafeina, Fosfatidilcolina. Puede combinarse con aparatología. Apoyo domiciliario: Aplicar antes de hacer ejercicio y después de ducharse. Indicada para todo tipo de piel.",
-    "variants": [{
-      "code": 1049,
-      "content": "160 ml.",
-      "price": 290,
-      "sellPrice": 580
-    }],
-    "name": "Espuma ACTIVE 7"
-  }],
-  "Monodosis": [{
-    "category": ["Monodosis"],
-    "shortDesc": "Shock hidratante - antioxidante de acción sinérgica: Ayudan a hidratar profundamente la piel y protegerla de la acción medioambiental, revitalizando su resistencia y luminosidad",
-    "fullDesc": "Refuerzan la barrera protectora. Constituyen humectantes antioxidantes con propiedades anti envejecimiento. Indicadas para: Alta hidratación, pacientes con acné, rosácea, piel sensible, hiperqueratosis, psoriasis. Pacientes bajo tratamientos tópicos o sistémicos que resecan la piel.",
-    "application": "Aplicar con la piel limpia, por la mañana y por la noche.",
-    "actives": ["Gluconolactona", "Pentaglicanos"],
-    "ph": "",
-    "variants": [{
-      "code": 1030,
-      "content": "6 x 5 ml.",
-      "price": 540,
-      "sellPrice": 1080
-    }],
-    "name": "Hydroviton - Monodosis"
-  }, {
-    "category": ["Monodosis"],
-    "shortDesc": "Ayudan a reafirmar la piel al mismo tiempo que proporcionan protección de alto nivel frente al impacto medioambiental",
-    "fullDesc": "Estimulan las defensas cutáneas y el metabolismo celular. Protectoras de células de Langerhans. Protectoras del sistema inmunitoario de la piel. Indicadas para: el cuidado de la piel sensible, roseacea o afectada por el estrés.",
-    "application": "Aplicar por la mañana y por la noche.",
-    "actives": ["Vitamina C"],
-    "ph": "",
-    "variants": [{
-      "code": 1031,
-      "content": "6 x 5 ml.",
-      "price": 515,
-      "sellPrice": 1030
-    }],
-    "name": "Vitamina F Pure - Monodosis"
-  }, {
-    "category": ["Monodosis"],
-    "shortDesc": "Shock sinérgico combinado, monodosis indicadas para el tratamiento de manchas cutáneas, e irregularidades de la pigmentación",
-    "fullDesc": "Promueven la regulación del ciclo celular. Promueven la sobrevivencia celular. Resistencia al estrés y anti-envejecimiento. Activan la producción de sirtuinas acudiendo al rescate y reparando las células dañadas. Indicadas para: tratamiento de manchas cutaneas, anti-envejecimiento ",
-    "application": "Aplicación: trabajar en forma circular en las manchas o tratar zonas con irregularidades pigmentarias, luego extender a toda la piel.",
-    "actives": ["Grosella", "Reservatrol"],
-    "ph": "",
-    "variants": [{
-      "code": 1032,
-      "content": "6 x 5 ml.",
-      "price": 583,
-      "sellPrice": 1166
-    }],
-    "name": "Skin Dose - Monodosis"
-  }, {
-    "category": ["Monodosis"],
-    "shortDesc": "Shock antioxidante-antiglicación sinérgico combinado de formulación avanzada.",
-    "fullDesc": "Ayudan a combatir la acción de los radicales libres, restableciendo en la piel su natural belleza y luminosidad desde las primeras aplicaciones. Mejoran el rejuvenecimiento celular. ",
-    "application": "aplicar por la mañana y por la noche",
-    "actives": ["Blueberry", "Mulberry", "Cranberry"],
-    "ph": "",
-    "variants": [{
-      "code": 1033,
-      "content": "6 x 5 ml.",
-      "price": 500,
-      "sellPrice": 1000
-    }],
-    "name": "Bio Dose - Monodosis"
-  }, {
-    "category": ["Monodosis"],
-    "shortDesc": "Tratamiento reparador nocturno de contorno de ojos.",
-    "fullDesc": "Calmante, actúa como un escudo frente a las agresiones medioambientales. Fuente de Ácidos Grasos Esenciales, antioxidantes, proteínas, aminoácidos, vitaminas y minerales zinc-selenio- cobre. Las Monodosis HSP- 20, ayudan a restaurar y preservar la apariencia juvenil de la delicada piel de la zona más expresiva del rostro.",
-    "application": "Aplicar por la noche en la zona de contorno de ojos.",
-    "actives": ["Chía", "Sepicalm"],
-    "ph": "",
-    "variants": [{
-      "code": 1034,
-      "content": "6 x 5 ml.",
-      "price": 590,
-      "sellPrice": 1180
-    }],
-    "name": "HSP - 20 - Monodosis"
-  }, {
-    "category": ["Monodosis"],
-    "shortDesc": "Avanzado tratamiento anti- envejecimiento. Combinan péptidos y proteínas activas que proporcionan un tratamiento efectivo para mantener la cantidad y calidad del colágeno.",
-    "fullDesc": "Indicadas para contorno de labios y líneas de expresión. Disminuyen líneas de expresión y arrugas, al mismo tiempo que mejoran y reafirman. Anti-Glicación, evitan la formación de los AGEs, subproductos de la glicación cuya acumulación induce irreversiblemente a la pérdida de elasticidad. Piel más descansada, suave y radiante desde el momento de la aplicación.",
-    "application": "Aplicar por la mañana y por la noche",
-    "actives": ["Trylagen"],
-    "ph": "",
-    "variants": [{
-      "code": 1035,
-      "content": "6 x 5 ml.",
-      "price": 630,
-      "sellPrice": 1260
-    }],
-    "name": "Complex AM 40 - Monodosis"
-  }, {
-    "category": ["Monodosis"],
-    "shortDesc": "Refuerza los mecanismos de regeneración y recuperación de la piel, mediante múltiples modos de acción frente a los marcadores de envejecimiento de la piel.",
-    "fullDesc": "Tratamiento reparador nocturno. Ricas en aminoácidos. Contienen propiedades reequilibrantes, antiinflamatorias, descongestivas, nutritivas, remineralizantes y re-oxigenantes. Estimulan intercambios celulares. Triple acción reafirmante: Antioxidantes: trampas de exceso de radicales libres en una etapa temprana. Estimulan la contracción de las fibras de colágeno y protegen el tejido de soporte de la piel. Efecto relleno.",
-    "application": "Aplicar todos los días, por la noche en el rostro, cuello y escote",
-    "actives": ["Sepilifth", "Algas azules"],
-    "ph": "",
-    "variants": [{
-      "code": 1036,
-      "content": "6 x 5 ml.",
-      "price": 610,
-      "sellPrice": 1220
-    }],
-    "name": "Complex AM 45 - Monodosis"
-  }, {
-    "category": ["Monodosis"],
-    "shortDesc": "Ampollas de máxima tecnología, a base de Vitamina C específicamente estabilizada.",
-    "fullDesc": "Ayudan a combatir el oxígeno reactivo, aportando mayor protección a las células madre de piel Propiedades antioxidantes. ",
-    "application": "Aplicar diariamente por la mañana.",
-    "actives": ["Vitamina C"],
-    "ph": "",
-    "variants": [{
-      "code": 1037,
-      "content": "6 x 5 ml.",
-      "price": 600,
-      "sellPrice": 1200
-    }],
-    "name": "Vitamina C - Monodosis"
-  }, {
-    "category": ["Monodosis"],
-    "shortDesc": "Las ampollas ARGAN BIO+ combinan las propiedades únicas del Aceite de Argán, procedente del suroeste de Marruecos, con vehículos específicamente desarrollados",
-    "fullDesc": "Ayudan a retrasar el envejecimiento celular, disminuir estrías y cicatrices. Aportan protección a las células dérmicas. Regeneran la piel y combaten el envejecimiento. Reestructurador y renovador celular. Eliminan tanto las impurezas como las marcas de la edad o del acné. Evitan la inflamación, generan tonicidad.",
-    "application": "Aplicar diariamente. Cuando se traten estrías y cicatrices, aplicar dos veces por día",
-    "actives": ["Argan Oil"],
-    "ph": "",
-    "variants": [{
-      "code": 1038,
-      "content": "6 x 5 ml.",
-      "price": 630,
-      "sellPrice": 1260
-    }],
-    "name": "Argan Bio + - Monodosis"
-  }],
-  "Protección Solar": [{
-    "category": ["Protección Solar"],
-    "shortDesc": "Fluido Facial con color. Protección reforzada frente a los rayos UVA y UVB, gracias a un sistema filtrante óptimo Específico, combinado con Acido Hialurónico, hidratante protector de la piel.",
-    "fullDesc": "Ayuda a prevenir intolerancias solares y daño celular provocado por la acción de rayos UV. Textura fluida, no grasa. Acabado imperceptible. Sin perfume. Sin parabenos, con color",
-    "application": "Aplicar la crema antes de salir a la playa o la piscina, y como mínimo 30 minutos antes de exponerse al sol. Extender PROTECTION TIME 50+ sobre la piel bien seca. Utilizar protección solar aunque esté nublado. Reaplicar cuando sea necesario de acuerdo a cada fototipo cutáneo. Se recomienda cada dos horas para mantener la protección, especialmente después de un baño o nadar",
-    "actives": ["Ácido Hialurónico"],
-    "variants": [{
-      "code": 1044,
-      "content": "40 ml",
-      "price": 290,
-      "sellPrice": 580
-    }],
-    "name": "PROTECTION TIME  Color  Ác Hialurónico"
-  }, {
-    "category": ["Protección Solar"],
-    "shortDesc": "Fluído facial. Protección reforzada frente a los rayos UVA y UVB, gracias a un sistema filtrante óptimo Específico, combinado con Sepicalm S, biovector aminoácido con minerales, mejorando el confort cutáneo.",
-    "fullDesc": "Ayuda a prevenir intolerancias solares. Textura fluida, no graso. Acabado imperceptible. Sin perfume. Sin parabenos. Testeados en USA bajo normas FDA-COLIPA",
-    "application": "Aplicar la crema antes de salir a la playa o la piscina, y como mínimo 30 minutos antes de exponerse al sol. Extender PROTECTION TIME 50+ sobre la piel bien seca. Utilizar protección solar aunque esté nublado. Reaplicar cuando sea necesario de acuerdo a cada fototipo cutáneo. Se recomienda cada dos horas para mantener la protección, especialmente después de un baño o nadar",
-    "actives": ["Sepicalm V.G"],
-    "ph": "",
-    "variants": [{
-      "code": 1045,
-      "content": "40 ml",
-      "price": 280,
-      "sellPrice": 560
-    }],
-    "name": "PROTECTION TIME Sepicalm V.G."
-  }, {
-    "category": ["Protección Solar"],
-    "shortDesc": "Protección reforzada frente a los rayos UVA y UVB, gracias a un sistema filtrante óptimo Específico, combinado con Grosella, antioxidante protector de la piel.",
-    "fullDesc": "Ayuda a prevenir intolerancias solares, manchas pigmentarias foto-inducidas y daño celular provocado por la acción de los radicales libres y rayos UV. Textura fluida, no grasa, acabado imperceptible. Sin perfume. Sin parabenos, con color.",
-    "application": "Aplicar la crema antes de salir a la playa o la piscina, y como mínimo 30 minutos antes de exponerse al sol. Extender PROTECTION TIME 50+ sobre la piel bien seca. Utilizar protección solar aunque esté nublado. Reaplicar cuando sea necesario de acuerdo a cada fototipo cutáneo. Se recomienda cada dos horas para mantener la protección, especialmente después de un baño o nadar",
-    "actives": ["Grosella"],
-    "variants": [{
-      "code": 2044,
-      "content": "200 ml",
-      "price": 610,
-      "sellPrice": 1220
-    }],
-    "name": "PROTECTION TIME  Color Grosella"
-  }, {
-    "category": ["Protección Solar"],
-    "shortDesc": "Protección reforzada frente a los rayos UVA y UVB, gracias a un sistema filtrante óptimo Específico, combinado con Aceite de Sésamo, rico en ácidos grasos esenciales, coadyuvante en la protección.",
-    "fullDesc": "Ayuda a prevenir intolerancias solares, manchas pigmentarias foto-inducidas y daño celular provocado por la acción de rayos UV. Textura ultra fluida, no grasa, no deja marcas blancas. Acabado imperceptible. Sin perfume. Sin parabenos",
-    "application": "Aplicar la crema antes de salir a la playa o la piscina, y como mínimo 30 minutos antes de exponerse al sol. Extender PROTECTION TIME 50+ sobre la piel bien seca. Utilizar protección solar aunque esté nublado. Reaplicar cuando sea necesario de acuerdo a cada fototipo cutáneo. Se recomienda cada dos horas para mantener la protección, especialmente después de un baño o nadar",
-    "actives": ["Aceite de Sésamo"],
-    "variants": [{
-      "code": 2045,
-      "content": "200 ml",
-      "price": 600,
-      "sellPrice": 1200
-    }],
-    "name": "PROTECTION TIME  Aceite de Sésamo"
-  }],
-  "Corporales": [{
-    "category": ["Corporales"],
-    "shortDesc": "Crema antioxidante corporal, específicamente formulada para proteger a la piel de la acción de los radicales libres",
-    "fullDesc": "Aportando mayor beneficio mediante la protección de la acción solar. Evita el fotoenvejecimiento de la piel. Tonificante, Mejora la hidratación y elasticidad. Piel de seda.",
-    "application": "",
-    "actives": ["Polifenoles de pepitas de uva", "Tocoferol", "FPS"],
-    "ph": "",
-    "variants": [{
-      "code": 1046,
-      "content": "200ml.",
-      "price": 190,
-      "sellPrice": 380
-    }, {
-      "code": 2046,
-      "content": "500 ml.",
-      "price": 370,
-      "sellPrice": ""
-    }],
-    "name": "Crema Antioxidante Corporal"
-  }, {
-    "category": ["Corporales"],
-    "shortDesc": "",
-    "fullDesc": "Strialess Cell2Cell prevención y corrección, ayuda a reforzar la elasticidad. Renovación celular y flexibilidad. Mejora el aspecto visible de la piel",
-    "actives": ["Cell2Cell", "DermCom"],
-    "variants": [{
-      "code": 1050,
-      "content": "160 ml.",
-      "price": 300,
-      "sellPrice": 600
-    }],
-    "name": "Espuma Strialess"
-  }, {
-    "category": ["Corporales"],
-    "shortDesc": "",
-    "fullDesc": "Booster shot corporal, programa intensivo. Indicado para ayudar a reducir las acumulaciones grasas, donde mas lo necesitas, procurando el bienestar",
-    "actives": ["Adiposlim", "Garcinia Cambogia"],
-    "variants": [{
-      "code": 1051,
-      "content": "160ml.",
-      "price": 300,
-      "sellPrice": 600
-    }],
-    "name": "S.O.S Sculpt"
-  }, {
-    "category": ["Corporales"],
-    "shortDesc": "",
-    "fullDesc": "Booster shot corporal. Complejo de activación global que ayuda a reducir y evitar nuevos almacenamientos. Previene y protege",
-    "actives": ["Adopoless", "Cafe Verde"],
-    "variants": [{
-      "code": 1052,
-      "content": "160 ml.",
-      "price": 300,
-      "sellPrice": 600
-    }],
-    "name": "S.O.S Extreme"
-  }]
-};
-var e = React.createElement;
-var categories = ["Higiene", "Máscaras", "Ácido Hialurónico", "Peeling", "Corporales", "Hombres", "Protección Intensiva", "Monodosis", "Activos Concentrados", "Protección Solar"];
-
-var Section = function Section(title, paragraph) {
-  return e('div', null, e('h4', {
-    className: 'section-name'
-  }, title), e('p', {
-    className: 'section-body'
-  }, paragraph));
-};
-
-var Product = function Product(product, key) {
-  return e('div', {
-    key: key,
-    className: 'product-container'
-  }, e('h3', {
-    className: 'product-name'
-  }, product.name), e('div', {
-    className: 'product-body'
-  }, e('p', {
-    className: 'product-short-desc'
-  }, product.shortDesc), Section('Descripción', product.fullDesc), Section('Aplicación', product.application)));
-};
-
-var Category = function Category(categoryName, products) {
-  return e('div', {
-    className: 'category-container'
-  }, e('div', {
-    className: 'category-title',
-    id: categoryName.toLowerCase().replace(' ', '-')
-  }, e('h2', {
-    className: 'category-name'
-  }, categoryName)), products.map(function (p, i) {
-    return Product(p, i);
-  }));
-};
-
-var Vademecum = function Vademecum() {
-  return categories.map(function (categoryName, i) {
-    return e('div', {
-      key: i
-    }, Category(categoryName, products[categoryName]));
-  });
-};
-
-var domContainer = document.querySelector('#vademecum');
-ReactDOM.render(e('div', {
-  className: ''
-}, Vademecum()), domContainer);

+ 28 - 34
lib/vademecum.js

@@ -1,8 +1,6 @@
 'use strict';
 
-require("core-js/modules/es6.regexp.replace");
-
-const products = {
+var products = {
   "Protección Intensiva": [{
     "category": ["Protección Intensiva"],
     "shortDesc": "Potente acción antioxidante, un magnífico aporte de firmeza y elasticidad que mejora el color, la luminosidad y la hidratación de la piel retrasando el envejecimiento cutáneo. ",
@@ -721,56 +719,52 @@ const products = {
     "name": "S.O.S Extreme"
   }]
 };
-const e = React.createElement;
-const categories = ["Higiene", "Máscaras", "Ácido Hialurónico", "Peeling", "Corporales", "Hombres", "Protección Intensiva", "Monodosis", "Activos Concentrados", "Protección Solar"];
-
-const Section = (title, paragraph) => dom("div", null, dom("h4", {
-  className: "section-name"
-}, title), dom("p", {
-  className: "section-body"
-}, paragraph)); // const Section = (title, paragraph) => {
-//   return e(
-//     'div',
-//     null,
-//     e('h4', {className: 'section-name'}, title),
-//     e('p', {className: 'section-body'}, paragraph)
-//   )
-// };
+var dom = React.createElement;
+var categories = ["Higiene", "Máscaras", "Ácido Hialurónico", "Peeling", "Corporales", "Hombres", "Protección Intensiva", "Monodosis", "Activos Concentrados", "Protección Solar"];
 
+var Section = function Section(title, paragraph) {
+  return dom("div", null, dom("h4", {
+    className: "section-name"
+  }, title), dom("p", {
+    className: "section-body"
+  }, paragraph));
+};
 
-const Product = (product, key) => {
-  return e('div', {
-    key,
+var Product = function Product(product, key) {
+  return dom('div', {
+    key: key,
     className: 'product-container'
-  }, e('h3', {
+  }, dom('h3', {
     className: 'product-name'
-  }, product.name), e('div', {
+  }, product.name), dom('div', {
     className: 'product-body'
-  }, e('p', {
+  }, dom('p', {
     className: 'product-short-desc'
   }, product.shortDesc), Section('Descripción', product.fullDesc), Section('Aplicación', product.application)));
 };
 
-const Category = (categoryName, products) => {
-  return e('div', {
+var Category = function Category(categoryName, products) {
+  return dom('div', {
     className: 'category-container'
-  }, e('div', {
+  }, dom('div', {
     className: 'category-title',
     id: categoryName.toLowerCase().replace(' ', '-')
-  }, e('h2', {
+  }, dom('h2', {
     className: 'category-name'
-  }, categoryName)), products.map((p, i) => Product(p, i)));
+  }, categoryName)), products.map(function (p, i) {
+    return Product(p, i);
+  }));
 };
 
-const Vademecum = () => {
-  return categories.map((categoryName, i) => {
-    return e('div', {
+var Vademecum = function Vademecum() {
+  return categories.map(function (categoryName, i) {
+    return dom('div', {
       key: i
     }, Category(categoryName, products[categoryName]));
   });
 };
 
-const domContainer = document.querySelector('#vademecum');
-ReactDOM.render(e('div', {
+var domContainer = document.querySelector('#vademecum');
+ReactDOM.render(dom('div', {
   className: ''
 }, Vademecum()), domContainer);

+ 2 - 2
package.json

@@ -17,8 +17,8 @@
     "@babel/preset-es2015": "^7.0.0-beta.53"
   },
   "scripts": {
-    "test": "echo \"Error: no test specified\" && exit 1",
-    "build": "./node_modules/.bin/babel js --out-dir lib",
+    "start": "./node_modules/.bin/babel js/vademecum.js --watch --out-file lib/vademecum.js",
+    "build": "./node_modules/.bin/babel js/vademecum.js --out-dir lib",
     "pdf": "wkhtmltopdf.exe toc --xsl-style-sheet pdf/toc.xsl index.html pdf/vademecum.pdf"
   },
   "repository": {