contentoh-components-library 21.6.50 → 21.6.52

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 (90) hide show
  1. package/.env.test +0 -1
  2. package/dist/components/atoms/IconFile/index.js +2 -85
  3. package/dist/components/atoms/IconFile/styles.js +1 -1
  4. package/dist/components/atoms/ProductImage/ProductImage.stories.js +2 -70
  5. package/dist/components/atoms/ProductImage/index.js +27 -100
  6. package/dist/components/atoms/ProductImage/styles.js +1 -3
  7. package/dist/components/molecules/EditionActiveImage/index.js +2 -4
  8. package/dist/components/molecules/GalleryElement/index.js +4 -13
  9. package/dist/components/molecules/GalleryHeader/index.js +24 -96
  10. package/dist/components/molecules/GalleryHeader/styles.js +1 -4
  11. package/dist/components/molecules/ImageSelector/index.js +0 -1
  12. package/dist/components/organisms/ImagePreviewer/index.js +0 -1
  13. package/dist/components/organisms/ProductImageModal/index.js +2 -3
  14. package/dist/components/organisms/PropagateChangesModal/index.js +6 -1
  15. package/dist/components/pages/ProviderProductEdition/context/provider-product-edition.context.js +10 -8
  16. package/dist/components/pages/ProviderProductEdition/index.js +189 -72
  17. package/dist/components/pages/RetailerProductEdition/context/provider-product-edition.context.js +25 -338
  18. package/dist/components/pages/RetailerProductEdition/context/provider-product-edition.reducer.js +2 -12
  19. package/dist/components/pages/RetailerProductEdition/index.js +579 -631
  20. package/dist/components/pages/RetailerProductEdition/stories/ImageEditor.stories.js +0 -1
  21. package/dist/components/pages/RetailerProductEdition/stories/TextEditor.stories.js +145 -45
  22. package/dist/global-files/data.js +3 -16
  23. package/dist/index.js +90 -142
  24. package/package.json +1 -1
  25. package/src/components/atoms/IconFile/index.js +1 -28
  26. package/src/components/atoms/IconFile/styles.js +0 -8
  27. package/src/components/atoms/ProductImage/ProductImage.stories.js +0 -38
  28. package/src/components/atoms/ProductImage/index.js +20 -95
  29. package/src/components/atoms/ProductImage/styles.js +7 -92
  30. package/src/components/molecules/EditionActiveImage/index.js +2 -2
  31. package/src/components/molecules/GalleryElement/index.js +0 -9
  32. package/src/components/molecules/GalleryHeader/index.js +13 -65
  33. package/src/components/molecules/GalleryHeader/styles.js +1 -2
  34. package/src/components/molecules/ImageSelector/index.js +0 -1
  35. package/src/components/organisms/ImagePreviewer/index.js +0 -1
  36. package/src/components/organisms/ProductImageModal/index.js +0 -1
  37. package/src/components/organisms/PropagateChangesModal/index.js +10 -3
  38. package/src/components/pages/ProviderProductEdition/context/provider-product-edition.context.jsx +2 -1
  39. package/src/components/pages/ProviderProductEdition/index.js +111 -6
  40. package/src/components/pages/RetailerProductEdition/context/provider-product-edition.context.jsx +2 -202
  41. package/src/components/pages/RetailerProductEdition/context/provider-product-edition.reducer.js +0 -12
  42. package/src/components/pages/RetailerProductEdition/index.js +258 -363
  43. package/src/components/pages/RetailerProductEdition/stories/ImageEditor.stories.js +0 -1
  44. package/src/components/pages/RetailerProductEdition/stories/TextEditor.stories.js +104 -51
  45. package/src/global-files/data.js +2 -17
  46. package/src/index.js +0 -4
  47. package/.claude/launch.json +0 -14
  48. package/dist/ai/prompts/attribute.prompt.js +0 -28
  49. package/dist/ai/prompts/description.prompt.js +0 -33
  50. package/dist/ai/schemas/attribute.schema.js +0 -35
  51. package/dist/ai/schemas/description.schema.js +0 -27
  52. package/dist/components/atoms/AssetPreview/AssetPreview.stories.js +0 -118
  53. package/dist/components/atoms/AssetPreview/index.js +0 -150
  54. package/dist/components/atoms/AssetPreview/styles.js +0 -28
  55. package/dist/components/molecules/GalleryAssetElement/GalleryAssetElement.stories.js +0 -147
  56. package/dist/components/molecules/GalleryAssetElement/index.js +0 -178
  57. package/dist/components/molecules/GalleryAssetElement/styles.js +0 -26
  58. package/dist/components/molecules/GalleryTrayTabs/GalleryTrayTabs.stories.js +0 -56
  59. package/dist/components/molecules/GalleryTrayTabs/index.js +0 -60
  60. package/dist/components/molecules/GalleryTrayTabs/styles.js +0 -20
  61. package/dist/components/organisms/DigitalAssetsTray/DigitalAssetsTray.stories.js +0 -171
  62. package/dist/components/organisms/DigitalAssetsTray/index.js +0 -211
  63. package/dist/components/organisms/DigitalAssetsTray/styles.js +0 -22
  64. package/dist/global-files/digital-assets/assetTypes.js +0 -480
  65. package/dist/global-files/digital-assets/assets.actions.js +0 -64
  66. package/dist/global-files/digital-assets/assets.adapter.js +0 -304
  67. package/dist/global-files/digital-assets/assets.mock.js +0 -136
  68. package/dist/global-files/digital-assets/assets.reducer.js +0 -220
  69. package/dist/global-files/digital-assets/uploadAssets.js +0 -179
  70. package/dist/global-files/digital-assets/useDigitalAssets.js +0 -522
  71. package/docs/activos-digitales.md +0 -273
  72. package/src/components/atoms/AssetPreview/AssetPreview.stories.js +0 -78
  73. package/src/components/atoms/AssetPreview/index.js +0 -119
  74. package/src/components/atoms/AssetPreview/styles.js +0 -190
  75. package/src/components/molecules/GalleryAssetElement/GalleryAssetElement.stories.js +0 -102
  76. package/src/components/molecules/GalleryAssetElement/index.js +0 -162
  77. package/src/components/molecules/GalleryAssetElement/styles.js +0 -159
  78. package/src/components/molecules/GalleryTrayTabs/GalleryTrayTabs.stories.js +0 -32
  79. package/src/components/molecules/GalleryTrayTabs/index.js +0 -41
  80. package/src/components/molecules/GalleryTrayTabs/styles.js +0 -52
  81. package/src/components/organisms/DigitalAssetsTray/DigitalAssetsTray.stories.js +0 -101
  82. package/src/components/organisms/DigitalAssetsTray/index.js +0 -189
  83. package/src/components/organisms/DigitalAssetsTray/styles.js +0 -183
  84. package/src/global-files/digital-assets/assetTypes.js +0 -419
  85. package/src/global-files/digital-assets/assets.actions.js +0 -50
  86. package/src/global-files/digital-assets/assets.adapter.js +0 -229
  87. package/src/global-files/digital-assets/assets.mock.js +0 -122
  88. package/src/global-files/digital-assets/assets.reducer.js +0 -197
  89. package/src/global-files/digital-assets/uploadAssets.js +0 -109
  90. package/src/global-files/digital-assets/useDigitalAssets.js +0 -329
