{"version":3,"file":"index.js","sources":["../../../../src/packages/core/variant/variant-id.class.ts"],"sourcesContent":["export type UmbObjectWithVariantProperties = {\r\n\tculture: string | null;\r\n\tsegment: string | null;\r\n};\r\n\r\n/**\r\n *\r\n * @param variant\r\n */\r\nexport function variantPropertiesObjectToString(variant: UmbObjectWithVariantProperties): string {\r\n\t// Currently a direct copy of the toString method of variantId.\r\n\treturn (variant.culture || UMB_INVARIANT_CULTURE) + (variant.segment ? `_${variant.segment}` : '');\r\n}\r\n\r\nexport const UMB_INVARIANT_CULTURE = 'invariant';\r\n\r\n/**\r\n * An identifier representing a Variant. This is at current state a culture and a segment.\r\n * The identifier is not specific for ContentType Variants, but is used for many type of identification of a culture and a segment. One case is any property of a ContentType can be resolved into a VariantId depending on their structural settings such as Vary by Culture and Vary by Segmentation.\r\n */\r\nexport class UmbVariantId {\r\n\tpublic static Create(variantData: UmbObjectWithVariantProperties): UmbVariantId {\r\n\t\treturn Object.freeze(new UmbVariantId(variantData.culture, variantData.segment));\r\n\t}\r\n\r\n\tpublic static CreateFromPartial(variantData: Partial): UmbVariantId {\r\n\t\treturn Object.freeze(new UmbVariantId(variantData.culture, variantData.segment));\r\n\t}\r\n\r\n\tpublic static CreateInvariant(): UmbVariantId {\r\n\t\treturn Object.freeze(new UmbVariantId(null, null));\r\n\t}\r\n\r\n\tpublic static FromString(str: string): UmbVariantId {\r\n\t\tconst split = str.split('_');\r\n\t\tconst culture = split[0] === UMB_INVARIANT_CULTURE ? null : split[0];\r\n\t\tconst segment = split[1] ?? null;\r\n\t\treturn Object.freeze(new UmbVariantId(culture, segment));\r\n\t}\r\n\r\n\tpublic readonly culture: string | null = null;\r\n\tpublic readonly segment: string | null = null;\r\n\r\n\tconstructor(culture?: string | null, segment?: string | null) {\r\n\t\tthis.culture = (culture === UMB_INVARIANT_CULTURE ? null : culture) ?? null;\r\n\t\tthis.segment = segment ?? null;\r\n\t}\r\n\r\n\tpublic compare(obj: UmbObjectWithVariantProperties): boolean {\r\n\t\treturn this.equal(new UmbVariantId(obj.culture, obj.segment));\r\n\t}\r\n\r\n\tpublic equal(variantId: UmbVariantId): boolean {\r\n\t\treturn this.culture === variantId.culture && this.segment === variantId.segment;\r\n\t}\r\n\r\n\tpublic toString(): string {\r\n\t\t// Currently a direct copy of the VariantPropertiesObjectToString method const.\r\n\t\treturn (this.culture || UMB_INVARIANT_CULTURE) + (this.segment ? `_${this.segment}` : '');\r\n\t}\r\n\r\n\tpublic toCultureString(): string {\r\n\t\treturn this.culture || UMB_INVARIANT_CULTURE;\r\n\t}\r\n\r\n\tpublic toSegmentString(): string {\r\n\t\treturn this.segment || '';\r\n\t}\r\n\r\n\tpublic isCultureInvariant(): boolean {\r\n\t\treturn this.culture === null;\r\n\t}\r\n\r\n\tpublic isSegmentInvariant(): boolean {\r\n\t\treturn this.segment === null;\r\n\t}\r\n\r\n\tpublic isInvariant(): boolean {\r\n\t\treturn this.culture === null && this.segment === null;\r\n\t}\r\n\r\n\tpublic toObject(): UmbObjectWithVariantProperties {\r\n\t\treturn { culture: this.culture, segment: this.segment };\r\n\t}\r\n\r\n\tpublic toSegmentInvariant(): UmbVariantId {\r\n\t\treturn Object.freeze(new UmbVariantId(this.culture, null));\r\n\t}\r\n\tpublic toCultureInvariant(): UmbVariantId {\r\n\t\treturn Object.freeze(new UmbVariantId(null, this.segment));\r\n\t}\r\n\tpublic toVariant(varyByCulture?: boolean, varyBySegment?: boolean): UmbVariantId {\r\n\t\treturn Object.freeze(new UmbVariantId(varyByCulture ? this.culture : null, varyBySegment ? this.segment : null));\r\n\t}\r\n\r\n\t// TODO: needs localization option:\r\n\t// TODO: Consider if this should be handled else where, it does not seem like the responsibility of this class, since it contains wordings:\r\n\tpublic toDifferencesString(\r\n\t\tvariantId: UmbVariantId,\r\n\t\tinvariantMessage: string = 'Invariant',\r\n\t\tunsegmentedMessage: string = 'Unsegmented',\r\n\t): string {\r\n\t\tlet r = '';\r\n\r\n\t\tif (variantId.culture !== this.culture) {\r\n\t\t\tr = invariantMessage;\r\n\t\t}\r\n\r\n\t\tif (variantId.segment !== this.segment) {\r\n\t\t\tr = (r !== '' ? ' ' : '') + unsegmentedMessage;\r\n\t\t}\r\n\r\n\t\treturn r;\r\n\t}\r\n}\r\n"],"names":["variantPropertiesObjectToString","variant","UMB_INVARIANT_CULTURE","UmbVariantId","culture","segment","variantData","str","split","obj","variantId","varyByCulture","varyBySegment","invariantMessage","unsegmentedMessage"],"mappings":"AASO,SAASA,EAAgCC,GAAiD;AAExF,UAAAA,EAAQ,WAAWC,MAA0BD,EAAQ,UAAU,IAAIA,EAAQ,OAAO,KAAK;AAChG;AAEO,MAAMC,IAAwB;AAM9B,MAAMC,EAAa;AAAA,EAuBzB,YAAYC,GAAyBC,GAAyB;AAH9D,SAAgB,UAAyB,MACzC,KAAgB,UAAyB,MAGxC,KAAK,WAAWD,MAAYF,IAAwB,OAAOE,MAAY,MACvE,KAAK,UAAUC,KAAW;AAAA,EAAA;AAAA,EAxB3B,OAAc,OAAOC,GAA2D;AACxE,WAAA,OAAO,OAAO,IAAIH,EAAaG,EAAY,SAASA,EAAY,OAAO,CAAC;AAAA,EAAA;AAAA,EAGhF,OAAc,kBAAkBA,GAAoE;AAC5F,WAAA,OAAO,OAAO,IAAIH,EAAaG,EAAY,SAASA,EAAY,OAAO,CAAC;AAAA,EAAA;AAAA,EAGhF,OAAc,kBAAgC;AAC7C,WAAO,OAAO,OAAO,IAAIH,EAAa,MAAM,IAAI,CAAC;AAAA,EAAA;AAAA,EAGlD,OAAc,WAAWI,GAA2B;AAC7C,UAAAC,IAAQD,EAAI,MAAM,GAAG,GACrBH,IAAUI,EAAM,CAAC,MAAMN,IAAwB,OAAOM,EAAM,CAAC,GAC7DH,IAAUG,EAAM,CAAC,KAAK;AAC5B,WAAO,OAAO,OAAO,IAAIL,EAAaC,GAASC,CAAO,CAAC;AAAA,EAAA;AAAA,EAWjD,QAAQI,GAA8C;AACrD,WAAA,KAAK,MAAM,IAAIN,EAAaM,EAAI,SAASA,EAAI,OAAO,CAAC;AAAA,EAAA;AAAA,EAGtD,MAAMC,GAAkC;AAC9C,WAAO,KAAK,YAAYA,EAAU,WAAW,KAAK,YAAYA,EAAU;AAAA,EAAA;AAAA,EAGlE,WAAmB;AAEjB,YAAA,KAAK,WAAWR,MAA0B,KAAK,UAAU,IAAI,KAAK,OAAO,KAAK;AAAA,EAAA;AAAA,EAGhF,kBAA0B;AAChC,WAAO,KAAK,WAAWA;AAAA,EAAA;AAAA,EAGjB,kBAA0B;AAChC,WAAO,KAAK,WAAW;AAAA,EAAA;AAAA,EAGjB,qBAA8B;AACpC,WAAO,KAAK,YAAY;AAAA,EAAA;AAAA,EAGlB,qBAA8B;AACpC,WAAO,KAAK,YAAY;AAAA,EAAA;AAAA,EAGlB,cAAuB;AAC7B,WAAO,KAAK,YAAY,QAAQ,KAAK,YAAY;AAAA,EAAA;AAAA,EAG3C,WAA2C;AACjD,WAAO,EAAE,SAAS,KAAK,SAAS,SAAS,KAAK,QAAQ;AAAA,EAAA;AAAA,EAGhD,qBAAmC;AACzC,WAAO,OAAO,OAAO,IAAIC,EAAa,KAAK,SAAS,IAAI,CAAC;AAAA,EAAA;AAAA,EAEnD,qBAAmC;AACzC,WAAO,OAAO,OAAO,IAAIA,EAAa,MAAM,KAAK,OAAO,CAAC;AAAA,EAAA;AAAA,EAEnD,UAAUQ,GAAyBC,GAAuC;AAChF,WAAO,OAAO,OAAO,IAAIT,EAAaQ,IAAgB,KAAK,UAAU,MAAMC,IAAgB,KAAK,UAAU,IAAI,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA,EAKzG,oBACNF,GACAG,IAA2B,aAC3BC,IAA6B,eACpB;AACT,QAAI,IAAI;AAEJ,WAAAJ,EAAU,YAAY,KAAK,YAC1B,IAAAG,IAGDH,EAAU,YAAY,KAAK,YACzB,KAAA,MAAM,KAAK,MAAM,MAAMI,IAGtB;AAAA,EAAA;AAET;"}