{"version":3,"file":"4030-d9c50e640352e81c62f0.js","mappings":"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","sources":["webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/delivery/DeliveryQualityAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/delivery/DeliveryColorSpaceFromICCAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/delivery/DeliveryColorSpaceAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/delivery/DeliveryDPRAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/delivery.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/delivery/DeliveryAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/progressive.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/delivery/DeliveryFormatAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/aspectRatio/AspectRatioQualifierValue.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/resize/ResizeSimpleAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/models/createGravityModel.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/autoFocus.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/gravity/qualifiers/compass/CompassQualifier.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/models/createGravityFromModel.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/resize/ResizeAdvancedAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/background/shared/base/BackgroundQualifier.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/background/shared/BlurredBackgroundAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/background/shared/base/BaseCommonBackground.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/background/shared/auto/BackgroundAutoBorderQualifier.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/background/shared/base/BaseGradientBackground.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/background/shared/gradient/BackgroundBorderGradientQualifier.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/background/shared/gradient/BackgroundPredominantGradientQualifier.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/background/shared/auto/BackgroundAutoPredominantQualifier.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/models/createBackgroundModel.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/background.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/models/createBackgroundFromModel.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/resize/ResizePadAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/resize/ThumbnailAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/resize/ResizeCropAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/resize/ResizeFillAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/resize/ResizeLimitFillAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/resize.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/models/actionToJson.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/models/ActionModel.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/Action.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/utils/dataStructureUtils.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/utils/objectFlip.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/internalConstants.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/models/qualifierToJson.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/models/QualifierModel.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/qualifier/Qualifier.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/qualifier/QualifierValue.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/utils/prepareColor.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/utils/toFloatAsString.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/utils/unsupportedError.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/flag.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/flag/FlagQualifier.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/focusOn.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/format.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/format/FormatQualifier.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/gravity/xyCenterGravity/XYCenterGravity.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/gravity.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/gravity/GravityQualifier.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/gravity/autoGravity/AutoGravity.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/gravity/compassGravity/CompassGravity.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/gravity/focusOnGravity/FocusOnGravity.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/gravity/qualifiers/focusOn/FocusOnValue.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/qualifiers/quality.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/actions/background/actions/BackgroundColor.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/RawAction.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/transformation/Transformation.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/internal/models/IErrorObject.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/transformation/ImageTransformation.js","webpack://lcci/./node_modules/@cloudinary/url-gen/config/BaseConfig.js","webpack://lcci/./node_modules/@cloudinary/url-gen/internal/internalConstants.js","webpack://lcci/./node_modules/@cloudinary/url-gen/config/URLConfig.js","webpack://lcci/./node_modules/@cloudinary/url-gen/sdkAnalytics/stringPad.js","webpack://lcci/./node_modules/@cloudinary/url-gen/sdkAnalytics/base64Map.js","webpack://lcci/./node_modules/@cloudinary/url-gen/sdkAnalytics/encodeVersion.js","webpack://lcci/./node_modules/@cloudinary/url-gen/sdkAnalytics/reverseVersion.js","webpack://lcci/./node_modules/@cloudinary/url-gen/sdkAnalytics/getSDKAnalyticsSignature.js","webpack://lcci/./node_modules/@cloudinary/url-gen/assets/CloudinaryFile.js","webpack://lcci/./node_modules/@cloudinary/url-gen/internal/url/cloudinaryURL.js","webpack://lcci/./node_modules/@cloudinary/url-gen/internal/url/urlUtils/publicIDContainsVersion.js","webpack://lcci/./node_modules/@cloudinary/url-gen/internal/url/urlUtils/isUrl.js","webpack://lcci/./node_modules/@cloudinary/url-gen/internal/url/urlUtils/isFileName.js","webpack://lcci/./node_modules/@cloudinary/url-gen/sdkAnalytics/getAnalyticsOptions.js","webpack://lcci/./node_modules/@cloudinary/url-gen/internal/utils/packageVersion.js","webpack://lcci/./node_modules/@cloudinary/url-gen/assets/CloudinaryTransformable.js","webpack://lcci/./node_modules/@cloudinary/url-gen/assets/CloudinaryImage.js","webpack://lcci/./node_modules/@cloudinary/transformation-builder-sdk/transformation/VideoTransformation.js","webpack://lcci/./node_modules/@cloudinary/url-gen/assets/CloudinaryVideo.js","webpack://lcci/./node_modules/@cloudinary/url-gen/instance/Cloudinary.js"],"sourcesContent":["import { QualifierValue } from \"../../internal/qualifier/QualifierValue.js\";\nimport { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { DeliveryAction } from \"./DeliveryAction.js\";\nimport { CHROMA_VALUE_TO_CHROMA_MODEL_ENUM, CHROMA_MODEL_ENUM_TO_CHROMA_VALUE, ACTION_TYPE_TO_QUALITY_MODE_MAP } from \"../../internal/internalConstants.js\";\n/**\n * @description Controls the quality of the delivered image or video.\n * @memberOf Actions.Delivery\n * @extends {Actions.Delivery.DeliveryAction}\n * @see Visit {@link Actions.Delivery|Delivery} for an example\n */\nclass DeliveryQualityAction extends DeliveryAction {\n /**\n * @param {Qualifiers.Quality} qualityValue a Quality value\n */\n constructor(qualityValue) {\n super('q', qualityValue.toString(), 'level');\n }\n /**\n * Selet the Chroma sub sampling
\n * Learn more: {@link https://cloudinary.com/documentation/image_optimization#toggle_chroma_subsampling|Toggling chroma subsampling}\n * @param {420 | 444 | number} type The chroma sub sampling type\n */\n chromaSubSampling(type) {\n this._actionModel.chromaSubSampling = CHROMA_VALUE_TO_CHROMA_MODEL_ENUM[type];\n const qualityWithSubSampling = new QualifierValue([this._actionModel.level, type]);\n qualityWithSubSampling.setDelimiter(':');\n // We either have chroma or quantization, but not both\n return this.addQualifier(new Qualifier('q', qualityWithSubSampling));\n }\n /**\n * Controls the final quality by setting a maximum quantization percentage\n * @param {number} val\n */\n quantization(val) {\n this._actionModel.quantization = val;\n const qualityWithQuantization = new QualifierValue([this._actionModel.level, `qmax_${val}`]).setDelimiter(':');\n // We either have chroma or quantization, but not both\n return this.addQualifier(new Qualifier('q', qualityWithQuantization));\n }\n static fromJson(actionModel) {\n const { level, chromaSubSampling, quantization } = actionModel;\n const levelType = ACTION_TYPE_TO_QUALITY_MODE_MAP[level] || level;\n const result = new this(levelType);\n if (chromaSubSampling) {\n //Turn strings like 'CHROMA_420' to 420\n const chromaValue = CHROMA_MODEL_ENUM_TO_CHROMA_VALUE[chromaSubSampling.toUpperCase()];\n chromaValue && result.chromaSubSampling(+chromaValue);\n }\n quantization && result.quantization(quantization);\n return result;\n }\n}\nexport { DeliveryQualityAction };\n","import { Action } from \"../../internal/Action.js\";\nimport { QualifierValue } from \"../../internal/qualifier/QualifierValue.js\";\nimport { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\n/**\n * @description Specifies the ICC profile to use for the color space.\n * @memberOf Actions.Delivery\n * @extends SDK.Action\n * @see Visit {@link Actions.Delivery|Delivery} for an example\n */\nclass DeliveryColorSpaceFromICCAction extends Action {\n /**\n * @param {string} publicId\n */\n constructor(publicId) {\n super();\n this._actionModel = {};\n this._actionModel.actionType = 'colorSpaceFromICC';\n this._actionModel.publicId = publicId;\n const qualifierValue = new QualifierValue(['icc', publicId]).setDelimiter(':');\n this.addQualifier(new Qualifier('cs', qualifierValue));\n }\n static fromJson(actionModel) {\n const { publicId } = actionModel;\n return new this(publicId);\n }\n}\nexport { DeliveryColorSpaceFromICCAction };\n","import { Action } from \"../../internal/Action.js\";\nimport { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { ColorSpace } from \"../../qualifiers/colorSpace.js\";\nimport { COLOR_SPACE_MODE_TO_COLOR_SPACE_MODEL_MODE_MAP, COLOR_SPACE_MODEL_MODE_TO_COLOR_SPACE_MODE_MAP } from \"../../internal/internalConstants.js\";\n/**\n * @description Specifies the color space to use.\n * @memberOf Actions.Delivery\n * @extends SDK.Action\n * @see Visit {@link Actions.Delivery|Delivery} for an example\n */\nclass DeliveryColorSpaceAction extends Action {\n /**\n * Create a new DeliveryColorSpaceAction\n * @param mode\n */\n constructor(mode) {\n super();\n this._actionModel = {};\n this._actionModel = {\n actionType: 'colorSpace',\n mode: (COLOR_SPACE_MODE_TO_COLOR_SPACE_MODEL_MODE_MAP[mode] || mode)\n };\n this.addQualifier(new Qualifier('cs', ColorSpace[mode] ? ColorSpace[mode]() : mode));\n }\n static fromJson(actionModel) {\n const { mode } = actionModel;\n const colorSpaceMode = COLOR_SPACE_MODEL_MODE_TO_COLOR_SPACE_MODE_MAP[mode] || mode;\n // We are using this() to allow inheriting classes to use super.fromJson.apply(this, [actionModel])\n // This allows the inheriting classes to determine the class to be created\n return new this(colorSpaceMode);\n }\n}\nexport { DeliveryColorSpaceAction };\n","import { Action } from \"../../internal/Action.js\";\nimport { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { toFloatAsString } from \"../../internal/utils/toFloatAsString.js\";\n/**\n * @description Specifies the dpr.\n * @memberOf Actions.Delivery\n * @extends SDK.Action\n * @see Visit {@link Actions.Delivery|Delivery} for an example\n */\nclass DeliveryDPRAction extends Action {\n /**\n * Create a new DeliveryDPRAction\n * @param dprValue\n */\n constructor(dprValue) {\n super();\n this._actionModel = { actionType: 'dpr' };\n // toFloatAsString is used to ensure 1 turns into 1.0\n const dprAsFloat = toFloatAsString(dprValue);\n this._actionModel.dpr = dprAsFloat;\n this.addQualifier(new Qualifier('dpr', dprAsFloat));\n }\n static fromJson(actionModel) {\n const { dpr } = actionModel;\n // We are using this() to allow inheriting classes to use super.fromJson.apply(this, [actionModel])\n // This allows the inheriting classes to determine the class to be created\n return new this(dpr);\n }\n}\nexport { DeliveryDPRAction };\n","/**\n * @description Defines transformations for delivering your assets without changing the visual or audio experience for the end user.\n * @memberOf Actions\n * @namespace Delivery\n * @example\n * See the examples under every method\n */\nimport { DeliveryFormatAction } from \"./delivery/DeliveryFormatAction.js\";\nimport { DeliveryQualityAction } from \"./delivery/DeliveryQualityAction.js\";\nimport { DeliveryColorSpaceFromICCAction } from \"./delivery/DeliveryColorSpaceFromICCAction.js\";\nimport { DeliveryAction } from \"./delivery/DeliveryAction.js\";\nimport { DeliveryColorSpaceAction } from \"./delivery/DeliveryColorSpaceAction.js\";\nimport { DeliveryDPRAction } from \"./delivery/DeliveryDPRAction.js\";\n/**\n * @summary action\n * @description Defines the format of the delivered asset.\n *\n * Learn more:\n * {@link https://cloudinary.com/documentation/image_transformations#image_format_support|Image formats}\n * {@link https://cloudinary.com/documentation/video_manipulation_and_delivery#transcoding_video_to_other_formats|Video formats}\n *\n * @memberOf Actions.Delivery\n * @param {string} format The file format. For a list of supported format types see {@link Qualifiers.Format| format types} for\n * possible values\n * @return {Actions.Delivery.DeliveryFormat}\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {format} from \"@cloudinary/url-gen/actions/delivery\";\n *\n * const yourCldInstance = new Cloudinary({cloud:{cloudName:'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.delivery(\n * format('jpg'),\n * );\n *\n */\nfunction format(format) {\n return new DeliveryFormatAction('f', format);\n}\n/**\n * @summary action\n * @description Deliver the image in the specified device pixel ratio.\n * @memberOf Actions.Delivery\n * @param {string} dpr The DPR (Device Pixel Ratio). Any positive float value.\n * @return {Actions.Delivery.DeliveryAction}\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {dpr} from \"@cloudinary/url-gen/actions/delivery\";\n *\n * const yourCldInstance = new Cloudinary({cloud:{cloudName:'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.delivery(\n * dpr('2.0'),\n * );\n */\nfunction dpr(dpr) {\n return new DeliveryDPRAction(dpr);\n}\n/**\n * @summary action\n * @description Controls the quality of the delivered image or video.\n *\n * Learn more: {@link https://cloudinary.com/documentation/image_optimization#how_to_optimize_image_quality|Image quality}\n * {@link https://cloudinary.com/documentation/video_optimization#how_to_optimize_video_quality|Video quality}\n * @memberOf Actions.Delivery\n * @param {QualityTypes | string | number | Qualifiers.Quality} qualityType For a list of supported quality types see\n * {@link Qualifiers.Quality| quality types} for\n * possible values.\n * @return {Actions.Delivery.DeliveryQualityAction}\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {quality} from \"@cloudinary/url-gen/actions/delivery\";\n * import {quality} from \"@cloudinary/url-gen/qualifiers/quantity\";\n *\n * const yourCldInstance = new Cloudinary({cloud:{cloudName:'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.delivery(\n * quality('auto'),\n * );\n */\nfunction quality(qualityType) {\n return new DeliveryQualityAction(qualityType);\n}\n/**\n * @summary action\n * @description Controls the density to use when delivering an image or when converting a vector file such as a PDF or EPS\n * document to a web image delivery format.\n * @memberOf Actions.Delivery\n * @param {number | string} value The density in dpi.\n * @return {Actions.Delivery.DeliveryAction}\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {density} from \"@cloudinary/url-gen/actions/delivery\";\n *\n * const yourCldInstance = new Cloudinary({cloud:{cloudName:'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.delivery(\n * density(150),\n * );\n */\nfunction density(value) {\n return new DeliveryAction('dn', value, 'density');\n}\n/**\n * @summary action\n * @description Default images can be used in the case that a requested image does not exist.\n * @memberOf Actions.Delivery\n * @param {string} publicIdWithExtension Default image public ID\n * @return {Actions.Delivery.DeliveryAction}\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {defaultImage} from \"@cloudinary/url-gen/actions/delivery\";\n *\n * const yourCldInstance = new Cloudinary({cloud:{cloudName:'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.delivery(\n * defaultImage('sample'),\n * );\n */\nfunction defaultImage(publicIdWithExtension) {\n return new DeliveryAction('d', publicIdWithExtension, 'defaultImage');\n}\n/**\n * @summary action\n * @description Controls the color space used for the delivered image.\n * @memberOf Actions.Delivery\n * @param {string | Qualifiers.ColorSpace} mode The color space.\n * @return {Actions.Delivery.DeliveryAction}\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {colorSpace} from \"@cloudinary/url-gen/actions/delivery\";\n * import {trueColor} from \"@cloudinary/url-gen/qualifiers/colorSpace\";\n *\n * const yourCldInstance = new Cloudinary({cloud:{cloudName:'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.delivery(\n * colorSpace(trueColor()),\n * );\n */\nfunction colorSpace(mode) {\n return new DeliveryColorSpaceAction(mode);\n}\n/**\n * @summary action\n * @description Specifies the ICC profile to use for the color space.\n * The ICC file must be uploaded to your account as a raw, authenticated file.\n * @memberOf Actions.Delivery\n * @param {string} publicId The public ID (including the file extension) of the ICC profile that defines the\n * color space.\n * @return {Actions.Delivery.DeliveryColorSpaceFromICC}\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {colorSpaceFromICC} from \"@cloudinary/url-gen/actions/delivery\";\n * import {trueColor} from \"@cloudinary/url-gen/qualifiers/colorSpace\";\n *\n * const yourCldInstance = new Cloudinary({cloud:{cloudName:'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.delivery(\n * colorSpaceFromICC('sample.icc'),\n * );\n */\nfunction colorSpaceFromICC(publicId) {\n return new DeliveryColorSpaceFromICCAction(publicId);\n}\nconst Delivery = {\n format,\n dpr,\n density,\n defaultImage,\n colorSpace,\n colorSpaceFromICC,\n quality\n};\nexport { Delivery, format, dpr, quality, density, defaultImage, colorSpace, colorSpaceFromICC };\n","import { Action } from \"../../internal/Action.js\";\nimport { FormatQualifier } from \"../../qualifiers/format/FormatQualifier.js\";\nimport { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { DELIVERY_MODE_TO_ACTION_TYPE_MAP } from \"../../internal/internalConstants.js\";\n/**\n * @description Qualifies the delivery of an asset.\n * @memberOf Actions.Delivery\n * @extends SDK.Action\n */\nclass DeliveryAction extends Action {\n /**\n * @param {string} deliveryKey A generic Delivery Action Key (such as q, f, dn, etc.)\n * @param {string} deliveryType A Format Qualifiers for the action, such as Quality.auto()\n * @param {string} modelProperty internal model property of the action, for example quality uses `level` while dpr uses `density`\n * @see Visit {@link Actions.Delivery|Delivery} for an example\n */\n constructor(deliveryKey, deliveryType, modelProperty) {\n super();\n this._actionModel = {};\n let deliveryTypeValue;\n if (deliveryType instanceof FormatQualifier) {\n deliveryTypeValue = deliveryType.getValue();\n }\n else {\n deliveryTypeValue = deliveryType;\n }\n this._actionModel.actionType = DELIVERY_MODE_TO_ACTION_TYPE_MAP[deliveryKey];\n this._actionModel[modelProperty] = deliveryTypeValue;\n this.addQualifier(new Qualifier(deliveryKey, deliveryType));\n }\n}\nexport { DeliveryAction };\n","/**\n * @description Contains functions to select the mode when using a progressive format.\n * Learn more: {@link https://cloudinary.com/documentation/transformation_reference#fl_progressive|Progressive modes}\n * @memberOf Qualifiers\n * @namespace Progressive\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {format} from \"@cloudinary/url-gen/actions/delivery\";\n * import {jpg} from \"@cloudinary/url-gen/qualifiers/format\";\n * import {steep} from \"@cloudinary/url-gen/qualifiers/progressive\";\n *\n * const yourCldInstance = new Cloudinary({cloud: {cloudName: 'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.delivery(format(jpg()).progressive(steep()))\n */\nimport { FlagQualifier } from \"./flag/FlagQualifier.js\";\nclass ProgressiveQualifier extends FlagQualifier {\n constructor(mode) {\n super('progressive', mode);\n }\n}\n/**\n * @memberOf Qualifiers.Progressive\n */\nfunction none() {\n return new ProgressiveQualifier('none');\n}\n/**\n * @memberOf Qualifiers.Progressive\n */\nfunction semi() {\n return new ProgressiveQualifier('semi');\n}\n/**\n * @memberOf Qualifiers.Progressive\n */\nfunction steep() {\n return new ProgressiveQualifier('steep');\n}\n/**\n * @memberOf Qualifiers.Progressive\n */\nfunction progressive() {\n return new ProgressiveQualifier();\n}\nconst Progressive = {\n semi,\n none,\n steep,\n progressive,\n ProgressiveQualifier\n};\nexport { Progressive, semi, none, steep, progressive, ProgressiveQualifier };\n","import { lossy, preserveTransparency, progressive } from \"../../qualifiers/flag.js\";\nimport { DeliveryAction } from \"./DeliveryAction.js\";\nimport { ProgressiveQualifier } from \"../../qualifiers/progressive.js\";\n/**\n * @memberOf Actions.Delivery\n * @extends {Actions.Delivery.DeliveryAction}\n * @see Visit {@link Actions.Delivery|Delivery} for an example\n */\nclass DeliveryFormatAction extends DeliveryAction {\n constructor(deliveryKey, deliveryType) {\n super(deliveryKey, deliveryType, 'formatType');\n }\n /**\n * @description Uses lossy compression when delivering animated GIF files.\n * @return {this}\n */\n lossy() {\n this._actionModel.lossy = true;\n this.addFlag(lossy());\n return this;\n }\n /**\n * @description Uses progressive compression when delivering JPG file format.\n * @return {this}\n */\n progressive(mode) {\n if (mode instanceof ProgressiveQualifier) {\n this._actionModel.progressive = { mode: mode.getFlagValue() };\n this.addFlag(mode);\n }\n else {\n this._actionModel.progressive = { mode: mode };\n this.addFlag(progressive(mode));\n }\n return this;\n }\n /**\n * @description Ensures that images with a transparency channel are delivered in PNG format.\n */\n preserveTransparency() {\n this._actionModel.preserveTransparency = true;\n this.addFlag(preserveTransparency());\n return this;\n }\n static fromJson(actionModel) {\n const { formatType, lossy, progressive, preserveTransparency } = actionModel;\n let result;\n if (formatType) {\n result = new this('f', formatType);\n }\n else {\n result = new this('f');\n }\n if (progressive) {\n if (progressive.mode) {\n result.progressive(progressive.mode);\n }\n else {\n result.progressive();\n }\n }\n lossy && result.lossy();\n preserveTransparency && result.preserveTransparency();\n return result;\n }\n}\nexport { DeliveryFormatAction };\n","import { QualifierValue } from \"../../internal/qualifier/QualifierValue.js\";\n/**\n * @memberOf Qualifiers.AspectRatio\n * @extends {SDK.QualifierValue}\n */\nexport class AspectRatioQualifierValue extends QualifierValue {\n}\n","import { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { Action } from \"../../internal/Action.js\";\nimport { toFloatAsString } from \"../../internal/utils/toFloatAsString.js\";\nimport { AspectRatioQualifierValue } from \"../../qualifiers/aspectRatio/AspectRatioQualifierValue.js\";\nimport { ignoreInitialAspectRatio, regionRelative, relative } from \"../../qualifiers/flag.js\";\nimport { FlagQualifier } from \"../../qualifiers/flag/FlagQualifier.js\";\nimport { ACTION_TYPE_TO_CROP_MODE_MAP, CROP_MODE_TO_ACTION_TYPE_MAP } from \"../../internal/internalConstants.js\";\n/**\n * @description Defines a resize using width and height.\n * @extends SDK.Action\n * @memberOf Actions.Resize\n * @see Visit {@link Actions.Resize| Resize} for examples\n */\nclass ResizeSimpleAction extends Action {\n /**\n * @param {string} cropType\n * @param {number | string} cropWidth The required width of a transformed asset.\n * @param {number | string} cropHeight The required height of a transformed asset.\n */\n constructor(cropType, cropWidth, cropHeight) {\n super();\n this._actionModel = { dimensions: {} };\n this._actionModel.actionType = CROP_MODE_TO_ACTION_TYPE_MAP[cropType] || cropType;\n this.addQualifier(new Qualifier('c', cropType));\n cropWidth && this.width(cropWidth);\n cropHeight && this.height(cropHeight);\n }\n /**\n * @description Sets the height of the resize\n * @param {string | number} x The height in pixels (if an integer is specified) or as a percentage (if a float is specified).\n */\n height(x) {\n this._actionModel.dimensions.height = x;\n return this.addQualifier(new Qualifier('h', x));\n }\n /**\n * @description Sets the width of the resize\n * @param {string | number} x The width in pixels (if an integer is specified) or as a percentage (if a float is specified).\n */\n width(x) {\n this._actionModel.dimensions.width = x;\n return this.addQualifier(new Qualifier('w', x));\n }\n /**\n * @description Sets the aspect ratio of the asset.\n * For a list of supported types see {@link Qualifiers.AspectRatio|\n * AspectRatio values}\n * @param {AspectRatioType|number|string} ratio The new aspect ratio, specified as a percentage or ratio.\n * @return {this}\n */\n aspectRatio(ratio) {\n // toFloatAsString is used to ensure 1 turns into 1.0\n if (ratio instanceof AspectRatioQualifierValue) {\n this._actionModel.dimensions.aspectRatio = `${ratio}`;\n return this.addQualifier(new Qualifier('ar', ratio));\n }\n if (typeof ratio === 'number' || typeof ratio === 'string') {\n this._actionModel.dimensions.aspectRatio = toFloatAsString(ratio);\n return this.addQualifier(new Qualifier('ar', toFloatAsString(ratio)));\n }\n if (ratio instanceof FlagQualifier) {\n this._actionModel.dimensions.aspectRatio = `${ratio.qualifierValue}`;\n return this.addFlag(ratio);\n }\n }\n /**\n * @description Modifies percentage-based width & height parameters of overlays and underlays (e.g., 1.0) to be relative to the containing image instead of the added layer.\n * @return {this}\n */\n relative() {\n this._actionModel.relative = true;\n return this.addFlag(relative());\n }\n /**\n * @description Modifies percentage-based width & height parameters of overlays and underlays (e.g., 1.0) to be relative to the overlaid region\n * @return {this}\n */\n regionRelative() {\n this._actionModel.regionRelative = true;\n return this.addFlag(regionRelative());\n }\n static fromJson(actionModel) {\n const { actionType, dimensions, relative, regionRelative } = actionModel;\n const { aspectRatio, width, height } = dimensions;\n const cropMode = ACTION_TYPE_TO_CROP_MODE_MAP[actionType] || actionType;\n // We are using this() to allow inheriting classes to use super.fromJson.apply(this, [actionModel])\n // This allows the inheriting classes to determine the class to be created\n const result = new this(cropMode, width, height);\n aspectRatio && result.aspectRatio(aspectRatio === 'ignore_aspect_ratio' ? ignoreInitialAspectRatio() : aspectRatio);\n relative && result.relative();\n regionRelative && result.regionRelative();\n return result;\n }\n}\nexport { ResizeSimpleAction };\n","import { AutoGravity } from \"../../qualifiers/gravity/autoGravity/AutoGravity.js\";\nimport { FocusOnGravity } from \"../../qualifiers/gravity/focusOnGravity/FocusOnGravity.js\";\nimport { autoGravity } from \"../../qualifiers/gravity.js\";\nimport { FocusOnValue } from \"../../qualifiers/focusOn.js\";\n/**\n * true if gravity starts with 'auto' or 'auto:'\n * @param gravity\n */\nfunction isIAutoGravityString(gravity) {\n return gravity && `${gravity}`.split(':')[0] === 'auto';\n}\n/**\n * Validate that given val is an ICompassGravity\n * @param gravity\n */\nfunction isCompassGravity(gravity) {\n //const gravityString = `${(typeof gravity === \"string\" ? gravity : gravity.qualifierValue)}`;\n const gravityValue = getGravityValue(gravity);\n return ['north', 'center', 'east', 'west', 'south', 'north_west', 'south_east', 'south_west', 'north_east'].includes(gravityValue);\n}\n/**\n * Get the value of given gravity\n * @param gravity\n */\nfunction getGravityValue(gravity) {\n return `${gravity}`.replace('g_', '');\n}\n/**\n * Creates a compassGravity model\n * @param gravity\n */\nfunction createCompassGravityModel(gravity) {\n return {\n compass: getGravityValue(gravity),\n gravityType: 'direction'\n };\n}\n/**\n * Validate that given gravity is an instance of ocr gravity\n * @param gravity\n */\nfunction isOcrGravity(gravity) {\n return getGravityValue(gravity) === 'ocr_text';\n}\n/**\n * Creates an ocr gravity model\n */\nfunction createOcrGravityModel() {\n return {\n gravityType: 'ocr'\n };\n}\n/**\n * Validate that given gravity is an instance of AutoGravity\n * @param gravity\n */\nfunction isAutoGravity(gravity) {\n return `${gravity.qualifierValue}`.split(':')[0] === 'auto';\n}\n/**\n * Create an instance of IAutoGravityObjectModel\n * @param gravity\n */\nfunction createIAutoFocusObject(gravity) {\n const gravityString = gravity.toString();\n const values = gravityString.split('_');\n const result = {\n object: values[0]\n };\n if (values.length > 1) {\n if (values[1] === 'avoid') {\n result.avoid = true;\n }\n else {\n result.weight = +values[1];\n }\n }\n return result;\n}\n/**\n * Creates an auto gravity model from given AutoGravity\n * @param gravity\n */\nfunction createAutoGravityModel(gravity) {\n let values;\n const gravityQualifier = gravity === 'auto' ? new AutoGravity() : gravity;\n if (`${gravity}`.startsWith('auto:')) {\n values = `${gravity}`.split(':').filter((v) => v !== 'auto');\n }\n else {\n values = gravityQualifier.qualifierValue.values.filter((v) => v !== 'auto');\n }\n const autoFocus = values.map(createIAutoFocusObject);\n return {\n gravityType: 'auto',\n autoFocus\n };\n}\n/**\n * Create IFocusOnGravityModel from FocusOnGravity\n * @param gravity\n */\nfunction createFocusOnGravityModel(gravity) {\n const hasAutoGravity = `${gravity}`.split(':').includes('auto');\n const values = gravity.qualifierValue.values;\n const focusOnValues = hasAutoGravity ? values.slice(0, values.length - 1) : values;\n const result = {\n gravityType: 'object',\n focusOnObjects: focusOnValues.map((v) => `${v}`)\n };\n if (hasAutoGravity) {\n // Remove the first 'auto' value by slicing it, because it's added by autoGravity()\n const autoFocusObjects = values[values.length - 1].values.slice(1);\n const autoGravityInstance = autoGravity().autoFocus(...autoFocusObjects);\n result.fallbackGravity = createAutoGravityModel(autoGravityInstance);\n }\n return result;\n}\n/**\n * Creates a FocusOnGravity from given string\n * @param gravity\n */\nfunction createFocusOnGravity(gravity) {\n const values = gravity.split(':');\n const focusOnValues = values.map((g) => new FocusOnValue(g));\n return new FocusOnGravity(focusOnValues);\n}\n/**\n * Create a model of given gravity\n * @param gravity\n */\nexport function createGravityModel(gravity) {\n if (isCompassGravity(gravity)) {\n return createCompassGravityModel(gravity);\n }\n if (isOcrGravity(gravity)) {\n return createOcrGravityModel();\n }\n if (isIAutoGravityString(gravity) || isAutoGravity(gravity)) {\n return createAutoGravityModel(gravity);\n }\n return createFocusOnGravityModel(typeof gravity === 'string' ? createFocusOnGravity(gravity) : gravity);\n}\n","import { QualifierValue } from \"../internal/qualifier/QualifierValue.js\";\n/**\n * @summary qualifier\n * @namespace AutoFocus\n * @memberOf Qualifiers\n * @see Visit {@link Qualifiers.Gravity|Gravity} for an example\n */\n/**\n * @memberOf Qualifiers.AutoFocus\n * @extends {SDK.QualifierValue}\n * @see Visit {@link Qualifiers.Gravity|Gravity} for an example\n */\nclass AutoFocus extends QualifierValue {\n constructor(focusOn, weight) {\n super();\n this._weight = weight;\n this.focusOn = focusOn;\n this.shouldAvoid = false;\n }\n /**\n * @summary qualifier\n * @description Specifies the object to focus on automatically\n * Accepts an AutoFocusObject (which is just a wrapper for a FocusOn object, but with extra method: avoid, weight)\n * @param {Qualifiers.FocusOn} obj The object to focus on.\n * @param {number} weight\n */\n static focusOn(obj, weight) {\n return new AutoFocus(obj, weight);\n }\n shouldAddWeight() {\n return typeof this._weight === 'number' || typeof this._weight === 'string' || this.shouldAvoid;\n }\n /**\n * @summary qualifier\n * @desc Get the name of the of the object\n */\n getName() {\n return this.focusOn.name;\n }\n /**\n * @summary qualifier\n * @desc Get the weight for the object\n */\n getWeight() {\n if (this.shouldAvoid) {\n return 'avoid';\n }\n else {\n return this._weight;\n }\n }\n /**\n * @summary qualifier\n * @desc Return the string representation of this QualifierValue\n */\n toString() {\n // Future proofing, in case we'd like to support some custom string in the future, or if data is coming from a DB\n if (this.shouldAddWeight()) {\n return `${this.getName()}_${this.getWeight()}`;\n }\n else {\n return `${this.getName()}`;\n }\n }\n /**\n * @summary qualifier\n * @description Sets the importance level of the object within the automatic gravity algorithm\n * @param {numebr} w The focus weight for the object\n * @return {this}\n */\n weight(w) {\n this._weight = w;\n return this;\n }\n /**\n * @summary qualifier\n * @description Attempts to avoid the detected object in the image\n * @return {this}\n */\n avoid() {\n this.shouldAvoid = true;\n return this;\n }\n}\nexport { AutoFocus };\n","import { QualifierValue } from \"../../../../internal/qualifier/QualifierValue.js\";\n/**\n * @memberOf Qualifiers.Compass\n * @extends {SDK.QualifierValue}\n */\nclass CompassQualifier extends QualifierValue {\n constructor(val) {\n super();\n this.val = val;\n }\n toString() {\n return this.val;\n }\n}\nexport { CompassQualifier };\n","import { autoGravity, focusOn } from \"../../qualifiers/gravity.js\";\nimport { FocusOnValue, ocr } from \"../../qualifiers/focusOn.js\";\nimport { AutoFocus } from \"../../qualifiers/autoFocus.js\";\nimport { CompassGravity } from \"../../qualifiers/gravity/compassGravity/CompassGravity.js\";\nimport { CompassQualifier } from \"../../qualifiers/gravity/qualifiers/compass/CompassQualifier.js\";\n/**\n * Validates that gravityModel is an ICompassGravityModel\n * @param gravityModel\n */\nfunction isCompassGravityModel(gravityModel) {\n return gravityModel.gravityType === 'direction';\n}\n/**\n * Validates that gravityModel is an IOcrGravityModel\n * @param gravityModel\n */\nfunction isOcrGravityModel(gravityModel) {\n return gravityModel.gravityType === 'ocr';\n}\n/**\n * Validates that gravityModel is an IAutoGravityModel\n * @param gravityModel\n */\nfunction isAutoGravityModel(gravityModel) {\n return gravityModel.gravityType === 'auto';\n}\n/**\n * Create AutoFocus from IAutoGravityObjectModel\n * @param autoGravityObjectModel\n */\nfunction createAutoFocusFromModel(autoGravityObjectModel) {\n const { object, weight, avoid } = autoGravityObjectModel;\n const autoFocus = new AutoFocus(new FocusOnValue(object));\n (weight || weight === 0) && autoFocus.weight(weight);\n avoid && autoFocus.avoid();\n return autoFocus;\n}\n/**\n * Create AutoGravity from IAutoGravityModel\n * @param gravityModel\n */\nfunction createAutoGravityFromModel(gravityModel) {\n const autoFocusModel = gravityModel.autoFocus || [];\n const autoFocus = autoFocusModel.map(createAutoFocusFromModel);\n return autoGravity().autoFocus(...autoFocus);\n}\n/**\n * Create FocusOnGravity from given IFocusOnGravityModel\n * @param gravityModel\n */\nfunction createFocusOnGravityFromModel(gravityModel) {\n const focusOnObjects = (gravityModel.focusOnObjects || []).map((str) => new FocusOnValue(str));\n const result = focusOn(...focusOnObjects);\n if (gravityModel.fallbackGravity) {\n const autoGravity = createAutoGravityFromModel(gravityModel.fallbackGravity);\n result.fallbackGravity(autoGravity);\n }\n return result;\n}\n/**\n * Create gravity instance from given gravity model\n * @param gravityModel\n */\nfunction createGravityFromModel(gravityModel) {\n if (isCompassGravityModel(gravityModel)) {\n return new CompassGravity(new CompassQualifier(gravityModel.compass));\n }\n if (isOcrGravityModel(gravityModel)) {\n return focusOn(ocr());\n }\n if (isAutoGravityModel(gravityModel)) {\n return createAutoGravityFromModel(gravityModel);\n }\n return createFocusOnGravityFromModel(gravityModel);\n}\nexport { createGravityFromModel };\n","import { ResizeSimpleAction } from \"./ResizeSimpleAction.js\";\nimport { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { createGravityModel } from \"../../internal/models/createGravityModel.js\";\nimport { createGravityFromModel } from \"../../internal/models/createGravityFromModel.js\";\n/**\n * @description Defines an advanced resize.\n * @extends Actions.Resize.ResizeSimpleAction\n * @memberOf Actions.Resize\n * @see Visit {@link Actions.Resize| Resize} for examples\n */\nclass ResizeAdvancedAction extends ResizeSimpleAction {\n /**\n * @description Which part of the original image to include.\n * @param {Qualifiers.Gravity} gravity\n */\n gravity(gravity) {\n this._actionModel.gravity = createGravityModel(gravity);\n const gravityQualifier = typeof gravity === \"string\" ? new Qualifier('g', gravity) : gravity;\n return this.addQualifier(gravityQualifier);\n }\n static fromJson(actionModel) {\n const result = super.fromJson.apply(this, [actionModel]);\n if (actionModel.gravity) {\n result.gravity(createGravityFromModel(actionModel.gravity));\n }\n return result;\n }\n}\nexport { ResizeAdvancedAction };\n","import { Qualifier } from \"../../../../internal/qualifier/Qualifier.js\";\n/**\n * @description Defines the visual appearance of the background.\n * @memberOf Qualifiers.Background\n * @extends {SDK.Qualifier}\n */\nclass BackgroundQualifier extends Qualifier {\n constructor(backgroundValue) {\n // The qualifier key for this qualifier\n super('b');\n // Such as color (b_red)\n if (backgroundValue) {\n this.addValue(backgroundValue);\n }\n }\n}\nexport { BackgroundQualifier };\n","import { BackgroundQualifier } from \"./base/BackgroundQualifier.js\";\n/**\n * @description A class for blurred background transformations.\n * @memberOf Qualifiers.Background\n * @extends {Qualifiers.Background.BackgroundQualifier}\n */\nclass BlurredBackgroundAction extends BackgroundQualifier {\n /**\n * @description Sets the intensity of the blur.\n * @param {number} value - The intensity of the blur.\n */\n intensity(value) {\n this.intensityLevel = value;\n return this;\n }\n /**\n * @description Sets the brightness of the background.\n * @param {number} value - The brightness of the background.\n */\n brightness(value) {\n this.brightnessLevel = value;\n return this;\n }\n /**\n * @description\n * Stringify the qualifier\n * BackgroundQualifiers don't have a value, but instead override the toString() function\n */\n toString() {\n // b_blurred:{intensity}:{brightness}\n return `\n b_blurred\n ${this.intensityLevel ? `:${this.intensityLevel}` : ''}\n ${this.brightnessLevel ? `:${this.brightnessLevel}` : ''}\n `.replace(/\\s+/g, '');\n }\n}\nexport default BlurredBackgroundAction;\n","import { prepareColor } from \"../../../../internal/utils/prepareColor.js\";\nimport { BackgroundQualifier } from \"./BackgroundQualifier.js\";\n/**\n * @description Defines the background color to use when resizing with padding.\n * @memberOf Qualifiers.Background\n * @extends {Qualifiers.Background.BackgroundQualifier}\n */\nclass BaseCommonBackground extends BackgroundQualifier {\n constructor() {\n super();\n this._palette = [];\n }\n /**\n * @description Selects the strongest contrasting color to use for padding.\n * @return {this}\n */\n contrast() {\n this._contrast = true;\n return this;\n }\n /**\n * @description Defines the custom colors to use when resizing using content-aware padding.\n * @param {...string} colors One or more colors - Example: palette('green', 'red', blue')\n * @return {this}\n */\n palette(...colors) {\n this._palette = colors.map((color) => {\n return prepareColor(color);\n });\n return this;\n }\n}\nexport { BaseCommonBackground };\n","import { BaseCommonBackground } from \"../base/BaseCommonBackground.js\";\n/**\n * @description Automatically determines the color to use for padding, if needed when resizing an asset. Selects the\n * predominant color from the border of the image.\n * @memberOf Qualifiers.Background\n * @extends {Qualifiers.Background.BaseCommonBackground}\n */\nclass BackgroundAutoBorderQualifier extends BaseCommonBackground {\n /**\n * @description\n * Stringify the qualifier\n * BackgroundQualifiers don't have a value, but instead override the toString() function.\n */\n toString() {\n return `\n b_auto:border\n ${this._contrast ? '_contrast' : ''}\n ${this._palette.length ? `:palette_${this._palette.join('_')}` : ''}\n `.replace(/\\s+/g, '');\n }\n}\nexport { BackgroundAutoBorderQualifier };\n","import { BaseCommonBackground } from \"./BaseCommonBackground.js\";\n/**\n * @description Defines the gradient fade effect to use for the background when resizing with padding.\n * @memberOf Qualifiers.Background\n * @extends {Qualifiers.Background.BaseCommonBackground}\n */\nclass BaseGradientBackground extends BaseCommonBackground {\n /**\n *\n * @description Sets the number of predominant colors to use (2 or 4).\n * @param {number} num\n * @return {this}\n */\n gradientColors(num) {\n this._gradientColors = num;\n return this;\n }\n /**\n * @description Sets the direction for a background gradient fade effect.\n * @param {Qualifiers.GradientDirection | GradientDirectionType | string} direction Use one of these functions\n * provided by {@link Qualifiers.GradientDirection|GradientDirection}\n * @return {this}\n */\n gradientDirection(direction) {\n this._gradientDirection = direction;\n return this;\n }\n}\nexport { BaseGradientBackground };\n","import { BaseGradientBackground } from \"../base/BaseGradientBackground.js\";\n/**\n * @description Specifies that the gradient fade effect, used for the background when resizing with padding, uses the\n * predominant colors in the border pixels of the image.\n * @memberOf Qualifiers.Background\n * @extends {Qualifiers.Background.BaseGradientBackground}\n */\nclass BackgroundBorderGradientQualifier extends BaseGradientBackground {\n /**\n * @description\n * Stringify the qualifier\n * BackgroundQualifiers don't have a value, but instead override the toString() function.\n */\n toString() {\n return `\n b_auto:border_gradient\n ${this._contrast ? '_contrast' : ''}\n ${this._gradientColors ? `:${this._gradientColors}` : ''}\n ${this._gradientDirection ? `:${this._gradientDirection}` : ''}\n ${this._palette.length ? `:palette_${this._palette.join('_')}` : ''}\n `.replace(/\\s+/g, '');\n }\n}\nexport { BackgroundBorderGradientQualifier };\n","import { BaseGradientBackground } from \"../base/BaseGradientBackground.js\";\n/**\n * @description Specifies that the gradient fade effect, used for the background when resizing with padding, uses the\n * predominant colors in the whole of the image.\n * @memberOf Qualifiers.Background\n * @extends {Qualifiers.Background.BaseGradientBackground}\n */\nclass BackgroundPredominantGradientQualifier extends BaseGradientBackground {\n /**\n * @description\n * Stringify the qualifier\n * BackgroundQualifiers don't have a value, but instead override the toString() function.\n */\n toString() {\n return `\n b_auto:predominant_gradient\n ${this._contrast ? '_contrast' : ''}\n ${this._gradientColors ? `:${this._gradientColors}` : ''}\n ${this._gradientDirection ? `:${this._gradientDirection}` : ''}\n ${this._palette.length ? `:palette_${this._palette.join('_')}` : ''}\n `.replace(/\\s+/g, '');\n }\n}\nexport { BackgroundPredominantGradientQualifier };\n","import { BaseCommonBackground } from \"../base/BaseCommonBackground.js\";\n/**\n * @description Automatically determines the color to use for padding, if needed when resizing an asset. Selects the\n * predominant color from the whole image.\n * @memberOf Qualifiers.Background\n * @extends {Qualifiers.Background.BaseCommonBackground}\n */\nclass BackgroundAutoPredominantQualifier extends BaseCommonBackground {\n /**\n * @description\n * Stringify the qualifier\n * BackgroundQualifiers don't have a value, but instead override the toString() function.\n */\n toString() {\n return `\n b_auto:predominant\n ${this._contrast ? '_contrast' : ''}\n ${this._palette.length ? `:palette_${this._palette.join('_')}` : ''}\n `.replace(/\\s+/g, '');\n }\n}\nexport { BackgroundAutoPredominantQualifier };\n","import BlurredBackgroundAction from \"../../qualifiers/background/shared/BlurredBackgroundAction.js\";\nimport { BackgroundAutoBorderQualifier } from \"../../qualifiers/background/shared/auto/BackgroundAutoBorderQualifier.js\";\nimport { BackgroundBorderGradientQualifier } from \"../../qualifiers/background/shared/gradient/BackgroundBorderGradientQualifier.js\";\nimport { BackgroundPredominantGradientQualifier } from \"../../qualifiers/background/shared/gradient/BackgroundPredominantGradientQualifier.js\";\nimport { BackgroundAutoPredominantQualifier } from \"../../qualifiers/background/shared/auto/BackgroundAutoPredominantQualifier.js\";\n/**\n * Get the value of given background\n * @param background\n */\nfunction getBackgroundValue(background) {\n return `${background}`.replace('b_', '');\n}\n/**\n * Create an IAutoBackgroundModel from given background\n */\nfunction createAutoBackgroundModel() {\n return { backgroundType: 'auto' };\n}\n/**\n * Create an IBlurredBackgroundModel from given background\n * @param background\n */\nfunction createBlurredBackgroundModel(background) {\n const { intensityLevel, brightnessLevel } = background;\n const result = {\n backgroundType: 'blurred'\n };\n if (intensityLevel || intensityLevel === 0) {\n result.intensity = intensityLevel;\n }\n if (brightnessLevel || brightnessLevel === 0) {\n result.brightness = brightnessLevel;\n }\n return result;\n}\n/**\n * Create an IContrastPaletteBackgroundModel from given background\n * @param background\n */\nfunction createContrastPaletteBackgroundModel(background) {\n const contrast = background._contrast;\n const palette = background._palette;\n const result = {\n backgroundType: ''\n };\n if (contrast) {\n result.contrast = true;\n }\n if (palette) {\n result.palette = palette;\n }\n return result;\n}\n/**\n * Create an IBorderBackgroundModel from given background\n * @param background\n */\nfunction createBorderBackgroundModel(background) {\n return Object.assign(Object.assign({}, createContrastPaletteBackgroundModel(background)), { backgroundType: 'border' });\n}\n/**\n * Create an IBaseGradientBackgroundModel from given background\n * @param background\n */\nfunction createBaseGradientBackgroundModel(background) {\n const gradientColors = background._gradientColors;\n const gradientDirection = `${background._gradientDirection}`;\n const result = createContrastPaletteBackgroundModel(background);\n if (gradientColors) {\n result.gradientColors = gradientColors;\n }\n if (gradientDirection) {\n result.gradientDirection = gradientDirection;\n }\n return result;\n}\n/**\n * Create an IBorderGradientBackgroundModel from given background\n * @param background\n */\nfunction createBorderGradientBackgroundModel(background) {\n return Object.assign(Object.assign({}, createBaseGradientBackgroundModel(background)), { backgroundType: 'borderGradient' });\n}\n/**\n * Create an IColorBackgroundModel from given background\n * @param background\n */\nfunction createColorBackgroundModel(background) {\n return {\n backgroundType: 'color',\n color: getBackgroundValue(background)\n };\n}\n/**\n * Create an IPredominantBackgroundModel from given background\n * @param background\n */\nfunction createPredominantBackgroundModel(background) {\n return Object.assign(Object.assign({}, createContrastPaletteBackgroundModel(background)), { backgroundType: 'predominant' });\n}\n/**\n * Create an IPredominantGradientBackgroundModel from given background\n * @param background\n */\nfunction createPredominantGradientBackgroundModel(background) {\n return Object.assign(Object.assign({}, createBaseGradientBackgroundModel(background)), { backgroundType: 'predominantGradient' });\n}\n/**\n * Create an IBackgroundModel from given background\n * @param background\n */\nfunction createBackgroundModel(background) {\n if (getBackgroundValue(background) === 'auto') {\n return createAutoBackgroundModel();\n }\n if (background instanceof BlurredBackgroundAction) {\n return createBlurredBackgroundModel(background);\n }\n if (background instanceof BackgroundAutoBorderQualifier) {\n return createBorderBackgroundModel(background);\n }\n if (background instanceof BackgroundBorderGradientQualifier) {\n return createBorderGradientBackgroundModel(background);\n }\n if (background instanceof BackgroundAutoPredominantQualifier) {\n return createPredominantBackgroundModel(background);\n }\n if (background instanceof BackgroundPredominantGradientQualifier) {\n return createPredominantGradientBackgroundModel(background);\n }\n return createColorBackgroundModel(background);\n}\nexport { createBackgroundModel };\n","import { prepareColor } from \"../internal/utils/prepareColor.js\";\nimport { BackgroundAutoBorderQualifier } from \"./background/shared/auto/BackgroundAutoBorderQualifier.js\";\nimport { BackgroundBorderGradientQualifier } from \"./background/shared/gradient/BackgroundBorderGradientQualifier.js\";\nimport { BackgroundAutoPredominantQualifier } from \"./background/shared/auto/BackgroundAutoPredominantQualifier.js\";\nimport { BackgroundPredominantGradientQualifier } from \"./background/shared/gradient/BackgroundPredominantGradientQualifier.js\";\nimport BlurredBackgroundAction from \"./background/shared/BlurredBackgroundAction.js\";\nimport { BackgroundQualifier } from \"./background/shared/base/BackgroundQualifier.js\";\n/**\n * @description Defines the background color to use instead of transparent background areas or when resizing with padding.\n *\n * Learn more: {@link https://cloudinary.com/documentation/effects_and_artistic_enhancements#setting_background_color|Setting background for images} | {@link https://cloudinary.com/documentation/video_effects_and_enhancements#background_color|Setting background for videos}\n *\n * @namespace Background\n * @memberOf Qualifiers\n */\n/**\n * @summary qualifier\n * @description Selects the predominant color while taking only the image border pixels into account.\n * @memberOf Qualifiers.Background\n * @return {BackgroundAutoBorderQualifier}\n */\nfunction border() {\n return new BackgroundAutoBorderQualifier();\n}\n/**\n * @summary qualifier\n * @description Automatically determines the color to use for padding, if needed when resizing an asset.\n *\n * Learn more: {@link https://cloudinary.com/documentation/effects_and_artistic_enhancements#content_aware_padding|Content-aware padding}\n * @memberOf Qualifiers.Background\n * @return {Qualifiers.Background.BackgroundQualifier}\n */\nfunction auto() {\n return new BackgroundQualifier('auto');\n}\n/**\n * @summary qualifier\n * @description Applies a padding gradient fade effect using the predominant colors in the border of the image.\n * @memberOf Qualifiers.Background\n * @return {BackgroundBorderGradientQualifier}\n */\nfunction borderGradient() {\n return new BackgroundBorderGradientQualifier();\n}\n/**\n * @summary qualifier\n * @description Applies a padding gradient fade effect using the predominant colors in the image.\n * @memberOf Qualifiers.Background\n * @return {BackgroundPredominantGradientQualifier}\n */\nfunction predominantGradient() {\n return new BackgroundPredominantGradientQualifier();\n}\n/**\n * @summary qualifier\n * @description Selects the predominant color while taking all pixels in the image into account\n * @memberOf Qualifiers.Background\n * @return {BackgroundAutoPredominantQualifier}\n */\nfunction predominant() {\n return new BackgroundAutoPredominantQualifier();\n}\n/**\n * @summary qualifier\n * @description Selects the predominant color while taking all pixels in the image into account.\n * @memberOf Qualifiers.Background\n * @return {Qualifiers.Background.BackgroundQualifier}\n */\nfunction color(colorStr) {\n return new BackgroundQualifier(prepareColor(colorStr));\n}\n/**\n * @summary qualifier\n * @description Selects the predominant color while taking all pixels in the image into account.\n * @memberOf Qualifiers.Background\n * @return {BlurredBackgroundAction}\n */\nfunction blurred() {\n return new BlurredBackgroundAction();\n}\nconst Background = {\n auto: auto,\n border: border,\n borderGradient: borderGradient,\n predominantGradient: predominantGradient,\n predominant: predominant,\n color: color,\n blurred: blurred\n};\nexport { auto, border, borderGradient, predominantGradient, predominant, color, blurred, Background };\n","import { Background } from \"../../qualifiers.js\";\nimport { auto, border, borderGradient, color, predominant, predominantGradient } from \"../../qualifiers/background.js\";\n/**\n * Create BackgroundQualifier from IBlurredBackgroundModel\n * @param backgroundModel\n */\nfunction createBlurredBackground(backgroundModel) {\n const { brightness, intensity } = backgroundModel;\n const result = Background.blurred();\n if (brightness || brightness == 0) {\n result.brightness(brightness);\n }\n if (intensity || intensity == 0) {\n result.intensity(intensity);\n }\n return result;\n}\n/**\n * Create a gradientBackground from given model\n * @param background\n * @param backgroundModel\n */\nfunction createGradientBackground(background, backgroundModel) {\n const { gradientColors, gradientDirection, contrast, palette } = backgroundModel;\n if (contrast) {\n background.contrast();\n }\n if (palette) {\n background.palette(...palette);\n }\n if (gradientColors) {\n background.gradientColors(+gradientColors);\n }\n if (gradientDirection) {\n background.gradientDirection(gradientDirection);\n }\n return background;\n}\n/**\n * Crete a background with contrast and palette from given model\n * @param background\n * @param backgroundModel\n */\nfunction createContrastPaletteBackground(background, backgroundModel) {\n const { contrast, palette } = backgroundModel;\n if (contrast) {\n background.contrast();\n }\n if (palette) {\n background.palette(...palette);\n }\n return background;\n}\n/**\n * Create BackgroundQualifier from IBackgroundModel\n * @param backgroundModel\n */\nfunction createBackgroundFromModel(backgroundModel) {\n const { backgroundType } = backgroundModel;\n switch (backgroundType) {\n case 'auto':\n return auto();\n case 'blurred':\n return createBlurredBackground(backgroundModel);\n case 'border':\n return createContrastPaletteBackground(border(), backgroundModel);\n case 'borderGradient':\n return createGradientBackground(borderGradient(), backgroundModel);\n case 'predominant':\n return createContrastPaletteBackground(predominant(), backgroundModel);\n case 'predominantGradient':\n return createGradientBackground(predominantGradient(), backgroundModel);\n default:\n return color(backgroundModel.color);\n }\n}\nexport { createBackgroundFromModel };\n","import { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { ResizeAdvancedAction } from \"./ResizeAdvancedAction.js\";\nimport { createBackgroundModel } from \"../../internal/models/createBackgroundModel.js\";\nimport { createBackgroundFromModel } from \"../../internal/models/createBackgroundFromModel.js\";\n/**\n * @description Defines an advanced resize with padding.\n * @extends Actions.Resize.ResizeAdvancedAction\n * @memberOf Actions.Resize\n * @see Visit {@link Actions.Resize| Resize} for examples\n */\nclass ResizePadAction extends ResizeAdvancedAction {\n /**\n * @description Sets the background.\n * @param {Qualifiers.Background} backgroundQualifier Defines the background color to use instead of\n * transparent background areas or when resizing with padding.\n */\n background(backgroundQualifier) {\n this._actionModel.background = createBackgroundModel(backgroundQualifier);\n return this.addQualifier(backgroundQualifier);\n }\n /**\n * @description Horizontal position for custom-coordinates based padding.\n * @param {number} x The x position.\n */\n offsetX(x) {\n this._actionModel.x = x;\n return this.addQualifier(new Qualifier('x', x));\n }\n /**\n * @description Vertical position for custom-coordinates based padding\n * @param {number} y The y position.\n */\n offsetY(y) {\n this._actionModel.y = y;\n return this.addQualifier(new Qualifier('y', y));\n }\n static fromJson(actionModel) {\n const result = super.fromJson.apply(this, [actionModel]);\n actionModel.background && result.background(createBackgroundFromModel(actionModel.background));\n actionModel.x && result.offsetX(actionModel.x);\n actionModel.y && result.offsetY(actionModel.y);\n actionModel.zoom && result.zoom(actionModel.zoom);\n return result;\n }\n}\nexport { ResizePadAction };\n","import { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { ResizeAdvancedAction } from \"./ResizeAdvancedAction.js\";\n/**\n * @description Defines a thumbnail resize action.\n * @extends Actions.Resize.ResizeAdvancedAction\n * @memberOf Actions.Resize\n * @see Visit {@link Actions.Resize| Resize} for examples\n */\nclass ThumbResizeAction extends ResizeAdvancedAction {\n /**\n * @description Controls how much of the original image surrounding the face to keep when using either the 'crop' or 'thumb' cropping modes with face detection.\n * @param {number | string} z The zoom factor. (Default: 1.0)\n */\n zoom(z) {\n this._actionModel.zoom = z;\n return this.addQualifier(new Qualifier('z', z));\n }\n static fromJson(actionModel) {\n const result = super.fromJson.apply(this, [actionModel]);\n actionModel.zoom && result.zoom(actionModel.zoom);\n return result;\n }\n}\nexport { ThumbResizeAction };\n","import { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { ResizeAdvancedAction } from \"./ResizeAdvancedAction.js\";\n/**\n * @description Defines how to crop an asset\n * @extends Actions.Resize.ResizeAdvancedAction\n * @memberOf Actions.Resize\n * @see Visit {@link Actions.Resize| Resize} for examples\n */\nclass ResizeCropAction extends ResizeAdvancedAction {\n /**\n * @description Horizontal position for custom-coordinates based cropping.\n * @param {number} x The x position.\n */\n x(x) {\n this._actionModel.x = x;\n return this.addQualifier(new Qualifier('x', x));\n }\n /**\n * @description Vertical position for custom-coordinates based cropping\n * @param {number} y The y position.\n */\n y(y) {\n this._actionModel.y = y;\n return this.addQualifier(new Qualifier('y', y));\n }\n /**\n * @description Controls how much of the original image surrounding the face to keep when using either the 'crop' or 'thumb' cropping modes with face detection.\n * @param {number | string} z The zoom factor. (Default: 1.0)\n */\n zoom(z) {\n this._actionModel.zoom = z;\n return this.addQualifier(new Qualifier('z', z));\n }\n static fromJson(actionModel) {\n const result = super.fromJson.apply(this, [actionModel]);\n actionModel.x && result.x(actionModel.x);\n actionModel.y && result.y(actionModel.y);\n actionModel.zoom && result.zoom(actionModel.zoom);\n return result;\n }\n}\nexport { ResizeCropAction };\n","import { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { ResizeAdvancedAction } from \"./ResizeAdvancedAction.js\";\n/**\n * @description Defines how to crop-fill an asset\n * @extends Actions.Resize.ResizeAdvancedAction\n * @memberOf Actions.Resize\n * @see Visit {@link Actions.Resize| Resize} for examples\n */\nclass ResizeFillAction extends ResizeAdvancedAction {\n /**\n * @description Absolute X position when used with Gravity.xyCenter {@link Qualifiers.Gravity.GravityQualifier}}\n * @param {number} x The x position.\n */\n x(x) {\n this._actionModel.x = x;\n return this.addQualifier(new Qualifier('x', x));\n }\n /**\n * @description Absolute Y position when used with Gravity.xyCenter {@link Qualifiers.Gravity.GravityQualifier}}\n * @param {number} y The y position.\n */\n y(y) {\n this._actionModel.y = y;\n return this.addQualifier(new Qualifier('y', y));\n }\n static fromJson(actionModel) {\n const result = super.fromJson.apply(this, [actionModel]);\n actionModel.x && result.x(actionModel.x);\n actionModel.y && result.y(actionModel.y);\n return result;\n }\n}\nexport { ResizeFillAction };\n","import { ResizeFillAction } from \"./ResizeFillAction.js\";\n/**\n * @description Defines how to crop-limit-fill an asset\n * @extends Actions.Resize.ResizeFillAction\n * @memberOf Actions.Resize\n * @see Visit {@link Actions.Resize| Resize} for examples\n */\nclass ResizeLimitFillAction extends ResizeFillAction {\n}\nexport { ResizeLimitFillAction };\n","/**\n * @description Determines how to crop, scale, and/or zoom the delivered asset according to the requested dimensions.\n * @memberOf Actions\n * @namespace Resize\n * @see Learn more about Gravity and Focus {@link Qualifiers.Gravity| here }\n * @example\n *

Scaling an image

\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {scale, fit, pad, crop} from '@cloudinary/url-gen/actions/resize';\n *\n * const yourCldInstance = new Cloudinary({cloud:{cloudName:'demo'}});\n * const image = yourCldInstance.image('woman');\n *\n * image.resize( scale(100, 100) );\n * // All resize actions have a similar interface.\n * // image.resize( fit(100, 100)) );\n * // image.resize( pad(100, 100)) );\n * // image.resize( crop(100, 100)) );\n * // However, Some actions have additional arguments exposed as builder methods.\n * // See the documentation for each method for more information\n *\n *\n * // Alternative syntax, using builder methods\n * image.resize(\n * scale()\n * .width(100)\n * .height(100)\n * );\n * image.toString()\n *\n * @example\n *

Cropping with automatic focus(Gravity)

\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n *\n * const yourCldInstance = new Cloudinary({cloud:{cloudName:'demo'}});\n * const image = yourCldInstance.image('woman');\n *\n * import {scale} from '@cloudinary/url-gen/actions/resize';\n * import {autoGravity} from '@cloudinary/url-gen/qualifiers/gravity';\n *\n * image.resize( crop(100, 100).gravity(autoGravity()) );\n *\n * // Alternative syntax, using builder methods\n * image.resize(\n * scale()\n * .width(100)\n * .height(100)\n * .gravity(autoGravity())\n * );\n * image.toString()\n */\nimport { ResizePadAction } from \"./resize/ResizePadAction.js\";\nimport { ResizeSimpleAction } from \"./resize/ResizeSimpleAction.js\";\nimport { ResizeScaleAction } from \"./resize/ResizeScaleAction.js\";\nimport { ThumbResizeAction } from \"./resize/ThumbnailAction.js\";\nimport { ResizeCropAction } from \"./resize/ResizeCropAction.js\";\nimport { ResizeFillAction } from \"./resize/ResizeFillAction.js\";\nimport { ResizeLimitFitAction } from \"./resize/ResizeLimitFitAction.js\";\nimport { ResizeLimitFillAction } from \"./resize/ResizeLimitFillAction.js\";\nimport { ResizeLimitPadAction } from \"./resize/ResizeLimitPadAction.js\";\nimport { ResizeMinimumPadAction } from \"./resize/ResizeMinimumPadAction.js\";\n/**\n * @summary action\n * @description\n * Changes the size of the image exactly to the given width and height without necessarily retaining the original aspect ratio:
\n * all original image parts are visible but might be stretched or shrunk.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ScaleAction}\n */\nfunction scale(width, height) {\n return new ResizeScaleAction('scale', width, height);\n}\n/**\n * @summary action\n * @description\n * Scales your image based on automatically calculated areas of interest within each specific photo.\n *\n * For details, see the Imagga Crop and Scale {@link https://cloudinary.com/documentation/imagga_crop_and_scale_addon#smartly_scale_images|add-on documentation}.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizeSimpleAction}\n */\nfunction imaggaScale(width, height) {\n return new ResizeSimpleAction('imagga_scale', width, height);\n}\n/**\n * @summary action\n * @description\n * Crops your image based on automatically calculated areas of interest within each specific photo.\n *\n * For details, see the Imagga Crop and Scale {@link https://cloudinary.com/documentation/imagga_crop_and_scale_addon#smartly_crop_images|add-on documentation}.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizeSimpleAction}\n */\nfunction imaggaCrop(width, height) {\n return new ResizeSimpleAction('imagga_crop', width, height);\n}\n/**\n * @summary action\n * @description Extracts a region of the given width and height out of the original image.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizeCropAction}\n */\nfunction crop(width, height) {\n return new ResizeCropAction('crop', width, height);\n}\n/**\n * @summary action\n * @description\n * Creates an image with the exact given width and height without distorting the image.
\n * This option first scales up or down as much as needed to at least fill both of the given dimensions.

\n * If the requested aspect ratio is different than the original, cropping will occur on the dimension that exceeds the requested size after scaling.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizeFillAction}\n */\nfunction fill(width, height) {\n return new ResizeFillAction('fill', width, height);\n}\n/**\n * @summary action\n * @description\n * The image is resized so that it takes up as much space as possible within a bounding box defined by the given width and height parameters.
\n * The original aspect ratio is retained and all of the original image is visible.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizeSimpleAction}\n */\nfunction fit(width, height) {\n return new ResizeSimpleAction('fit', width, height);\n}\n/**\n * @summary action\n * @description\n * Resizes the asset to fill the given width and height while retaining the original aspect ratio.\n *\n * If the proportions of the original asset do not match the given width and height, padding is added to the asset\n * to reach the required size.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizePadAction}\n */\nfunction pad(width, height) {\n return new ResizePadAction('pad', width, height);\n}\n/**\n * @summary action\n * @description\n * Creates an asset with the exact given width and height without distorting the asset, but only if the original\n * asset is larger than the specified resolution limits.\n *\n * The asset is scaled down to fill the given width and height without distorting the asset, and then the dimension\n * that exceeds the request is cropped. If the original dimensions are both smaller than the requested size, it is\n * not resized at all.\n *\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizeLimitFillAction}\n */\nfunction limitFill(width, height) {\n return new ResizeLimitFillAction('lfill', width, height);\n}\n/**\n * @summary action\n * @description\n * Resizes the asset so that it takes up as much space as possible within a bounding box defined by the given\n * width and height parameters, but only if the original asset is larger than the given limit (width and height).\n *\n * The asset is scaled down, the original aspect ratio is retained and all of the original asset is visible.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizeSimpleAction}\n */\nfunction limitFit(width, height) {\n return new ResizeLimitFitAction('limit', width, height);\n}\n/**\n * @summary action\n * @description\n * Resizes the asset to fill the given width and height while retaining the original aspect ratio, but only if the\n * original asset is smaller than the given minimum (width and height).\n *\n * The asset is scaled up. If the proportions of the original asset do not match the given width and height,\n * padding is added to the asset to reach the required size.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizePadAction}\n */\nfunction minimumPad(width, height) {\n return new ResizeMinimumPadAction('mpad', width, height);\n}\n/**\n * @summary action\n * @description\n * Resizes the asset so that it takes up as much space as possible within a bounding box defined by the given\n * width and height parameters, but only if the original asset is smaller than the given minimum (width and height).\n *\n * The asset is scaled up, the original aspect ratio is retained and all of the original asset is visible.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizeSimpleAction}\n */\nfunction minimumFit(width, height) {\n return new ResizeSimpleAction('mfit', width, height);\n}\n/**\n * @summary action\n * @memberOf Actions.Resize\n * @description\n * Tries to prevent a \"bad crop\" by first attempting to use the fill mode, but adding padding if it is determined\n * that more of the original image needs to be included in the final image.\n *\n * Especially useful if the aspect ratio of the delivered image is considerably different from the original's\n * aspect ratio.\n *\n * Only supported in conjunction with Automatic cropping.\n *\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizePadAction}\n */\nfunction fillPad(width, height) {\n return new ResizePadAction('fill_pad', width, height);\n}\n/**\n * @summary action\n * @description\n * The thumb cropping mode is specifically used for creating image thumbnails from either face or custom coordinates,
\n * and must always be accompanied by the gravity parameter set to one of the face detection or custom values.\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ThumbResizeAction}\n */\nfunction thumbnail(width, height) {\n return new ThumbResizeAction('thumb', width, height);\n}\n/**\n * @summary action\n * @description\n * Resizes the asset to fill the given width and height while retaining the original aspect ratio, but only if the\n * original asset is larger than the given limit (width and height).\n *\n * The asset is scaled down. If the proportions of the original asset do not match the given width and height,\n * padding is added to the asset to reach the required size.\n *\n * @memberOf Actions.Resize\n * @param {number|string} width The required width of a transformed asset.\n * @param {number|string} height The required height of a transformed asset.\n * @return {Actions.Resize.ResizePadAction}\n */\nfunction limitPad(width, height) {\n return new ResizeLimitPadAction('lpad', width, height);\n}\nconst Resize = {\n imaggaScale,\n imaggaCrop,\n crop,\n fill,\n scale,\n minimumPad,\n fit,\n pad,\n limitFit,\n thumbnail,\n limitFill,\n minimumFit,\n limitPad,\n fillPad\n};\nexport { Resize, imaggaScale, imaggaCrop, crop, fill, scale, minimumPad, fit, pad, limitFit, thumbnail, limitFill, minimumFit, limitPad, fillPad };\n","import { createUnsupportedError } from \"../utils/unsupportedError.js\";\n/**\n * Returns the action's model\n */\nexport function actionToJson() {\n const actionModelIsNotEmpty = this._actionModel && Object.keys(this._actionModel).length;\n if (actionModelIsNotEmpty) {\n return this._actionModel;\n }\n return { error: createUnsupportedError(`unsupported action ${this.constructor.name}`) };\n}\n","import { actionToJson } from \"./actionToJson.js\";\nexport class ActionModel {\n constructor() {\n this._actionModel = {};\n }\n toJson() {\n return actionToJson.apply(this);\n }\n}\n","import { FlagQualifier } from \"../qualifiers/flag/FlagQualifier.js\";\nimport { Qualifier } from \"./qualifier/Qualifier.js\";\nimport { mapToSortedArray } from \"./utils/dataStructureUtils.js\";\nimport { ActionModel } from \"./models/ActionModel.js\";\n/**\n * @summary SDK\n * @memberOf SDK\n * @description Defines the category of transformation to perform.\n */\nclass Action extends ActionModel {\n constructor() {\n super(...arguments);\n // We're using map, to overwrite existing keys. for example:\n // addParam(w_100).addQualifier(w_200) should result in w_200. and not w_100,w_200\n this.qualifiers = new Map();\n // Unlike regular qualifiers, there can be multiple flags in each url component /fl_1,fl_2/\n // If the falgs are added to the qualifiers map, only a single flag could exist in a component (it's a map)\n // So flags are stored separately until the very end because of that reason\n this.flags = [];\n this.delimiter = ','; // {qualifier}{delimiter}{qualifier} for example: `${'w_100'}${','}${'c_fill'}`\n this.actionTag = ''; // A custom name tag to identify this action in the future\n }\n prepareQualifiers() { }\n /**\n * @description Returns the custom name tag that was given to this action\n * @return {string}\n */\n getActionTag() {\n return this.actionTag;\n }\n /**\n * @description Sets the custom name tag for this action\n * @return {this}\n */\n setActionTag(tag) {\n this.actionTag = tag;\n return this;\n }\n /**\n * @description Calls toString() on all child qualifiers (implicitly by using .join()).\n * @return {string}\n */\n toString() {\n this.prepareQualifiers();\n return mapToSortedArray(this.qualifiers, this.flags).join(this.delimiter);\n }\n /**\n * @description Adds the parameter to the action.\n * @param {SDK.Qualifier} qualifier\n * @return {this}\n */\n addQualifier(qualifier) {\n // if string, find the key and value\n if (typeof qualifier === 'string') {\n const [key, value] = qualifier.toLowerCase().split('_');\n if (key === 'fl') {\n // if string qualifier is a flag, store it in the flags arrays\n this.flags.push(new FlagQualifier(value));\n }\n else {\n // if the string qualifier is not a flag, create a new qualifier from it\n this.qualifiers.set(key, new Qualifier(key, value));\n }\n }\n else {\n // if a qualifier object, insert to the qualifiers map\n this.qualifiers.set(qualifier.key, qualifier);\n }\n return this;\n }\n /**\n * @description Adds a flag to the current action.\n * @param {Qualifiers.Flag} flag\n * @return {this}\n */\n addFlag(flag) {\n if (typeof flag === 'string') {\n this.flags.push(new FlagQualifier(flag));\n }\n else {\n if (flag instanceof FlagQualifier) {\n this.flags.push(flag);\n }\n }\n return this;\n }\n addValueToQualifier(qualifierKey, qualifierValue) {\n this.qualifiers.get(qualifierKey).addValue(qualifierValue);\n return this;\n }\n}\nexport { Action };\n","/**\n * Sort a map by key\n * @private\n * @param map \n * @Return array of map's values sorted by key\n */\nfunction mapToSortedArray(map, flags) {\n const array = Array.from(map.entries());\n // objects from the Array.from() method above are stored in array of arrays:\n // [[qualifierKey, QualifierObj], [qualifierKey, QualifierObj]]\n // Flags is an array of FlagQualifierObj\n // We need to convert it to the same form: [flagQualifier] => ['fl', flagQualifier]\n flags.forEach((flag) => {\n array.push(['fl', flag]); // push ['fl', flagQualifier]\n });\n return array.sort().map((v) => v[1]);\n}\n/**\n * Checks if `value` is a string.\n * @private\n * @param {*} value The value to check.\n * @return {boolean} `true` if `value` is a string, else `false`.\n */\nfunction isString(value) {\n return (typeof value === 'string' || value instanceof String);\n}\nexport { isString, mapToSortedArray };\n","/**\n * Flip keys and values for given object\n * @param obj\n */\nfunction objectFlip(obj) {\n const result = {};\n Object.keys(obj).forEach((key) => {\n result[obj[key]] = key;\n });\n return result;\n}\nexport { objectFlip };\n","/**\n * This file is for internal constants only.\n * It is not intended for public use and is not part of the public API\n */\nimport { objectFlip } from \"./utils/objectFlip.js\";\nexport const CONDITIONAL_OPERATORS = {\n \"=\": \"eq\",\n \"!=\": \"ne\",\n \"<\": \"lt\",\n \">\": \"gt\",\n \"<=\": \"lte\",\n \">=\": \"gte\",\n \"&&\": \"and\",\n \"||\": \"or\",\n \"*\": \"mul\",\n \"/\": \"div\",\n \"+\": \"add\",\n \"-\": \"sub\",\n \"^\": \"pow\"\n};\nexport const RESERVED_NAMES = {\n \"aspect_ratio\": \"ar\",\n \"aspectRatio\": \"ar\",\n \"current_page\": \"cp\",\n \"currentPage\": \"cp\",\n \"duration\": \"du\",\n \"face_count\": \"fc\",\n \"faceCount\": \"fc\",\n \"height\": \"h\",\n \"initial_aspect_ratio\": \"iar\",\n \"initial_height\": \"ih\",\n \"initial_width\": \"iw\",\n \"initialAspectRatio\": \"iar\",\n \"initialHeight\": \"ih\",\n \"initialWidth\": \"iw\",\n \"initial_duration\": \"idu\",\n \"initialDuration\": \"idu\",\n \"page_count\": \"pc\",\n \"page_x\": \"px\",\n \"page_y\": \"py\",\n \"pageCount\": \"pc\",\n \"pageX\": \"px\",\n \"pageY\": \"py\",\n \"tags\": \"tags\",\n \"width\": \"w\",\n \"trimmed_aspect_ratio\": \"tar\",\n \"current_public_id\": \"cpi\",\n \"initial_density\": \"idn\",\n \"page_names\": \"pgnames\"\n};\nexport const ACTION_TYPE_TO_CROP_MODE_MAP = {\n limitFit: 'limit',\n limitFill: 'lfill',\n minimumFit: 'mfit',\n thumbnail: 'thumb',\n limitPad: 'lpad',\n minimumPad: 'mpad'\n};\nexport const ACTION_TYPE_TO_DELIVERY_MODE_MAP = {\n colorSpace: 'cs',\n dpr: 'dpr',\n density: 'dn',\n defaultImage: 'd',\n format: 'f',\n quality: 'q'\n};\nexport const ACTION_TYPE_TO_EFFECT_MODE_MAP = {\n redEye: 'redeye',\n advancedRedEye: 'adv_redeye',\n oilPaint: 'oil_paint',\n unsharpMask: 'unsharp_mask',\n makeTransparent: 'make_transparent'\n};\nexport const ACTION_TYPE_TO_QUALITY_MODE_MAP = {\n autoBest: 'auto:best',\n autoEco: 'auto:eco',\n autoGood: 'auto:good',\n autoLow: 'auto:low',\n jpegminiHigh: 'jpegmini:1',\n jpegminiMedium: 'jpegmini:2',\n jpegminiBest: 'jpegmini:0'\n};\nexport const ACTION_TYPE_TO_STREAMING_PROFILE_MODE_MAP = {\n fullHd: 'full_hd',\n fullHdWifi: 'full_hd_wifi',\n fullHdLean: 'full_hd_lean',\n hdLean: 'hd_lean'\n};\nexport const CHROMA_VALUE_TO_CHROMA_MODEL_ENUM = {\n 444: \"CHROMA_444\",\n 420: \"CHROMA_420\"\n};\nexport const COLOR_SPACE_MODEL_MODE_TO_COLOR_SPACE_MODE_MAP = {\n 'noCmyk': 'no_cmyk',\n 'keepCmyk': 'keep_cmyk',\n 'tinySrgb': 'tinysrgb',\n 'srgbTrueColor': 'srgb:truecolor'\n};\nexport const ACTION_TYPE_TO_BLEND_MODE_MAP = {\n 'antiRemoval': 'anti_removal'\n};\nexport const CHROMA_MODEL_ENUM_TO_CHROMA_VALUE = objectFlip(CHROMA_VALUE_TO_CHROMA_MODEL_ENUM);\nexport const COLOR_SPACE_MODE_TO_COLOR_SPACE_MODEL_MODE_MAP = objectFlip(COLOR_SPACE_MODEL_MODE_TO_COLOR_SPACE_MODE_MAP);\nexport const CROP_MODE_TO_ACTION_TYPE_MAP = objectFlip(ACTION_TYPE_TO_CROP_MODE_MAP);\nexport const DELIVERY_MODE_TO_ACTION_TYPE_MAP = objectFlip(ACTION_TYPE_TO_DELIVERY_MODE_MAP);\nexport const EFFECT_MODE_TO_ACTION_TYPE_MAP = objectFlip(ACTION_TYPE_TO_EFFECT_MODE_MAP);\nexport const QUALITY_MODE_TO_ACTION_TYPE_MAP = objectFlip(ACTION_TYPE_TO_QUALITY_MODE_MAP);\nexport const STREAMING_PROFILE_TO_ACTION_TYPE_MAP = objectFlip(ACTION_TYPE_TO_STREAMING_PROFILE_MODE_MAP);\n","import { createUnsupportedError } from \"../utils/unsupportedError.js\";\n/**\n * Returns the action's model\n */\nexport function qualifierToJson() {\n return this._qualifierModel || { error: createUnsupportedError(`unsupported qualifier ${this.constructor.name}`) };\n}\n","import { qualifierToJson } from \"./qualifierToJson.js\";\nexport class QualifierModel {\n constructor() {\n this._qualifierModel = {};\n }\n toJson() {\n return qualifierToJson.apply(this);\n }\n}\n","import { QualifierValue } from './QualifierValue.js';\nimport { QualifierModel } from '../models/QualifierModel.js';\n/**\n * @summary SDK\n * @memberOf SDK\n */\nclass Qualifier extends QualifierModel {\n constructor(key, qualifierValue) {\n super();\n this.delimiter = '_'; // {key}{delimiter}{qualifierValue}\n this.key = key;\n if (qualifierValue instanceof QualifierValue) {\n this.qualifierValue = qualifierValue;\n }\n else {\n this.qualifierValue = new QualifierValue();\n this.qualifierValue.addValue(qualifierValue);\n }\n }\n toString() {\n const { key, delimiter, qualifierValue } = this;\n return `${key}${delimiter}${qualifierValue.toString()}`;\n }\n addValue(value) {\n this.qualifierValue.addValue(value);\n return this;\n }\n}\nexport { Qualifier };\n","/**\n * @summary SDK\n * @memberOf SDK\n */\nclass QualifierValue {\n /**\n *\n * @param {QualifierValue | QualifierValue[] | any[] | string | number}qualifierValue\n */\n constructor(qualifierValue) {\n this.values = [];\n this.delimiter = ':'; // {value}{delimiter}{value}...\n if (this.hasValue(qualifierValue)) {\n this.addValue(qualifierValue);\n }\n }\n /**\n * @description Joins the provided values with the provided delimiter\n */\n toString() {\n return this.values.join(this.delimiter);\n }\n /**\n * @description Checks if the provided argument has a value\n * @param {any} v\n * @private\n * @return {boolean}\n */\n hasValue(v) {\n return typeof v !== 'undefined' && v !== null && v !== '';\n }\n /**\n * @desc Adds a value for the this qualifier instance\n * @param {any} value\n * @return {this}\n */\n addValue(value) {\n // Append value or array of values\n if (Array.isArray(value)) {\n this.values = this.values.concat(value);\n }\n else {\n this.values.push(value);\n }\n // Remove falsy values\n this.values = this.values.filter((v) => this.hasValue(v));\n return this;\n }\n /**\n * @description Sets the delimiter for this instance\n * @param delimiter\n */\n setDelimiter(delimiter) {\n this.delimiter = delimiter;\n return this;\n }\n}\nexport { QualifierValue };\n","/**\n * Returns RGB or Color\n * @private\n * @param color\n */\nexport function prepareColor(color) {\n if (color) {\n return color.match(/^#/) ? `rgb:${color.substr(1)}` : color;\n }\n else {\n return color;\n }\n}\n","/**\n * @description\n * Returns a string representing the float value of the input, if the input was a number-like.\n * Examples:\n * - '1.0' -> '1.0'\n * - 1 -> '1.0'\n * - '5' -> '5.0'\n * - 'auto' -> 'auto'\n * @private\n * @param {string|number} value\n * @return {string}\n */\nexport function toFloatAsString(value) {\n // Turn the input to string\n // The Function will return `returnValue` value if the input is not a number-like expression\n const returnValue = value.toString();\n // if the string contains letters, return the input\n if (returnValue.match(/[A-Z]/gi)) {\n return returnValue;\n }\n // If the leading digit is 0, and we have more than 1 digit, it's not a number.\n // 00, 00000, 0x15 etc.\n if (returnValue.length > 1 && returnValue[0] === '0') {\n return returnValue;\n }\n // Final sanity check, parse the number as a float and check if its NaN\n const isNumberLike = !isNaN(parseFloat(returnValue)) && returnValue.indexOf(':') === -1;\n // If it's a number-like, but the input does not contain a decimal - add it.\n if (isNumberLike && returnValue.indexOf('.') === -1) {\n return `${returnValue}.0`;\n }\n else {\n // If the input already contains a decimal, just return the value\n return returnValue;\n }\n}\n","class UnsupportedError extends Error {\n constructor(message = 'Unsupported') {\n super(message);\n }\n}\n/**\n * Creates a new UnsupportedError\n * @param message\n */\nfunction createUnsupportedError(message) {\n return new UnsupportedError(message);\n}\nexport { UnsupportedError, createUnsupportedError };\n","/**\n * @description Defines flags that you can use to alter the default transformation behavior.\n * @namespace Flag\n * @memberOf Qualifiers\n */\nimport { FlagQualifier } from \"./flag/FlagQualifier.js\";\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Used when delivering a video file as an image format that supports animation, such as animated WebP.\n * Plays all frames rather than just delivering the first one as a static image.\n * Use this flag in addition to the flag or parameter controlling the delivery format,\n * for example f_auto or fl_awebp.\n\n * Note: When delivering a video in GIF format, it is delivered as an animated GIF by default and this flag is not\n * necessary. To deliver a single frame of a video in GIF format, use the page parameter.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction animated() {\n return new FlagQualifier('animated');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description When converting animated images to WebP format, generate an animated WebP from all the frames in the\n * original\n * animated file instead of only from the first still frame.\n *\n * Note that animated WebPs are not supported in all browsers and versions.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction animatedWebP() {\n return new FlagQualifier('awebp');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description When used together with automatic quality (q_auto):\n * allow switching to PNG8 encoding if the quality algorithm decides that it's more efficient.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction anyFormat() {\n return new FlagQualifier('any_format');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description When converting animated images to PNG format, generates an animated PNG from all the frames in the\n * original\n * animated file instead of only from the first still frame.\n *\n * Note that animated PNGs are not supported in all browsers and versions.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction animatedPng() {\n return new FlagQualifier('apng');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Trims pixels according to a clipping path included in the original image\n * (e.g., manually created using PhotoShop).\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction clip() {\n return new FlagQualifier('clip');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Trims pixels according to a clipping path included in the original image (e.g., manually created\n * using PhotoShop)\n * using an evenodd clipping rule.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction clipEvenOdd() {\n return new FlagQualifier('clip_evenodd');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Instructs Cloudinary to clear all image meta-data (IPTC, Exif and XMP) while applying an incoming\n * transformation.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction forceStrip() {\n return new FlagQualifier('force_strip');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Allows custom flag\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction custom(value) {\n return new FlagQualifier(value);\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Adds ICC color space metadata to the image, even when the original image doesn't contain any ICC data.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction forceIcc() {\n return new FlagQualifier('force_icc');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Delivers the image as an attachment.\n * @param {string} filename The attachment's filename\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction attachment(filename) {\n return new FlagQualifier('attachment', filename);\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Returns metadata of the input asset and of the transformed output asset in JSON instead of the\n * transformed image.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction getInfo() {\n return new FlagQualifier('getinfo');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Deliver an HLS adaptive bitrate streaming file as HLS v3 instead of the default version (HLS v4).\n * Delivering in this format requires a private CDN configuration.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction hlsv3() {\n return new FlagQualifier('hlsv3');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Sets the cache-control to immutable for the asset.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction immutableCache() {\n return new FlagQualifier('immutable_cache');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description * Allows specifying only either width or height so the value of the second axis remains as is, and is not\n * recalculated to maintain the aspect ratio of the original image.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction ignoreInitialAspectRatio() {\n return new FlagQualifier('ignore_aspect_ratio');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Keeps the copyright related fields when stripping meta-data.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction keepAttribution() {\n return new FlagQualifier('keep_attribution');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * Keep the Display Aspect Ratio metadata of the uploaded video (if it’s different from the current video\n * dimensions).\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction keepDar() {\n return new FlagQualifier('keep_dar');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Keeps all meta-data.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction keepIptc() {\n return new FlagQualifier('keep_iptc');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Applies all chained transformations, until a transformation component that includes this flag, on the last added\n * overlay or underlay instead of applying on the containing image.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction layerApply() {\n return new FlagQualifier('layer_apply');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Automatically use lossy compression when delivering animated GIF files.\n *\n * This flag can also be used as a conditional flag for delivering PNG files: it tells Cloudinary to deliver the\n * image in PNG format (as requested) unless there is no transparency channel - in which case deliver in JPEG\n * format.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction lossy() {\n return new FlagQualifier('lossy');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Convert the audio channel to mono\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction mono() {\n return new FlagQualifier('mono');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Used internally by Position within an Overlay, this flag will tile the overlay across your image.\n *\n * Learn more: {@link https://cloudinary.com/documentation/transformation_reference#fl_no_overflow|Overflow in overlays}\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction noOverflow() {\n return new FlagQualifier('no_overflow');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Don't stream a video that is currently being generated on the fly. Wait until the video is fully generated.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction noStream() {\n return new FlagQualifier('no_stream');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Generate PNG images in the png24 format.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction png24() {\n return new FlagQualifier('png24');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Generate PNG images in the png32 format.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction png32() {\n return new FlagQualifier('png32');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Generate PNG images in the PNG8 format.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction png8() {\n return new FlagQualifier('png8');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description When used with automatic fetch_format (f_auto): ensures that images with a transparency channel will be\n * delivered in PNG format.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction preserveTransparency() {\n return new FlagQualifier('preserve_transparency');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Generates a JPG image using the progressive (interlaced) JPG format.\n *\n * This format allows the browser to quickly show a low-quality rendering of the image until the full-quality\n * image is loaded.\n *\n * @param {string} mode? The mode to determine a specific progressive outcome as follows:\n * * semi - A smart optimization of the decoding time, compression level and progressive rendering\n * (less iterations). This is the default mode when using q_auto.\n * * steep - Delivers a preview very quickly, and in a single later phase improves the image to\n * the required resolution.\n * * none - Use this to deliver a non-progressive image. This is the default mode when setting\n * a specific value for quality.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction progressive(mode) {\n return new FlagQualifier('progressive', mode);\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Modifies percentage-based width & height parameters of overlays and underlays (e.g., 1.0) to be relative to the overlaid region\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction regionRelative() {\n return new FlagQualifier('region_relative');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Reduces the image to one flat pixelated layer (as opposed to the default vector based graphic) in\n * order to enable\n * PDF resizing and overlay manipulations.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction rasterize() {\n return new FlagQualifier('rasterize');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Modifies percentage-based width & height parameters of overlays and underlays (e.g., 1.0) to be relative to the containing image instead of the added layer.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction relative() {\n return new FlagQualifier('relative');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Instructs Cloudinary to run a sanitizer on the image (relevant only for the SVG format).\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction sanitize() {\n return new FlagQualifier('sanitize');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Splices the video stipulated as an overlay on to the end of the container video instead of adding it as an\n * overlay.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction splice() {\n return new FlagQualifier('splice');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Instructs Cloudinary to clear all ICC color profile data included with the image.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction stripProfile() {\n return new FlagQualifier('strip_profile');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description If the requested video transformation has already been generated, this flag works identically to\n * Flag::attachment.\n *\n * However, if the video transformation is being requested for the first time, this flag causes the video download\n * to begin immediately, streaming it as a fragmented video file.\n *\n * In contrast, if the regular fl_attachment flag is used when a user requests a new video transformation,\n * the download will begin only after the complete transformed video has been generated.\n *\n * Most standard video players successfully play fragmented video files without issue.\n *\n * @param {string} filename The attachment's filename\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction streamingAttachment(filename) {\n return new FlagQualifier('streaming_attachment', filename);\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Generates TIFF images using LZW compression and in the TIFF8 format.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction tiff8Lzw() {\n return new FlagQualifier('tiff8_lzw');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Used internally by Position within an Overlay, this flag will tile the overlay across your image.\n *\n * Learn more: {@link https://cloudinary.com/documentation/layers#automatic_tiling|Tiling overlay}\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction tiled() {\n return new FlagQualifier('tiled');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Truncate (trim) a video file based on the start time defined in the metadata (relevant only where the metadata\n * includes a directive to play only a section of the video).\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction truncateTS() {\n return new FlagQualifier('truncate_ts');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description Create a waveform image (in the format specified by the file extension) from the audio or video file.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction waveform() {\n return new FlagQualifier('waveform');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.Flag\n * @description A qualifier that ensures that an alpha channel is not applied to a TIFF image if it is a mask channel.\n * @return {Qualifiers.Flag.FlagQualifier}\n */\nfunction ignoreMaskChannels() {\n return new FlagQualifier('ignore_mask_channels');\n}\nconst Flag = {\n animated, anyFormat, animatedPng, animatedWebP,\n clipEvenOdd, lossy, preserveTransparency, png8, png24, png32, progressive, rasterize,\n sanitize, stripProfile, tiff8Lzw, attachment, forceIcc, forceStrip, getInfo, immutableCache,\n keepAttribution, keepIptc, custom, streamingAttachment, hlsv3, keepDar, noStream, mono,\n layerApply, relative, regionRelative, splice, truncateTS, waveform, ignoreInitialAspectRatio, clip,\n tiled, noOverflow, ignoreMaskChannels\n};\nexport { Flag, animated, anyFormat, animatedPng, animatedWebP, clipEvenOdd, lossy, preserveTransparency, png8, png24, png32, progressive, rasterize, sanitize, stripProfile, tiff8Lzw, attachment, forceIcc, forceStrip, getInfo, immutableCache, keepAttribution, keepIptc, custom, streamingAttachment, hlsv3, keepDar, noStream, mono, layerApply, relative, regionRelative, splice, truncateTS, waveform, ignoreInitialAspectRatio, clip, tiled, noOverflow, ignoreMaskChannels };\n","import { QualifierValue } from \"../../internal/qualifier/QualifierValue.js\";\nimport { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\n/**\n * @memberOf Qualifiers.Flag\n * @extends {SDK.Qualifier}\n * @description the FlagQualifier class\n */\nclass FlagQualifier extends Qualifier {\n constructor(flagType, flagValue) {\n let qualifierValue;\n if (flagValue) {\n qualifierValue = new QualifierValue([flagType, `${flagValue}`]).setDelimiter(':');\n }\n else {\n qualifierValue = flagType;\n }\n super('fl', qualifierValue);\n this.flagValue = flagValue;\n }\n toString() {\n return super.toString().replace(/\\./, '%2E');\n }\n getFlagValue() {\n return this.flagValue;\n }\n}\nexport { FlagQualifier };\n","import { FocusOnValue } from \"./gravity/qualifiers/focusOn/FocusOnValue.js\";\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects birds\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction bird() {\n return new FocusOnValue('bird');\n}\n/**\n * @summary qualifier\n * @description Detects dogs\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction dog() {\n return new FocusOnValue('dog');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects cats\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction cat() {\n return new FocusOnValue('cat');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects microwaves\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction microwave() {\n return new FocusOnValue('microwave');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects refrigerators\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction refrigerator() {\n return new FocusOnValue('refrigerator');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects bottles\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction bottle() {\n return new FocusOnValue('bottle');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects sinks\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction sink() {\n return new FocusOnValue('sink');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects skateboards\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction skateboard() {\n return new FocusOnValue('skateboard');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects people\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction person() {\n return new FocusOnValue('person');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects the largest face in an image with the Advanced Facial Attribute Detection add-on and makes it the focus of the transformation.\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction advancedFace() {\n return new FocusOnValue('adv_face');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects all faces in an image with the Advanced Facial Attribute Detection add-on and makes them the focus of the transformation.\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction advancedFaces() {\n return new FocusOnValue('adv_faces');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects all eyes in an image with the Advanced Facial Attribute Detection add-on and makes them the focus of the transformation.\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction advancedEyes() {\n return new FocusOnValue('adv_eyes');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects the largest face in the asset and makes it the focus of the transformation.\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction face() {\n return new FocusOnValue('face');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects all the faces in the asset and makes them the focus of the transformation.\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction faces() {\n return new FocusOnValue('faces');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects all the faces in the asset and makes them the focus of the transformation.\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction background() {\n return new FocusOnValue('background');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects aeroplane\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction aeroplane() {\n return new FocusOnValue('aeroplane');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects bicycle\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction bicycle() {\n return new FocusOnValue('bicycle');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects boat\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction boat() {\n return new FocusOnValue('boat');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects bus\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction bus() {\n return new FocusOnValue('bus');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects car\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction car() {\n return new FocusOnValue('car');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects chair\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction chair() {\n return new FocusOnValue('chair');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects cow\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction cow() {\n return new FocusOnValue('cow');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects diningtable\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction diningtable() {\n return new FocusOnValue('diningtable');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects horse\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction horse() {\n return new FocusOnValue('horse');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects motorbike\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction motorbike() {\n return new FocusOnValue('motorbike');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects pottedplant\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction pottedplant() {\n return new FocusOnValue('pottedplant');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects sheep\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction sheep() {\n return new FocusOnValue('sheep');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects sofa\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction sofa() {\n return new FocusOnValue('sofa');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects train\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction train() {\n return new FocusOnValue('train');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detects tvmonitor\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction tvmonitor() {\n return new FocusOnValue('tvmonitor');\n}\n/**\n * @summary qualifier\n * @memberOf Qualifiers.FocusOn\n * @description Detect all text elements in an image using the {@link https://cloudinary.com/documentation/ocr_text_detection_and_extraction_addon|OCR Text Detection and Extraction add-on} and use the detected bounding box coordinates as the basis of the transformation.\n * @return {Qualifiers.FocusOn.FocusOnValue} FocusOnValue\n */\nfunction ocr() {\n return new FocusOnValue('ocr_text');\n}\n/**\n * @memberOf Qualifiers\n * @namespace FocusOn\n * @see Visit {@link Qualifiers.Gravity|Gravity} for an example\n */\nconst FocusOn = {\n person,\n cat,\n microwave,\n refrigerator,\n skateboard,\n bird,\n bottle,\n dog,\n sink,\n face,\n train,\n sofa,\n sheep,\n pottedplant,\n horse,\n faces,\n cow,\n bus,\n boat,\n advancedEyes,\n advancedFace,\n advancedFaces,\n aeroplane,\n background,\n bicycle,\n car,\n chair,\n diningtable,\n tvmonitor,\n motorbike,\n ocr\n};\nexport { FocusOnValue, FocusOn, person, cat, microwave, refrigerator, skateboard, bird, bottle, dog, sink, face, train, sofa, sheep, pottedplant, horse, faces, cow, bus, boat, advancedEyes, advancedFace, advancedFaces, aeroplane, background, bicycle, car, chair, diningtable, tvmonitor, motorbike, ocr };\n","import { FormatQualifier } from \"./format/FormatQualifier.js\";\n/**\n * @description Contains functions to select the asset format, can be used to convert images and videos to other formats.\n * @memberOf Qualifiers\n * @namespace Format\n * @see Visit {@link Actions.Delivery.format|Delivery Format} for an example\n */\n/**\n * @summary qualifier\n * @description Image format heic.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction heic() { return new FormatQualifier('heic'); }\n/**\n * @summary qualifier\n * @description Image format flif.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction flif() { return new FormatQualifier('flif'); }\n/**\n * @summary qualifier\n * @description Image format ai.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction ai() { return new FormatQualifier('ai'); }\n/**\n * @summary qualifier\n * @description Image format wdp.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction wdp() { return new FormatQualifier('wdp'); }\n/**\n * @summary qualifier\n * @description Image format svg.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction svg() { return new FormatQualifier('svg'); }\n/**\n * @summary qualifier\n * @description Image format webp.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction webp() { return new FormatQualifier('webp'); }\n/**\n * @summary qualifier\n * @description Image format psd.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction psd() { return new FormatQualifier('psd'); }\n/**\n * @summary qualifier\n * @description Image format jp2.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction jp2() { return new FormatQualifier('jp2'); }\n/**\n * @summary qualifier\n * @description Image format jpc.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction jpc() { return new FormatQualifier('jpc'); }\n/**\n * @summary qualifier\n * @description Image format eps.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction eps() { return new FormatQualifier('eps'); }\n/**\n * @summary qualifier\n * @description Image format tiff.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction tiff() { return new FormatQualifier('tiff'); }\n/**\n * @summary qualifier\n * @description Image format pdf.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction pdf() { return new FormatQualifier('pdf'); }\n/**\n * @summary qualifier\n * @description Image format ico.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction ico() { return new FormatQualifier('ico'); }\n/**\n * @summary qualifier\n * @description Image format bmp.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction bmp() { return new FormatQualifier('bmp'); }\n/**\n * @summary qualifier\n * @description Image format png.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction png() { return new FormatQualifier('png'); }\n/**\n * @summary qualifier\n * @description Image format gif.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction gif() { return new FormatQualifier('gif'); }\n/**\n * @summary qualifier\n * @description Image format auto.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction auto() { return new FormatQualifier('auto'); }\n/**\n * @summary qualifier\n * @description Image format jpg.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction jpg() { return new FormatQualifier('jpg'); }\n/**\n * @summary qualifier\n * @description Image format djvu.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction djvu() { return new FormatQualifier('djvu'); }\n/**\n * @summary qualifier\n * @description Image format ps.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction ps() { return new FormatQualifier('ps'); }\n/**\n * @summary qualifier\n * @description Image format ept.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction ept() { return new FormatQualifier('ept'); }\n/**\n * @summary qualifier\n * @description Image format eps3.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction eps3() { return new FormatQualifier('eps3'); }\n/**\n * @summary qualifier\n * @description Image format fxb.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction fxb() { return new FormatQualifier('fxb'); }\n/**\n * @summary qualifier\n * @description Image format gltf.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction gltf() { return new FormatQualifier('gltf'); }\n/**\n * @summary qualifier\n * @description Image format heif.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction heif() { return new FormatQualifier('heif'); }\n/**\n * @summary qualifier\n * @description Image format indd.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction indd() { return new FormatQualifier('indd'); }\n/**\n * @summary qualifier\n * @description Image format jpe.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction jpe() { return new FormatQualifier('jpe'); }\n/**\n * @summary qualifier\n * @description Image format jpeg.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction jpeg() { return new FormatQualifier('jpeg'); }\n/**\n * @summary qualifier\n * @description Image format jxr.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction jxr() { return new FormatQualifier('jxr'); }\n/**\n * @summary qualifier\n * @description Image format hdp.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction hdp() { return new FormatQualifier('hdp'); }\n/**\n * @summary qualifier\n * @description Image format spd.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction spd() { return new FormatQualifier('spd'); }\n/**\n * @summary qualifier\n * @description Image format arw.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction arw() { return new FormatQualifier('arw'); }\n/**\n * @summary qualifier\n * @description Image format cr2.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction cr2() { return new FormatQualifier('cr2'); }\n/**\n * @summary qualifier\n * @description Image format tga.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction tga() { return new FormatQualifier('tga'); }\n/**\n * @summary qualifier\n * @description Image format tif.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction tif() { return new FormatQualifier('tif'); }\n/**\n * @summary qualifier\n * @description Image format avif.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction avif() { return new FormatQualifier('avif'); }\n/**\n * @summary qualifier\n * @description format usdz.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction usdz() { return new FormatQualifier('usdz'); }\n/**\n * @summary qualifier\n * @description Image format 3g2.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction video3g2() { return new FormatQualifier('3g2'); }\n/**\n * @summary qualifier\n * @description Image format 3gp.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction video3gp() { return new FormatQualifier('3gp'); }\n/**\n * @summary qualifier\n * @description Image format avi.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoAvi() { return new FormatQualifier('avi'); }\n/**\n * @summary qualifier\n * @description Image format flv.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoFlv() { return new FormatQualifier('flv'); }\n/**\n * @summary qualifier\n * @description Image format m3u8.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoM3u8() { return new FormatQualifier('m3u8'); }\n/**\n * @summary qualifier\n * @description Image format ts.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoTs() { return new FormatQualifier('ts'); }\n/**\n * @summary qualifier\n * @description Image format mov.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoMov() { return new FormatQualifier('mov'); }\n/**\n * @summary qualifier\n * @description Image format mkv.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoMkv() { return new FormatQualifier('mkv'); }\n/**\n * @summary qualifier\n * @description Image format mp4.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoMp4() { return new FormatQualifier('mp4'); }\n/**\n * @summary qualifier\n * @description Image format mpeg.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoMpeg() { return new FormatQualifier('mpeg'); }\n/**\n * @summary qualifier\n * @description Image format mpd.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoMpd() { return new FormatQualifier('mpd'); }\n/**\n * @summary qualifier\n * @description Image format mxf.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoMxf() { return new FormatQualifier('mxf'); }\n/**\n * @summary qualifier\n * @description Image format ogv.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoOgv() { return new FormatQualifier('ogv'); }\n/**\n * @summary qualifier\n * @description Image format webm.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoWebm() { return new FormatQualifier('webm'); }\n/**\n * @summary qualifier\n * @description Image format wmv.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoWmv() { return new FormatQualifier('wmv'); }\n/**\n * @summary qualifier\n * @description Image format m2ts.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoM2ts() { return new FormatQualifier('m2ts'); }\n/**\n * @summary qualifier\n * @description Image format mts.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction videoMts() { return new FormatQualifier('mts'); }\n/**\n * @summary qualifier\n * @description Audio format aac.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction audioAac() { return new FormatQualifier('aac'); }\n/**\n * @summary qualifier\n * @description Audio format aiff.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction audioAiff() { return new FormatQualifier('aiff'); }\n/**\n * @summary qualifier\n * @description Audio format amr.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction audioAmr() { return new FormatQualifier('amr'); }\n/**\n * @summary qualifier\n * @description Audio format flac.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction audioFlac() { return new FormatQualifier('flac'); }\n/**\n * @summary qualifier\n * @description Audio format m4a.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction audioM4a() { return new FormatQualifier('m4a'); }\n/**\n * @summary qualifier\n * @description Audio format mp3.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction audioMp3() { return new FormatQualifier('mp3'); }\n/**\n * @summary qualifier\n * @description Audio format ogg.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction audioOgg() { return new FormatQualifier('ogg'); }\n/**\n * @summary qualifier\n * @description Audio format opus.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction audioOpus() { return new FormatQualifier('opus'); }\n/**\n * @summary qualifier\n * @description Audio format wav.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction audioWav() { return new FormatQualifier('wav'); }\n/**\n * @summary qualifier\n * @description Image format glb.\n * @memberOf Qualifiers.Format\n * @return {Qualifiers.Format.FormatQualifier}\n */\nfunction glb() { return new FormatQualifier('glb'); }\nconst Format = { usdz, jp2, ai, auto, bmp, eps, flif, gif, heic, ico, jpc, jpg, pdf, png, psd, svg, tiff, wdp, webp, arw, audioAac, audioAiff, audioAmr, audioFlac, audioM4a, audioMp3, audioOgg, audioOpus, audioWav, avif, cr2, djvu, eps3, ept, fxb, gltf, hdp, heif, indd, jpe, jpeg, jxr, ps, spd, tga, tif, video3g2, video3gp, videoAvi, videoFlv, videoM2ts, videoM3u8, videoMkv, videoMov, videoMp4, videoMpd, videoMpeg, videoMts, videoMxf, videoOgv, videoTs, videoWebm, videoWmv, glb };\nexport { usdz, jp2, ai, auto, bmp, eps, flif, gif, heic, ico, jpc, jpg, pdf, png, psd, svg, tiff, wdp, webp, arw, audioAac, audioAiff, audioAmr, audioFlac, audioM4a, audioMp3, audioOgg, audioOpus, audioWav, avif, cr2, djvu, eps3, ept, fxb, gltf, hdp, heif, indd, jpe, jpeg, jxr, ps, spd, tga, tif, video3g2, video3gp, videoAvi, videoFlv, videoM2ts, videoM3u8, videoMkv, videoMov, videoMp4, videoMpd, videoMpeg, videoMts, videoMxf, videoOgv, videoTs, videoWebm, videoWmv, glb, Format };\n","import { QualifierValue } from \"../../internal/qualifier/QualifierValue.js\";\n/**\n * @memberOf Qualifiers.Format\n * @extends {SDK.QualifierValue}\n */\nclass FormatQualifier extends QualifierValue {\n constructor(val) {\n super(val);\n this.val = val;\n }\n getValue() {\n return this.val;\n }\n}\nexport { FormatQualifier };\n","import { GravityQualifier } from \"../GravityQualifier.js\";\n/**\n * @description The class for the XYCenter Gravity builder\n * @memberOf Qualifiers.Gravity\n * @extends {Qualifiers.Gravity.GravityQualifier}\n */\nclass XYCenterGravity extends GravityQualifier {\n constructor() {\n // Required due to https://github.com/microsoft/TypeScript/issues/13029\n /* istanbul ignore next */\n super('xy_center');\n }\n}\nexport { XYCenterGravity };\n","import { CompassGravity } from \"./gravity/compassGravity/CompassGravity.js\";\nimport { FocusOnGravity } from \"./gravity/focusOnGravity/FocusOnGravity.js\";\nimport { AutoGravity } from \"./gravity/autoGravity/AutoGravity.js\";\nimport { XYCenterGravity } from \"./gravity/xyCenterGravity/XYCenterGravity.js\";\n/**\n * @description Defines the gravity based on directional values from a compass.\n * Learn more: {@link https://cloudinary.com/documentation/resizing_and_cropping#control_gravity|Control gravity for images}\n * Learn more: {@link https://cloudinary.com/documentation/video_resizing_and_cropping#control_gravity|Control gravity for videos}\n * @param {Qualifiers.Compass | string} direction A compass Values\n * @memberOf Qualifiers.Gravity\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {compass} from \"@cloudinary/url-gen/qualifiers/gravity\";\n * import {north} from \"@cloudinary/url-gen/qualifiers/compass\";\n * import {crop} from \"@cloudinary/url-gen/actions/resize\";\n *\n * const yourCldInstance = new Cloudinary({cloud: {cloudName: 'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.resize(crop().width(300).gravity(compass(north())))\n * @return {CompassGravity}\n */\nfunction compass(direction) {\n return new CompassGravity(direction);\n}\n/**\n * @summary qualifier\n * @description Specifies what to focus on, for example: faces, objects, eyes, etc.\n * @param {...Qualifier.FocusOn} args One or more objects to focus on\n * @memberOf Qualifiers.Gravity\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {focusOn} from \"@cloudinary/url-gen/qualifiers/gravity\";\n * import {crop} from \"@cloudinary/url-gen/actions/resize\";\n * import {cat} from \"@cloudinary/url-gen/qualifiers/focusOn\";\n *\n * const yourCldInstance = new Cloudinary({cloud: {cloudName: 'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.resize(crop().width(300).gravity(focusOn(cat())))\n * @return {FocusOnGravity}\n */\nfunction focusOn(...args) {\n const res = [...args];\n return new FocusOnGravity(res);\n}\n/**\n * @summary qualifier\n * @description Automatically identifies the most interesting regions in the asset, can be qualified further by including what to focus on.\n * @memberOf Qualifiers.Gravity\n * @return {Qualifiers.Gravity.AutoGravity}\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {autoGravity} from \"@cloudinary/url-gen/qualifiers/gravity\";\n * import {crop} from \"@cloudinary/url-gen/actions/resize\";\n *\n * const yourCldInstance = new Cloudinary({cloud: {cloudName: 'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.resize(crop().width(300).gravity(autoGravity()))\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {autoGravity} from \"@cloudinary/url-gen/qualifiers/gravity\";\n * import {crop} from \"@cloudinary/url-gen/actions/resize\";\n * import {cat} from \"@cloudinary/url-gen/qualifiers/focusOn\";\n * import {AutoFocus} from \"@cloudinary/url-gen/qualifiers/autoFocus\";\n *\n * const yourCldInstance = new Cloudinary({cloud: {cloudName: 'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.resize(crop().width(300).gravity(autoGravity().autoFocus(AutoFocus.focusOn(cat()))))\n */\nfunction autoGravity() {\n return new AutoGravity();\n}\n/**\n * @summary qualifier\n * @description Set the center of gravity to the given x & y coordinates.\n * @memberOf Qualifiers.Gravity\n * @return {XYCenterGravity}\n */\nfunction xyCenter() {\n return new XYCenterGravity();\n}\n/**\n * @description A qualifier that determines which part of an asset to focus on, and thus which part of the asset to keep,
\n * when any part of the asset is cropped. For overlays, this setting determines where to place the overlay.\n * @namespace Gravity\n * @memberOf Qualifiers\n * @example\n * import {Cloudinary} from \"@cloudinary/url-gen\";\n * import {compass} from \"@cloudinary/url-gen/qualifiers/gravity\";\n * import {north} from \"@cloudinary/url-gen/qualifiers/compass\";\n * import {crop} from \"@cloudinary/url-gen/actions/resize\";\n *\n * const yourCldInstance = new Cloudinary({cloud: {cloudName: 'demo'}});\n * const image = yourCldInstance.image('woman');\n * image.resize(crop().width(300).gravity(compass(north())))\n *\n * // Expand every function separately to see its own example\n */\nconst Gravity = {\n compass: compass,\n autoGravity: autoGravity,\n focusOn: focusOn,\n xyCenter\n};\nexport { Gravity, compass, autoGravity, focusOn, xyCenter };\n","import { Qualifier } from \"../../internal/qualifier/Qualifier.js\";\nimport { QualifierValue } from \"../../internal/qualifier/QualifierValue.js\";\n/**\n * @memberOf Gravity.GravityQualifier\n * @extends {SDK.Qualifier}\n */\nclass GravityQualifier extends Qualifier {\n /**\n * @param value, an array containing (GravityObject | AutoGravity | string) or a string;\n */\n constructor(value) {\n super('g', new QualifierValue(value));\n }\n}\nexport { GravityQualifier };\n","import { GravityQualifier } from \"../GravityQualifier.js\";\n/**\n * @description The class for the autoGravity builder\n * @memberOf Qualifiers.Gravity\n * @extends {Qualifiers.Gravity.GravityQualifier}\n */\nclass AutoGravity extends GravityQualifier {\n constructor() {\n // Required due to https://github.com/microsoft/TypeScript/issues/13029\n /* istanbul ignore next */\n super('auto');\n }\n /**\n * @description Autofocuses on objects, allowing their priority within the algorithm to be configured.\n * @param {AutoFocus} AutoFocusObjects\n */\n autoFocus(...AutoFocusObjects) {\n this.addValue(AutoFocusObjects);\n return this;\n }\n}\nexport { AutoGravity };\n","import { GravityQualifier } from \"../GravityQualifier.js\";\n/**\n * @description The class for the CompassGravity builder\n * @memberOf Qualifiers.Gravity\n * @extends {Qualifiers.Gravity.GravityQualifier}\n */\nclass CompassGravity extends GravityQualifier {\n constructor(dir) {\n // Required due to https://github.com/microsoft/TypeScript/issues/13029\n /* istanbul ignore next */\n super(dir);\n }\n}\nexport { CompassGravity };\n","import { GravityQualifier } from \"../GravityQualifier.js\";\n/**\n * @description The class for the FocusOn builder\n * @memberOf Qualifiers.Gravity\n * @extends {Qualifiers.Gravity.GravityQualifier}\n */\nclass FocusOnGravity extends GravityQualifier {\n constructor(FocusOnObjects) {\n // Required due to https://github.com/microsoft/TypeScript/issues/13029\n /* istanbul ignore next */\n super(FocusOnObjects);\n }\n /**\n * @description Specifies the gravity to use if none of the other gravity objects are found.\n * @param {Qualifiers.Gravity.AutoGravity} val\n */\n fallbackGravity(val) {\n /*\n * FocusOnGravity(this) is already a qualifier, with a key and a value g_{obj1}\n * fallBackGravity also attempts to add a value, to reach the result of g_{obj1}:auto:{obj2}\n * Since AutoGravity is a Qualifier, it also comes with its own g_ key, which needs to be removed.\n * To solve it, we take only the value from the qualifier, instead of the whole thing\n */\n this.addValue(val.qualifierValue);\n return this;\n }\n}\nexport { FocusOnGravity };\n","import { QualifierValue } from \"../../../../internal/qualifier/QualifierValue.js\";\n/**\n * @memberOf Qualifiers.FocusOn\n * @extends {SDK.QualifierValue}\n */\nclass FocusOnValue extends QualifierValue {\n constructor(name) {\n super();\n this.name = name;\n }\n toString() {\n return this.name;\n }\n}\nexport { FocusOnValue };\n","/**\n * @memberOf Qualifiers\n * @namespace Quality\n * @see Visit {@link Actions.Delivery.quality|Delivery Quality} for an example\n */\n/**\n * @summary qualifier\n * @description Quality auto\n * @memberOf Qualifiers.Quality\n * @return {string}\n */\nfunction auto() { return 'auto'; }\n/**\n * @summary qualifier\n * @description Quality best\n * @memberOf Qualifiers.Quality\n * @return {string}\n */\nfunction autoBest() { return 'auto:best'; }\n/**\n * @summary qualifier\n * @description Quality eco\n * @memberOf Qualifiers.Quality\n * @return {string}\n */\nfunction autoEco() { return 'auto:eco'; }\n/**\n * @summary qualifier\n * @description Quality good\n * @memberOf Qualifiers.Quality\n * @return {string}\n */\nfunction autoGood() { return 'auto:good'; }\n/**\n * @summary qualifier\n * @description Quality low\n * @memberOf Qualifiers.Quality\n * @return {string}\n */\nfunction autoLow() { return 'auto:low'; }\n/**\n * @summary qualifier\n * @description Quality jpegmini\n * @memberOf Qualifiers.Quality\n * @return {string}\n */\nfunction jpegmini() { return 'jpegmini'; }\n/**\n * @summary qualifier\n * @description Quality jpegmini best\n * @memberOf Qualifiers.Quality\n * @return {string}\n */\nfunction jpegminiBest() { return 'jpegmini:0'; }\n/**\n * @summary qualifier\n * @description Quality jpegmini high\n * @memberOf Qualifiers.Quality\n * @return {string}\n */\nfunction jpegminiHigh() { return 'jpegmini:1'; }\n/**\n * @summary qualifier\n * @quality\n * @description Quality jpegmini medium\n * @memberOf Qualifiers.Quality\n * @return {string}\n */\nfunction jpegminiMedium() { return 'jpegmini:2'; }\nconst Quality = { auto, autoBest, autoEco, autoGood, autoLow, jpegmini, jpegminiBest, jpegminiHigh, jpegminiMedium };\nexport { Quality, auto, autoBest, autoEco, autoGood, autoLow, jpegmini, jpegminiBest, jpegminiHigh, jpegminiMedium };\n","import { Action } from \"../../../internal/Action.js\";\nimport { QualifierValue } from \"../../../internal/qualifier/QualifierValue.js\";\nimport { Qualifier } from \"../../../internal/qualifier/Qualifier.js\";\n/**\n * @extends SDK.Action\n * @description A class for background transformations.\n */\nclass BackgroundColor extends Action {\n constructor(color) {\n super();\n this.addQualifier(new Qualifier('b', new QualifierValue(color).setDelimiter('_')));\n }\n}\nexport { BackgroundColor };\n","import { createUnsupportedError } from \"./utils/unsupportedError.js\";\n/**\n * @summary SDK\n * @memberOf SDK\n * @description Defines an action that's a string literal, no validations or manipulations are performed\n */\nclass RawAction {\n constructor(raw) {\n this.raw = raw;\n }\n toString() {\n return this.raw;\n }\n toJson() {\n return { error: createUnsupportedError(`unsupported action ${this.constructor.name}`) };\n }\n}\nexport { RawAction };\n","import { Action } from \"../internal/Action.js\";\nimport { BackgroundColor } from \"../actions/background/actions/BackgroundColor.js\";\nimport { prepareColor } from \"../internal/utils/prepareColor.js\";\nimport { FlagQualifier } from \"../qualifiers/flag/FlagQualifier.js\";\nimport { RawAction } from \"../internal/RawAction.js\";\nimport { isErrorObject } from \"../internal/models/IErrorObject.js\";\nimport { DeliveryFormatAction } from \"../actions/delivery/DeliveryFormatAction.js\";\n/**\n * @summary SDK\n * @description - Defines how to transform an asset\n * @memberOf SDK\n */\nclass Transformation {\n constructor() {\n this.actions = [];\n }\n /**\n * @param {SDK.Action | string} action\n * @return {this}\n */\n addAction(action) {\n let actionToAdd;\n if (typeof action === 'string') {\n if (action.indexOf('/') >= 0) {\n throw 'addAction cannot accept a string with a forward slash in it - /, use .addTransformation() instead';\n }\n else {\n actionToAdd = new RawAction(action);\n }\n }\n else {\n actionToAdd = action;\n }\n this.actions.push(actionToAdd);\n return this;\n }\n /**\n * @description Allows the injection of a raw transformation as a string into the transformation, or a Transformation instance that was previously created\n * @param {string | SDK.Transformation} tx\n * @example\n * import {Transformation} from \"@cloudinary/url-gen\";\n *\n * const transformation = new Transformation();\n * transformation.addTransformation('w_100/w_200/w_300');\n * @return {this}\n */\n addTransformation(tx) {\n if (tx instanceof Transformation) {\n // Concat the new actions into the existing actions\n this.actions = this.actions.concat(tx.actions);\n }\n else {\n this.actions.push(new RawAction(tx));\n }\n return this;\n }\n /**\n * @return {string}\n */\n toString() {\n return this.actions\n .map((action) => {\n return action.toString();\n })\n .filter((a) => a)\n .join('/');\n }\n /**\n * @description Delivers an animated GIF.\n * @param {AnimatedAction} animatedAction\n * @return {this}\n */\n animated(animatedAction) {\n return this.addAction(animatedAction);\n }\n /**\n * @description Adds a border around the image.\n * @param {Border} borderAction\n * @return {this}\n */\n border(borderAction) {\n return this.addAction(borderAction);\n }\n /**\n * @description Adjusts the shape of the delivered image.
\n * Learn more: {@link https://cloudinary.com/documentation/effects_and_artistic_enhancements#distort|Shape changes and distortion effects}\n * @param {IReshape} reshapeAction\n * @return {this}\n */\n reshape(reshapeAction) {\n return this.addAction(reshapeAction);\n }\n /**\n * @description Resize the asset using provided resize action\n * @param {ResizeSimpleAction} resizeAction\n * @return {this}\n */\n resize(resizeAction) {\n return this.addAction(resizeAction);\n }\n /**\n * @desc An alias to Action Delivery.quality\n * @param {string|number} quality\n * @return {this}\n */\n quality(quality) {\n this.addAction(new DeliveryFormatAction('q', quality));\n return this;\n }\n /**\n * @desc An alias to Action Delivery.format\n * @param {string} format\n * @return {this}\n */\n format(format) {\n this.addAction(new DeliveryFormatAction('f', format));\n return this;\n }\n /**\n * @description Rounds the specified corners of an image.\n * @param roundCornersAction\n * @return {this}\n */\n roundCorners(roundCornersAction) {\n return this.addAction(roundCornersAction);\n }\n /**\n * @description Adds an overlay over the base image.\n * @param {LayerAction} overlayAction\n * @return {this}\n */\n overlay(overlayAction) {\n return this.addAction(overlayAction);\n }\n /**\n * @description Adds an underlay under the base image.\n * @param {LayerAction} underlayAction\n * @return {this}\n */\n underlay(underlayAction) {\n underlayAction.setLayerType('u');\n return this.addAction(underlayAction);\n }\n /**\n * @description Defines an new user variable.\n * @param {VariableAction} variableAction\n * @return {this}\n */\n addVariable(variableAction) {\n return this.addAction(variableAction);\n }\n /**\n * @description Specifies a condition to be met before applying a transformation.\n * @param {ConditionalAction} conditionAction\n * @return {this}\n */\n conditional(conditionAction) {\n return this.addAction(conditionAction);\n }\n /**\n * @description Applies a filter or an effect on an asset.\n * @param {SimpleEffectAction} effectAction\n * @return {this}\n */\n effect(effectAction) {\n return this.addAction(effectAction);\n }\n /**\n * @description Applies adjustment effect on an asset.\n * @param action\n * @return {this}\n */\n adjust(action) {\n return this.addAction(action);\n }\n /**\n * @description Rotates the asset by the given angle.\n * @param {RotateAction} rotateAction\n * @return {this}\n */\n rotate(rotateAction) {\n return this.addAction(rotateAction);\n }\n /**\n * @description Applies a pre-defined named transformation of the given name.\n * @param {NamedTransformation} namedTransformation\n * @return {this}\n */\n namedTransformation(namedTransformation) {\n return this.addAction(namedTransformation);\n }\n /**\n * @description Applies delivery action.\n * @param deliveryAction\n * @return {this}\n */\n delivery(deliveryAction) {\n return this.addAction(deliveryAction);\n }\n /**\n * @description Sets the color of the background.\n * @param {Qualifiers.Color} color\n * @return {this}\n */\n backgroundColor(color) {\n return this.addAction(new BackgroundColor(prepareColor(color)));\n }\n /**\n * @description Adds a layer in a Photoshop document.\n * @param action\n * @return {this}\n */\n psdTools(action) {\n return this.addAction(action);\n }\n /**\n * @description Extracts an image or a page using an index, a range, or a name from a layered media asset.\n * @param action\n * @return {this}\n */\n extract(action) {\n return this.addAction(action);\n }\n /**\n * @description Adds a flag as a separate action.\n * @param {Qualifiers.Flag | string} flagQualifier\n * @return {this}\n */\n addFlag(flagQualifier) {\n const action = new Action();\n let flagToAdd = flagQualifier;\n if (typeof flagQualifier === 'string') {\n flagToAdd = new FlagQualifier(flagQualifier);\n }\n action.addQualifier(flagToAdd);\n return this.addAction(action);\n }\n /**\n * @description Inject a custom function into the image transformation pipeline.\n * @return {this}\n */\n customFunction(customFunction) {\n return this.addAction(customFunction);\n }\n /**\n * Transcodes the video (or audio) to another format.\n * @param {Action} action\n * @return {this}\n */\n transcode(action) {\n return this.addAction(action);\n }\n /**\n * Applies the specified video edit action.\n *\n * @param {videoEditType} action\n * @return {this}\n */\n videoEdit(action) {\n return this.addAction(action);\n }\n toJson() {\n const actions = [];\n for (const action of this.actions) {\n const json = action.toJson();\n if (isErrorObject(json)) {\n // Fail early and return an IErrorObject\n return json;\n }\n actions.push(json);\n }\n return { actions };\n }\n}\nexport { Transformation };\n","/**\n * Validates obj is an instance of IErrorObject\n * @param obj\n */\nfunction isErrorObject(obj) {\n const errorObj = obj;\n return ('error' in errorObj) && !!errorObj.error;\n}\nexport { isErrorObject };\n","import { Transformation } from \"./Transformation.js\";\n/**\n * @summary SDK\n * @extends {SDK.Transformation}\n * @memberOf SDK\n */\nclass ImageTransformation extends Transformation {\n}\nexport { ImageTransformation };\n","/**\n *\n * @private\n * @param {any} a\n */\nfunction isObject(a) {\n if (typeof a !== 'object' || a instanceof Array) {\n return false;\n }\n else {\n return true;\n }\n}\nclass Config {\n filterOutNonSupportedKeys(userProvidedConfig, validKeys) {\n const obj = Object.create({});\n if (isObject(userProvidedConfig)) {\n Object.keys(userProvidedConfig).forEach((key) => {\n if (validKeys.indexOf(key) >= 0) {\n obj[key] = userProvidedConfig[key];\n }\n else {\n console.warn('Warning - unsupported key provided to configuration: ', key);\n }\n });\n return obj;\n }\n else {\n return Object.create({});\n }\n }\n}\nexport default Config;\n","/**\n * This file is for internal constants only.\n * It is not intended for public use and is not part of the public API\n */\n/**\n * @private\n */\nexport const ALLOWED_URL_CONFIG = [\n 'cname',\n 'secureDistribution',\n 'privateCdn',\n 'signUrl',\n 'longUrlSignature',\n 'shorten',\n 'useRootPath',\n 'secure',\n 'forceVersion',\n 'analytics'\n];\n/**\n * @private\n */\nexport const ALLOWED_CLOUD_CONFIG = [\n 'cloudName',\n 'apiKey',\n 'apiSecret',\n 'authToken'\n];\n","import Config from \"./BaseConfig.js\";\nimport { ALLOWED_URL_CONFIG } from \"../internal/internalConstants.js\";\nclass URLConfig extends Config {\n /**\n * @param {IURLConfig} userURLConfig\n */\n constructor(userURLConfig) {\n super();\n const urlConfig = this.filterOutNonSupportedKeys(userURLConfig, ALLOWED_URL_CONFIG);\n Object.assign(this, {\n secure: true\n }, urlConfig);\n }\n extend(userURLConfig) {\n const urlConfig = this.filterOutNonSupportedKeys(userURLConfig, ALLOWED_URL_CONFIG);\n return new URLConfig(Object.assign({}, this, urlConfig));\n }\n /**\n * @param {string} value Sets the cname\n */\n setCname(value) {\n this.cname = value;\n return this;\n }\n /**\n * @param {string} value Sets the secureDistribution\n */\n setSecureDistribution(value) {\n this.secureDistribution = value;\n return this;\n }\n /**\n * @param {boolean} value Sets whether to use a private CDN (Removes cloudName from URL)\n */\n setPrivateCdn(value) {\n this.privateCdn = value;\n return this;\n }\n /**\n * @param value Sets whether or not to sign the URL\n */\n setSignUrl(value) {\n this.signUrl = value;\n return this;\n }\n /**\n * @param value Sets whether or not to use a long signature\n */\n setLongUrlSignature(value) {\n this.longUrlSignature = value;\n return this;\n }\n /**\n * @param value Sets whether or not to shorten the URL\n */\n setShorten(value) {\n this.shorten = value;\n return this;\n }\n /**\n * @param value Sets whether or not to use a root path\n */\n setUseRootPath(value) {\n this.useRootPath = value;\n return this;\n }\n /**\n * @param value Sets whether or not to deliver the asset through https\n */\n setSecure(value) {\n this.secure = value;\n return this;\n }\n /**\n * @param value Sets whether to force a version in the URL\n */\n setForceVersion(value) {\n this.forceVersion = value;\n return this;\n }\n}\nexport default URLConfig;\n","/**\n * @private\n * @description Adds left padding to a string with the desired substring the provided number of times\n * @example stringPad(foo, 3, 'a'') // -> aaafoo\n * @param {string} value\n * @param {number} _targetLength\n * @param {string} _padString\n */\nexport function stringPad(value, _targetLength, _padString) {\n let targetLength = _targetLength >> 0; //truncate if number or convert non-number to 0;\n let padString = String((typeof _padString !== 'undefined' ? _padString : ' '));\n if (value.length > targetLength) {\n return String(value);\n }\n else {\n targetLength = targetLength - value.length;\n if (targetLength > padString.length) {\n padString += repeatStringNumTimes(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(value);\n }\n}\n/**\n * @description Repeat a string multiple times, cross-browser-safe alternative to string.repeat()\n * @param string\n * @param _times\n */\nfunction repeatStringNumTimes(string, _times) {\n let times = _times;\n let repeatedString = \"\";\n while (times > 0) {\n repeatedString += string;\n times--;\n }\n return repeatedString;\n}\n","import { stringPad } from \"./stringPad.js\";\n/**\n * This file maps sequences of 6 bit binary digits to a character in base64.\n * 000000 -> A\n * 110011 -> Z\n * 111111 -> /\n */\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst base64Map = {};\nlet num = 0;\nchars.split('').forEach((char) => {\n let key = num.toString(2);\n key = stringPad(key, 6, '0');\n base64Map[key] = char;\n num++;\n});\n/**\n * Map of [six-bit binary codes] -> [Base64 characters]\n */\nexport { base64Map };\n","import { base64Map } from \"./base64Map.js\";\nimport { stringPad } from \"./stringPad.js\";\nimport { reverseVersion } from \"./reverseVersion.js\";\n/**\n * @private\n * @description Encodes a semVer-like version string\n * @param {string} semVer Input can be either x.y.z or x.y\n * @return {string} A string built from 3 characters of the base64 table that encode the semVer\n */\nexport function encodeVersion(semVer) {\n let strResult = '';\n // support x.y or x.y.z by using 'parts' as a variable\n const parts = semVer.split('.').length;\n const paddedStringLength = parts * 6; // we pad to either 12 or 18 characters\n // reverse (but don't mirror) the version. 1.5.15 -> 15.5.1\n // Pad to two spaces, 15.5.1 -> 15.05.01\n const paddedReversedSemver = reverseVersion(semVer);\n // turn 15.05.01 to a string '150501' then to a number 150501\n const num = parseInt(paddedReversedSemver.split('.').join(''));\n // Represent as binary, add left padding to 12 or 18 characters.\n // 150,501 -> 100100101111100101\n let paddedBinary = num.toString(2);\n paddedBinary = stringPad(paddedBinary, paddedStringLength, '0');\n // Stop in case an invalid version number was provided\n // paddedBinary must be built from sections of 6 bits\n if (paddedBinary.length % 6 !== 0) {\n throw 'Version must be smaller than 43.21.26)';\n }\n // turn every 6 bits into a character using the base64Map\n paddedBinary.match(/.{1,6}/g).forEach((bitString) => {\n // console.log(bitString);\n strResult += base64Map[bitString];\n });\n return strResult;\n}\n","import { stringPad } from \"./stringPad.js\";\n/**\n * @private\n * @description Reverses the version positions, x.y.z turns to z.y.x\n * Pads each segment with '0' so they have length of 2\n * Example: 1.2.3 -> 03.02.01\n * @param {string} semVer Input can be either x.y.z or x.y\n * @return {string} in the form of zz.yy.xx (\n */\nexport function reverseVersion(semVer) {\n if (semVer.split('.').length < 2) {\n throw new Error('invalid semVer, must have at least two segments');\n }\n // Split by '.', reverse, create new array with padded values and concat it together\n return semVer.split('.').reverse().map((segment) => {\n // try to cast to number\n const asNumber = +segment;\n if (isNaN(asNumber) || asNumber < 0) {\n throw 'Invalid version number provided';\n }\n return stringPad(segment, 2, '0');\n }).join('.');\n}\n","import { encodeVersion } from \"./encodeVersion.js\";\nimport { getAnalyticsOptions } from \"./getAnalyticsOptions.js\";\nimport { packageVersion } from \"../internal/utils/packageVersion.js\";\n/**\n * @private\n * @description Try to get the node version out of process, if browser just return 0.0.0\n */\nfunction getNodeVersion() {\n const failedVersion = '0.0.0';\n if (typeof window !== 'undefined') {\n return failedVersion;\n }\n else {\n // node env\n try {\n return process.versions.node || failedVersion;\n }\n catch (e) {\n return failedVersion;\n }\n }\n}\n/**\n * @private\n * @description Ensure that all values ITrackedPropertiesThroughAnalytics are populated.\n * Accept a partial map of values and returns the complete interface of ITrackedPropertiesThroughAnalytics\n * @param {ITrackedPropertiesThroughAnalytics} trackedAnalytics\n * @param {ITrackedPropertiesThroughAnalytics} trackedAnalytics\n */\nfunction ensureShapeOfTrackedProperties(trackedAnalytics) {\n // try to get the process version from node, but if we're on the client return 0.0.0\n const defaults = {\n techVersion: getNodeVersion(),\n sdkCode: 'T',\n sdkSemver: packageVersion.split('-')[0],\n responsive: false,\n placeholder: false,\n lazyload: false,\n accessibility: false\n };\n if (!trackedAnalytics) {\n return defaults;\n }\n else {\n return Object.assign(Object.assign({}, defaults), trackedAnalytics);\n }\n}\n/**\n * @private\n * @description Creates the complete SDK signature by using all the values provided by ITrackedPropertiesThroughAnalytics\n * Creation of the signature\n * - Set the AlgoVersion of the encoding, this is an internal letter that represents the version\n * of our encoding algorithm, it will allow us to perform breaking changes if we'll need them.\n * - Take the constant SDK code (Arbitrary letter chosen for each SDK, for Base that letter is 'T')\n * this is used to tell apart which SDK is being tracked.\n * - Take the {major.minor} versions of the node version (techVersion) (14.2, 16.2 etc.)\n * - Take the full semver of the SDK you wish to track\n * - Take the features used(lazy, placeholder etc.) and turn them to a letter (for example accessibility -> D)\n * - Before appending the string, the Versions must be encoded, see the function `encodeVersion` for more details\n * - Append all the variables to a single string\n * - In any case of an error, return the single letter 'E'\n *\n * @return {string} sdkAnalyticsSignature\n */\nexport function getSDKAnalyticsSignature(_trackedAnalytics) {\n const trackedAnalytics = ensureShapeOfTrackedProperties(_trackedAnalytics);\n const analyticsOptions = getAnalyticsOptions(trackedAnalytics);\n try {\n const twoPartVersion = removePatchFromSemver(analyticsOptions.techVersion);\n const encodedSDKVersion = encodeVersion(analyticsOptions.sdkSemver);\n const encodedTechVersion = encodeVersion(twoPartVersion);\n const featureCode = analyticsOptions.feature;\n const SDKCode = analyticsOptions.sdkCode;\n const algoVersion = 'A'; // The algo version is determined here, it should not be an argument\n return `${algoVersion}${SDKCode}${encodedSDKVersion}${encodedTechVersion}${featureCode}`;\n }\n catch (e) {\n // Either SDK or Node versions were unparsable\n return 'E';\n }\n}\n/**\n * @private\n * @description Removes patch version from the semver if it exists\n * Turns x.y.z OR x.y into x.y\n * @param {'x.y.z' | 'x.y' | string} semVerStr\n */\nfunction removePatchFromSemver(semVerStr) {\n const parts = semVerStr.split('.');\n return `${parts[0]}.${parts[1]}`;\n}\n","import { getUrlPrefix, getUrlVersion, handleAssetType, handleDeliveryType } from \"../internal/url/cloudinaryURL.js\";\nimport URLConfig from \"../config/URLConfig.js\";\nimport { getSDKAnalyticsSignature } from \"../sdkAnalytics/getSDKAnalyticsSignature.js\";\n/**\n * This const contains all the valid combination of asset/delivery for URL shortening purposes\n * It's exported because it's used in a test, but it's not really shared enough to belong in a separate file\n */\nexport const SEO_TYPES = {\n \"image/upload\": \"images\",\n \"image/private\": \"private_images\",\n \"image/authenticated\": \"authenticated_images\",\n \"raw/upload\": \"files\",\n \"video/upload\": \"videos\"\n};\n/**\n * @description Cloudinary file without a transformation\n * @summary SDK\n * @memberOf SDK\n */\nclass CloudinaryFile {\n constructor(publicID, cloudConfig = {}, urlConfig) {\n this.setPublicID(publicID);\n this.setCloudConfig(cloudConfig);\n this.setURLConfig(urlConfig);\n }\n /**\n * @description Sets the URL Config for this asset\n * @param urlConfig\n * @return {this}\n */\n setURLConfig(urlConfig) {\n this.urlConfig = new URLConfig(urlConfig);\n return this;\n }\n /**\n * @description Sets the Cloud Config for this asset\n * @param urlConfig\n * @return {this}\n */\n setCloudConfig(cloudConfig) {\n this.cloudName = cloudConfig.cloudName;\n this.apiKey = cloudConfig.apiKey;\n this.apiSecret = cloudConfig.apiSecret;\n this.authToken = cloudConfig.authToken;\n return this;\n }\n /**\n * @description Sets the public ID of the asset.\n * @param {string} publicID The public ID of the asset.\n * @return {this}\n */\n setPublicID(publicID) {\n // PublicID must be a string!\n this.publicID = publicID ? publicID.toString() : '';\n return this;\n }\n /**\n * @description Sets the delivery type of the asset.\n * @param {DELIVERY_TYPE | string} newType The type of the asset.\n * @return {this}\n */\n setDeliveryType(newType) {\n this.deliveryType = newType;\n return this;\n }\n /**\n * @description Sets the URL SEO suffix of the asset.\n * @param {string} newSuffix The SEO suffix.\n * @return {this}\n */\n setSuffix(newSuffix) {\n this.suffix = newSuffix;\n return this;\n }\n /**\n * @description Sets the signature of the asset.\n * @param {string} signature The signature.\n * @return {this}\n */\n setSignature(signature) {\n this.signature = signature;\n return this;\n }\n /**\n * @description Sets the version of the asset.\n * @param {string} newVersion The version of the asset.\n * @return {this}\n */\n setVersion(newVersion) {\n if (newVersion) {\n this.version = newVersion;\n }\n return this;\n }\n /**\n * @description Sets the asset type.\n * @param {string} newType The type of the asset.\n * @return {this}\n */\n setAssetType(newType) {\n if (newType) {\n this.assetType = newType;\n }\n return this;\n }\n sign() {\n return this;\n }\n /**\n * @description Serializes to URL string\n * @param overwriteOptions\n */\n toURL(overwriteOptions = {}) {\n return this.createCloudinaryURL(null, overwriteOptions.trackedAnalytics);\n }\n /**\n * @description Validate various options before attempting to create a URL\n * The function will throw in case a violation\n * @throws Validation errors\n */\n validateAssetForURLCreation() {\n if (typeof this.cloudName === 'undefined') {\n throw 'You must supply a cloudName when initializing the asset';\n }\n const suffixContainsDot = this.suffix && this.suffix.indexOf('.') >= 0;\n const suffixContainsSlash = this.suffix && this.suffix.indexOf('/') >= 0;\n if (suffixContainsDot || suffixContainsSlash) {\n throw '`suffix`` should not include . or /';\n }\n }\n /**\n * @description return an SEO friendly name for a combination of asset/delivery, some examples:\n * * image/upload -> images\n * * video/upload -> videos\n * If no match is found, return `{asset}/{delivery}`\n */\n getResourceType() {\n const assetType = handleAssetType(this.assetType);\n const deliveryType = handleDeliveryType(this.deliveryType);\n const hasSuffix = !!this.suffix;\n const regularSEOType = `${assetType}/${deliveryType}`;\n const shortSEOType = SEO_TYPES[`${assetType}/${deliveryType}`];\n const useRootPath = this.urlConfig.useRootPath;\n const shorten = this.urlConfig.shorten;\n // Quick exit incase of useRootPath\n if (useRootPath) {\n if (regularSEOType === 'image/upload') {\n return ''; // For image/upload we're done, just return nothing\n }\n else {\n throw new Error(`useRootPath can only be used with assetType: 'image' and deliveryType: 'upload'. Provided: ${regularSEOType} instead`);\n }\n }\n if (shorten && regularSEOType === 'image/upload') {\n return 'iu';\n }\n if (hasSuffix) {\n if (shortSEOType) {\n return shortSEOType;\n }\n else {\n throw new Error(`URL Suffix only supported for ${Object.keys(SEO_TYPES).join(', ')}, Provided: ${regularSEOType} instead`);\n }\n }\n // If all else fails, return the regular image/upload combination (asset/delivery)\n return regularSEOType;\n }\n getSignature() {\n if (this.signature) {\n return `s--${this.signature}--`;\n }\n else {\n return '';\n }\n }\n /**\n *\n * @description Creates a fully qualified CloudinaryURL\n * @return {string} CloudinaryURL\n * @throws Validation Errors\n */\n createCloudinaryURL(transformation, trackedAnalytics) {\n // In accordance with the existing implementation, if no publicID exists we should return nothing.\n if (!this.publicID) {\n return '';\n }\n // Throws if some options are mis-configured\n // See the function for more information on when it throws\n this.validateAssetForURLCreation();\n const prefix = getUrlPrefix(this.cloudName, this.urlConfig);\n const transformationString = transformation ? transformation.toString() : '';\n const version = getUrlVersion(this.publicID, this.version, this.urlConfig.forceVersion);\n const publicID = this.publicID\n // Serialize the publicID, but leave slashes alone.\n // we can't use serializeCloudinaryCharacters because that does both things (, and /)\n .replace(/,/g, '%2C');\n // Resource type is a mixture of assetType, deliveryType and various URL Configurations\n // Note how `suffix` changes both image/upload (resourceType) and also is appended at the end\n const url = [prefix, this.getResourceType(), this.getSignature(), transformationString, version, publicID, this.suffix]\n .filter((a) => a)\n .join('/');\n if (typeof transformation === 'string') {\n return url;\n }\n else {\n const safeURL = encodeURI(url)\n .replace(/\\?/g, '%3F')\n .replace(/=/g, '%3D');\n // urlConfig.analytics is true by default, has to be explicitly set to false to overwrite\n // Don't add analytics when publicId includes a '?' to not risk changing existing query params\n if (this.urlConfig.analytics !== false && !(publicID.includes('?'))) {\n return `${safeURL}?_a=${getSDKAnalyticsSignature(trackedAnalytics)}`;\n }\n else {\n return safeURL;\n }\n }\n }\n}\nexport { CloudinaryFile };\n","import { isUrl } from \"./urlUtils/isUrl.js\";\nimport { isFileName } from \"./urlUtils/isFileName.js\";\nimport { publicIDContainsVersion } from \"./urlUtils/publicIDContainsVersion.js\";\n/**\n * Create the URL prefix for Cloudinary resources.\n * Available use cases\n * http://res.cloudinary.com/{cloudName}\n * https://res.cloudinary.com/{cloudName}\n * https://{cloudName}-res.cloudinary.com/\n * http://{domain}/${cloudName}\n * https://{domain}/${cloudName}\n * https://{domain}\n * @private\n *\n * @param {string} cloudName\n * @param {IURLConfig} urlConfig\n */\nfunction getUrlPrefix(cloudName, urlConfig) {\n const secure = urlConfig.secure;\n const privateCDN = urlConfig.privateCdn;\n const cname = urlConfig.cname;\n const secureDistribution = urlConfig.secureDistribution;\n if (!secure && !cname) {\n return `http://res.cloudinary.com/${cloudName}`;\n }\n if (secure && !secureDistribution && privateCDN) {\n return `https://${cloudName}-res.cloudinary.com`;\n }\n if (secure && !secureDistribution) {\n return `https://res.cloudinary.com/${cloudName}`;\n }\n if (secure && secureDistribution && privateCDN) {\n return `https://${secureDistribution}`;\n }\n if (secure && secureDistribution) {\n return `https://${secureDistribution}/${cloudName}`;\n }\n if (!secure && cname) {\n return `http://${cname}/${cloudName}`;\n }\n else {\n return 'ERROR';\n }\n}\n/**\n * @private\n * @param assetType\n */\nfunction handleAssetType(assetType) {\n //default to image\n if (!assetType) {\n return 'image';\n }\n return assetType;\n}\n/**\n * @private\n * @param deliveryType\n */\nfunction handleDeliveryType(deliveryType) {\n //default to upload\n if (!deliveryType) {\n return 'upload';\n }\n return deliveryType;\n}\n/**\n *\n * @param {string} publicID\n * @param {number} version\n * @param {boolean} forceVersion\n */\nfunction getUrlVersion(publicID, version, forceVersion) {\n const shouldForceVersion = forceVersion !== false;\n if (version) {\n return `v${version}`;\n }\n // In all these conditions we never force a version\n if (publicIDContainsVersion(publicID) || isUrl(publicID) || isFileName(publicID)) {\n return '';\n }\n return shouldForceVersion ? 'v1' : '';\n}\nexport { handleAssetType, getUrlVersion, handleDeliveryType, getUrlPrefix };\n","/**\n *\n * @param publicID\n */\nexport function publicIDContainsVersion(publicID) {\n return publicID.match(/^v[0-9]+/);\n}\n","/**\n *\n * @param publicID\n */\nexport function isUrl(publicID) {\n return publicID.match(/^https?:\\//);\n}\n","/**\n *\n * @param publicID\n */\nexport function isFileName(publicID) {\n return publicID.indexOf('/') < 0;\n}\n","/**\n * @private\n * @description Gets the analyticsOptions from options- should include sdkSemver, techVersion, sdkCode, and feature\n * @param {ITrackedPropertiesThroughAnalytics} options\n * @returns {IAnalyticsOptions}\n */\nexport function getAnalyticsOptions(options) {\n const analyticsOptions = {\n sdkSemver: options.sdkSemver,\n techVersion: options.techVersion,\n sdkCode: options.sdkCode,\n feature: '0'\n };\n if (options.accessibility) {\n analyticsOptions.feature = 'D';\n }\n if (options.lazyload) {\n analyticsOptions.feature = 'C';\n }\n if (options.responsive) {\n analyticsOptions.feature = 'A';\n }\n if (options.placeholder) {\n analyticsOptions.feature = 'B';\n }\n return analyticsOptions;\n}\n","const packageVersion = '1.8.6';\n/**\n * Export package version (injected during our build).\n * Reason for this is that If we import values from from package.json,\n * it will cause an error for users who do not have an 'import from json' plugin\n * as part of their build process / bundler.\n */\nexport { packageVersion };\n","import { CloudinaryFile } from \"./CloudinaryFile.js\";\nimport { DeliveryFormatAction } from \"@cloudinary/transformation-builder-sdk/actions/delivery/DeliveryFormatAction\";\n/**\n * @desc Cloudinary Transformable interface, extended by any class that needs a Transformation Interface\n * @summary SDK\n * @memberOf SDK\n */\nclass CloudinaryTransformable extends CloudinaryFile {\n constructor(publicID, cloudConfig, urlConfig, transformation) {\n /* istanbul ignore next */\n super(publicID, cloudConfig, urlConfig);\n this.transformation = transformation;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Animated} animated\n * @return {this}\n */\n animated(animated) {\n this.transformation.animated(animated);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Border} border\n * @return {this}\n */\n border(border) {\n this.transformation.border(border);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Reshape} reshape\n * @return {this}\n */\n reshape(reshape) {\n this.transformation.reshape(reshape);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Resize} resize\n * @return {this}\n */\n resize(resize) {\n this.transformation.resize(resize);\n return this;\n }\n /**\n * @desc An alias to Action Delivery.quality\n * @param {string|number} quality\n * @return {this}\n */\n quality(quality) {\n this.addAction(new DeliveryFormatAction('q', quality));\n return this;\n }\n /**\n * @desc An alias to Action Delivery.format\n * @param {string} format\n * @return {this}\n */\n format(format) {\n this.addAction(new DeliveryFormatAction('f', format));\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.RoundCorners} roundCorners\n * @return {this}\n */\n roundCorners(roundCorners) {\n this.transformation.roundCorners(roundCorners);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @return {this}\n */\n overlay(overlayAction) {\n this.transformation.overlay(overlayAction);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Variable} variableAction\n * @return {this}\n */\n addVariable(variableAction) {\n this.transformation.addVariable(variableAction);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Condition} conditionalAction\n * @return {this}\n */\n conditional(conditionalAction) {\n this.transformation.conditional(conditionalAction);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Effect} effect\n * @return {this}\n */\n effect(effect) {\n this.transformation.effect(effect);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Adjust} action\n * @return {this}\n */\n adjust(action) {\n this.transformation.adjust(action);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Rotate} rotate\n * @return {this}\n */\n rotate(rotate) {\n this.transformation.rotate(rotate);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.NamedTransformation} namedTransformation\n * @return {this}\n */\n namedTransformation(namedTransformation) {\n this.transformation.namedTransformation(namedTransformation);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Delivery} deliveryAction\n * @return {this}\n */\n delivery(deliveryAction) {\n this.transformation.delivery(deliveryAction);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Qualifiers.color} color\n * @return {this}\n */\n backgroundColor(color) {\n this.transformation.backgroundColor(color);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.PSDTools} action\n * @return {this}\n */\n psdTools(action) {\n this.transformation.psdTools(action);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Extract} action\n * @return {this}\n */\n extract(action) {\n this.transformation.extract(action);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Qualifiers.Flag | string} flagQualifier\n * @return {this}\n */\n addFlag(flagQualifier) {\n this.transformation.addFlag(flagQualifier);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.CustomFunction} customFunction\n * @return {this}\n */\n customFunction(customFunction) {\n this.transformation.customFunction(customFunction);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {SDK.Action | string} action\n * @return {this}\n */\n addAction(action) {\n this.transformation.addAction(action);\n return this;\n }\n /**\n * @description Extend your transformation with another transformation\n * @param { string | SDK.Transformation } tx\n */\n addTransformation(tx) {\n this.transformation.addTransformation(tx);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @return {string}\n */\n toString() {\n return this.transformation.toString();\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @return {this}\n */\n underlay(underlayAction) {\n this.transformation.underlay(underlayAction);\n return this;\n }\n toURL(overwriteOptions = {}) {\n return this.createCloudinaryURL(this.transformation, overwriteOptions === null || overwriteOptions === void 0 ? void 0 : overwriteOptions.trackedAnalytics);\n }\n}\nexport { CloudinaryTransformable };\n","import { ImageTransformation } from \"@cloudinary/transformation-builder-sdk/transformation/ImageTransformation\";\nimport { CloudinaryTransformable } from \"./CloudinaryTransformable.js\";\n/**\n * @desc Cloudinary image asset, with image-related transformations\n * @summary SDK\n * @memberOf SDK\n */\nclass CloudinaryImage extends CloudinaryTransformable {\n constructor(publicID, cloudConfig, urlConfig) {\n /* istanbul ignore next */\n super(publicID, cloudConfig, urlConfig, new ImageTransformation());\n }\n}\nexport { CloudinaryImage };\n","import { Transformation } from \"./Transformation.js\";\n/**\n * @summary SDK\n * @extends {SDK.Transformation}\n * @memberOf SDK\n */\nclass VideoTransformation extends Transformation {\n}\nexport { VideoTransformation };\n","import { CloudinaryTransformable } from \"./CloudinaryTransformable.js\";\nimport { VideoTransformation } from \"../transformation/VideoTransformation.js\";\n/**\n * @desc Cloudinary video asset, with video-related transformations\n * @summary SDK\n * @memberOf SDK\n */\nclass CloudinaryVideo extends CloudinaryTransformable {\n constructor(publicID, cloudConfig, urlConfig) {\n /* istanbul ignore next */\n super(publicID, cloudConfig, urlConfig, new VideoTransformation());\n this.assetType = 'video';\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.Transcode} action\n * @return {this}\n */\n transcode(action) {\n this.transformation.transcode(action);\n return this;\n }\n /**\n * @desc A proxy to {@link SDK.Transformation| Transformation} - Calls the same method contained in this.transformation\n * @param {Actions.VideoEdit} action\n * @return {this}\n */\n videoEdit(action) {\n this.transformation.videoEdit(action);\n return this;\n }\n}\nexport { CloudinaryVideo };\n","import { CloudinaryImage } from \"../assets/CloudinaryImage.js\";\nimport { CloudinaryVideo } from \"../assets/CloudinaryVideo.js\";\nclass Cloudinary {\n constructor(cloudinaryConfig) {\n if (cloudinaryConfig) {\n this.cloudinaryConfig = cloudinaryConfig;\n }\n }\n image(publicID) {\n return new CloudinaryImage(publicID, this.cloudinaryConfig.cloud, this.cloudinaryConfig.url);\n }\n video(publicID) {\n return new CloudinaryVideo(publicID, this.cloudinaryConfig.cloud, this.cloudinaryConfig.url);\n }\n setConfig(cloudinaryConfig) {\n this.cloudinaryConfig = cloudinaryConfig;\n return this;\n }\n getConfig() {\n return this.cloudinaryConfig;\n }\n extendConfig() {\n // Future implementation\n }\n}\nexport { Cloudinary };\n"],"names":["DeliveryQualityAction","DeliveryAction","constructor","qualityValue","super","toString","chromaSubSampling","type","this","_actionModel","qualityWithSubSampling","QualifierValue","level","setDelimiter","addQualifier","Qualifier","quantization","val","qualityWithQuantization","static","actionModel","result","chromaValue","toUpperCase","DeliveryColorSpaceFromICCAction","Action","publicId","actionType","qualifierValue","DeliveryColorSpaceAction","mode","ColorSpace","DeliveryDPRAction","dprValue","dprAsFloat","toFloatAsString","dpr","format","DeliveryFormatAction","quality","qualityType","deliveryKey","deliveryType","modelProperty","deliveryTypeValue","getValue","ProgressiveQualifier","FlagQualifier","lossy","addFlag","progressive","getFlagValue","preserveTransparency","formatType","AspectRatioQualifierValue","ResizeSimpleAction","cropType","cropWidth","cropHeight","dimensions","width","height","x","aspectRatio","ratio","relative","regionRelative","getGravityValue","gravity","replace","createIAutoFocusObject","values","split","object","length","avoid","weight","createAutoGravityModel","gravityQualifier","AutoGravity","startsWith","filter","v","gravityType","autoFocus","map","AutoFocus","focusOn","_weight","shouldAvoid","obj","shouldAddWeight","getName","name","getWeight","w","CompassQualifier","createAutoFocusFromModel","autoGravityObjectModel","FocusOnValue","createAutoGravityFromModel","gravityModel","ResizeAdvancedAction","gravityValue","includes","isCompassGravity","compass","createCompassGravityModel","isOcrGravity","isIAutoGravityString","isAutoGravity","hasAutoGravity","focusOnObjects","slice","autoFocusObjects","autoGravityInstance","fallbackGravity","createFocusOnGravityModel","focusOnValues","g","FocusOnGravity","createFocusOnGravity","createGravityModel","fromJson","apply","isCompassGravityModel","CompassGravity","isOcrGravityModel","isAutoGravityModel","str","autoGravity","createFocusOnGravityFromModel","BackgroundQualifier","backgroundValue","addValue","intensity","value","intensityLevel","brightness","brightnessLevel","BaseCommonBackground","_palette","contrast","_contrast","palette","colors","color","prepareColor","BackgroundAutoBorderQualifier","join","BaseGradientBackground","gradientColors","num","_gradientColors","gradientDirection","direction","_gradientDirection","BackgroundBorderGradientQualifier","BackgroundPredominantGradientQualifier","BackgroundAutoPredominantQualifier","getBackgroundValue","background","createContrastPaletteBackgroundModel","backgroundType","createBaseGradientBackgroundModel","border","auto","borderGradient","predominantGradient","predominant","colorStr","Background","createGradientBackground","backgroundModel","createContrastPaletteBackground","ResizePadAction","backgroundQualifier","createBlurredBackgroundModel","Object","assign","createBorderBackgroundModel","createBorderGradientBackgroundModel","createPredominantBackgroundModel","createPredominantGradientBackgroundModel","createColorBackgroundModel","offsetX","offsetY","y","createBlurredBackground","createBackgroundFromModel","zoom","ThumbResizeAction","z","ResizeCropAction","ResizeFillAction","ResizeLimitFillAction","crop","fill","pad","limitFill","thumbnail","actionToJson","keys","error","ActionModel","toJson","arguments","qualifiers","Map","flags","delimiter","actionTag","prepareQualifiers","getActionTag","setActionTag","tag","array","Array","from","entries","forEach","flag","push","sort","mapToSortedArray","qualifier","key","toLowerCase","set","addValueToQualifier","qualifierKey","get","objectFlip","ACTION_TYPE_TO_CROP_MODE_MAP","limitFit","minimumFit","limitPad","minimumPad","ACTION_TYPE_TO_QUALITY_MODE_MAP","autoBest","autoEco","autoGood","autoLow","jpegminiHigh","jpegminiMedium","jpegminiBest","CHROMA_VALUE_TO_CHROMA_MODEL_ENUM","COLOR_SPACE_MODEL_MODE_TO_COLOR_SPACE_MODE_MAP","CHROMA_MODEL_ENUM_TO_CHROMA_VALUE","COLOR_SPACE_MODE_TO_COLOR_SPACE_MODEL_MODE_MAP","CROP_MODE_TO_ACTION_TYPE_MAP","DELIVERY_MODE_TO_ACTION_TYPE_MAP","colorSpace","density","defaultImage","redEye","advancedRedEye","oilPaint","unsharpMask","makeTransparent","fullHd","fullHdWifi","fullHdLean","hdLean","qualifierToJson","_qualifierModel","QualifierModel","hasValue","isArray","concat","match","substr","returnValue","isNaN","parseFloat","indexOf","UnsupportedError","Error","message","createUnsupportedError","ignoreInitialAspectRatio","flagType","flagValue","face","ocr","FormatQualifier","XYCenterGravity","GravityQualifier","args","res","AutoFocusObjects","dir","FocusOnObjects","BackgroundColor","RawAction","raw","Transformation","actions","addAction","action","actionToAdd","addTransformation","tx","a","animated","animatedAction","borderAction","reshape","reshapeAction","resize","resizeAction","roundCorners","roundCornersAction","overlay","overlayAction","underlay","underlayAction","setLayerType","addVariable","variableAction","conditional","conditionAction","effect","effectAction","adjust","rotate","rotateAction","namedTransformation","delivery","deliveryAction","backgroundColor","psdTools","extract","flagQualifier","flagToAdd","customFunction","transcode","videoEdit","json","ImageTransformation","filterOutNonSupportedKeys","userProvidedConfig","validKeys","create","console","warn","ALLOWED_URL_CONFIG","URLConfig","userURLConfig","urlConfig","secure","extend","setCname","cname","setSecureDistribution","secureDistribution","setPrivateCdn","privateCdn","setSignUrl","signUrl","setLongUrlSignature","longUrlSignature","setShorten","shorten","setUseRootPath","useRootPath","setSecure","setForceVersion","forceVersion","stringPad","_targetLength","_padString","targetLength","padString","String","string","_times","times","repeatedString","repeatStringNumTimes","base64Map","encodeVersion","semVer","strResult","paddedStringLength","paddedReversedSemver","reverse","segment","asNumber","reverseVersion","paddedBinary","parseInt","bitString","getNodeVersion","failedVersion","window","process","versions","node","e","char","SEO_TYPES","CloudinaryFile","publicID","cloudConfig","setPublicID","setCloudConfig","setURLConfig","cloudName","apiKey","apiSecret","authToken","setDeliveryType","newType","setSuffix","newSuffix","suffix","setSignature","signature","setVersion","newVersion","version","setAssetType","assetType","sign","toURL","overwriteOptions","createCloudinaryURL","trackedAnalytics","validateAssetForURLCreation","suffixContainsDot","suffixContainsSlash","getResourceType","handleAssetType","handleDeliveryType","hasSuffix","regularSEOType","shortSEOType","getSignature","transformation","prefix","privateCDN","getUrlPrefix","transformationString","shouldForceVersion","publicIDContainsVersion","isUrl","isFileName","getUrlVersion","url","safeURL","encodeURI","analytics","_trackedAnalytics","analyticsOptions","options","sdkSemver","techVersion","sdkCode","feature","accessibility","lazyload","responsive","placeholder","getAnalyticsOptions","defaults","ensureShapeOfTrackedProperties","twoPartVersion","semVerStr","parts","removePatchFromSemver","encodedSDKVersion","encodedTechVersion","featureCode","getSDKAnalyticsSignature","CloudinaryTransformable","conditionalAction","CloudinaryImage","VideoTransformation","CloudinaryVideo","Cloudinary","cloudinaryConfig","image","cloud","video","setConfig","getConfig","extendConfig"],"sourceRoot":""}