@supernova-studio/model 0.46.8 → 0.46.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1981,7 +1981,8 @@ var ThemeOrigin = z85.object({
1981
1981
  });
1982
1982
  var Theme = DesignElementBase.extend(DesignElementBrandedPart.shape).extend({
1983
1983
  origin: ThemeOrigin.optional(),
1984
- overrides: z85.array(ThemeOverride)
1984
+ overrides: z85.array(ThemeOverride),
1985
+ codeName: z85.string()
1985
1986
  });
1986
1987
 
1987
1988
  // src/dsm/elements/utils.ts
@@ -3752,6 +3753,66 @@ var ContentLoaderPayload = z150.object({
3752
3753
  })
3753
3754
  );
3754
3755
 
3756
+ // src/utils/naming.ts
3757
+ function getCodenameFromText(name) {
3758
+ let codeName = removeDiacritics(name);
3759
+ codeName = codeName.replace(/[^a-zA-Z0-9$_ ]+/g, "");
3760
+ codeName = codeName.replace(/^[0-9 ]+/g, "");
3761
+ codeName = toCamelCase(codeName.toLowerCase());
3762
+ codeName = codeName.replace(/ /g, "");
3763
+ if (codeName) {
3764
+ codeName = codeName.charAt(0).toLowerCase() + codeName.slice(1);
3765
+ }
3766
+ return codeName;
3767
+ }
3768
+ function toCamelCase(str) {
3769
+ return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) {
3770
+ if (+match === 0)
3771
+ return "";
3772
+ return index === 0 ? match.toLowerCase() : match.toUpperCase();
3773
+ });
3774
+ }
3775
+ function removeDiacritics(str) {
3776
+ const diacriticsMap = [
3777
+ {
3778
+ base: "A",
3779
+ letters: /[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g
3780
+ },
3781
+ { base: "AA", letters: /[\uA732]/g },
3782
+ { base: "AE", letters: /[\u00C6\u01FC\u01E2]/g },
3783
+ { base: "AO", letters: /[\uA734]/g },
3784
+ { base: "AU", letters: /[\uA736]/g },
3785
+ { base: "AV", letters: /[\uA738\uA73A]/g },
3786
+ { base: "AY", letters: /[\uA73C]/g },
3787
+ {
3788
+ base: "B",
3789
+ letters: /[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g
3790
+ },
3791
+ {
3792
+ base: "C",
3793
+ letters: /[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g
3794
+ },
3795
+ /* ... */
3796
+ {
3797
+ base: "Z",
3798
+ letters: /[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g
3799
+ },
3800
+ {
3801
+ base: "a",
3802
+ letters: /[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g
3803
+ },
3804
+ /* ... */
3805
+ {
3806
+ base: "z",
3807
+ letters: /[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g
3808
+ }
3809
+ ];
3810
+ diacriticsMap.forEach((diacritic) => {
3811
+ str = str.replace(diacritic.letters, diacritic.base);
3812
+ });
3813
+ return str;
3814
+ }
3815
+
3755
3816
  // src/utils/slugify.ts
3756
3817
  import slugifyImplementation from "@sindresorhus/slugify";
3757
3818
  function slugify(str, options) {
@@ -4922,6 +4983,7 @@ export {
4922
4983
  figmaFileStructureToMap,
4923
4984
  filterNonNullish,
4924
4985
  forceUnwrapNullish,
4986
+ getCodenameFromText,
4925
4987
  groupBy,
4926
4988
  isDesignTokenImportModelOfType,
4927
4989
  isDesignTokenOfType,