package/.env.test CHANGED
@@ -75,4 +75,3 @@ REACT_APP_ENVIRONMENT=test
75
75
  REACT_APP_REGION=us-east-1
76
76
  REACT_APP_VARIANTS_ENDPOINT=https://7o2hp8msfl.execute-api.us-east-1.amazonaws.com/test/variants
77
77
  REACT_APP_NEW_ARTICLES_ENDPOINT=https://7o2hp8msfl.execute-api.us-east-1.amazonaws.com/test/new-articles
78
- REACT_APP_ASSETS_PRESIGN_ENDPOINT=https://7o2hp8msfl.execute-api.us-east-1.amazonaws.com/test/articles-assets/presign
@@ -69,85 +69,14 @@ var IconFile = function IconFile(props) {
69
69
  type: "csv"
70
70
  },
71
71
  // file image
72
- gif: {
73
- icon: _freeSolidSvgIcons.faFileImage,
74
- type: "image"
75
- },
76
- jpg: {
77
- icon: _freeSolidSvgIcons.faFileImage,
78
- type: "image"
79
- },
80
- jpeg: {
81
- icon: _freeSolidSvgIcons.faFileImage,
82
- type: "image"
83
- },
84
- png: {
72
+ svg: {
85
73
  icon: _freeSolidSvgIcons.faFileImage,
86
74
  type: "image"
87
75
  },
88
- webp: {
76
+ gif: {
89
77
  icon: _freeSolidSvgIcons.faFileImage,
90
78
  type: "image"
91
79
  },
92
- // archivos de diseño editables: no se pueden previsualizar en el navegador,
93
- // así que el icono es lo único que distingue uno de otro en la bandeja.
94
- psd: {
95
- icon: _freeSolidSvgIcons.faSwatchbook,
96
- type: "design"
97
- },
98
- psb: {
99
- icon: _freeSolidSvgIcons.faSwatchbook,
100
- type: "design"
101
- },
102
- ai: {
103
- icon: _freeSolidSvgIcons.faSwatchbook,
104
- type: "design"
105
- },
106
- eps: {
107
- icon: _freeSolidSvgIcons.faSwatchbook,
108
- type: "design"
109
- },
110
- indd: {
111
- icon: _freeSolidSvgIcons.faSwatchbook,
112
- type: "design"
113
- },
114
- idml: {
115
- icon: _freeSolidSvgIcons.faSwatchbook,
116
- type: "design"
117
- },
118
- sketch: {
119
- icon: _freeSolidSvgIcons.faSwatchbook,
120
- type: "design"
121
- },
122
- fig: {
123
- icon: _freeSolidSvgIcons.faSwatchbook,
124
- type: "design"
125
- },
126
- xd: {
127
- icon: _freeSolidSvgIcons.faSwatchbook,
128
- type: "design"
129
- },
130
- afphoto: {
131
- icon: _freeSolidSvgIcons.faSwatchbook,
132
- type: "design"
133
- },
134
- afdesign: {
135
- icon: _freeSolidSvgIcons.faSwatchbook,
136
- type: "design"
137
- },
138
- svg: {
139
- icon: _freeSolidSvgIcons.faSwatchbook,
140
- type: "design"
141
- },
142
- // proyectos de animación y edición de video
143
- aep: {
144
- icon: _freeSolidSvgIcons.faFilm,
145
- type: "motion"
146
- },
147
- prproj: {
148
- icon: _freeSolidSvgIcons.faFilm,
149
- type: "motion"
150
- },
151
80
  // file pdf
152
81
  pdf: {
153
82
  icon: _freeSolidSvgIcons.faFilePdf,
@@ -203,10 +132,6 @@ var IconFile = function IconFile(props) {
203
132
  icon: _freeSolidSvgIcons.faFileZipper,
204
133
  type: "zip"
205
134
  },
206
- "7z": {
207
- icon: _freeSolidSvgIcons.faFileZipper,
208
- type: "zip"
209
- },
210
135
  // file code
211
136
  xml: {
212
137
  icon: _freeSolidSvgIcons.faFileCode,
@@ -273,14 +198,6 @@ var IconFile = function IconFile(props) {
273
198
  icon: _freeSolidSvgIcons.faFileVideo,
274
199
  type: "video"
275
200
  },
276
- mov: {
277
- icon: _freeSolidSvgIcons.faFileVideo,
278
- type: "video"
279
- },
280
- webm: {
281
- icon: _freeSolidSvgIcons.faFileVideo,
282
- type: "video"
283
- },
284
201
  mpeg: {
285
202
  icon: _freeSolidSvgIcons.faFileVideo,
286
203
  type: "video"
@@ -15,7 +15,7 @@ var _variables = require("../../../global-files/variables");
15
15
 
16
16
  var _templateObject;
17
17
 
18
- var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: fit-content;\n min-width: min-content;\n min-height: min-content;\n overflow: hidden;\n cursor: default;\n display: grid;\n place-items: center;\n padding: 0px;\n border-radius: ", ";\n border: none;\n\n // colores de acuerdo al tipo de icono\n &.icon-word .icon {\n color: #1f3780;\n border-color: #1f3780;\n }\n &.icon-excel .icon {\n color: #2d5639;\n border-color: #2d5639;\n }\n &.icon-csv .icon {\n color: #6b8e73;\n border-color: #6b8e73;\n }\n &.icon-image .icon {\n color: #ca7f4d;\n border-color: #ca7f4d;\n }\n &.icon-pdf .icon {\n color: #951a1a;\n border-color: #951a1a;\n }\n &.icon-powerPoint .icon {\n color: #ba4f19;\n border-color: #ba4f19;\n }\n &.icon-zip .icon {\n color: #b8950c;\n border-color: #b8950c;\n }\n &.icon-code .icon {\n color: #1c778e;\n border-color: #1c778e;\n }\n &.icon-design .icon {\n color: #2a5cb8;\n border-color: #2a5cb8;\n }\n &.icon-motion .icon {\n color: #6d3fc0;\n border-color: #6d3fc0;\n }\n &.icon-video .icon {\n color: #a15bb1;\n border-color: #a15bb1;\n }\n &.icon-audio .icon {\n color: #3090e9;\n border-color: #3090e9;\n }\n &.icon-default .icon {\n color: #5e6265;\n border-color: #5e6265;\n }\n"])), function (_ref) {
18
+ var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: fit-content;\n min-width: min-content;\n min-height: min-content;\n overflow: hidden;\n cursor: default;\n display: grid;\n place-items: center;\n padding: 0px;\n border-radius: ", ";\n border: none;\n\n // colores de acuerdo al tipo de icono\n &.icon-word .icon {\n color: #1f3780;\n border-color: #1f3780;\n }\n &.icon-excel .icon {\n color: #2d5639;\n border-color: #2d5639;\n }\n &.icon-csv .icon {\n color: #6b8e73;\n border-color: #6b8e73;\n }\n &.icon-image .icon {\n color: #ca7f4d;\n border-color: #ca7f4d;\n }\n &.icon-pdf .icon {\n color: #951a1a;\n border-color: #951a1a;\n }\n &.icon-powerPoint .icon {\n color: #ba4f19;\n border-color: #ba4f19;\n }\n &.icon-zip .icon {\n color: #b8950c;\n border-color: #b8950c;\n }\n &.icon-code .icon {\n color: #1c778e;\n border-color: #1c778e;\n }\n &.icon-video .icon {\n color: #a15bb1;\n border-color: #a15bb1;\n }\n &.icon-audio .icon {\n color: #3090e9;\n border-color: #3090e9;\n }\n &.icon-default .icon {\n color: #5e6265;\n border-color: #5e6265;\n }\n"])), function (_ref) {
19
19
  var borderType = _ref.borderType;
20
20
  return (borderType === null || borderType === void 0 ? void 0 : borderType.toLowerCase()) === "rectangle" ? "6px" : (borderType === null || borderType === void 0 ? void 0 : borderType.toLowerCase()) === "circle" ? "50%" : "0px";
21
21
  });
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = exports.VideoReproductor = exports.VideoMiniaturas = exports.Template = void 0;
8
+ exports.default = exports.Template = void 0;
9
9
 
10
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
11
 
@@ -36,72 +36,4 @@ var ProductImageDefault = Template.bind({});
36
36
  ProductImageDefault.args = {
37
37
  imageType: "main-image",
38
38
  altText: "default image"
39
- };
40
- /*
41
- Las escalas de video, lado a lado. Las cuatro primeras son miniaturas: sin
42
- controles, con su duración y un botón de play, y todo el recuadro clicable.
43
- Las dos últimas son reproductores de verdad.
44
- */
45
-
46
- var VIDEO = "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4";
47
-
48
- var Escala = function Escala(_ref) {
49
- var imageType = _ref.imageType;
50
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("figure", {
51
- style: {
52
- margin: 0
53
- },
54
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.ProductImage, {
55
- img: VIDEO,
56
- ext: "mp4",
57
- imageType: imageType,
58
- altText: "video de producto",
59
- onClick: function onClick() {
60
- return console.log("clic en", imageType);
61
- }
62
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("figcaption", {
63
- style: {
64
- fontFamily: "Lato",
65
- fontSize: 11,
66
- marginTop: 4
67
- },
68
- children: imageType
69
- })]
70
- });
71
- };
72
-
73
- var VideoMiniaturas = function VideoMiniaturas() {
74
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
75
- style: {
76
- display: "flex",
77
- gap: 24,
78
- alignItems: "flex-start"
79
- },
80
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Escala, {
81
- imageType: "carousel-image"
82
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Escala, {
83
- imageType: "catalogue-image-small-size"
84
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Escala, {
85
- imageType: "catalogue-modal-image"
86
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Escala, {
87
- imageType: "catalogue-image-big-size"
88
- })]
89
- });
90
- };
91
-
92
- exports.VideoMiniaturas = VideoMiniaturas;
93
-
94
- var VideoReproductor = function VideoReproductor() {
95
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
96
- style: {
97
- display: "flex",
98
- gap: 24,
99
- alignItems: "flex-start"
100
- },
101
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Escala, {
102
- imageType: "main-image"
103
- })
104
- });
105
- };
106
-
107
- exports.VideoReproductor = VideoReproductor;
39
+ };
@@ -7,119 +7,46 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.ProductImage = void 0;
9
9
 
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
11
-
12
- var _react = require("react");
13
-
14
- var _reactImageFallback = _interopRequireDefault(require("react-image-fallback"));
15
-
16
10
  var _styles = require("./styles");
