contentoh-components-library 21.6.54 → 21.6.56

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.
Files changed (61) hide show
  1. package/.claude/launch.json +14 -0
  2. package/.env.test +1 -0
  3. package/dist/components/atoms/IconFile/index.js +85 -2
  4. package/dist/components/atoms/IconFile/styles.js +1 -1
  5. package/dist/components/atoms/ProductImage/ProductImage.stories.js +70 -2
  6. package/dist/components/atoms/ProductImage/index.js +100 -27
  7. package/dist/components/atoms/ProductImage/styles.js +3 -1
  8. package/dist/components/molecules/EditionActiveImage/index.js +4 -2
  9. package/dist/components/molecules/GalleryElement/index.js +13 -4
  10. package/dist/components/molecules/GalleryHeader/index.js +96 -24
  11. package/dist/components/molecules/GalleryHeader/styles.js +4 -1
  12. package/dist/components/molecules/ImageSelector/index.js +1 -0
  13. package/dist/components/organisms/ImagePreviewer/index.js +1 -0
  14. package/dist/components/organisms/ProductImageModal/index.js +3 -2
  15. package/dist/components/pages/RetailerProductEdition/context/provider-product-edition.context.js +330 -15
  16. package/dist/components/pages/RetailerProductEdition/context/provider-product-edition.reducer.js +12 -2
  17. package/dist/components/pages/RetailerProductEdition/index.js +628 -428
  18. package/dist/components/pages/RetailerProductEdition/stories/ImageEditor.stories.js +1 -0
  19. package/dist/components/pages/RetailerProductEdition/utils.js +48 -1
  20. package/dist/global-files/data.js +16 -3
  21. package/dist/index.js +142 -90
  22. package/docs/activos-digitales.md +273 -0
  23. package/package.json +1 -1
  24. package/src/components/atoms/AssetPreview/AssetPreview.stories.js +78 -0
  25. package/src/components/atoms/AssetPreview/index.js +119 -0
  26. package/src/components/atoms/AssetPreview/styles.js +190 -0
  27. package/src/components/atoms/IconFile/index.js +28 -1
  28. package/src/components/atoms/IconFile/styles.js +8 -0
  29. package/src/components/atoms/ProductImage/ProductImage.stories.js +38 -0
  30. package/src/components/atoms/ProductImage/index.js +95 -20
  31. package/src/components/atoms/ProductImage/styles.js +92 -7
  32. package/src/components/molecules/EditionActiveImage/index.js +2 -2
  33. package/src/components/molecules/GalleryAssetElement/GalleryAssetElement.stories.js +102 -0
  34. package/src/components/molecules/GalleryAssetElement/index.js +162 -0
  35. package/src/components/molecules/GalleryAssetElement/styles.js +159 -0
  36. package/src/components/molecules/GalleryElement/index.js +9 -0
  37. package/src/components/molecules/GalleryHeader/index.js +65 -13
  38. package/src/components/molecules/GalleryHeader/styles.js +2 -1
  39. package/src/components/molecules/GalleryTrayTabs/GalleryTrayTabs.stories.js +32 -0
  40. package/src/components/molecules/GalleryTrayTabs/index.js +41 -0
  41. package/src/components/molecules/GalleryTrayTabs/styles.js +52 -0
  42. package/src/components/molecules/ImageSelector/index.js +1 -0
  43. package/src/components/organisms/DigitalAssetsTray/DigitalAssetsTray.stories.js +101 -0
  44. package/src/components/organisms/DigitalAssetsTray/index.js +189 -0
  45. package/src/components/organisms/DigitalAssetsTray/styles.js +183 -0
  46. package/src/components/organisms/ImagePreviewer/index.js +1 -0
  47. package/src/components/organisms/ProductImageModal/index.js +1 -0
  48. package/src/components/pages/RetailerProductEdition/context/provider-product-edition.context.jsx +201 -0
  49. package/src/components/pages/RetailerProductEdition/context/provider-product-edition.reducer.js +12 -0
  50. package/src/components/pages/RetailerProductEdition/index.js +379 -142
  51. package/src/components/pages/RetailerProductEdition/stories/ImageEditor.stories.js +1 -0
  52. package/src/components/pages/RetailerProductEdition/utils.js +34 -0
  53. package/src/global-files/data.js +17 -2
  54. package/src/global-files/digital-assets/assetTypes.js +419 -0
  55. package/src/global-files/digital-assets/assets.actions.js +50 -0
  56. package/src/global-files/digital-assets/assets.adapter.js +229 -0
  57. package/src/global-files/digital-assets/assets.mock.js +122 -0
  58. package/src/global-files/digital-assets/assets.reducer.js +197 -0
  59. package/src/global-files/digital-assets/uploadAssets.js +109 -0
  60. package/src/global-files/digital-assets/useDigitalAssets.js +329 -0
  61. package/src/index.js +4 -0
