{"version":3,"file":"js/rescript-bundles-dashboard-edit-product-assets-tab-9dea8cb3e09e677246ee.chunk.js","mappings":"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","sources":["webpack://datacenters/./client/app/rescript/bindings/CloudinaryWidget.res.js","webpack://datacenters/./client/app/rescript/bundles/common/dashboard/DashboardProductEditorAssetsTab.res.js","webpack://datacenters/./client/app/rescript/api/products/requests/CreateProductsImageRequest.res.js","webpack://datacenters/./client/app/rescript/api/products/requests/CreateProductsVideoRequest.res.js","webpack://datacenters/./client/app/rescript/api/products/requests/UpdateProductsImageRequest.res.js","webpack://datacenters/./client/app/rescript/api/products/requests/UpdateProductsVideoRequest.res.js","webpack://datacenters/./client/app/rescript/api/products/Api_Product.res.js","webpack://datacenters/./client/app/rescript/api/products/requests/DeleteProductsImageRequest.res.js","webpack://datacenters/./client/app/rescript/api/products/requests/DeleteProductsVideoRequest.res.js","webpack://datacenters/./client/app/rescript/bundles/common/dashboard/DashboardProductEditorImageForm.res.js","webpack://datacenters/./client/app/rescript/bundles/common/dashboard/DashboardProductEditorVideoForm.res.js","webpack://datacenters/./client/app/rescript/bundles/common/dashboard/DashboardProductEditorAssetsTabVideoLinkForm.res.js","webpack://datacenters/./client/app/rescript/bundles/common/dashboard/DashboardProductEditorAssetsTabUploader.res.js","webpack://datacenters/./client/app/rescript/bundles/dashboard-edit-product/assets-tab/DashboardEditProductAssetsTab.res.js","webpack://datacenters/./client/app/rescript/bundles/dashboard-edit-product/assets-tab/index.js","webpack://datacenters/./client/app/rescript/libs/Regex.res.js","webpack://datacenters/./client/app/rescript/styleguide/components/Heading/H3.res.js","webpack://datacenters/./client/app/rescript/styleguide/forms/Form/Form.res.js","webpack://datacenters/./client/app/rescript/styleguide/components/Image/ImageWithFallback.res.js","webpack://datacenters/./client/app/rescript/styleguide/forms/Picture/Picture.res.js"],"sourcesContent":["// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Belt_Result from \"rescript/lib/es6/belt_Result.js\";\nimport * as Json$JsonCombinators from \"@glennsl/rescript-json-combinators/src/Json.res.js\";\nimport * as Json_Decode$JsonCombinators from \"@glennsl/rescript-json-combinators/src/Json_Decode.res.js\";\n\nvar Loader = {};\n\nvar decoder = Json_Decode$JsonCombinators.object(function (field) {\n return {\n assetId: field.required(\"asset_id\", Json_Decode$JsonCombinators.string),\n batchId: field.required(\"batchId\", Json_Decode$JsonCombinators.string),\n bytes: field.required(\"bytes\", Json_Decode$JsonCombinators.$$int),\n createdAt: field.required(\"created_at\", Json_Decode$JsonCombinators.string),\n etag: field.required(\"etag\", Json_Decode$JsonCombinators.string),\n folder: field.required(\"folder\", Json_Decode$JsonCombinators.string),\n format: field.required(\"format\", Json_Decode$JsonCombinators.string),\n height: field.required(\"height\", Json_Decode$JsonCombinators.$$int),\n id: field.required(\"id\", Json_Decode$JsonCombinators.string),\n originalFilename: field.required(\"original_filename\", Json_Decode$JsonCombinators.string),\n path: field.required(\"path\", Json_Decode$JsonCombinators.string),\n placeholder: field.required(\"placeholder\", Json_Decode$JsonCombinators.bool),\n publicId: field.required(\"public_id\", Json_Decode$JsonCombinators.string),\n resourceType: field.required(\"resource_type\", Json_Decode$JsonCombinators.string),\n secureUrl: field.required(\"secure_url\", Json_Decode$JsonCombinators.string),\n signature: field.required(\"signature\", Json_Decode$JsonCombinators.string),\n tags: field.required(\"tags\", Json_Decode$JsonCombinators.array(Json_Decode$JsonCombinators.string)),\n thumbnailUrl: field.required(\"thumbnail_url\", Json_Decode$JsonCombinators.string),\n type_: field.required(\"type\", Json_Decode$JsonCombinators.string),\n url: field.required(\"url\", Json_Decode$JsonCombinators.string),\n version: field.required(\"version\", Json_Decode$JsonCombinators.$$int),\n versionId: field.required(\"version_id\", Json_Decode$JsonCombinators.string),\n width: field.required(\"width\", Json_Decode$JsonCombinators.$$int)\n };\n });\n\nfunction fromJson(json) {\n return Belt_Result.getExn(Json$JsonCombinators.decode(json, decoder));\n}\n\nvar Info = {\n decoder: decoder,\n fromJson: fromJson\n};\n\nvar decoder$1 = Json_Decode$JsonCombinators.object(function (field) {\n return {\n event: field.required(\"event\", Json_Decode$JsonCombinators.string),\n info: field.required(\"info\", decoder)\n };\n });\n\nfunction fromJson$1(json) {\n return Belt_Result.getExn(Json$JsonCombinators.decode(json, decoder$1));\n}\n\nexport {\n Loader ,\n Info ,\n decoder$1 as decoder,\n fromJson$1 as fromJson,\n}\n/* decoder Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as H2 from \"../../../styleguide/components/Heading/H2.res.js\";\nimport * as Container from \"../../../styleguide/components/Container/Container.res.js\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport * as DashboardProductEditorScss from \"./DashboardProductEditor.scss\";\n\nvar css = DashboardProductEditorScss;\n\nfunction DashboardProductEditorAssetsTab(props) {\n return JsxRuntime.jsxs(Container.make, {\n className: css.addAssetsContainer,\n children: [\n JsxRuntime.jsx(H2.make, {\n className: css.formTitle,\n children: \"Add Images & Videos\"\n }),\n props.children\n ]\n });\n}\n\nvar make = DashboardProductEditorAssetsTab;\n\nexport {\n css ,\n make ,\n}\n/* css Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as ID from \"../../../libs/ID.res.js\";\nimport * as Rest from \"../../Rest.res.js\";\nimport * as ColocationProduct from \"../../../models/ColocationProduct.res.js\";\nimport * as Json_Encode$JsonCombinators from \"@glennsl/rescript-json-combinators/src/Json_Encode.res.js\";\n\nfunction toJson(req) {\n return Json_Encode$JsonCombinators.object([\n [\n \"public_id\",\n req.image.info.publicId\n ],\n [\n \"id\",\n req.image.info.id\n ],\n [\n \"width\",\n req.image.info.width\n ],\n [\n \"height\",\n req.image.info.height\n ],\n [\n \"format\",\n req.image.info.format\n ]\n ]);\n}\n\nvar Req = {\n toJson: toJson\n};\n\nfunction exec(productId, image) {\n return Rest.$$fetch(\"/dashboard/products/\" + (ID.toString(productId) + \"/images\"), {\n NAME: \"Post\",\n VAL: toJson(image)\n }, {\n NAME: \"Json\",\n VAL: ColocationProduct.Draft.decoder\n }, undefined, undefined);\n}\n\nexport {\n Req ,\n exec ,\n}\n/* ID Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as ID from \"../../../libs/ID.res.js\";\nimport * as Rest from \"../../Rest.res.js\";\nimport * as Video from \"../../../models/Video.res.js\";\nimport * as ColocationProduct from \"../../../models/ColocationProduct.res.js\";\nimport * as Json_Encode$JsonCombinators from \"@glennsl/rescript-json-combinators/src/Json_Encode.res.js\";\n\nfunction toJson(req) {\n return Json_Encode$JsonCombinators.object([\n [\n \"public_id\",\n req.video.info.publicId\n ],\n [\n \"id\",\n req.video.info.id\n ],\n [\n \"width\",\n req.video.info.width\n ],\n [\n \"height\",\n req.video.info.height\n ],\n [\n \"format\",\n req.video.info.format\n ],\n [\n \"url\",\n req.video.info.secureUrl\n ],\n [\n \"source\",\n Video.Source.toString(\"Cloudinary\")\n ]\n ]);\n}\n\nvar Req = {\n toJson: toJson\n};\n\nfunction exec(productId, video) {\n return Rest.$$fetch(\"/dashboard/products/\" + (ID.toString(productId) + \"/videos\"), {\n NAME: \"Post\",\n VAL: toJson(video)\n }, {\n NAME: \"Json\",\n VAL: ColocationProduct.Draft.decoder\n }, undefined, undefined);\n}\n\nexport {\n Req ,\n exec ,\n}\n/* ID Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as ID from \"../../../libs/ID.res.js\";\nimport * as Rest from \"../../Rest.res.js\";\nimport * as ColocationProduct from \"../../../models/ColocationProduct.res.js\";\nimport * as Json_Encode$JsonCombinators from \"@glennsl/rescript-json-combinators/src/Json_Encode.res.js\";\n\nfunction toJson(image) {\n return Json_Encode$JsonCombinators.object([\n [\n \"description\",\n image.description\n ],\n [\n \"active\",\n image.active\n ]\n ]);\n}\n\nvar Req = {\n toJson: toJson\n};\n\nfunction exec(productId, imageId, image) {\n return Rest.$$fetch(\"/dashboard/products/\" + (ID.toString(productId) + (\"/images/\" + ID.toString(imageId))), {\n NAME: \"Patch\",\n VAL: toJson(image)\n }, {\n NAME: \"Json\",\n VAL: ColocationProduct.Draft.decoder\n }, undefined, undefined);\n}\n\nexport {\n Req ,\n exec ,\n}\n/* ID Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as ID from \"../../../libs/ID.res.js\";\nimport * as Rest from \"../../Rest.res.js\";\nimport * as ColocationProduct from \"../../../models/ColocationProduct.res.js\";\nimport * as Json_Encode$JsonCombinators from \"@glennsl/rescript-json-combinators/src/Json_Encode.res.js\";\n\nfunction toJson(video) {\n return Json_Encode$JsonCombinators.object([\n [\n \"description\",\n video.description\n ],\n [\n \"active\",\n video.active\n ]\n ]);\n}\n\nvar Req = {\n toJson: toJson\n};\n\nfunction exec(productId, videoId, video) {\n return Rest.$$fetch(\"/dashboard/products/\" + (ID.toString(productId) + (\"/videos/\" + ID.toString(videoId))), {\n NAME: \"Patch\",\n VAL: toJson(video)\n }, {\n NAME: \"Json\",\n VAL: ColocationProduct.Draft.decoder\n }, undefined, undefined);\n}\n\nexport {\n Req ,\n exec ,\n}\n/* ID Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as CreateProductsImageRequest from \"./requests/CreateProductsImageRequest.res.js\";\nimport * as CreateProductsVideoRequest from \"./requests/CreateProductsVideoRequest.res.js\";\nimport * as DeleteProductsImageRequest from \"./requests/DeleteProductsImageRequest.res.js\";\nimport * as DeleteProductsVideoRequest from \"./requests/DeleteProductsVideoRequest.res.js\";\nimport * as UpdateProductsImageRequest from \"./requests/UpdateProductsImageRequest.res.js\";\nimport * as UpdateProductsVideoRequest from \"./requests/UpdateProductsVideoRequest.res.js\";\n\nvar createImage = CreateProductsImageRequest.exec;\n\nvar createVideo = CreateProductsVideoRequest.exec;\n\nvar deleteImage = DeleteProductsImageRequest.exec;\n\nvar deleteVideo = DeleteProductsVideoRequest.exec;\n\nvar updateImage = UpdateProductsImageRequest.exec;\n\nvar updateVideo = UpdateProductsVideoRequest.exec;\n\nexport {\n createImage ,\n createVideo ,\n deleteImage ,\n deleteVideo ,\n updateImage ,\n updateVideo ,\n}\n/* CreateProductsImageRequest Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as ID from \"../../../libs/ID.res.js\";\nimport * as Rest from \"../../Rest.res.js\";\nimport * as ColocationProduct from \"../../../models/ColocationProduct.res.js\";\n\nfunction exec(productId, imageId) {\n return Rest.$$fetch(\"/dashboard/products/\" + (ID.toString(productId) + (\"/images/\" + ID.toString(imageId))), {\n NAME: \"Delete\",\n VAL: undefined\n }, {\n NAME: \"Json\",\n VAL: ColocationProduct.Draft.decoder\n }, undefined, undefined);\n}\n\nexport {\n exec ,\n}\n/* ID Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as ID from \"../../../libs/ID.res.js\";\nimport * as Rest from \"../../Rest.res.js\";\nimport * as ColocationProduct from \"../../../models/ColocationProduct.res.js\";\n\nfunction exec(productId, videoId) {\n return Rest.$$fetch(\"/dashboard/products/\" + (ID.toString(productId) + (\"/videos/\" + ID.toString(videoId))), {\n NAME: \"Delete\",\n VAL: undefined\n }, {\n NAME: \"Json\",\n VAL: ColocationProduct.Draft.decoder\n }, undefined, undefined);\n}\n\nexport {\n exec ,\n}\n/* ID Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Cx from \"rescript-classnames/src/Cx.res.js\";\nimport * as ID from \"../../../libs/ID.res.js\";\nimport * as React from \"react\";\nimport * as Toggle from \"../../../styleguide/forms/Toggle/Toggle.res.js\";\nimport * as Picture from \"../../../styleguide/forms/Picture/Picture.res.js\";\nimport * as $$Promise from \"../../../bindings/Promise.res.js\";\nimport * as Caml_obj from \"rescript/lib/es6/caml_obj.js\";\nimport * as Js_array from \"rescript/lib/es6/js_array.js\";\nimport * as Formality from \"re-formality/src/Formality.res.js\";\nimport * as TextField from \"../../../styleguide/forms/TextField/TextField.res.js\";\nimport * as IconDelete from \"../../../styleguide/icons/IconDelete.res.js\";\nimport * as Api_Product from \"../../../api/products/Api_Product.res.js\";\nimport * as Belt_Option from \"rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"rescript/lib/es6/caml_option.js\";\nimport * as ErrorMessage from \"../../../styleguide/forms/ErrorMessage/ErrorMessage.res.js\";\nimport * as SentryLogger from \"../../../loggers/SentryLogger.res.js\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport * as Formality__ReactUpdate from \"re-formality/src/Formality__ReactUpdate.res.js\";\nimport * as DashboardProductEditorScss from \"./DashboardProductEditor.scss\";\n\nvar css = DashboardProductEditorScss;\n\nvar validators = {\n description: undefined,\n active: undefined,\n url: undefined\n};\n\nfunction initialFieldsStatuses(_input) {\n return {\n description: \"Pristine\",\n active: \"Pristine\",\n url: \"Pristine\"\n };\n}\n\nfunction initialState(input) {\n return {\n input: input,\n fieldsStatuses: {\n description: \"Pristine\",\n active: \"Pristine\",\n url: \"Pristine\"\n },\n collectionsStatuses: undefined,\n formStatus: \"Editing\",\n submissionStatus: \"NeverSubmitted\"\n };\n}\n\nfunction validateForm(input, param, param$1) {\n var match_0 = {\n TAG: \"Ok\",\n _0: input.description\n };\n var match_0$1 = {\n TAG: \"Ok\",\n _0: input.active\n };\n var match_0$2 = {\n TAG: \"Ok\",\n _0: input.url\n };\n var descriptionResult = match_0;\n var descriptionResult$1;\n if (descriptionResult.TAG === \"Ok\") {\n var activeResult = match_0$1;\n if (activeResult.TAG === \"Ok\") {\n var urlResult = match_0$2;\n if (urlResult.TAG === \"Ok\") {\n return {\n TAG: \"Valid\",\n output: {\n description: descriptionResult._0,\n active: activeResult._0,\n url: urlResult._0\n },\n fieldsStatuses: {\n description: {\n TAG: \"Dirty\",\n _0: descriptionResult,\n _1: \"Hidden\"\n },\n active: {\n TAG: \"Dirty\",\n _0: activeResult,\n _1: \"Hidden\"\n },\n url: {\n TAG: \"Dirty\",\n _0: urlResult,\n _1: \"Hidden\"\n }\n },\n collectionsStatuses: undefined\n };\n }\n descriptionResult$1 = descriptionResult;\n } else {\n descriptionResult$1 = descriptionResult;\n }\n } else {\n descriptionResult$1 = descriptionResult;\n }\n return {\n TAG: \"Invalid\",\n fieldsStatuses: {\n description: {\n TAG: \"Dirty\",\n _0: descriptionResult$1,\n _1: \"Hidden\"\n },\n active: {\n TAG: \"Dirty\",\n _0: match_0$1,\n _1: \"Hidden\"\n },\n url: {\n TAG: \"Dirty\",\n _0: match_0$2,\n _1: \"Hidden\"\n }\n },\n collectionsStatuses: undefined\n };\n}\n\nfunction useForm(initialInput, onSubmit) {\n var memoizedInitialState = React.useMemo((function () {\n return initialState(initialInput);\n }), [initialInput]);\n var match = Formality__ReactUpdate.useReducer(memoizedInitialState, (function (state, action) {\n if (typeof action !== \"object\") {\n switch (action) {\n case \"BlurDescriptionField\" :\n var result = Formality.validateFieldOnBlurWithoutValidator(state.input.description, state.fieldsStatuses.description, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: status,\n active: init.active,\n url: init.url\n };\n }));\n if (result !== undefined) {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: result,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n } else {\n return \"NoUpdate\";\n }\n case \"BlurActiveField\" :\n var result$1 = Formality.validateFieldOnBlurWithoutValidator(state.input.active, state.fieldsStatuses.active, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: init.description,\n active: status,\n url: init.url\n };\n }));\n if (result$1 !== undefined) {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: result$1,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n } else {\n return \"NoUpdate\";\n }\n case \"BlurUrlField\" :\n var result$2 = Formality.validateFieldOnBlurWithoutValidator(state.input.url, state.fieldsStatuses.url, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: init.description,\n active: init.active,\n url: status\n };\n }));\n if (result$2 !== undefined) {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: result$2,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n } else {\n return \"NoUpdate\";\n }\n case \"Submit\" :\n var match = state.formStatus;\n if (typeof match === \"object\" && match.TAG === \"Submitting\") {\n return \"NoUpdate\";\n }\n var match$1 = validateForm(state.input, validators, state.fieldsStatuses);\n if (match$1.TAG !== \"Valid\") {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: match$1.fieldsStatuses,\n collectionsStatuses: match$1.collectionsStatuses,\n formStatus: \"Editing\",\n submissionStatus: \"AttemptedToSubmit\"\n }\n };\n }\n var output = match$1.output;\n var error = state.formStatus;\n var tmp;\n tmp = typeof error !== \"object\" || error.TAG !== \"SubmissionFailed\" ? undefined : Caml_option.some(error._0);\n return {\n TAG: \"UpdateWithSideEffects\",\n _0: {\n input: state.input,\n fieldsStatuses: match$1.fieldsStatuses,\n collectionsStatuses: match$1.collectionsStatuses,\n formStatus: {\n TAG: \"Submitting\",\n _0: tmp\n },\n submissionStatus: \"AttemptedToSubmit\"\n },\n _1: (function (param) {\n var dispatch = param.dispatch;\n onSubmit(output, {\n notifyOnSuccess: (function (input) {\n dispatch({\n TAG: \"SetSubmittedStatus\",\n _0: input\n });\n }),\n notifyOnFailure: (function (error) {\n dispatch({\n TAG: \"SetSubmissionFailedStatus\",\n _0: error\n });\n }),\n reset: (function () {\n dispatch(\"Reset\");\n }),\n dismissSubmissionResult: (function () {\n dispatch(\"DismissSubmissionResult\");\n })\n });\n })\n };\n break;\n case \"DismissSubmissionError\" :\n var match$2 = state.formStatus;\n if (typeof match$2 !== \"object\" || match$2.TAG !== \"SubmissionFailed\") {\n return \"NoUpdate\";\n } else {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: state.fieldsStatuses,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: \"Editing\",\n submissionStatus: state.submissionStatus\n }\n };\n }\n case \"DismissSubmissionResult\" :\n var match$3 = state.formStatus;\n if (typeof match$3 !== \"object\") {\n if (match$3 === \"Editing\") {\n return \"NoUpdate\";\n }\n \n } else if (match$3.TAG === \"Submitting\") {\n return \"NoUpdate\";\n }\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: state.fieldsStatuses,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: \"Editing\",\n submissionStatus: state.submissionStatus\n }\n };\n case \"Reset\" :\n return {\n TAG: \"Update\",\n _0: initialState(initialInput)\n };\n \n }\n } else {\n switch (action.TAG) {\n case \"UpdateDescriptionField\" :\n var nextInput = action._0(state.input);\n return {\n TAG: \"Update\",\n _0: {\n input: nextInput,\n fieldsStatuses: Formality.validateFieldOnChangeWithoutValidator(nextInput.description, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: status,\n active: init.active,\n url: init.url\n };\n })),\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n case \"UpdateActiveField\" :\n var nextInput$1 = action._0(state.input);\n return {\n TAG: \"Update\",\n _0: {\n input: nextInput$1,\n fieldsStatuses: Formality.validateFieldOnChangeWithoutValidator(nextInput$1.active, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: init.description,\n active: status,\n url: init.url\n };\n })),\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n case \"UpdateUrlField\" :\n var nextInput$2 = action._0(state.input);\n return {\n TAG: \"Update\",\n _0: {\n input: nextInput$2,\n fieldsStatuses: Formality.validateFieldOnChangeWithoutValidator(nextInput$2.url, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: init.description,\n active: init.active,\n url: status\n };\n })),\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n case \"SetSubmittedStatus\" :\n var input = action._0;\n if (input !== undefined) {\n return {\n TAG: \"Update\",\n _0: {\n input: input,\n fieldsStatuses: {\n description: \"Pristine\",\n active: \"Pristine\",\n url: \"Pristine\"\n },\n collectionsStatuses: state.collectionsStatuses,\n formStatus: \"Submitted\",\n submissionStatus: state.submissionStatus\n }\n };\n } else {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: {\n description: \"Pristine\",\n active: \"Pristine\",\n url: \"Pristine\"\n },\n collectionsStatuses: state.collectionsStatuses,\n formStatus: \"Submitted\",\n submissionStatus: state.submissionStatus\n }\n };\n }\n case \"SetSubmissionFailedStatus\" :\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: state.fieldsStatuses,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: {\n TAG: \"SubmissionFailed\",\n _0: action._0\n },\n submissionStatus: state.submissionStatus\n }\n };\n case \"MapSubmissionError\" :\n var map = action._0;\n var error$1 = state.formStatus;\n if (typeof error$1 !== \"object\") {\n return \"NoUpdate\";\n }\n if (error$1.TAG !== \"Submitting\") {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: state.fieldsStatuses,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: {\n TAG: \"SubmissionFailed\",\n _0: map(error$1._0)\n },\n submissionStatus: state.submissionStatus\n }\n };\n }\n var error$2 = error$1._0;\n if (error$2 !== undefined) {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: state.fieldsStatuses,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: {\n TAG: \"Submitting\",\n _0: Caml_option.some(map(Caml_option.valFromOption(error$2)))\n },\n submissionStatus: state.submissionStatus\n }\n };\n } else {\n return \"NoUpdate\";\n }\n \n }\n }\n }));\n var dispatch = match[1];\n var state = match[0];\n var match$1 = state.formStatus;\n var tmp;\n tmp = typeof match$1 !== \"object\" || match$1.TAG !== \"Submitting\" ? false : true;\n return {\n updateDescription: (function (nextInputFn, nextValue) {\n dispatch({\n TAG: \"UpdateDescriptionField\",\n _0: (function (__x) {\n return nextInputFn(__x, nextValue);\n })\n });\n }),\n updateActive: (function (nextInputFn, nextValue) {\n dispatch({\n TAG: \"UpdateActiveField\",\n _0: (function (__x) {\n return nextInputFn(__x, nextValue);\n })\n });\n }),\n updateUrl: (function (nextInputFn, nextValue) {\n dispatch({\n TAG: \"UpdateUrlField\",\n _0: (function (__x) {\n return nextInputFn(__x, nextValue);\n })\n });\n }),\n blurDescription: (function () {\n dispatch(\"BlurDescriptionField\");\n }),\n blurActive: (function () {\n dispatch(\"BlurActiveField\");\n }),\n blurUrl: (function () {\n dispatch(\"BlurUrlField\");\n }),\n descriptionResult: Formality.exposeFieldResult(state.fieldsStatuses.description),\n activeResult: Formality.exposeFieldResult(state.fieldsStatuses.active),\n urlResult: Formality.exposeFieldResult(state.fieldsStatuses.url),\n input: state.input,\n status: state.formStatus,\n dirty: (function () {\n var match = state.fieldsStatuses;\n var tmp = match.description;\n if (typeof tmp === \"object\") {\n return true;\n }\n var tmp$1 = match.active;\n if (typeof tmp$1 === \"object\") {\n return true;\n }\n var tmp$2 = match.url;\n if (typeof tmp$2 !== \"object\") {\n return false;\n } else {\n return true;\n }\n }),\n valid: (function () {\n var match = validateForm(state.input, validators, state.fieldsStatuses);\n if (match.TAG === \"Valid\") {\n return true;\n } else {\n return false;\n }\n }),\n submitting: tmp,\n submit: (function () {\n dispatch(\"Submit\");\n }),\n dismissSubmissionError: (function () {\n dispatch(\"DismissSubmissionError\");\n }),\n dismissSubmissionResult: (function () {\n dispatch(\"DismissSubmissionResult\");\n }),\n mapSubmissionError: (function (map) {\n dispatch({\n TAG: \"MapSubmissionError\",\n _0: map\n });\n }),\n reset: (function () {\n dispatch(\"Reset\");\n })\n };\n}\n\nvar ImageForm = {\n validators: validators,\n initialFieldsStatuses: initialFieldsStatuses,\n initialCollectionsStatuses: undefined,\n initialState: initialState,\n validateForm: validateForm,\n useForm: useForm\n};\n\nfunction DashboardProductEditorImageForm(props) {\n var updateTimeout = props.updateTimeout;\n var toggleDestroy = props.toggleDestroy;\n var updateProduct = props.updateProduct;\n var image = props.image;\n var product = props.product;\n var initialInput = React.useMemo((function () {\n return {\n description: image.description,\n active: image.active,\n url: image.url\n };\n }), []);\n var form = useForm(initialInput, (function (output, cb) {\n $$Promise.wait(Api_Product.updateImage(product.id, image.id, {\n id: image.id,\n publicId: image.publicId,\n url: image.url,\n width: image.width,\n height: image.height,\n active: output.active,\n description: output.description,\n position: image.position\n }), (function (x) {\n if (x.TAG !== \"Ok\") {\n return SentryLogger.error1({\n rootModule: \"DashboardProductEditorImageForm\",\n subModulePath: /* [] */0,\n value: \"make\",\n fullPath: \"DashboardProductEditorImageForm.make\"\n }, \"ProductImage::Update::Error\", [\n \"Error\",\n x._0\n ]);\n }\n var res = x._0;\n updateProduct(res);\n var id = image.id;\n var i = Belt_Option.getExn(Js_array.find((function (image) {\n return Caml_obj.equal(id, image.id);\n }), res.images));\n cb.notifyOnSuccess({\n description: i.description,\n active: i.active,\n url: i.url\n });\n }));\n }));\n var fieldError = function (field) {\n if (field !== undefined && field.TAG !== \"Ok\") {\n return JsxRuntime.jsx(ErrorMessage.make, {\n className: css.error,\n children: field._0\n });\n } else {\n return null;\n }\n };\n var id = \"image--\" + ID.toString(image.id);\n return JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(Picture.make, {\n src: form.input.url,\n large: [\n 300,\n 300\n ],\n className: css.image\n }),\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(IconDelete.make, {\n size: \"LG\",\n color: \"White\",\n viewBoxSize: \"20\"\n }),\n \"Delete\"\n ],\n className: css.deleteAsset,\n onClick: (function (param) {\n toggleDestroy(image.id);\n })\n })\n ],\n className: css.assetOverlay\n }),\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(TextField.make, {\n id: \"edit-provider-image-description\" + ID.toString(image.id),\n value: form.input.description,\n placeholder: \"Image Description\",\n disabled: form.submitting ? true : false,\n className: css.assetInput,\n onChange: (function ($$event) {\n form.updateDescription((function (input, value) {\n return {\n description: value,\n active: input.active,\n url: input.url\n };\n }), $$event.target.value);\n updateTimeout(setTimeout((function () {\n form.submit();\n }), 900));\n })\n }),\n fieldError(form.descriptionResult)\n ],\n className: css.descriptionContainer\n }),\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(\"div\", {\n children: form.input.active ? \"Approved\" : \"Pending Approval\",\n className: Cx.cx([css.inactiveText])\n }),\n JsxRuntime.jsx(Toggle.make, {\n on: form.input.active,\n size: \"SM\",\n onChange: (function (_event) {\n form.updateActive((function (input, value) {\n return {\n description: input.description,\n active: value,\n url: input.url\n };\n }), !form.input.active);\n updateTimeout(setTimeout((function () {\n form.submit();\n }), 900));\n })\n })\n ],\n className: css.toggleContainer\n })\n ],\n className: css.assetDescription\n })\n ],\n className: css.imageContainer,\n id: id\n }, id);\n}\n\nvar make = DashboardProductEditorImageForm;\n\nexport {\n css ,\n ImageForm ,\n make ,\n}\n/* css Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Cx from \"rescript-classnames/src/Cx.res.js\";\nimport * as ID from \"../../../libs/ID.res.js\";\nimport * as React from \"react\";\nimport * as Toggle from \"../../../styleguide/forms/Toggle/Toggle.res.js\";\nimport * as Picture from \"../../../styleguide/forms/Picture/Picture.res.js\";\nimport * as $$Promise from \"../../../bindings/Promise.res.js\";\nimport * as Caml_obj from \"rescript/lib/es6/caml_obj.js\";\nimport * as Js_array from \"rescript/lib/es6/js_array.js\";\nimport * as Formality from \"re-formality/src/Formality.res.js\";\nimport * as TextField from \"../../../styleguide/forms/TextField/TextField.res.js\";\nimport * as IconDelete from \"../../../styleguide/icons/IconDelete.res.js\";\nimport * as Api_Product from \"../../../api/products/Api_Product.res.js\";\nimport * as Belt_Option from \"rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"rescript/lib/es6/caml_option.js\";\nimport * as ErrorMessage from \"../../../styleguide/forms/ErrorMessage/ErrorMessage.res.js\";\nimport * as SentryLogger from \"../../../loggers/SentryLogger.res.js\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport * as Formality__ReactUpdate from \"re-formality/src/Formality__ReactUpdate.res.js\";\nimport * as DashboardProductEditorScss from \"./DashboardProductEditor.scss\";\n\nvar css = DashboardProductEditorScss;\n\nvar validators = {\n description: undefined,\n active: undefined,\n url: undefined\n};\n\nfunction initialFieldsStatuses(_input) {\n return {\n description: \"Pristine\",\n active: \"Pristine\",\n url: \"Pristine\"\n };\n}\n\nfunction initialState(input) {\n return {\n input: input,\n fieldsStatuses: {\n description: \"Pristine\",\n active: \"Pristine\",\n url: \"Pristine\"\n },\n collectionsStatuses: undefined,\n formStatus: \"Editing\",\n submissionStatus: \"NeverSubmitted\"\n };\n}\n\nfunction validateForm(input, param, param$1) {\n var match_0 = {\n TAG: \"Ok\",\n _0: input.description\n };\n var match_0$1 = {\n TAG: \"Ok\",\n _0: input.active\n };\n var match_0$2 = {\n TAG: \"Ok\",\n _0: input.url\n };\n var descriptionResult = match_0;\n var descriptionResult$1;\n if (descriptionResult.TAG === \"Ok\") {\n var activeResult = match_0$1;\n if (activeResult.TAG === \"Ok\") {\n var urlResult = match_0$2;\n if (urlResult.TAG === \"Ok\") {\n return {\n TAG: \"Valid\",\n output: {\n description: descriptionResult._0,\n active: activeResult._0,\n url: urlResult._0\n },\n fieldsStatuses: {\n description: {\n TAG: \"Dirty\",\n _0: descriptionResult,\n _1: \"Hidden\"\n },\n active: {\n TAG: \"Dirty\",\n _0: activeResult,\n _1: \"Hidden\"\n },\n url: {\n TAG: \"Dirty\",\n _0: urlResult,\n _1: \"Hidden\"\n }\n },\n collectionsStatuses: undefined\n };\n }\n descriptionResult$1 = descriptionResult;\n } else {\n descriptionResult$1 = descriptionResult;\n }\n } else {\n descriptionResult$1 = descriptionResult;\n }\n return {\n TAG: \"Invalid\",\n fieldsStatuses: {\n description: {\n TAG: \"Dirty\",\n _0: descriptionResult$1,\n _1: \"Hidden\"\n },\n active: {\n TAG: \"Dirty\",\n _0: match_0$1,\n _1: \"Hidden\"\n },\n url: {\n TAG: \"Dirty\",\n _0: match_0$2,\n _1: \"Hidden\"\n }\n },\n collectionsStatuses: undefined\n };\n}\n\nfunction useForm(initialInput, onSubmit) {\n var memoizedInitialState = React.useMemo((function () {\n return initialState(initialInput);\n }), [initialInput]);\n var match = Formality__ReactUpdate.useReducer(memoizedInitialState, (function (state, action) {\n if (typeof action !== \"object\") {\n switch (action) {\n case \"BlurDescriptionField\" :\n var result = Formality.validateFieldOnBlurWithoutValidator(state.input.description, state.fieldsStatuses.description, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: status,\n active: init.active,\n url: init.url\n };\n }));\n if (result !== undefined) {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: result,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n } else {\n return \"NoUpdate\";\n }\n case \"BlurActiveField\" :\n var result$1 = Formality.validateFieldOnBlurWithoutValidator(state.input.active, state.fieldsStatuses.active, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: init.description,\n active: status,\n url: init.url\n };\n }));\n if (result$1 !== undefined) {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: result$1,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n } else {\n return \"NoUpdate\";\n }\n case \"BlurUrlField\" :\n var result$2 = Formality.validateFieldOnBlurWithoutValidator(state.input.url, state.fieldsStatuses.url, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: init.description,\n active: init.active,\n url: status\n };\n }));\n if (result$2 !== undefined) {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: result$2,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n } else {\n return \"NoUpdate\";\n }\n case \"Submit\" :\n var match = state.formStatus;\n if (typeof match === \"object\" && match.TAG === \"Submitting\") {\n return \"NoUpdate\";\n }\n var match$1 = validateForm(state.input, validators, state.fieldsStatuses);\n if (match$1.TAG !== \"Valid\") {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: match$1.fieldsStatuses,\n collectionsStatuses: match$1.collectionsStatuses,\n formStatus: \"Editing\",\n submissionStatus: \"AttemptedToSubmit\"\n }\n };\n }\n var output = match$1.output;\n var error = state.formStatus;\n var tmp;\n tmp = typeof error !== \"object\" || error.TAG !== \"SubmissionFailed\" ? undefined : Caml_option.some(error._0);\n return {\n TAG: \"UpdateWithSideEffects\",\n _0: {\n input: state.input,\n fieldsStatuses: match$1.fieldsStatuses,\n collectionsStatuses: match$1.collectionsStatuses,\n formStatus: {\n TAG: \"Submitting\",\n _0: tmp\n },\n submissionStatus: \"AttemptedToSubmit\"\n },\n _1: (function (param) {\n var dispatch = param.dispatch;\n onSubmit(output, {\n notifyOnSuccess: (function (input) {\n dispatch({\n TAG: \"SetSubmittedStatus\",\n _0: input\n });\n }),\n notifyOnFailure: (function (error) {\n dispatch({\n TAG: \"SetSubmissionFailedStatus\",\n _0: error\n });\n }),\n reset: (function () {\n dispatch(\"Reset\");\n }),\n dismissSubmissionResult: (function () {\n dispatch(\"DismissSubmissionResult\");\n })\n });\n })\n };\n break;\n case \"DismissSubmissionError\" :\n var match$2 = state.formStatus;\n if (typeof match$2 !== \"object\" || match$2.TAG !== \"SubmissionFailed\") {\n return \"NoUpdate\";\n } else {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: state.fieldsStatuses,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: \"Editing\",\n submissionStatus: state.submissionStatus\n }\n };\n }\n case \"DismissSubmissionResult\" :\n var match$3 = state.formStatus;\n if (typeof match$3 !== \"object\") {\n if (match$3 === \"Editing\") {\n return \"NoUpdate\";\n }\n \n } else if (match$3.TAG === \"Submitting\") {\n return \"NoUpdate\";\n }\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: state.fieldsStatuses,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: \"Editing\",\n submissionStatus: state.submissionStatus\n }\n };\n case \"Reset\" :\n return {\n TAG: \"Update\",\n _0: initialState(initialInput)\n };\n \n }\n } else {\n switch (action.TAG) {\n case \"UpdateDescriptionField\" :\n var nextInput = action._0(state.input);\n return {\n TAG: \"Update\",\n _0: {\n input: nextInput,\n fieldsStatuses: Formality.validateFieldOnChangeWithoutValidator(nextInput.description, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: status,\n active: init.active,\n url: init.url\n };\n })),\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n case \"UpdateActiveField\" :\n var nextInput$1 = action._0(state.input);\n return {\n TAG: \"Update\",\n _0: {\n input: nextInput$1,\n fieldsStatuses: Formality.validateFieldOnChangeWithoutValidator(nextInput$1.active, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: init.description,\n active: status,\n url: init.url\n };\n })),\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n case \"UpdateUrlField\" :\n var nextInput$2 = action._0(state.input);\n return {\n TAG: \"Update\",\n _0: {\n input: nextInput$2,\n fieldsStatuses: Formality.validateFieldOnChangeWithoutValidator(nextInput$2.url, (function (status) {\n var init = state.fieldsStatuses;\n return {\n description: init.description,\n active: init.active,\n url: status\n };\n })),\n collectionsStatuses: state.collectionsStatuses,\n formStatus: state.formStatus,\n submissionStatus: state.submissionStatus\n }\n };\n case \"SetSubmittedStatus\" :\n var input = action._0;\n if (input !== undefined) {\n return {\n TAG: \"Update\",\n _0: {\n input: input,\n fieldsStatuses: {\n description: \"Pristine\",\n active: \"Pristine\",\n url: \"Pristine\"\n },\n collectionsStatuses: state.collectionsStatuses,\n formStatus: \"Submitted\",\n submissionStatus: state.submissionStatus\n }\n };\n } else {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: {\n description: \"Pristine\",\n active: \"Pristine\",\n url: \"Pristine\"\n },\n collectionsStatuses: state.collectionsStatuses,\n formStatus: \"Submitted\",\n submissionStatus: state.submissionStatus\n }\n };\n }\n case \"SetSubmissionFailedStatus\" :\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: state.fieldsStatuses,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: {\n TAG: \"SubmissionFailed\",\n _0: action._0\n },\n submissionStatus: state.submissionStatus\n }\n };\n case \"MapSubmissionError\" :\n var map = action._0;\n var error$1 = state.formStatus;\n if (typeof error$1 !== \"object\") {\n return \"NoUpdate\";\n }\n if (error$1.TAG !== \"Submitting\") {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: state.fieldsStatuses,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: {\n TAG: \"SubmissionFailed\",\n _0: map(error$1._0)\n },\n submissionStatus: state.submissionStatus\n }\n };\n }\n var error$2 = error$1._0;\n if (error$2 !== undefined) {\n return {\n TAG: \"Update\",\n _0: {\n input: state.input,\n fieldsStatuses: state.fieldsStatuses,\n collectionsStatuses: state.collectionsStatuses,\n formStatus: {\n TAG: \"Submitting\",\n _0: Caml_option.some(map(Caml_option.valFromOption(error$2)))\n },\n submissionStatus: state.submissionStatus\n }\n };\n } else {\n return \"NoUpdate\";\n }\n \n }\n }\n }));\n var dispatch = match[1];\n var state = match[0];\n var match$1 = state.formStatus;\n var tmp;\n tmp = typeof match$1 !== \"object\" || match$1.TAG !== \"Submitting\" ? false : true;\n return {\n updateDescription: (function (nextInputFn, nextValue) {\n dispatch({\n TAG: \"UpdateDescriptionField\",\n _0: (function (__x) {\n return nextInputFn(__x, nextValue);\n })\n });\n }),\n updateActive: (function (nextInputFn, nextValue) {\n dispatch({\n TAG: \"UpdateActiveField\",\n _0: (function (__x) {\n return nextInputFn(__x, nextValue);\n })\n });\n }),\n updateUrl: (function (nextInputFn, nextValue) {\n dispatch({\n TAG: \"UpdateUrlField\",\n _0: (function (__x) {\n return nextInputFn(__x, nextValue);\n })\n });\n }),\n blurDescription: (function () {\n dispatch(\"BlurDescriptionField\");\n }),\n blurActive: (function () {\n dispatch(\"BlurActiveField\");\n }),\n blurUrl: (function () {\n dispatch(\"BlurUrlField\");\n }),\n descriptionResult: Formality.exposeFieldResult(state.fieldsStatuses.description),\n activeResult: Formality.exposeFieldResult(state.fieldsStatuses.active),\n urlResult: Formality.exposeFieldResult(state.fieldsStatuses.url),\n input: state.input,\n status: state.formStatus,\n dirty: (function () {\n var match = state.fieldsStatuses;\n var tmp = match.description;\n if (typeof tmp === \"object\") {\n return true;\n }\n var tmp$1 = match.active;\n if (typeof tmp$1 === \"object\") {\n return true;\n }\n var tmp$2 = match.url;\n if (typeof tmp$2 !== \"object\") {\n return false;\n } else {\n return true;\n }\n }),\n valid: (function () {\n var match = validateForm(state.input, validators, state.fieldsStatuses);\n if (match.TAG === \"Valid\") {\n return true;\n } else {\n return false;\n }\n }),\n submitting: tmp,\n submit: (function () {\n dispatch(\"Submit\");\n }),\n dismissSubmissionError: (function () {\n dispatch(\"DismissSubmissionError\");\n }),\n dismissSubmissionResult: (function () {\n dispatch(\"DismissSubmissionResult\");\n }),\n mapSubmissionError: (function (map) {\n dispatch({\n TAG: \"MapSubmissionError\",\n _0: map\n });\n }),\n reset: (function () {\n dispatch(\"Reset\");\n })\n };\n}\n\nvar VideoForm = {\n validators: validators,\n initialFieldsStatuses: initialFieldsStatuses,\n initialCollectionsStatuses: undefined,\n initialState: initialState,\n validateForm: validateForm,\n useForm: useForm\n};\n\nfunction DashboardProductEditorVideoForm(props) {\n var updateTimeout = props.updateTimeout;\n var toggleDestroy = props.toggleDestroy;\n var updateProduct = props.updateProduct;\n var video = props.video;\n var product = props.product;\n var initialInput = React.useMemo((function () {\n return {\n description: video.description,\n active: video.active,\n url: video.url\n };\n }), []);\n var form = useForm(initialInput, (function (output, cb) {\n $$Promise.wait(Api_Product.updateVideo(product.id, video.id, {\n id: video.id,\n publicId: video.publicId,\n source: video.source,\n url: video.url,\n width: video.width,\n height: video.height,\n active: output.active,\n description: output.description,\n position: video.position\n }), (function (x) {\n if (x.TAG !== \"Ok\") {\n return SentryLogger.error1({\n rootModule: \"DashboardProductEditorVideoForm\",\n subModulePath: /* [] */0,\n value: \"make\",\n fullPath: \"DashboardProductEditorVideoForm.make\"\n }, \"ProductImage::Update::Error\", [\n \"Error\",\n x._0\n ]);\n }\n var res = x._0;\n updateProduct(res);\n var id = video.id;\n var i = Belt_Option.getExn(Js_array.find((function (video) {\n return Caml_obj.equal(id, video.id);\n }), res.videos));\n cb.notifyOnSuccess({\n description: i.description,\n active: i.active,\n url: i.url\n });\n }));\n }));\n var fieldError = function (field) {\n if (field !== undefined && field.TAG !== \"Ok\") {\n return JsxRuntime.jsx(ErrorMessage.make, {\n className: css.error,\n children: field._0\n });\n } else {\n return null;\n }\n };\n var id = \"image--\" + ID.toString(video.id);\n var match = video.source;\n var tmp;\n var exit = 0;\n switch (match) {\n case \"Cloudinary\" :\n tmp = JsxRuntime.jsx(Picture.make, {\n src: form.input.url,\n large: [\n 300,\n 300\n ],\n className: css.image\n });\n break;\n case \"YouTube\" :\n case \"Vimeo\" :\n exit = 1;\n break;\n \n }\n if (exit === 1) {\n tmp = JsxRuntime.jsx(\"img\", {\n className: css.youtubeImage,\n src: \"https://img.youtube.com/vi/\" + video.publicId + \"/mqdefault.jpg\"\n });\n }\n var match$1 = video.source;\n var tmp$1;\n switch (match$1) {\n case \"Cloudinary\" :\n tmp$1 = css.assetOverlay;\n break;\n case \"YouTube\" :\n case \"Vimeo\" :\n tmp$1 = css.assetOverlayYoutube;\n break;\n \n }\n return JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsxs(\"div\", {\n children: [\n tmp,\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(IconDelete.make, {\n size: \"LG\",\n color: \"White\",\n viewBoxSize: \"20\"\n }),\n \"Delete\"\n ],\n className: css.deleteAsset,\n onClick: (function (param) {\n toggleDestroy(video.id);\n })\n })\n ],\n className: Cx.cx([tmp$1])\n }),\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(TextField.make, {\n id: \"edit-product-image-description\" + ID.toString(video.id),\n value: form.input.description,\n placeholder: \"Image Description\",\n disabled: form.submitting ? true : false,\n className: css.assetInput,\n onChange: (function ($$event) {\n form.updateDescription((function (input, value) {\n return {\n description: value,\n active: input.active,\n url: input.url\n };\n }), $$event.target.value);\n updateTimeout(setTimeout((function () {\n form.submit();\n }), 900));\n })\n }),\n fieldError(form.descriptionResult)\n ],\n className: css.descriptionContainer\n }),\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(\"div\", {\n children: form.input.active ? \"Approved\" : \"Pending Approval\",\n className: Cx.cx([css.inactiveText])\n }),\n JsxRuntime.jsx(Toggle.make, {\n on: form.input.active,\n size: \"SM\",\n onChange: (function (_event) {\n form.updateActive((function (input, value) {\n return {\n description: input.description,\n active: value,\n url: input.url\n };\n }), !form.input.active);\n updateTimeout(setTimeout((function () {\n form.submit();\n }), 900));\n })\n })\n ],\n className: css.toggleContainer\n })\n ],\n className: css.assetDescription\n })\n ],\n className: css.imageContainer,\n id: id\n }, id);\n}\n\nvar make = DashboardProductEditorVideoForm;\n\nexport {\n css ,\n VideoForm ,\n make ,\n}\n/* css Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Api from \"../../../api/Api.res.js\";\nimport * as Form from \"../../../styleguide/forms/Form/Form.res.js\";\nimport * as Hooks from \"../../../libs/Hooks.res.js\";\nimport * as Label from \"../../../styleguide/forms/Label/Label.res.js\";\nimport * as Regex from \"../../../libs/Regex.res.js\";\nimport * as Video from \"../../../models/Video.res.js\";\nimport * as Button from \"../../../styleguide/components/Button/Button.res.js\";\nimport * as IconOk from \"../../../styleguide/icons/IconOk.res.js\";\nimport * as $$Promise from \"../../../bindings/Promise.res.js\";\nimport * as TextField from \"../../../styleguide/forms/TextField/TextField.res.js\";\nimport * as Belt_Array from \"rescript/lib/es6/belt_Array.js\";\nimport * as Belt_Option from \"rescript/lib/es6/belt_Option.js\";\nimport * as Belt_Result from \"rescript/lib/es6/belt_Result.js\";\nimport * as Caml_option from \"rescript/lib/es6/caml_option.js\";\nimport * as SentryLogger from \"../../../loggers/SentryLogger.res.js\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport * as DashboardProductEditorScss from \"./DashboardProductEditor.scss\";\n\nvar css = DashboardProductEditorScss;\n\nfunction parseUrl(url) {\n if (url === \"\") {\n return {\n TAG: \"Error\",\n _0: \"NoUrl\"\n };\n } else {\n return Belt_Option.getWithDefault(Belt_Option.map(Caml_option.null_to_opt(Regex.youtube().exec(url)), (function (res) {\n var match = Belt_Option.flatMap(Belt_Array.get(res, 0), (function (prim) {\n if (prim == null) {\n return ;\n } else {\n return Caml_option.some(prim);\n }\n }));\n var match$1 = Belt_Option.flatMap(Belt_Array.get(res, 1), (function (prim) {\n if (prim == null) {\n return ;\n } else {\n return Caml_option.some(prim);\n }\n }));\n if (match !== undefined && match$1 !== undefined) {\n return {\n TAG: \"Ok\",\n _0: [\n \"YouTube\",\n [\n match,\n match$1\n ]\n ]\n };\n } else {\n return {\n TAG: \"Error\",\n _0: \"BadUrl\"\n };\n }\n })), Belt_Option.getWithDefault(Belt_Option.map(Caml_option.null_to_opt(Regex.vimeo().exec(url)), (function (res) {\n var match = Belt_Option.flatMap(Belt_Array.get(res, 0), (function (prim) {\n if (prim == null) {\n return ;\n } else {\n return Caml_option.some(prim);\n }\n }));\n var match$1 = Belt_Option.flatMap(Belt_Array.get(res, 4), (function (prim) {\n if (prim == null) {\n return ;\n } else {\n return Caml_option.some(prim);\n }\n }));\n if (match !== undefined && match$1 !== undefined) {\n return {\n TAG: \"Ok\",\n _0: [\n \"Vimeo\",\n [\n match,\n match$1\n ]\n ]\n };\n } else {\n return {\n TAG: \"Error\",\n _0: \"BadUrl\"\n };\n }\n })), {\n TAG: \"Error\",\n _0: \"BadUrl\"\n }));\n }\n}\n\nvar initialState = {\n status: \"Editing\",\n input: \"\",\n result: undefined,\n submissionError: false\n};\n\nfunction DashboardProductEditorAssetsTabVideoLinkForm(props) {\n var updateProduct = props.updateProduct;\n var addLinkedVideo = props.addLinkedVideo;\n var videos = props.videos;\n var productId = props.productId;\n var match = Hooks.useReducer(initialState, (function (state, action) {\n if (typeof action !== \"object\") {\n switch (action) {\n case \"Submit\" :\n var error = Belt_Result.flatMap(parseUrl(state.input), (function (param) {\n var match = param[1];\n var publicId = match[1];\n if (Belt_Array.some(videos, (function (video) {\n return video.NAME === \"Saved\" ? video.VAL[0].publicId === publicId : false;\n }))) {\n return {\n TAG: \"Error\",\n _0: \"DupUrl\"\n };\n } else {\n return {\n TAG: \"Ok\",\n _0: [\n param[0],\n [\n match[0],\n publicId\n ]\n ]\n };\n }\n }));\n if (error.TAG !== \"Ok\") {\n return {\n TAG: \"Update\",\n _0: {\n status: \"EditingAfterFailedSubmission\",\n input: state.input,\n result: {\n TAG: \"Error\",\n _0: error._0\n },\n submissionError: state.submissionError\n }\n };\n }\n var match = error._0;\n var match$1 = match[1];\n var publicId = match$1[1];\n var url = match$1[0];\n var source = match[0];\n return {\n TAG: \"UpdateWithSideEffects\",\n _0: {\n status: \"Submitting\",\n input: state.input,\n result: {\n TAG: \"Ok\",\n _0: [\n source,\n [\n url,\n publicId\n ]\n ]\n },\n submissionError: state.submissionError\n },\n _1: (function (param) {\n var dispatch = param.dispatch;\n $$Promise.wait(Api.createProductVideo(productId, source === \"YouTube\" ? Video.Interim.fromYouTube(\"https://\" + url, publicId, \"100\", \"100\") : Video.Interim.fromVimeo(\"https://\" + url, publicId, \"100\", \"100\")), (function (x) {\n if (x.TAG === \"Ok\") {\n var res = x._0;\n updateProduct(res);\n return dispatch({\n TAG: \"SucceedSubmission\",\n _0: res\n });\n }\n SentryLogger.error1({\n rootModule: \"DashboardProductEditorAssetsTabVideoLinkForm\",\n subModulePath: /* [] */0,\n value: \"make\",\n fullPath: \"DashboardProductEditorAssetsTabVideoLinkForm.make\"\n }, \"DashboardProductEditorAssetsTabVideoLinkForm::Submit::Error\", [\n \"Error\",\n x._0\n ]);\n dispatch(\"FailSubmission\");\n }));\n })\n };\n case \"ResetSubmittedStatus\" :\n var match$2 = state.status;\n if (match$2 === \"Submitted\") {\n return {\n TAG: \"Update\",\n _0: {\n status: \"Editing\",\n input: state.input,\n result: state.result,\n submissionError: state.submissionError\n }\n };\n } else {\n return \"NoUpdate\";\n }\n case \"FailSubmission\" :\n return {\n TAG: \"Update\",\n _0: {\n status: \"EditingAfterFailedSubmission\",\n input: state.input,\n result: state.result,\n submissionError: true\n }\n };\n \n }\n } else {\n if (action.TAG === \"UpdateInput\") {\n var value = action._0;\n var match$3 = state.status;\n switch (match$3) {\n case \"EditingAfterFailedSubmission\" :\n return {\n TAG: \"Update\",\n _0: {\n status: state.status,\n input: value,\n result: parseUrl(value),\n submissionError: false\n }\n };\n case \"Submitting\" :\n return \"NoUpdate\";\n case \"Editing\" :\n case \"Submitted\" :\n break;\n \n }\n return {\n TAG: \"Update\",\n _0: {\n status: state.status,\n input: value,\n result: state.result,\n submissionError: state.submissionError\n }\n };\n }\n var video = action._0;\n return {\n TAG: \"UpdateWithSideEffects\",\n _0: {\n status: \"Submitted\",\n input: \"\",\n result: undefined,\n submissionError: false\n },\n _1: (function (param) {\n var dispatch = param.dispatch;\n addLinkedVideo(video);\n setTimeout((function () {\n dispatch(\"ResetSubmittedStatus\");\n }), 5000);\n })\n };\n }\n }));\n var dispatch = match[1];\n var state = match[0];\n var match$1 = state.status;\n var tmp;\n tmp = match$1 === \"Submitting\" ? true : false;\n var match$2 = state.status;\n var tmp$1;\n tmp$1 = match$2 === \"Submitted\" ? JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(IconOk.make, {\n size: \"MD\",\n color: \"Teal\"\n }),\n \"Video saved\"\n ],\n className: css.assetsVideoLinkFormSubmitted\n }) : null;\n var match$3 = state.result;\n var tmp$2;\n if (match$3 !== undefined && match$3.TAG !== \"Ok\") {\n var tmp$3;\n if (state.submissionError) {\n tmp$3 = \"Something went wrong during form submission\";\n } else {\n switch (match$3._0) {\n case \"NoUrl\" :\n tmp$3 = \"Url is required\";\n break;\n case \"BadUrl\" :\n tmp$3 = \"This is not valid YouTube url\";\n break;\n case \"DupUrl\" :\n tmp$3 = \"This video is already added\";\n break;\n \n }\n }\n tmp$2 = JsxRuntime.jsx(\"div\", {\n children: tmp$3,\n className: css.assetsVideoLinkFormError\n });\n } else {\n tmp$2 = null;\n }\n return JsxRuntime.jsxs(Form.make, {\n className: css.assetsVideoLinkForm,\n onSubmit: (function (param) {\n dispatch(\"Submit\");\n }),\n children: [\n JsxRuntime.jsx(Label.make, {\n forId: \"product-form--video-link\",\n children: \"Add a YouTube video\"\n }),\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(TextField.make, {\n id: \"product-form--video-link\",\n value: state.input,\n onChange: (function ($$event) {\n dispatch({\n TAG: \"UpdateInput\",\n _0: $$event.target.value\n });\n })\n }),\n JsxRuntime.jsx(Button.make, {\n size: \"MD\",\n color: \"Teal\",\n busy: tmp,\n submit: true,\n children: \"Add\"\n }),\n tmp$1\n ],\n className: css.assetsVideoLinkFormRow\n }),\n tmp$2\n ]\n });\n}\n\nvar make = DashboardProductEditorAssetsTabVideoLinkForm;\n\nexport {\n css ,\n parseUrl ,\n initialState ,\n make ,\n}\n/* css Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as H3 from \"../../../styleguide/components/Heading/H3.res.js\";\nimport * as ID from \"../../../libs/ID.res.js\";\nimport * as Video from \"../../../models/Video.res.js\";\nimport * as React from \"react\";\nimport * as Button from \"../../../styleguide/components/Button/Button.res.js\";\nimport * as $$Promise from \"../../../bindings/Promise.res.js\";\nimport * as Belt_Map from \"rescript/lib/es6/belt_Map.js\";\nimport * as Belt_Array from \"rescript/lib/es6/belt_Array.js\";\nimport * as Api_Product from \"../../../api/products/Api_Product.res.js\";\nimport * as Belt_Option from \"rescript/lib/es6/belt_Option.js\";\nimport * as Caml_option from \"rescript/lib/es6/caml_option.js\";\nimport * as SentryLogger from \"../../../loggers/SentryLogger.res.js\";\nimport * as Globals from \"Common/globals\";\nimport * as CloudinaryWidget from \"../../../bindings/CloudinaryWidget.res.js\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport * as DashboardProductEditorScss from \"./DashboardProductEditor.scss\";\nimport * as ReactCloudinaryUploadWidget from \"react-cloudinary-upload-widget\";\nimport * as DashboardProductEditorImageForm from \"./DashboardProductEditorImageForm.res.js\";\nimport * as DashboardProductEditorVideoForm from \"./DashboardProductEditorVideoForm.res.js\";\nimport * as DashboardProductEditorAssetsTabVideoLinkForm from \"./DashboardProductEditorAssetsTabVideoLinkForm.res.js\";\n\nvar css = DashboardProductEditorScss;\n\nfunction reducer(state, action) {\n switch (action.TAG) {\n case \"ToggleDestroyConfirm\" :\n var id = action._1;\n if (action._0 === \"Image\") {\n return {\n destroyImageConfirm: !state.destroyImageConfirm,\n destroyVideoConfirm: state.destroyVideoConfirm,\n currentVideo: state.currentVideo,\n currentImage: id,\n timeout: state.timeout,\n videos: state.videos,\n newVideos: state.newVideos,\n savedVideos: state.savedVideos,\n product: state.product\n };\n } else {\n return {\n destroyImageConfirm: state.destroyImageConfirm,\n destroyVideoConfirm: !state.destroyVideoConfirm,\n currentVideo: id,\n currentImage: state.currentImage,\n timeout: state.timeout,\n videos: state.videos,\n newVideos: state.newVideos,\n savedVideos: state.savedVideos,\n product: state.product\n };\n }\n case \"SetTimeout\" :\n return {\n destroyImageConfirm: state.destroyImageConfirm,\n destroyVideoConfirm: state.destroyVideoConfirm,\n currentVideo: state.currentVideo,\n currentImage: state.currentImage,\n timeout: action._0,\n videos: state.videos,\n newVideos: state.newVideos,\n savedVideos: state.savedVideos,\n product: state.product\n };\n case \"StoreAddedLinkedVideo\" :\n return {\n destroyImageConfirm: state.destroyImageConfirm,\n destroyVideoConfirm: state.destroyVideoConfirm,\n currentVideo: state.currentVideo,\n currentImage: state.currentImage,\n timeout: state.timeout,\n videos: state.videos,\n newVideos: state.newVideos,\n savedVideos: state.savedVideos,\n product: action._0\n };\n \n }\n}\n\nfunction DashboardProductEditorAssetsTabUploader(props) {\n var updateProduct = props.updateProduct;\n var product = props.product;\n var videos = Video.normalize(props.videos);\n var initialState_videos = [];\n var initialState_newVideos = {\n index: [],\n dict: undefined\n };\n var initialState_savedVideos = {\n index: videos.index,\n dict: Belt_Map.map(videos.dict, (function (video) {\n return [\n video,\n \"StandBy\"\n ];\n }))\n };\n var initialState = {\n destroyImageConfirm: false,\n destroyVideoConfirm: false,\n currentVideo: undefined,\n currentImage: undefined,\n timeout: undefined,\n videos: initialState_videos,\n newVideos: initialState_newVideos,\n savedVideos: initialState_savedVideos,\n product: product\n };\n var match = React.useReducer(reducer, initialState);\n var dispatch = match[1];\n var state = match[0];\n var updateTimeout = function (timeout) {\n var match = state.timeout;\n if (match !== undefined) {\n clearTimeout(Belt_Option.getExn(state.timeout));\n return dispatch({\n TAG: \"SetTimeout\",\n _0: Caml_option.some(timeout)\n });\n } else {\n return dispatch({\n TAG: \"SetTimeout\",\n _0: Caml_option.some(timeout)\n });\n }\n };\n var match$1 = product.images;\n var match$2 = product.videos;\n return JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(\"div\", {\n children: JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(ReactCloudinaryUploadWidget.WidgetLoader, {}),\n JsxRuntime.jsxs(\"div\", {\n children: [\n \"Click to Upload Images and Videos\",\n JsxRuntime.jsx(ReactCloudinaryUploadWidget.Widget, {\n sources: [\"local\"],\n cloudName: Globals.CloudinaryCloudName,\n apiKey: Globals.CloudinaryAPIKey,\n uploadPreset: Globals.CloudinaryUploadPreset,\n accepts: \"application/json\",\n contentType: \"application/json\",\n folder: \"products/\" + product.slug + \"/images\",\n style: {\n color: \"white\",\n border: \"1px solid\",\n borderColor: \"#18c3bb\",\n borderRadius: \"3px\",\n fontWeight: \"600\",\n backgroundColor: \"#18c3bb\",\n padding: \"8px 20px\",\n fontSize: \"14px\"\n },\n cropping: false,\n multiple: true,\n onSuccess: (function (result) {\n console.log(\"RESULT:\", CloudinaryWidget.fromJson(result));\n var content = CloudinaryWidget.fromJson(result);\n var match = content.info.format;\n var exit = 0;\n switch (match) {\n case \"jpeg\" :\n case \"jpg\" :\n case \"png\" :\n exit = 2;\n break;\n case \"avi\" :\n case \"mov\" :\n case \"mp4\" :\n case \"wmv\" :\n exit = 1;\n break;\n default:\n exit = 2;\n }\n switch (exit) {\n case 1 :\n return $$Promise.wait(Api_Product.createVideo(product.id, {\n video: content\n }), (function (x) {\n if (x.TAG === \"Ok\") {\n return updateProduct(x._0);\n } else {\n return SentryLogger.error1({\n rootModule: \"DashboardProductEditorAssetsTabUploader\",\n subModulePath: /* [] */0,\n value: \"make\",\n fullPath: \"DashboardProductEditorAssetsTabUploader.make\"\n }, \"CreateProductVideo::Error\", [\n \"Error\",\n x._0\n ]);\n }\n }));\n case 2 :\n return $$Promise.wait(Api_Product.createImage(product.id, {\n image: content\n }), (function (x) {\n if (x.TAG === \"Ok\") {\n return updateProduct(x._0);\n } else {\n return SentryLogger.error1({\n rootModule: \"DashboardProductEditorAssetsTabUploader\",\n subModulePath: /* [] */0,\n value: \"make\",\n fullPath: \"DashboardProductEditorAssetsTabUploader.make\"\n }, \"CreateProductImage::Error\", [\n \"Error\",\n x._0\n ]);\n }\n }));\n \n }\n })\n })\n ],\n className: css.uploaderInner\n })\n ],\n className: css.uploader\n }),\n className: css.uploaderContainer\n }),\n JsxRuntime.jsx(DashboardProductEditorAssetsTabVideoLinkForm.make, {\n productId: product.id,\n videos: state.videos,\n addLinkedVideo: (function (product) {\n dispatch({\n TAG: \"StoreAddedLinkedVideo\",\n _0: product\n });\n }),\n updateProduct: updateProduct\n }),\n match$1.length !== 0 ? JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(H3.make, {\n children: \"Images\"\n }),\n JsxRuntime.jsx(\"div\", {\n children: Belt_Array.mapWithIndex(product.images, (function (index, image) {\n return JsxRuntime.jsx(DashboardProductEditorImageForm.make, {\n product: product,\n image: image,\n updateProduct: updateProduct,\n toggleDestroy: (function (id) {\n dispatch({\n TAG: \"ToggleDestroyConfirm\",\n _0: \"Image\",\n _1: Caml_option.some(id)\n });\n }),\n updateTimeout: (function (timeout) {\n updateTimeout(timeout);\n })\n }, \"image--\" + String(index) + \"--\" + ID.toString(image.id));\n })),\n className: css.imagesGrid\n })\n ],\n className: css.imagesContainer\n }) : null,\n match$2.length !== 0 ? JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(H3.make, {\n children: \"Videos\"\n }),\n JsxRuntime.jsx(\"div\", {\n children: Belt_Array.mapWithIndex(product.videos, (function (index, video) {\n return JsxRuntime.jsx(DashboardProductEditorVideoForm.make, {\n product: product,\n video: video,\n updateProduct: updateProduct,\n toggleDestroy: (function (id) {\n dispatch({\n TAG: \"ToggleDestroyConfirm\",\n _0: \"Video\",\n _1: Caml_option.some(id)\n });\n }),\n updateTimeout: (function (timeout) {\n updateTimeout(timeout);\n })\n }, \"video--\" + String(index) + \"--\" + ID.toString(video.id));\n })),\n className: css.videosGrid\n })\n ],\n className: css.videosContainer\n }) : null,\n state.destroyImageConfirm ? JsxRuntime.jsx(\"div\", {\n children: JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(\"div\", {\n children: \"Are you sure?\",\n className: css.deleteConfirmationText\n }),\n JsxRuntime.jsx(\"div\", {\n children: \"Image will be deleted permanently.\",\n className: css.deleteConfirmationMessage\n }),\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(Button.make, {\n size: \"SM\",\n color: \"Gray\",\n onClick: (function (param) {\n dispatch({\n TAG: \"ToggleDestroyConfirm\",\n _0: \"Image\",\n _1: undefined\n });\n }),\n children: \"Cancel\"\n }),\n JsxRuntime.jsx(Button.make, {\n size: \"SM\",\n color: \"Pink\",\n onClick: (function (param) {\n var productId = product.id;\n var imageId = Belt_Option.getExn(state.currentImage);\n $$Promise.wait(Api_Product.deleteImage(productId, imageId), (function (x) {\n if (x.TAG !== \"Ok\") {\n return SentryLogger.error1({\n rootModule: \"DashboardProductEditorAssetsTabUploader\",\n subModulePath: /* [] */0,\n value: \"make\",\n fullPath: \"DashboardProductEditorAssetsTabUploader.make\"\n }, \"DeleteProductImage::Error\", [\n \"Error\",\n x._0\n ]);\n }\n updateProduct(x._0);\n dispatch({\n TAG: \"ToggleDestroyConfirm\",\n _0: \"Image\",\n _1: undefined\n });\n }));\n }),\n children: \"Yes, delete it\"\n })\n ],\n className: css.deleteConfirmationButtons\n })\n ],\n className: css.deleteConfirmationDialog\n }),\n className: css.deleteConfirmationOverlay,\n onClick: (function ($$event) {\n $$event.stopPropagation();\n })\n }) : null,\n state.destroyVideoConfirm ? JsxRuntime.jsx(\"div\", {\n children: JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(\"div\", {\n children: \"Are you sure?\",\n className: css.deleteConfirmationText\n }),\n JsxRuntime.jsx(\"div\", {\n children: \"Image will be deleted permanently.\",\n className: css.deleteConfirmationMessage\n }),\n JsxRuntime.jsxs(\"div\", {\n children: [\n JsxRuntime.jsx(Button.make, {\n size: \"SM\",\n color: \"Gray\",\n onClick: (function (param) {\n dispatch({\n TAG: \"ToggleDestroyConfirm\",\n _0: \"Video\",\n _1: undefined\n });\n }),\n children: \"Cancel\"\n }),\n JsxRuntime.jsx(Button.make, {\n size: \"SM\",\n color: \"Pink\",\n onClick: (function (param) {\n var productId = product.id;\n var videoId = Belt_Option.getExn(state.currentVideo);\n $$Promise.wait(Api_Product.deleteVideo(productId, videoId), (function (x) {\n if (x.TAG !== \"Ok\") {\n return SentryLogger.error1({\n rootModule: \"DashboardProductEditorAssetsTabUploader\",\n subModulePath: /* [] */0,\n value: \"make\",\n fullPath: \"DashboardProductEditorAssetsTabUploader.make\"\n }, \"DeleteProductVideo::Error\", [\n \"Error\",\n x._0\n ]);\n }\n updateProduct(x._0);\n dispatch({\n TAG: \"ToggleDestroyConfirm\",\n _0: \"Video\",\n _1: undefined\n });\n }));\n }),\n children: \"Yes, delete it\"\n })\n ],\n className: css.deleteConfirmationButtons\n })\n ],\n className: css.deleteConfirmationDialog\n }),\n className: css.deleteConfirmationOverlay,\n onClick: (function ($$event) {\n $$event.stopPropagation();\n })\n }) : null\n ],\n className: css.container\n });\n}\n\nvar make = DashboardProductEditorAssetsTabUploader;\n\nexport {\n css ,\n reducer ,\n make ,\n}\n/* css Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Api from \"../../../api/Api.res.js\";\nimport * as Url from \"../../../utils/Url.res.js\";\nimport * as Hooks from \"../../../libs/Hooks.res.js\";\nimport * as React from \"react\";\nimport * as Button from \"../../../styleguide/components/Button/Button.res.js\";\nimport * as $$Promise from \"../../../bindings/Promise.res.js\";\nimport * as SentryLogger from \"../../../loggers/SentryLogger.res.js\";\nimport * as Routes_Product from \"../../../routes/common/Routes_Product.res.js\";\nimport * as ColocationProduct from \"../../../models/ColocationProduct.res.js\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\nimport * as DashboardProductEditorHeader from \"../../common/dashboard/DashboardProductEditorHeader.res.js\";\nimport * as DashboardProductEditorLayout from \"../../common/dashboard/DashboardProductEditorLayout.res.js\";\nimport * as DashboardProductEditorActionBar from \"../../common/dashboard/DashboardProductEditorActionBar.res.js\";\nimport * as DashboardProductEditorAssetsTab from \"../../common/dashboard/DashboardProductEditorAssetsTab.res.js\";\nimport * as DashboardProductEditorContextMenu from \"../../common/dashboard/DashboardProductEditorContextMenu.res.js\";\nimport * as DashboardProductEditorUnarchiveLink from \"../../common/dashboard/DashboardProductEditorUnarchiveLink.res.js\";\nimport * as DashboardProductEditorAssetsTabUploader from \"../../common/dashboard/DashboardProductEditorAssetsTabUploader.res.js\";\nimport * as DashboardProductEditorActiveStatusToggle from \"../../common/dashboard/DashboardProductEditorActiveStatusToggle.res.js\";\n\nfunction DashboardEditProductAssetsTab$DashboardEditProductAssetsTab(props) {\n var product = props.product;\n var initialState = React.useMemo((function () {\n return {\n product: product,\n status: \"Editing\",\n submissionError: false\n };\n }), []);\n var match = Hooks.useReducer(initialState, (function (state, action) {\n if (typeof action === \"object\") {\n return {\n TAG: \"Update\",\n _0: {\n product: action._0,\n status: state.status,\n submissionError: state.submissionError\n }\n };\n }\n switch (action) {\n case \"PublishProduct\" :\n return {\n TAG: \"UpdateWithSideEffects\",\n _0: {\n product: state.product,\n status: \"Submitting\",\n submissionError: state.submissionError\n },\n _1: (function (param) {\n var dispatch = param.dispatch;\n $$Promise.wait(Api.publishProduct(product.id), (function (x) {\n if (x.TAG === \"Ok\") {\n return Url.visit(Routes_Product.Dashboard.index);\n }\n SentryLogger.error1({\n rootModule: \"DashboardEditProductAssetsTab\",\n subModulePath: {\n hd: \"DashboardEditProductAssetsTab\",\n tl: /* [] */0\n },\n value: \"make\",\n fullPath: \"DashboardEditProductAssetsTab.DashboardEditProductAssetsTab.make\"\n }, \"DashboardEditProductAssetsTab::PublishProduct::Error\", [\n \"Error\",\n x._0\n ]);\n dispatch(\"FailProductPublishing\");\n }));\n })\n };\n case \"ActivateProduct\" :\n return {\n TAG: \"UpdateWithSideEffects\",\n _0: {\n product: state.product,\n status: \"Submitting\",\n submissionError: state.submissionError\n },\n _1: (function (param) {\n var dispatch = param.dispatch;\n $$Promise.wait(Api.activateProduct(product.id), (function (x) {\n if (x.TAG === \"Ok\") {\n return Url.visit(Routes_Product.Dashboard.index);\n }\n SentryLogger.error1({\n rootModule: \"DashboardEditProductAssetsTab\",\n subModulePath: {\n hd: \"DashboardEditProductAssetsTab\",\n tl: /* [] */0\n },\n value: \"make\",\n fullPath: \"DashboardEditProductAssetsTab.DashboardEditProductAssetsTab.make\"\n }, \"DashboardEditProductAssetsTab::ActivateProduct::Error\", [\n \"Error\",\n x._0\n ]);\n dispatch(\"FailProductActivation\");\n }));\n })\n };\n case \"FailProductPublishing\" :\n case \"FailProductActivation\" :\n return {\n TAG: \"Update\",\n _0: {\n product: state.product,\n status: \"Editing\",\n submissionError: true\n }\n };\n case \"GoToPreviousTab\" :\n return {\n TAG: \"SideEffects\",\n _0: (function (param) {\n Url.visit(Routes_Product.Dashboard.editLocation(product.id));\n })\n };\n \n }\n }));\n var dispatch = match[1];\n var state = match[0];\n var match$1 = state.product.status;\n var tmp;\n var exit = 0;\n switch (match$1) {\n case \"Active\" :\n var match$2 = state.status;\n tmp = JsxRuntime.jsxs(JsxRuntime.Fragment, {\n children: [\n JsxRuntime.jsx(DashboardProductEditorActiveStatusToggle.make, {\n productId: product.id,\n status: \"Active\",\n busy: match$2 !== \"Editing\"\n }),\n JsxRuntime.jsx(DashboardProductEditorContextMenu.make, {\n product: state.product,\n onUpdated: (function (product) {\n dispatch({\n TAG: \"UpdateProduct\",\n _0: product\n });\n })\n })\n ]\n });\n break;\n case \"Disabled\" :\n var match$3 = state.status;\n tmp = JsxRuntime.jsxs(JsxRuntime.Fragment, {\n children: [\n JsxRuntime.jsx(DashboardProductEditorActiveStatusToggle.make, {\n productId: product.id,\n status: \"Disabled\",\n busy: match$3 !== \"Editing\"\n }),\n JsxRuntime.jsx(DashboardProductEditorContextMenu.make, {\n product: state.product,\n onUpdated: (function (product) {\n dispatch({\n TAG: \"UpdateProduct\",\n _0: product\n });\n })\n })\n ]\n });\n break;\n case \"Draft\" :\n case \"Expired\" :\n exit = 1;\n break;\n case \"Archived\" :\n tmp = JsxRuntime.jsx(DashboardProductEditorUnarchiveLink.make, {\n productId: product.id,\n onUnarchived: (function (product) {\n dispatch({\n TAG: \"UpdateProduct\",\n _0: product\n });\n })\n });\n break;\n \n }\n if (exit === 1) {\n tmp = JsxRuntime.jsx(DashboardProductEditorContextMenu.make, {\n product: state.product,\n onUpdated: (function (product) {\n dispatch({\n TAG: \"UpdateProduct\",\n _0: product\n });\n })\n });\n }\n var match$4 = state.product.status;\n var tmp$1;\n switch (match$4) {\n case \"Active\" :\n tmp$1 = JsxRuntime.jsxs(JsxRuntime.Fragment, {\n children: [\n JsxRuntime.jsx(DashboardProductEditorActionBar.Note.make, {\n children: \"Changes on this page are being published automatically\"\n }),\n JsxRuntime.jsx(Button.make, {\n size: \"LG\",\n color: \"Primary\",\n expanded: true,\n visuallyDisabled: true,\n children: \"Save changes\"\n })\n ]\n });\n break;\n case \"Draft\" :\n var match$5 = state.status;\n var match$6 = state.status;\n tmp$1 = JsxRuntime.jsxs(JsxRuntime.Fragment, {\n children: [\n JsxRuntime.jsx(DashboardProductEditorActionBar.$$Error.make, {\n children: state.submissionError ? \"Something went wrong\" : null\n }),\n JsxRuntime.jsx(Button.make, {\n size: \"LG\",\n color: \"Primary\",\n expanded: true,\n disabled: match$5 !== \"Editing\",\n busy: match$6 !== \"Editing\",\n onClick: (function (param) {\n dispatch(\"PublishProduct\");\n }),\n children: \"Publish product\"\n })\n ]\n });\n break;\n case \"Disabled\" :\n var match$7 = state.status;\n var match$8 = state.status;\n tmp$1 = JsxRuntime.jsxs(JsxRuntime.Fragment, {\n children: [\n JsxRuntime.jsx(DashboardProductEditorActionBar.$$Error.make, {\n children: state.submissionError ? \"Something went wrong\" : null\n }),\n JsxRuntime.jsx(Button.make, {\n size: \"LG\",\n color: \"Primary\",\n expanded: true,\n disabled: match$7 !== \"Editing\",\n busy: match$8 !== \"Editing\",\n onClick: (function (param) {\n dispatch(\"ActivateProduct\");\n }),\n children: \"Activate product\"\n })\n ]\n });\n break;\n case \"Expired\" :\n case \"Archived\" :\n tmp$1 = null;\n break;\n \n }\n return JsxRuntime.jsxs(DashboardProductEditorLayout.make, {\n children: [\n JsxRuntime.jsx(DashboardProductEditorHeader.make, {\n product: product,\n active: \"AssetsTab\"\n }),\n JsxRuntime.jsxs(DashboardProductEditorAssetsTab.make, {\n children: [\n JsxRuntime.jsx(DashboardProductEditorAssetsTabUploader.make, {\n product: state.product,\n updateProduct: (function (product) {\n dispatch({\n TAG: \"UpdateProduct\",\n _0: product\n });\n }),\n videos: state.product.videos\n }),\n JsxRuntime.jsxs(DashboardProductEditorActionBar.make, {\n children: [\n JsxRuntime.jsx(DashboardProductEditorActionBar.ContextControls.make, {\n children: tmp\n }),\n tmp$1\n ]\n })\n ]\n })\n ]\n });\n}\n\nvar DashboardEditProductAssetsTab = {\n make: DashboardEditProductAssetsTab$DashboardEditProductAssetsTab\n};\n\nfunction DashboardEditProductAssetsTab$default(props) {\n return JsxRuntime.jsx(DashboardEditProductAssetsTab$DashboardEditProductAssetsTab, {\n product: ColocationProduct.Draft.fromJs(props.props.product)\n });\n}\n\nvar $$default = DashboardEditProductAssetsTab$default;\n\nexport {\n DashboardEditProductAssetsTab ,\n $$default as default,\n}\n/* Api Not a pure module */\n","import * as React from 'react';\n\nimport DashboardEditProductAssetsTab from './DashboardEditProductAssetsTab.res.js';\n\nexport default ({ context, ...props }) => <DashboardEditProductAssetsTab props={props} context={context} />;\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nfunction youtube() {\n return /(?:youtube\\.com\\/\\S*(?:(?:\\/e(?:mbed))?\\/|watch\\/?\\?(?:\\S*?&?v\\=))|youtu\\.be\\/)([a-zA-Z0-9_-]{6,11})/g;\n}\n\nfunction vimeo() {\n return /(http|https)?:\\/\\/(www\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^\\/]*)\\/videos\\/|)(\\d+)(?:|\\/\\?)/;\n}\n\nexport {\n youtube ,\n vimeo ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Cx from \"rescript-classnames/src/Cx.res.js\";\nimport * as HeadingScss from \"./Heading.scss\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\n\nvar css = HeadingScss;\n\nfunction H3(props) {\n var __className = props.className;\n var className = __className !== undefined ? __className : \"\";\n return JsxRuntime.jsx(\"h3\", {\n children: props.children,\n className: Cx.cx([\n css.h3,\n className\n ]),\n id: props.id\n });\n}\n\nvar make = H3;\n\nexport {\n css ,\n make ,\n}\n/* css Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as JsxRuntime from \"react/jsx-runtime\";\n\nfunction Form(props) {\n var onSubmit = props.onSubmit;\n return JsxRuntime.jsx(\"form\", {\n children: props.children,\n ref: props.setRef,\n className: props.className,\n id: props.id,\n onSubmit: (function ($$event) {\n if (onSubmit !== undefined) {\n $$event.preventDefault();\n return onSubmit($$event);\n }\n \n })\n });\n}\n\nvar make = Form;\n\nexport {\n make ,\n}\n/* react/jsx-runtime Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as React from \"react\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\n\nfunction ImageWithFallback(props) {\n var src = props.src;\n var match = React.useState(function () {\n return false;\n });\n var setErrored = match[1];\n var errored = match[0];\n React.useEffect((function () {\n setErrored(function (param) {\n return false;\n });\n }), [src]);\n return JsxRuntime.jsx(\"img\", {\n className: props.className,\n src: errored ? props.fallbackSrc : src,\n onError: (function (param) {\n if (!errored) {\n return setErrored(function (param) {\n return true;\n });\n }\n \n })\n });\n}\n\nvar make = ImageWithFallback;\n\nexport {\n make ,\n}\n/* react Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Screens from \"../../styles/Screens.res.js\";\nimport * as Cloudinary from \"../../../libs/Cloudinary.res.js\";\nimport * as ImageWithFallback from \"../../components/Image/ImageWithFallback.res.js\";\nimport * as JsxRuntime from \"react/jsx-runtime\";\n\nfunction buildUrl(cropOpt, width, height, src) {\n var crop = cropOpt !== undefined ? cropOpt : \"Fill\";\n return Cloudinary.Url.build(\"Png\", {\n hd: \"Dpr\",\n tl: {\n hd: \"Quality\",\n tl: {\n hd: {\n TAG: \"Crop\",\n _0: crop\n },\n tl: {\n hd: {\n TAG: \"FetchFormat\",\n _0: \"Png\"\n },\n tl: {\n hd: {\n TAG: \"Width\",\n _0: width\n },\n tl: {\n hd: {\n TAG: \"Height\",\n _0: height\n },\n tl: /* [] */0\n }\n }\n }\n }\n }\n }, src);\n}\n\nfunction Picture(props) {\n var fallbackSrc = props.fallbackSrc;\n var imageClassName = props.imageClassName;\n var crop = props.crop;\n var small = props.small;\n var medium = props.medium;\n var large = props.large;\n var src = props.src;\n return JsxRuntime.jsxs(\"picture\", {\n children: [\n small !== undefined ? JsxRuntime.jsx(\"source\", {\n media: \"(max-width: \" + (String(Screens.medium) + \"px)\"),\n srcSet: (function (__x) {\n return buildUrl(crop, small[0], small[1], __x);\n })(src)\n }) : null,\n medium !== undefined ? JsxRuntime.jsx(\"source\", {\n media: \"(max-width: \" + (String(Screens.large) + \"px)\"),\n srcSet: buildUrl(crop, medium[0], medium[1], src)\n }) : null,\n fallbackSrc !== undefined ? JsxRuntime.jsx(ImageWithFallback.make, {\n src: buildUrl(crop, large[0], large[1], src),\n className: imageClassName,\n fallbackSrc: buildUrl(crop, large[0], large[1], fallbackSrc)\n }) : JsxRuntime.jsx(\"img\", {\n className: imageClassName,\n src: buildUrl(crop, large[0], large[1], src)\n })\n ],\n className: props.className\n });\n}\n\nvar Crop;\n\nvar make = Picture;\n\nexport {\n Crop ,\n buildUrl ,\n make ,\n}\n/* Screens Not a pure module */\n"],"names":["decoder","Json_Decode$JsonCombinators","field","assetId","required","batchId","bytes","createdAt","etag","folder","format","height","id","originalFilename","path","placeholder","publicId","resourceType","secureUrl","signature","tags","thumbnailUrl","type_","url","version","versionId","width","decoder$1","event","info","fromJson$1","json","Belt_Result","Json$JsonCombinators","css","DashboardProductEditorScss","make","props","JsxRuntime","Container","className","addAssetsContainer","children","H2","formTitle","toJson","req","Json_Encode$JsonCombinators","image","video","Video","toString","description","active","createImage","productId","Rest","ID","NAME","VAL","ColocationProduct","undefined","createVideo","deleteImage","imageId","deleteVideo","videoId","updateImage","updateVideo","initialState","input","fieldsStatuses","collectionsStatuses","formStatus","submissionStatus","validateForm","param","param$1","descriptionResult$1","match_0","TAG","_0","match_0$1","match_0$2","output","_1","useForm","initialInput","onSubmit","tmp","memoizedInitialState","React","match","Formality__ReactUpdate","state","action","result","Formality","status","init","result$1","result$2","match$1","validators","error","Caml_option","dispatch","notifyOnSuccess","notifyOnFailure","reset","dismissSubmissionResult","match$2","match$3","nextInput","nextInput$1","nextInput$2","map","error$1","error$2","updateDescription","nextInputFn","nextValue","__x","updateActive","updateUrl","blurDescription","blurActive","blurUrl","descriptionResult","activeResult","urlResult","dirty","valid","submitting","submit","dismissSubmissionError","mapSubmissionError","updateTimeout","toggleDestroy","updateProduct","product","form","cb","$$Promise","Api_Product","position","x","SentryLogger","rootModule","subModulePath","value","fullPath","res","i","Belt_Option","Js_array","Caml_obj","images","Picture","src","large","IconDelete","size","color","viewBoxSize","deleteAsset","onClick","assetOverlay","TextField","disabled","assetInput","onChange","$$event","target","setTimeout","ErrorMessage","descriptionContainer","Cx","inactiveText","Toggle","on","_event","toggleContainer","assetDescription","imageContainer","tmp$1","source","videos","exit","youtubeImage","assetOverlayYoutube","parseUrl","Regex","exec","Belt_Array","prim","submissionError","addLinkedVideo","Hooks","Api","fromYouTube","fromVimeo","IconOk","assetsVideoLinkFormSubmitted","tmp$2","tmp$3","assetsVideoLinkFormError","Form","assetsVideoLinkForm","Label","forId","Button","busy","assetsVideoLinkFormRow","reducer","destroyImageConfirm","destroyVideoConfirm","currentVideo","currentImage","timeout","newVideos","savedVideos","index","dict","Belt_Map","clearTimeout","ReactCloudinaryUploadWidget","sources","cloudName","Globals","apiKey","uploadPreset","accepts","contentType","slug","style","border","borderColor","borderRadius","fontWeight","backgroundColor","padding","fontSize","cropping","multiple","onSuccess","console","log","CloudinaryWidget","content","uploaderInner","uploader","uploaderContainer","DashboardProductEditorAssetsTabVideoLinkForm","length","H3","DashboardProductEditorImageForm","String","imagesGrid","imagesContainer","DashboardProductEditorVideoForm","videosGrid","videosContainer","deleteConfirmationText","deleteConfirmationMessage","deleteConfirmationButtons","deleteConfirmationDialog","deleteConfirmationOverlay","stopPropagation","container","DashboardEditProductAssetsTab$DashboardEditProductAssetsTab","Url","Routes_Product","hd","tl","editLocation","DashboardProductEditorActiveStatusToggle","DashboardProductEditorContextMenu","onUpdated","DashboardProductEditorUnarchiveLink","onUnarchived","DashboardProductEditorActionBar","expanded","visuallyDisabled","match$5","match$6","match$7","match$8","DashboardProductEditorLayout","DashboardProductEditorHeader","DashboardProductEditorAssetsTab","DashboardProductEditorAssetsTabUploader","$$default","fromJs","_ref","context","_objectWithoutProperties","_excluded","DashboardEditProductAssetsTab","youtube","vimeo","HeadingScss","__className","h3","ref","setRef","preventDefault","setErrored","errored","fallbackSrc","onError","buildUrl","cropOpt","crop","Cloudinary","build","imageClassName","small","medium","media","Screens","srcSet","ImageWithFallback"],"sourceRoot":""}