17
11
 
18
- var _assetTypes = require("../../../global-files/digital-assets/assetTypes");
12
+ var _reactImageFallback = _interopRequireDefault(require("react-image-fallback"));
19
13
 
20
14
  var _defaultProductImage = _interopRequireDefault(require("../../../assets/images/defaultImages/defaultProductImage.png"));
21
15
 
22
16
  var _jsxRuntime = require("react/jsx-runtime");
23
17
 
24
- /*
25
- Tamaños en los que un video se muestra como miniatura y no como reproductor.
26
-
27
- Los controles nativos del navegador necesitan alrededor de 150px de ancho
28
- para ser usables; en un recuadro de 60 o de 85 se pintan encimados y no se
29
- puede ni dar play. Peor aún, un <video> con controles se traga el clic, así
30
- que un video en el carrusel no se podía ni seleccionar: `onClick` nunca
31
- llegaba a correr.
32
-
33
- En estos tamaños se muestra el primer fotograma con su duración y un botón de
34
- play, y el recuadro completo lleva al visor grande, que es donde el video sí
35
- se ve y se controla.
36
- */
37
- var THUMBNAIL_TYPES = ["carousel-image", "catalogue-image-small-size", "catalogue-image-big-size", "catalogue-modal-image"];
38
-
39
- var PlayBadge = function PlayBadge() {
40
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
41
- className: "play-badge",
42
- "aria-hidden": "true",
43
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("svg", {
44
- viewBox: "0 0 24 24",
45
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("circle", {
46
- cx: "12",
47
- cy: "12",
48
- r: "11"
49
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("polygon", {
50
- points: "9.5,7.5 17,12 9.5,16.5"
51
- })]
52
- })
53
- });
54
- };
55
- /**
56
- * Imagen —o video— de producto.
57
- *
58
- * El tipo de archivo se decide por `ext`/`mime` cuando quien llama los conoce.
59
- * Antes se comprobaba con `/\.mp4$/` sobre la URL, y nunca acertaba: la URL
60
- * guardada apunta al redimensionador de CloudFront y no conserva la extensión.
61
- * El regex queda solo como respaldo para los llamadores que aún mandan `img`
62
- * a secas.
63
- */
64
-
65
-
66
18
  var ProductImage = function ProductImage(_ref) {
67
19
  var img = _ref.img,
68
20
  imageType = _ref.imageType,
69
21
  altText = _ref.altText,
70
- onClick = _ref.onClick,
71
- ext = _ref.ext,
72
- mime = _ref.mime,
73
- poster = _ref.poster;
74
-
75
- // La duración no está en la base: se toma de los metadatos, que el navegador
76
- // ya descarga por el `preload="metadata"`. No cuesta una petición extra.
77
- var _useState = (0, _react.useState)(null),
78
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
79
- duration = _useState2[0],
80
- setDuration = _useState2[1];
81
-
82
- var kind = ext || mime ? (0, _assetTypes.resolvePreviewKind)({
83
- ext: ext,
84
- mime: mime
85
- }) : /\.mp4($|[?#])/i.test(img || "") ? _assetTypes.ASSET_PREVIEW.VIDEO : _assetTypes.ASSET_PREVIEW.IMAGE;
86
-
87
- if (kind === _assetTypes.ASSET_PREVIEW.VIDEO) {
88
- var isThumbnail = THUMBNAIL_TYPES.includes(imageType);
89
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styles.Container, {
90
- className: "".concat(imageType, " ").concat(isThumbnail ? "video-thumbnail" : "video-player"),
91
- onClick: isThumbnail ? onClick : undefined,
92
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("video", {
93
- // `#t=0.5` hace que el navegador muestre el fotograma del medio
94
- // segundo en lugar de un cuadro negro, sin descargar el archivo
95
- // completo.
96
- src: poster ? img : "".concat(img, "#t=0.5"),
97
- poster: poster || undefined,
98
- controls: !isThumbnail,
99
- muted: isThumbnail,
100
- playsInline: true,
101
- preload: "metadata",
102
- onLoadedMetadata: function onLoadedMetadata(e) {
103
- return setDuration(e.target.duration);
104
- }
105
- }), isThumbnail && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
106
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(PlayBadge, {}), duration ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
107
- className: "video-duration",
108
- children: (0, _assetTypes.formatDuration)(duration)
109
- }) : null]
110
- })]
22
+ onClick = _ref.onClick;
23
+ // Expresión regular para validar que los últimos tres caracteres sean ".mp4"
24
+ var regex = /\.mp4$/;
25
+
26
+ if (regex.test(img)) {
27
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_styles.Container, {
28
+ className: imageType,
29
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("video", {
30
+ controls: true,
31
+ width: "100%",
32
+ height: "auto",
33
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("source", {
34
+ src: img,
35
+ type: "video/mp4"
36
+ })
37
+ })
38
+ });
39
+ } else {
40
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_styles.Container, {
41
+ className: imageType,
42
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactImageFallback.default, {
43
+ src: img,
44
+ fallbackImage: _defaultProductImage.default,
45
+ alt: altText,
46
+ onClick: onClick
47
+ })
111
48
  });