@@ -31,6 +31,7 @@ ImageEditor.args = {
31
31
  "Ficha técnica": false,
32
32
  Imágenes: true
33
33
  },
34
+ enableDigitalAssets: true,
34
35
  token: "eyJraWQiOiJEV3owZnNieXg2MXNFcVduN3RCXC81bVhod3ZNbFZIOTgwUnZcL3RjT0lKdEk9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJjN2U1YTZhNC0yYjNmLTRkNTQtYWY5OC05ZTA5YTRjYmMwMWUiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfbFN6UVo0WjdSIiwiY29nbml0bzp1c2VybmFtZSI6ImM3ZTVhNmE0LTJiM2YtNGQ1NC1hZjk4LTllMDlhNGNiYzAxZSIsImF1ZCI6IjUyZDlza2tkY2c4cWpwODhvb2sxdXNlNm1rIiwiZXZlbnRfaWQiOiI5Y2Y2NTNkMS1iOTA1LTQ5ODgtYmI1MC0wY2E5NTllMTJkNTMiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTc2ODQ5Njg1MCwibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTc2ODUwMDQ1MCwiaWF0IjoxNzY4NDk2ODUwLCJlbWFpbCI6Imtpa2lqZTE0NjdAbXRsY3ouY29tIn0.kVyqMGAoe0ye3i882XuO_8xKf7vNzpPPse3852YP70aK4f9vq7o7NP0DhPTv5UnrcwC0Lcu_UOqoplyHxgPbIzrKF6e4Ket_T7KA2GHnO7-d30wmYl2GxMm_pSgb_qP_IZpVj5bmlST26LpEftZDHPAue3eQaZ0xRBwkI5dkVbVWncZz9iVdrUdz5FC5gXuAHyEQzn-669UsywrtlRN5y8EgcxsccNmsL_El5ctGZYiNMgn1mBeS-FvEikhNORoZqS0e8JKaYmL-e2jcrEuShpDE3mJMsm0E_KBUxt_t0FoB-tUlRDWlDkpIWHNidzTYAUfudc908ykQ15b3EdvFVw",
35
36
  productSelected: {
36
37
  orderId: 10421,
@@ -5,10 +5,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.translateService = exports.translateConcept = exports.sendMessage = exports.normalizeProduct = exports.getStatusArrayByRole = exports.getInputsData = exports.getConceptsByRole = exports.getConceptByTab = exports.getAuditVersion = exports.createMessage = exports.calculateRequiredNull = exports.buildCollaboratorAssignations = void 0;
8
+ exports.translateService = exports.translateConcept = exports.sendMessage = exports.normalizeProduct = exports.getStatusArrayForUser = exports.getStatusArrayByRole = exports.getInputsData = exports.getConceptsByRole = exports.getConceptByTab = exports.getAuditVersion = exports.createMessage = exports.calculateRequiredNull = exports.buildCollaboratorAssignations = void 0;
9
9
 
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/toConsumableArray"));
13
+
12
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
13
15
 
14
16
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
@@ -241,9 +243,54 @@ var getStatusArrayByRole = function getStatusArrayByRole(idRole) {
241
243
  return [];
242
244
  }
243
245
  };
246
+ /**
247
+ * Estatus en los que esta persona puede evaluar ESTE producto.
248
+ *
249
+ * Unión de lo que le toca por ROL y de lo que le toca por ASIGNACIÓN. Antes
250
+ * solo se preguntaba el rol, y de ahí salía el defecto: un Especialista de
251
+ * Textos asignado como auditor no tenía 'AC' en su lista. El botón sí
252
+ * aparecía —esa compuerta ya mira la asignación—, pero `sendBulkEvaluation`
253
+ * filtra con esta lista, se quedaba sin una sola petición que mandar, y aun
254
+ * así pintaba 'AA' en pantalla y anunciaba éxito. El cambio se veía y no
255
+ * existía en la base.
256
+ *
257
+ * Se expresa reusando `getStatusArrayByRole`: cada slot ocupado aporta los
258
+ * estatus del rol que clásicamente lo ocupaba, y se unen sin repetir.
259
+ */
260
+
244
261
 