112
49
  }
113
-
114
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_styles.Container, {
115
- className: imageType,
116
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactImageFallback.default, {
117
- src: img,
118
- fallbackImage: _defaultProductImage.default,
119
- alt: altText,
120
- onClick: onClick
121
- })
122
- });
123
50
  };
124
51
 
125
52
  exports.ProductImage = ProductImage;
@@ -11,10 +11,8 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
11
11
 
12
12
  var _styledComponents = _interopRequireDefault(require("styled-components"));
13
13
 
14
- var _variables = require("../../../global-files/variables");
15
-
16
14
  var _templateObject;
17
15
 
18
- var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: fit-content;\n\n img,\n video {\n object-fit: contain;\n }\n\n /*\n Miniatura de video: fotograma quieto, con su duraci\xF3n y un bot\xF3n de play.\n El clic lo recibe el contenedor, no el <video>, para que lleve al visor\n grande en vez de quedarse peleando con los controles.\n */\n &.video-thumbnail {\n position: relative;\n cursor: pointer;\n\n video {\n pointer-events: none;\n background: #000;\n }\n\n .play-badge {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 32px;\n height: 32px;\n pointer-events: none;\n\n svg {\n width: 100%;\n height: 100%;\n display: block;\n }\n\n circle {\n fill: rgba(0, 0, 0, 0.55);\n }\n\n polygon {\n fill: #ffffff;\n }\n }\n\n &:hover .play-badge circle {\n fill: rgba(0, 0, 0, 0.75);\n }\n\n .video-duration {\n position: absolute;\n right: 4px;\n bottom: 4px;\n padding: 0 4px;\n border-radius: 3px;\n background: rgba(0, 0, 0, 0.75);\n color: #ffffff;\n font-family: ", ";\n font-size: 10px;\n line-height: 15px;\n pointer-events: none;\n }\n }\n\n /* En 60px un badge de 32 tapa el fotograma completo. */\n &.catalogue-image-small-size.video-thumbnail .play-badge {\n width: 20px;\n height: 20px;\n }\n\n &.carousel-image.video-thumbnail {\n .play-badge {\n width: 22px;\n height: 22px;\n }\n\n .video-duration {\n font-size: 9px;\n line-height: 13px;\n }\n }\n\n &.carousel-image {\n img,\n video {\n width: 85px;\n height: 55px;\n cursor: pointer;\n }\n\n & + * {\n margin-left: 1px;\n }\n }\n\n &.main-image {\n img,\n video {\n width: 340px;\n height: 295px;\n }\n }\n\n &.catalogue-image-big-size {\n display: flex; \n justify-content: center; \n align-items: center; \n img,\n video {\n width: 179px;\n height: 179px;\n }\n }\n\n &.catalogue-image-small-size {\n img,\n video {\n width: 60px;\n height: 60px;\n }\n }\n\n &.catalogue-modal-image {\n flex: 1 0 50%;\n cursor: pointer;\n\n img,\n\n video {\n width: 168px;\n height: 108px;\n }\n }\n\n &.expanded-modal-image {\n width: 710px;\n height: 710px;\n display: flex; \n justify-content: center; \n align-items: center; \n\n img,\n\n video {\n width: 710px;\n height: 710px;\n }\n }\n"])), _variables.FontFamily.Lato);
16
+ var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: fit-content;\n\n img {\n object-fit: contain;\n }\n\n &.carousel-image {\n img {\n width: 85px;\n height: 55px;\n cursor: pointer;\n }\n\n & + * {\n margin-left: 1px;\n }\n }\n\n &.main-image {\n img {\n width: 340px;\n height: 295px;\n }\n }\n\n &.catalogue-image-big-size {\n display: flex; \n justify-content: center; \n align-items: center; \n img {\n width: 179px;\n height: 179px;\n }\n }\n\n &.catalogue-image-small-size {\n img {\n width: 60px;\n height: 60px;\n }\n }\n\n &.catalogue-modal-image {\n flex: 1 0 50%;\n cursor: pointer;\n\n img {\n width: 168px;\n height: 108px;\n }\n }\n\n &.expanded-modal-image {\n width: 710px;\n height: 710px;\n display: flex; \n justify-content: center; \n align-items: center; \n\n img {\n width: 710px;\n height: 710px;\n }\n }\n"])));
19
17
 
20
18
  exports.Container = Container;
@@ -16,14 +16,12 @@ var _jsxRuntime = require("react/jsx-runtime");
16
16
  var EditionActiveImage = function EditionActiveImage(_ref) {
17
17
  var img = _ref.img,
18
18
  altText = _ref.altText,
19
- setShowModal = _ref.setShowModal,
20
- ext = _ref.ext;
19
+ setShowModal = _ref.setShowModal;
21
20
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styles.Container, {
22
21
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_index.ProductImage, {
23
22
  img: img,
24
23
  imageType: "main-image",
25
- altText: altText,
26
- ext: ext
24
+ altText: altText
27
25
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.Button, {
28
26
  buttonType: "open-modal-button",
29
27
  onClick: function onClick() {
@@ -36,7 +36,7 @@ var _Tooltip = require("../../atoms/Tooltip");
36
36
  var _jsxRuntime = require("react/jsx-runtime");
37
37
 
38
38
  var GalleryElement = function GalleryElement(_ref) {
39
- var _auditImages$values$n, _auditImages$values$n2, _auditImages$values$n3;
39
+ var _auditImages$values$n, _auditImages$values$n2;
40
40
 
41
41
  var image = _ref.image,
42
42
  _ref$gridLayout = _ref.gridLayout,
@@ -54,8 +54,7 @@ var GalleryElement = function GalleryElement(_ref) {
54
54
  setCheckAll = _ref.setCheckAll,
55
55
  auditImages = _ref.auditImages,
56
56
  compare = _ref.compare,
57
- updateApprovedInputsImages = _ref.updateApprovedInputsImages,
58
- onSelect = _ref.onSelect;
57
+ updateApprovedInputsImages = _ref.updateApprovedInputsImages;
59
58
 
60
59
  var _useState = (0, _react.useState)(false),
61
60
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -134,16 +133,8 @@ var GalleryElement = function GalleryElement(_ref) {
134
133
  className: "image-container",
135
134
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ProductImage.ProductImage, {
136
135
  img: compare ? auditImages === null || auditImages === void 0 ? void 0 : (_auditImages$values$n2 = auditImages.values[number]) === null || _auditImages$values$n2 === void 0 ? void 0 : _auditImages$values$n2.src : image === null || image === void 0 ? void 0 : image.src,
137
- altText: image === null || image === void 0 ? void 0 : image.altText // Sin `ext`, un video se pinta como <img> rota: la URL guardada no
138
- // conserva la extensión del archivo.
139
- ,
140
- ext: compare ? auditImages === null || auditImages === void 0 ? void 0 : (_auditImages$values$n3 = auditImages.values[number]) === null || _auditImages$values$n3 === void 0 ? void 0 : _auditImages$values$n3.ext : image === null || image === void 0 ? void 0 : image.ext,
141
- imageType: "catalogue-image-".concat(gridLayout ? "big" : "small", "-size") // La miniatura de un video ya no lleva controles, así que el clic es
142
- // la única forma de llegar al visor grande. Se aplica también a las
143
- // imágenes: dos recuadros idénticos donde solo uno responde al clic
144
- // sería peor que no responder ninguno.
145
- ,
146
- onClick: onSelect
136
+ altText: image === null || image === void 0 ? void 0 : image.altText,
137
+ imageType: "catalogue-image-".concat(gridLayout ? "big" : "small", "-size")
147
138
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
148
139
  className: "information-container",
149
140
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.GalleryHeader = exports.GALLERY_COLUMNS = void 0;
6
+ exports.GalleryHeader = void 0;
7
7
 
8
8
  var _styles = require("./styles");
9
9
 
@@ -11,97 +11,13 @@ var _CheckBox = require("../../atoms/CheckBox");
11
11
 
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
13
 
14
- /*
15
- Las columnas de la bandeja dependen de qué se está listando: un PDF no tiene
16
- "tipo de toma" ni alto por ancho, y una foto no tiene "tipo de activo".
17
- Estaban escritas a mano en el marcado, así que la única forma de cambiarlas
18
- era duplicar el componente.
19
-
20
- El preset `image` reproduce exactamente las columnas y clases de antes, para
21
- que la bandeja de imágenes se vea idéntica sin que nadie tenga que pasar nada.
22
- */
23
- var GALLERY_COLUMNS = {
24
- image: {
25
- template: "0.1fr 1fr 1fr 1fr 1fr 1fr",
26
- columns: [{
27
- key: "preview",
28
- label: "Imagen",
29
- className: "image-header"
30
- }, {
31
- key: "name",
32
- label: "Nombre",
33
- className: "image-name"
34
- }, {
35
- key: "size",
36
- label: "Tamaño",
37
- className: "image-size"
38
- }, {
39
- key: "format",
40
- label: "Formato",
41
- className: "image-format"
42
- }, {
43
- key: "legend",
44
- label: "¿Tiene leyenda?",
45
- className: "image-description"
46
- }, {
47
- key: "shotType",
48
- label: "Tipo de toma",
49
- className: "shoot-type"
50
- }]
51
- },
52
- asset: {
53
- template: "0.1fr 1fr 1fr 1fr 1fr",
54
- columns: [{
55
- key: "preview",
56
- label: "Activo",
57
- className: "asset-header"
58
- }, {
59
- key: "name",
60
- label: "Nombre",
61
- className: "asset-name"
62
- }, {
63
- key: "weight",
64
- label: "Peso",
65
- className: "asset-weight"
66
- }, {
67
- key: "format",
68
- label: "Formato",
69
- className: "asset-format"
70
- }, {
71
- key: "assetType",
72
- label: "Tipo de activo",
73
- className: "asset-type"
74
- }]
75
- }
76
- };
77
- /**
78
- * Encabezado de la bandeja, con su casilla de "seleccionar todo".
79
- *
80
- * `checkAllId` e `itemSelector` se pueden cambiar porque imágenes y activos
81
- * conviven en la misma pestaña: si las dos listas compartieran el id de la
82
- * casilla global, marcar todas las imágenes marcaría también los activos.
83
- */
84
-
85
- exports.GALLERY_COLUMNS = GALLERY_COLUMNS;
86
-
87
14
  var GalleryHeader = function GalleryHeader(_ref) {
88
- var _GALLERY_COLUMNS$vari;
89
-
90
15
  var setCheckAll = _ref.setCheckAll,
91
16
  setSelectedImages = _ref.setSelectedImages,
92
- shotThd = _ref.shotThd,
93
- _ref$variant = _ref.variant,
94
- variant = _ref$variant === void 0 ? "image" : _ref$variant,
95
- columns = _ref.columns,
96
- _ref$checkAllId = _ref.checkAllId,
97
- checkAllId = _ref$checkAllId === void 0 ? "check-all-images" : _ref$checkAllId,
98
- _ref$itemSelector = _ref.itemSelector,
99
- itemSelector = _ref$itemSelector === void 0 ? "[id^='gallery-element-']" : _ref$itemSelector;
100
- var preset = (_GALLERY_COLUMNS$vari = GALLERY_COLUMNS[variant]) !== null && _GALLERY_COLUMNS$vari !== void 0 ? _GALLERY_COLUMNS$vari : GALLERY_COLUMNS.image;
101
- var visibleColumns = columns !== null && columns !== void 0 ? columns : preset.columns;
17
+ shotThd = _ref.shotThd;
102
18
 
103
19
  var checkAll = function checkAll(e) {
104
- var checkboxList = document.querySelectorAll(itemSelector);
20
+ var checkboxList = document.querySelectorAll("[id^='gallery-element-']");
105
21
  checkboxList.forEach(function (chk) {
106
22
  return chk.checked = e.target.checked;
107
23
  });
@@ -110,23 +26,35 @@ var GalleryHeader = function GalleryHeader(_ref) {
110
26
  };
111
27
 
112
28
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styles.Container, {
113
- template: preset.template,
114
29
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
115
30
  className: "checkbox",
116
31
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CheckBox.CheckBox, {
117
- id: checkAllId,
32
+ id: "check-all-images",
118
33
  onChange: function onChange(e) {
119
34
  return checkAll(e);
120
35
  }
121
36
  })
122
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
37
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
123
38
  className: "information",
124
- children: visibleColumns.map(function (column) {
125
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
126
- className: column.className,
127
- children: column.label
128
- }, column.key);
129
- })
39
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
40
+ className: "image-header",
41
+ children: "Imagen"
42
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
43
+ className: "image-name",
44
+ children: "Nombre"
45
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
46
+ className: "image-size",
47
+ children: "Tama\xF1o"
48
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
49
+ className: "image-format",
50
+ children: "Formato"
51
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
52
+ className: "image-description",
53
+ children: "\xBFTiene leyenda?"
54
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("p", {
55
+ className: "shoot-type",
56
+ children: "Tipo de toma"
57
+ })]
130
58
  })]
131
59
  });
132
60
  };
@@ -15,9 +15,6 @@ var _variables = require("../../../global-files/variables");
15
15
 
16
16
  var _templateObject;
17
17
 
18
- var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n width: 100%;\n padding: 10px;\n padding-left: 0;\n align-items: center;\n\n .checkbox{\n width: 5.25%;\n }\n\n .information{\n width: 90%;\n display: grid;\n /* Lo define el preset de columnas; el valor por defecto es el de im\xE1genes. */\n grid-template-columns: ", ";\n }\n .image-header{\n\n }\n\n .image-name{\n padding-left: 1.75rem;\n }\n\n .image-size{\n padding-left: 2.75rem;\n\n }\n\n .image-format{\n padding-left: 4.5rem;\n\n }\n\n .image-description{\n margin-left: -1rem;\n }\n\n .shoot-type{\n }\n\n p {\n font-family: ", ";\n font-style: normal;\n font-weight: 600;\n font-size: 14px;\n line-height: 21px;\n letter-spacing: -0.015em;\n color: ", ";\n flex: 1;\n text-align: center;\n\n /*&.value-header {\n max-width: 60px;\n }\n\n &.image-header {\n max-width: 60px;\n }\n\n &.image-name {\n min-width: 20%;\n }\n\n &.image-format {\n max-width: 60px;\n }\n\n &.image-size {\n max-width: 90px;\n }\n\n &.image-identifier {\n max-width: 80px;\n }\n\n &.image-description {\n max-width: 120px;\n }*/\n }\n"])), function (_ref) {
19
- var template = _ref.template;
20
- return template || "0.1fr 1fr 1fr 1fr 1fr 1fr";
21
- }, _variables.FontFamily.AvenirNext, _variables.GlobalColors.s5);
18
+ var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n width: 100%;\n padding: 10px;\n padding-left: 0;\n align-items: center;\n\n .checkbox{\n width: 5.25%;\n }\n\n .information{\n width: 90%;\n display: grid;\n grid-template-columns: 0.1fr 1fr 1fr 1fr 1fr 1fr;\n }\n .image-header{\n\n }\n\n .image-name{\n padding-left: 1.75rem;\n }\n\n .image-size{\n padding-left: 2.75rem;\n\n }\n\n .image-format{\n padding-left: 4.5rem;\n\n }\n\n .image-description{\n margin-left: -1rem;\n }\n\n .shoot-type{\n }\n\n p {\n font-family: ", ";\n font-style: normal;\n font-weight: 600;\n font-size: 14px;\n line-height: 21px;\n letter-spacing: -0.015em;\n color: ", ";\n flex: 1;\n text-align: center;\n\n /*&.value-header {\n max-width: 60px;\n }\n\n &.image-header {\n max-width: 60px;\n }\n\n &.image-name {\n min-width: 20%;\n }\n\n &.image-format {\n max-width: 60px;\n }\n\n &.image-size {\n max-width: 90px;\n }\n\n &.image-identifier {\n max-width: 80px;\n }\n\n &.image-description {\n max-width: 120px;\n }*/\n }\n"])), _variables.FontFamily.AvenirNext, _variables.GlobalColors.s5);
22
19
 
23
20
  exports.Container = Container;
@@ -24,7 +24,6 @@ var ImageSelector = function ImageSelector(_ref) {
24
24
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_index.ProductImage, {
25
25
  img: image.src,
26
26
  altText: image.altText,
27
- ext: image.ext,
28
27
  imageType: modalSelector ? "catalogue-modal-image" : "carousel-image",
29
28
  onClick: function onClick() {
30
29
  return setActiveImage(index);
@@ -23,7 +23,6 @@ var ImagePreviewer = function ImagePreviewer(_ref) {
23
23
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_EditionActiveImage.EditionActiveImage, {
24
24
  img: activeImage === null || activeImage === void 0 ? void 0 : activeImage.src,
25
25
  altText: activeImage === null || activeImage === void 0 ? void 0 : activeImage.name,
26
- ext: activeImage === null || activeImage === void 0 ? void 0 : activeImage.ext,
27
26
  setShowModal: setShowModal
28
27
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImageSelector.ImageSelector, {
29
28
  images: imagesArray,
@@ -26,7 +26,7 @@ var _GeneralButton = require("../../atoms/GeneralButton");
26
26
  var _jsxRuntime = require("react/jsx-runtime");
27
27
 
28
28
  var ProductImageModal = function ProductImageModal(_ref) {
29
- var _images$values$active, _images$values$active2, _images$values$active3, _images$values$active4;
29
+ var _images$values$active, _images$values$active2, _images$values$active3;
30
30
 
31
31
  var _ref$images = _ref.images,
32
32
  images = _ref$images === void 0 ? [] : _ref$images,
@@ -72,7 +72,6 @@ var ProductImageModal = function ProductImageModal(_ref) {
72
72
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ProductImage.ProductImage, {
73
73
  img: "https://" + process.env.REACT_APP_IMAGES_BUCKET + ".s3.amazonaws.com/" + (images === null || images === void 0 ? void 0 : (_images$values$active = images.values[activeImage]) === null || _images$values$active === void 0 ? void 0 : _images$values$active.srcDB),
74
74
  altText: images === null || images === void 0 ? void 0 : (_images$values$active2 = images.values[activeImage]) === null || _images$values$active2 === void 0 ? void 0 : _images$values$active2.name,
75
- ext: images === null || images === void 0 ? void 0 : (_images$values$active3 = images.values[activeImage]) === null || _images$values$active3 === void 0 ? void 0 : _images$values$active3.ext,
76
75
  imageType: "expanded-modal-image"
77
76
  })
78
77
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
@@ -103,7 +102,7 @@ var ProductImageModal = function ProductImageModal(_ref) {
103
102
  }
104
103
  })]
105
104
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImageDataTable.ImageDataTable, {
106
- imageData: images === null || images === void 0 ? void 0 : (_images$values$active4 = images.values[activeImage]) === null || _images$values$active4 === void 0 ? void 0 : _images$values$active4.data,
105
+ imageData: images === null || images === void 0 ? void 0 : (_images$values$active3 = images.values[activeImage]) === null || _images$values$active3 === void 0 ? void 0 : _images$values$active3.data,
107
106
  headerInfo: headerInfo,
108
107
  activeImage: images === null || images === void 0 ? void 0 : images.values[activeImage],
109
108
  darkMode: true,