245
262
  exports.getStatusArrayByRole = getStatusArrayByRole;
246
263
 
264
+ var getStatusArrayForUser = function getStatusArrayForUser(user, product) {
265
+ // `normalizeProduct` pone 0 cuando no hay nadie asignado, no null.
266
+ var mine = function mine(value) {
267
+ return !!value && value === (user === null || user === void 0 ? void 0 : user.id_user);
268
+ };
269
+
270
+ var roles = [user === null || user === void 0 ? void 0 : user.id_role];
271
+ if (mine(product === null || product === void 0 ? void 0 : product.id_auditor)) roles.push(6);
272
+ var services = ["datasheet", "description", "images"];
273
+
274
+ if (services.some(function (s) {
275
+ return mine(product === null || product === void 0 ? void 0 : product["id_".concat(s, "_especialist")]);
276
+ })) {
277
+ roles.push(7);
278
+ }
279
+
280
+ if (["datasheet", "description"].some(function (s) {
281
+ return mine(product === null || product === void 0 ? void 0 : product["id_".concat(s, "_facilitator")]);
282
+ })) {
283
+ roles.push(4);
284
+ }
285
+
286
+ if (mine(product === null || product === void 0 ? void 0 : product.id_images_facilitator)) roles.push(5);
287
+ return (0, _toConsumableArray2.default)(new Set(roles.flatMap(function (role) {
288
+ return getStatusArrayByRole(role);
289
+ })));
290
+ };
291
+
292
+ exports.getStatusArrayForUser = getStatusArrayForUser;
293
+
247
294
  var getConceptsByRole = function getConceptsByRole(idRole) {
248
295
  switch (idRole) {
249
296
  case 4:
@@ -107,7 +107,7 @@ var getImage = function getImage(imageGeneral) {
107
107
  var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 250;
108
108
 
109
109
  try {
110
- var _imageGeneral$image_i;
110
+ var _imageGeneral$image_i, _ext;
111
111
 
112
112
  // `id_image` es el nombre de la columna en base de datos; `image_id` el que
113
113
  // usa el front. Se acepta cualquiera de los dos para que la URL se arme
@@ -117,14 +117,27 @@ var getImage = function getImage(imageGeneral) {
117
117
  });
118
118
  var ext = image.src.split(".");
119
119
  var uuid = ext[0].split("-");
120
+ var extension = (_ext = ext[ext.length - 1]) === null || _ext === void 0 ? void 0 : _ext.toLowerCase();
121
+ /*
122
+ El redimensionador de CloudFront reprocesa el archivo con sharp: sirve
123
+ para una foto de producto y destruye todo lo demás. Un mp4 devuelve un
124
+ error que la etiqueta <video> no puede reproducir, y un gif animado sale
125
+ aplanado a un solo fotograma.
126
+ Por eso solo los formatos que sharp sabe redimensionar pasan por el
127
+ resizer; el resto se queda con la URL directa a S3, que es la misma que
128
+ usa la descarga de imágenes. Sin esto hacía falta bajar cada video
129
+ completo a base64 solo para generarle una miniatura.
130
+ */
131
+
132
+ var isResizable = ["jpg", "jpeg", "png", "webp", "tiff", "avif"].includes(extension);
120
133
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, image), {}, {
121
134
  version: image.id_version,
122
- ext: ext[ext.length - 1],
135
+ ext: extension,
123
136
  uuid: uuid.reduce(function (prevVal, currVal, idx) {
124
137
  if (idx < 2) return "";else return idx === 2 ? currVal : prevVal + "-" + currVal;
125
138
  }, "") || (0, _uuid.v4)(),
126
139
  srcDB: image.src,
127
- src: image.image_id ? "https://d24s337exbt5zr.cloudfront.net/" + _jsBase.Base64.encode(JSON.stringify({
140
+ src: image.image_id && !isResizable ? "https://".concat(process.env.REACT_APP_IMAGES_BUCKET, ".s3.amazonaws.com/").concat(image.src) : image.image_id ? "https://d24s337exbt5zr.cloudfront.net/" + _jsBase.Base64.encode(JSON.stringify({
128
141
  bucket: process.env.REACT_APP_IMAGES_BUCKET,
129
142
  key: image.src,
130
143
  edits: {