@tamagui/create-theme 1.61.3 → 1.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/cjs/applyMask.js +13 -25
  2. package/dist/cjs/applyMask.js.map +1 -1
  3. package/dist/cjs/applyMask.native.js +61 -0
  4. package/dist/cjs/applyMask.native.js.map +6 -0
  5. package/dist/cjs/combineMasks.js +24 -38
  6. package/dist/cjs/combineMasks.js.map +1 -1
  7. package/dist/cjs/combineMasks.native.js +45 -0
  8. package/dist/cjs/combineMasks.native.js.map +6 -0
  9. package/dist/cjs/createTheme.js +15 -33
  10. package/dist/cjs/createTheme.js.map +1 -1
  11. package/dist/cjs/createTheme.native.js +56 -0
  12. package/dist/cjs/createTheme.native.js.map +6 -0
  13. package/dist/cjs/createThemeTypes.js +3 -6
  14. package/dist/cjs/createThemeTypes.js.map +1 -1
  15. package/dist/cjs/createThemeTypes.native.js +15 -0
  16. package/dist/cjs/createThemeTypes.native.js.map +6 -0
  17. package/dist/cjs/helpers.js +5 -9
  18. package/dist/cjs/helpers.js.map +1 -1
  19. package/dist/cjs/helpers.native.js +36 -0
  20. package/dist/cjs/helpers.native.js.map +6 -0
  21. package/dist/cjs/index.js +4 -8
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/index.native.js +30 -0
  24. package/dist/cjs/index.native.js.map +6 -0
  25. package/dist/cjs/isMinusZero.js +6 -10
  26. package/dist/cjs/isMinusZero.js.map +1 -1
  27. package/dist/cjs/isMinusZero.native.js +28 -0
  28. package/dist/cjs/isMinusZero.native.js.map +6 -0
  29. package/dist/cjs/masks.js +45 -78
  30. package/dist/cjs/masks.js.map +1 -1
  31. package/dist/cjs/masks.native.js +100 -0
  32. package/dist/cjs/masks.native.js.map +6 -0
  33. package/dist/cjs/tests.js +10 -25
  34. package/dist/cjs/tests.js.map +1 -1
  35. package/dist/cjs/tests.native.js +17 -0
  36. package/dist/cjs/tests.native.js.map +6 -0
  37. package/dist/cjs/themeInfo.js +7 -16
  38. package/dist/cjs/themeInfo.js.map +1 -1
  39. package/dist/cjs/themeInfo.native.js +34 -0
  40. package/dist/cjs/themeInfo.native.js.map +6 -0
  41. package/dist/esm/applyMask.js +7 -14
  42. package/dist/esm/applyMask.js.map +1 -1
  43. package/dist/esm/combineMasks.js +18 -27
  44. package/dist/esm/combineMasks.js.map +1 -1
  45. package/dist/esm/createTheme.js +9 -22
  46. package/dist/esm/createTheme.js.map +1 -1
  47. package/dist/esm/isMinusZero.js +1 -1
  48. package/dist/esm/masks.js +39 -67
  49. package/dist/esm/masks.js.map +1 -1
  50. package/dist/esm/tests.js +9 -21
  51. package/dist/esm/tests.js.map +1 -1
  52. package/dist/esm/themeInfo.js +2 -7
  53. package/dist/esm/themeInfo.js.map +1 -1
  54. package/package.json +3 -3
@@ -2,37 +2,30 @@ import { createTheme } from "./createTheme";
2
2
  import { getThemeInfo, setThemeInfo } from "./themeInfo";
3
3
  function applyMask(theme, mask, options = {}, parentName, nextName) {
4
4
  const info = getThemeInfo(theme, parentName);
5
- if (!info) {
5
+ if (!info)
6
6
  throw new Error(
7
- process.env.NODE_ENV !== "production" ? `No info found for theme, you must pass the theme created by createThemeFromPalette directly to extendTheme` : `\u274C Err2`
7
+ process.env.NODE_ENV !== "production" ? "No info found for theme, you must pass the theme created by createThemeFromPalette directly to extendTheme" : "\u274C Err2"
8
8
  );
9
- }
10
9
  const next = applyMaskStateless(info, mask, options, parentName);
11
- setThemeInfo(next.theme, {
10
+ return setThemeInfo(next.theme, {
12
11
  definition: next.definition,
13
12
  palette: info.palette,
14
13
  name: nextName
15
- });
16
- return next.theme;
14
+ }), next.theme;
17
15
  }
18
16
  function applyMaskStateless(info, mask, options = {}, parentName) {
19
- var _a;
20
17
  const skip = {
21
18
  ...options.skip
22
19
  };
23
- if ((_a = info.options) == null ? void 0 : _a.nonInheritedValues) {
24
- for (const key in info.options.nonInheritedValues) {
20
+ if (info.options?.nonInheritedValues)
21
+ for (const key in info.options.nonInheritedValues)
25
22
  skip[key] = 1;
26
- }
27
- }
28
23
  const maskOptions = {
29
24
  parentName,
30
25
  palette: info.palette,
31
26
  ...options,
32
27
  skip
33
- };
34
- const template = mask.mask(info.definition, maskOptions);
35
- const theme = createTheme(info.palette, template);
28
+ }, template = mask.mask(info.definition, maskOptions), theme = createTheme(info.palette, template);
36
29
  return {
37
30
  ...info,
38
31
  cache: /* @__PURE__ */ new Map(),
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/applyMask.tsx"],
4
- "mappings": "AAAA,SAAS,mBAAmB;AAE5B,SAAoB,cAAc,oBAAoB;AAE/C,SAAS,UACd,OACA,MACA,UAAuB,CAAC,GACxB,YACA,UACO;AACP,QAAM,OAAO,aAAa,OAAO,UAAU;AAC3C,MAAI,CAAC,MAAM;AACT,UAAM,IAAI;AAAA,MACR,QAAQ,IAAI,aAAa,eACrB,+GACA;AAAA,IACN;AAAA,EACF;AAEA,QAAM,OAAO,mBAAmB,MAAM,MAAM,SAAS,UAAU;AAE/D,eAAa,KAAK,OAAO;AAAA,IACvB,YAAY,KAAK;AAAA,IACjB,SAAS,KAAK;AAAA,IACd,MAAM;AAAA,EACR,CAAC;AAED,SAAO,KAAK;AACd;AAEO,SAAS,mBACd,MACA,MACA,UAAuB,CAAC,GACxB,YAGA;AAtCF;AAuCE,QAAM,OAAO;AAAA,IACX,GAAG,QAAQ;AAAA,EACb;AAGA,OAAI,UAAK,YAAL,mBAAc,oBAAoB;AACpC,eAAW,OAAO,KAAK,QAAQ,oBAAoB;AACjD,WAAK,GAAG,IAAI;AAAA,IACd;AAAA,EACF;AAGA,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,SAAS,KAAK;AAAA,IACd,GAAG;AAAA,IACH;AAAA,EACF;AAEA,QAAM,WAAW,KAAK,KAAK,KAAK,YAAY,WAAW;AACvD,QAAM,QAAQ,YAAY,KAAK,SAAS,QAAQ;AAEhD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO,oBAAI,IAAI;AAAA,IACf,YAAY;AAAA,IACZ;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA,SAAS,mBAAmB;AAE5B,SAAoB,cAAc,oBAAoB;AAE/C,SAAS,UACd,OACA,MACA,UAAuB,CAAC,GACxB,YACA,UACO;AACP,QAAM,OAAO,aAAa,OAAO,UAAU;AAC3C,MAAI,CAAC;AACH,UAAM,IAAI;AAAA,MACR,QAAQ,IAAI,aAAa,eACrB,+GACA;AAAA,IACN;AAGF,QAAM,OAAO,mBAAmB,MAAM,MAAM,SAAS,UAAU;AAE/D,sBAAa,KAAK,OAAO;AAAA,IACvB,YAAY,KAAK;AAAA,IACjB,SAAS,KAAK;AAAA,IACd,MAAM;AAAA,EACR,CAAC,GAEM,KAAK;AACd;AAEO,SAAS,mBACd,MACA,MACA,UAAuB,CAAC,GACxB,YAGA;AACA,QAAM,OAAO;AAAA,IACX,GAAG,QAAQ;AAAA,EACb;AAGA,MAAI,KAAK,SAAS;AAChB,eAAW,OAAO,KAAK,QAAQ;AAC7B,WAAK,GAAG,IAAI;AAKhB,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,SAAS,KAAK;AAAA,IACd,GAAG;AAAA,IACH;AAAA,EACF,GAEM,WAAW,KAAK,KAAK,KAAK,YAAY,WAAW,GACjD,QAAQ,YAAY,KAAK,SAAS,QAAQ;AAEhD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,OAAO,oBAAI,IAAI;AAAA,IACf,YAAY;AAAA,IACZ;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -1,33 +1,24 @@
1
1
  import { applyMaskStateless } from "./applyMask";
2
2
  import { getThemeInfo } from "./themeInfo";
3
- const combineMasks = (...masks) => {
4
- const mask = {
5
- name: "combine-mask",
6
- mask: (template, opts) => {
7
- let current = getThemeInfo(template, opts.parentName);
8
- let theme;
9
- for (const mask2 of masks) {
10
- if (!current)
11
- if (process.env.NODE_ENV === "development") {
12
- throw new Error(
13
- `After applying mask, nothing returned: ${current}, for template: ${template} and mask: ${mask2.toString()}, given opts ${JSON.stringify(
14
- opts,
15
- null,
16
- 2
17
- )}`
18
- );
19
- } else {
20
- throw `\u274C`;
21
- }
22
- const next = applyMaskStateless(current, mask2, opts);
23
- current = next;
24
- theme = next.theme;
25
- }
26
- return theme;
3
+ const combineMasks = (...masks) => ({
4
+ name: "combine-mask",
5
+ mask: (template, opts) => {
6
+ let current = getThemeInfo(template, opts.parentName), theme;
7
+ for (const mask2 of masks) {
8
+ if (!current)
9
+ throw process.env.NODE_ENV === "development" ? new Error(
10
+ `After applying mask, nothing returned: ${current}, for template: ${template} and mask: ${mask2.toString()}, given opts ${JSON.stringify(
11
+ opts,
12
+ null,
13
+ 2
14
+ )}`
15
+ ) : "\u274C";
16
+ const next = applyMaskStateless(current, mask2, opts);
17
+ current = next, theme = next.theme;
27
18
  }
28
- };
29
- return mask;
30
- };
19
+ return theme;
20
+ }
21
+ });
31
22
  export {
32
23
  combineMasks
33
24
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/combineMasks.tsx"],
4
- "mappings": "AAAA,SAAS,0BAA0B;AAEnC,SAAS,oBAAoB;AAEtB,MAAM,eAAe,IAAI,UAAwB;AACtD,QAAM,OAAmB;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,CAAC,UAAU,SAAS;AACxB,UAAI,UAAU,aAAa,UAAU,KAAK,UAAU;AACpD,UAAI;AACJ,iBAAWA,SAAQ,OAAO;AACxB,YAAI,CAAC;AACH,cAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,kBAAM,IAAI;AAAA,cACR,0CAA0C,OAAO,mBAAmB,QAAQ,cAAcA,MAAK,SAAS,CAAC,gBAAgB,KAAK;AAAA,gBAC5H;AAAA,gBACA;AAAA,gBACA;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF,OAAO;AACL,kBAAM;AAAA,UACR;AACF,cAAM,OAAO,mBAAmB,SAASA,OAAM,IAAI;AACnD,kBAAU;AACV,gBAAQ,KAAK;AAAA,MACf;AACA,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;",
4
+ "mappings": "AAAA,SAAS,0BAA0B;AAEnC,SAAS,oBAAoB;AAEtB,MAAM,eAAe,IAAI,WACL;AAAA,EACvB,MAAM;AAAA,EACN,MAAM,CAAC,UAAU,SAAS;AACxB,QAAI,UAAU,aAAa,UAAU,KAAK,UAAU,GAChD;AACJ,eAAWA,SAAQ,OAAO;AACxB,UAAI,CAAC;AACH,cAAI,QAAQ,IAAI,aAAa,gBACrB,IAAI;AAAA,UACR,0CAA0C,OAAO,mBAAmB,QAAQ,cAAcA,MAAK,SAAS,CAAC,gBAAgB,KAAK;AAAA,YAC5H;AAAA,YACA;AAAA,YACA;AAAA,UACF,CAAC;AAAA,QACH,IAEM;AAEV,YAAM,OAAO,mBAAmB,SAASA,OAAM,IAAI;AACnD,gBAAU,MACV,QAAQ,KAAK;AAAA,IACf;AACA,WAAO;AAAA,EACT;AACF;",
5
5
  "names": ["mask"]
6
6
  }
@@ -1,43 +1,30 @@
1
1
  import { isMinusZero } from "./isMinusZero";
2
2
  import { setThemeInfo } from "./themeInfo";
3
3
  const identityCache = /* @__PURE__ */ new Map();
4
- function createTheme(palette, definition, options, name, skipCache = false) {
4
+ function createTheme(palette, definition, options, name, skipCache = !1) {
5
5
  const cacheKey = skipCache ? "" : JSON.stringify([name, palette, definition, options]);
6
- if (!skipCache) {
7
- if (identityCache.has(cacheKey)) {
8
- return identityCache.get(cacheKey);
9
- }
10
- }
6
+ if (!skipCache && identityCache.has(cacheKey))
7
+ return identityCache.get(cacheKey);
11
8
  const theme = {
12
9
  ...Object.fromEntries(
13
- Object.entries(definition).map(([key, offset]) => {
14
- return [key, getValue(palette, offset)];
15
- })
10
+ Object.entries(definition).map(([key, offset]) => [key, getValue(palette, offset)])
16
11
  ),
17
- ...options == null ? void 0 : options.nonInheritedValues
12
+ ...options?.nonInheritedValues
18
13
  };
19
- if (cacheKey) {
20
- setThemeInfo(theme, { palette, definition, options, name });
21
- identityCache.set(cacheKey, theme);
22
- }
23
- return theme;
14
+ return cacheKey && (setThemeInfo(theme, { palette, definition, options, name }), identityCache.set(cacheKey, theme)), theme;
24
15
  }
25
16
  const getValue = (palette, value) => {
26
- if (typeof value === "string")
17
+ if (typeof value == "string")
27
18
  return value;
28
- const max = palette.length - 1;
29
- const isPositive = value === 0 ? !isMinusZero(value) : value >= 0;
30
- const next = isPositive ? value : max + value;
31
- const index = Math.min(Math.max(0, next), max);
19
+ const max = palette.length - 1, next = (value === 0 ? !isMinusZero(value) : value >= 0) ? value : max + value, index = Math.min(Math.max(0, next), max);
32
20
  return palette[index];
33
21
  };
34
22
  function addChildren(themes, getChildren) {
35
23
  const out = { ...themes };
36
24
  for (const key in themes) {
37
25
  const subThemes = getChildren(key, themes[key]);
38
- for (const sKey in subThemes) {
26
+ for (const sKey in subThemes)
39
27
  out[`${key}_${sKey}`] = subThemes[sKey];
40
- }
41
28
  }
42
29
  return out;
43
30
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/createTheme.tsx"],
4
- "mappings": "AAMA,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAE7B,MAAM,gBAAgB,oBAAI,IAAI;AAEvB,SAAS,YAId,SACA,YACA,SACA,MACA,YAAY,OAGZ;AACA,QAAM,WAAW,YAAY,KAAK,KAAK,UAAU,CAAC,MAAM,SAAS,YAAY,OAAO,CAAC;AACrF,MAAI,CAAC,WAAW;AACd,QAAI,cAAc,IAAI,QAAQ,GAAG;AAC/B,aAAO,cAAc,IAAI,QAAQ;AAAA,IACnC;AAAA,EACF;AAEA,QAAM,QAAQ;AAAA,IACZ,GAAI,OAAO;AAAA,MACT,OAAO,QAAQ,UAAU,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,MAAM;AAChD,eAAO,CAAC,KAAK,SAAS,SAAS,MAAM,CAAC;AAAA,MACxC,CAAC;AAAA,IACH;AAAA,IACA,GAAG,mCAAS;AAAA,EACd;AAEA,MAAI,UAAU;AACZ,iBAAa,OAAO,EAAE,SAAS,YAAY,SAAS,KAAK,CAAC;AAC1D,kBAAc,IAAI,UAAU,KAAK;AAAA,EACnC;AAEA,SAAO;AACT;AAEA,MAAM,WAAW,CAAC,SAA6B,UAA2B;AACxE,MAAI,OAAO,UAAU;AAAU,WAAO;AACtC,QAAM,MAAM,QAAQ,SAAS;AAC7B,QAAM,aAAa,UAAU,IAAI,CAAC,YAAY,KAAK,IAAI,SAAS;AAChE,QAAM,OAAO,aAAa,QAAQ,MAAM;AACxC,QAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG;AAC7C,SAAO,QAAQ,KAAK;AACtB;AAWO,SAAS,YAId,QACA,aAGA;AACA,QAAM,MAAM,EAAE,GAAG,OAAO;AACxB,aAAW,OAAO,QAAQ;AACxB,UAAM,YAAY,YAAY,KAAK,OAAO,GAAG,CAAC;AAC9C,eAAW,QAAQ,WAAW;AAC5B,UAAI,GAAG,GAAG,IAAI,IAAI,EAAE,IAAI,UAAU,IAAI;AAAA,IACxC;AAAA,EACF;AACA,SAAO;AACT;",
4
+ "mappings": "AAMA,SAAS,mBAAmB;AAC5B,SAAS,oBAAoB;AAE7B,MAAM,gBAAgB,oBAAI,IAAI;AAEvB,SAAS,YAId,SACA,YACA,SACA,MACA,YAAY,IAGZ;AACA,QAAM,WAAW,YAAY,KAAK,KAAK,UAAU,CAAC,MAAM,SAAS,YAAY,OAAO,CAAC;AACrF,MAAI,CAAC,aACC,cAAc,IAAI,QAAQ;AAC5B,WAAO,cAAc,IAAI,QAAQ;AAIrC,QAAM,QAAQ;AAAA,IACZ,GAAI,OAAO;AAAA,MACT,OAAO,QAAQ,UAAU,EAAE,IAAI,CAAC,CAAC,KAAK,MAAM,MACnC,CAAC,KAAK,SAAS,SAAS,MAAM,CAAC,CACvC;AAAA,IACH;AAAA,IACA,GAAG,SAAS;AAAA,EACd;AAEA,SAAI,aACF,aAAa,OAAO,EAAE,SAAS,YAAY,SAAS,KAAK,CAAC,GAC1D,cAAc,IAAI,UAAU,KAAK,IAG5B;AACT;AAEA,MAAM,WAAW,CAAC,SAA6B,UAA2B;AACxE,MAAI,OAAO,SAAU;AAAU,WAAO;AACtC,QAAM,MAAM,QAAQ,SAAS,GAEvB,QADa,UAAU,IAAI,CAAC,YAAY,KAAK,IAAI,SAAS,KACtC,QAAQ,MAAM,OAClC,QAAQ,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,GAAG;AAC7C,SAAO,QAAQ,KAAK;AACtB;AAWO,SAAS,YAId,QACA,aAGA;AACA,QAAM,MAAM,EAAE,GAAG,OAAO;AACxB,aAAW,OAAO,QAAQ;AACxB,UAAM,YAAY,YAAY,KAAK,OAAO,GAAG,CAAC;AAC9C,eAAW,QAAQ;AACjB,UAAI,GAAG,GAAG,IAAI,IAAI,EAAE,IAAI,UAAU,IAAI;AAAA,EAE1C;AACA,SAAO;AACT;",
5
5
  "names": []
6
6
  }
@@ -1,5 +1,5 @@
1
1
  function isMinusZero(value) {
2
- return 1 / value === -Infinity;
2
+ return 1 / value === -1 / 0;
3
3
  }
4
4
  export {
5
5
  isMinusZero
package/dist/esm/masks.js CHANGED
@@ -1,92 +1,64 @@
1
1
  import { objectEntries, objectFromEntries } from "./helpers";
2
2
  import { isMinusZero } from "./isMinusZero";
3
- const createMask = (createMask2) => typeof createMask2 === "function" ? { name: createMask2.name || "unnamed", mask: createMask2 } : createMask2;
4
- const skipMask = {
3
+ const createMask = (createMask2) => typeof createMask2 == "function" ? { name: createMask2.name || "unnamed", mask: createMask2 } : createMask2, skipMask = {
5
4
  name: "skip-mask",
6
5
  mask: (template, opts) => {
7
6
  const { skip } = opts;
8
- const result = Object.fromEntries(
7
+ return Object.fromEntries(
9
8
  Object.entries(template).filter(([k]) => !skip || !(k in skip)).map(([k, v]) => [k, applyOverrides(k, v, opts)])
10
9
  );
11
- return result;
12
10
  }
13
11
  };
14
12
  function applyOverrides(key, value, opts) {
15
13
  if (!opts.override)
16
14
  return value;
17
15
  const override = opts.override[key];
18
- if (typeof override === "undefined")
19
- return value;
20
- if (typeof override === "string")
21
- return value;
22
- if (opts.overrideStrategy === "swap") {
23
- return override;
24
- }
25
- return value;
16
+ return typeof override > "u" || typeof override == "string" ? value : opts.overrideStrategy === "swap" ? override : value;
26
17
  }
27
18
  const createIdentityMask = () => ({
28
19
  name: "identity-mask",
29
20
  mask: (template) => template
30
- });
31
- const createInverseMask = () => {
32
- const mask = {
33
- name: "inverse-mask",
34
- mask: (template, opts) => {
35
- const inversed = objectFromEntries(
36
- objectEntries(template).map(([k, v]) => [k, -v])
37
- );
38
- return skipMask.mask(inversed, opts);
39
- }
40
- };
41
- return mask;
42
- };
43
- const createShiftMask = ({ inverse } = {}, defaultOptions) => {
44
- const mask = {
45
- name: "shift-mask",
46
- mask: (template, opts) => {
47
- const {
48
- override,
49
- overrideStrategy = "shift",
50
- max: maxIn,
51
- palette,
52
- min = 0,
53
- strength = 1
54
- } = { ...defaultOptions, ...opts };
55
- const values = Object.entries(template);
56
- const max = maxIn ?? (palette ? Object.values(palette).length - 1 : Infinity);
57
- const out = {};
58
- for (const [key, value] of values) {
59
- if (typeof value === "string")
60
- continue;
61
- if (typeof (override == null ? void 0 : override[key]) === "number") {
62
- const overrideVal = override[key];
63
- out[key] = overrideStrategy === "shift" ? value + overrideVal : overrideVal;
64
- continue;
65
- } else if (typeof (override == null ? void 0 : override[key]) === "string") {
66
- out[key] = override[key];
67
- continue;
68
- }
69
- const isPositive = value === 0 ? !isMinusZero(value) : value >= 0;
70
- const direction = isPositive ? 1 : -1;
71
- const invert = inverse ? -1 : 1;
72
- const next = value + strength * direction * invert;
73
- const clamped = isPositive ? Math.max(min, Math.min(max, next)) : Math.min(-min, Math.max(-max, next));
74
- out[key] = clamped;
21
+ }), createInverseMask = () => ({
22
+ name: "inverse-mask",
23
+ mask: (template, opts) => {
24
+ const inversed = objectFromEntries(
25
+ objectEntries(template).map(([k, v]) => [k, -v])
26
+ );
27
+ return skipMask.mask(inversed, opts);
28
+ }
29
+ }), createShiftMask = ({ inverse } = {}, defaultOptions) => ({
30
+ name: "shift-mask",
31
+ mask: (template, opts) => {
32
+ const {
33
+ override,
34
+ overrideStrategy = "shift",
35
+ max: maxIn,
36
+ palette,
37
+ min = 0,
38
+ strength = 1
39
+ } = { ...defaultOptions, ...opts }, values = Object.entries(template), max = maxIn ?? (palette ? Object.values(palette).length - 1 : 1 / 0), out = {};
40
+ for (const [key, value] of values) {
41
+ if (typeof value == "string")
42
+ continue;
43
+ if (typeof override?.[key] == "number") {
44
+ const overrideVal = override[key];
45
+ out[key] = overrideStrategy === "shift" ? value + overrideVal : overrideVal;
46
+ continue;
47
+ } else if (typeof override?.[key] == "string") {
48
+ out[key] = override[key];
49
+ continue;
75
50
  }
76
- const skipped = skipMask.mask(out, opts);
77
- return skipped;
51
+ const isPositive = value === 0 ? !isMinusZero(value) : value >= 0, direction = isPositive ? 1 : -1, invert = inverse ? -1 : 1, next = value + strength * direction * invert, clamped = isPositive ? Math.max(min, Math.min(max, next)) : Math.min(-min, Math.max(-max, next));
52
+ out[key] = clamped;
78
53
  }
79
- };
80
- return mask;
81
- };
82
- const createWeakenMask = (defaultOptions) => ({
54
+ return skipMask.mask(out, opts);
55
+ }
56
+ }), createWeakenMask = (defaultOptions) => ({
83
57
  name: "soften-mask",
84
58
  mask: createShiftMask({}, defaultOptions).mask
85
- });
86
- const createSoftenMask = createWeakenMask;
87
- const createStrengthenMask = (defaultOptions) => ({
59
+ }), createSoftenMask = createWeakenMask, createStrengthenMask = (defaultOptions) => ({
88
60
  name: "strengthen-mask",
89
- mask: createShiftMask({ inverse: true }, defaultOptions).mask
61
+ mask: createShiftMask({ inverse: !0 }, defaultOptions).mask
90
62
  });
91
63
  export {
92
64
  createIdentityMask,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/masks.tsx"],
4
- "mappings": "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",
4
+ "mappings": "AACA,SAAS,eAAe,yBAAyB;AACjD,SAAS,mBAAmB;AAErB,MAAM,aAAa,CACxBA,gBAEA,OAAOA,eAAe,aAClB,EAAE,MAAMA,YAAW,QAAQ,WAAW,MAAMA,YAAW,IACvDA,aAEO,WAAuB;AAAA,EAClC,MAAM;AAAA,EACN,MAAM,CAAC,UAAU,SAAS;AACxB,UAAM,EAAE,KAAK,IAAI;AAOjB,WANe,OAAO;AAAA,MACpB,OAAO,QAAQ,QAAQ,EACpB,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,KAAK,EACrC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,eAAe,GAAG,GAAG,IAAI,CAAC,CAAC;AAAA,IACpD;AAAA,EAGF;AACF;AAEA,SAAS,eAAe,KAAa,OAAwB,MAAmB;AAC9E,MAAI,CAAC,KAAK;AAAU,WAAO;AAC3B,QAAM,WAAW,KAAK,SAAS,GAAG;AAElC,SADI,OAAO,WAAa,OACpB,OAAO,YAAa,WAAiB,QACrC,KAAK,qBAAqB,SACrB,WAEF;AACT;AAEO,MAAM,qBAAqB,OAAmB;AAAA,EACnD,MAAM;AAAA,EACN,MAAM,CAAC,aAAa;AACtB,IAEa,oBAAoB,OACN;AAAA,EACvB,MAAM;AAAA,EACN,MAAM,CAAC,UAAU,SAAS;AACxB,UAAM,WAAW;AAAA,MACf,cAAc,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,IACjD;AACA,WAAO,SAAS,KAAK,UAAU,IAAI;AAAA,EACrC;AACF,IAMW,kBAAkB,CAC7B,EAAE,QAAQ,IAAsB,CAAC,GACjC,oBAEyB;AAAA,EACvB,MAAM;AAAA,EACN,MAAM,CAAC,UAAU,SAAS;AACxB,UAAM;AAAA,MACJ;AAAA,MACA,mBAAmB;AAAA,MACnB,KAAK;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,WAAW;AAAA,IACb,IAAI,EAAE,GAAG,gBAAgB,GAAG,KAAK,GAC3B,SAAS,OAAO,QAAQ,QAAQ,GAChC,MAAM,UAAU,UAAU,OAAO,OAAO,OAAO,EAAE,SAAS,IAAI,QAC9D,MAAM,CAAC;AACb,eAAW,CAAC,KAAK,KAAK,KAAK,QAAQ;AACjC,UAAI,OAAO,SAAU;AAAU;AAC/B,UAAI,OAAO,WAAW,GAAG,KAAM,UAAU;AACvC,cAAM,cAAc,SAAS,GAAG;AAChC,YAAI,GAAG,IAAI,qBAAqB,UAAU,QAAQ,cAAc;AAChE;AAAA,MACF,WAAW,OAAO,WAAW,GAAG,KAAM,UAAU;AAC9C,YAAI,GAAG,IAAI,SAAS,GAAG;AACvB;AAAA,MACF;AACA,YAAM,aAAa,UAAU,IAAI,CAAC,YAAY,KAAK,IAAI,SAAS,GAC1D,YAAY,aAAa,IAAI,IAC7B,SAAS,UAAU,KAAK,GACxB,OAAO,QAAQ,WAAW,YAAY,QACtC,UAAU,aACZ,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,CAAC,IACjC,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAEvC,UAAI,GAAG,IAAI;AAAA,IACb;AAGA,WADgB,SAAS,KAAK,KAAK,IAAI;AAAA,EAEzC;AACF,IAIW,mBAAmB,CAAC,oBAA8C;AAAA,EAC7E,MAAM;AAAA,EACN,MAAM,gBAAgB,CAAC,GAAG,cAAc,EAAE;AAC5C,IAEa,mBAAmB,kBAEnB,uBAAuB,CAAC,oBAA8C;AAAA,EACjF,MAAM;AAAA,EACN,MAAM,gBAAgB,EAAE,SAAS,GAAK,GAAG,cAAc,EAAE;AAC3D;",
5
5
  "names": ["createMask"]
6
6
  }
package/dist/esm/tests.js CHANGED
@@ -2,29 +2,17 @@ import { applyMask } from "./applyMask";
2
2
  import { createTheme } from "./createTheme";
3
3
  import { createStrengthenMask, createWeakenMask } from "./masks";
4
4
  if (process.env.NODE_ENV === "development") {
5
- const palette = ["0", "1", "2", "3", "-3", "-2", "-1", "-0"];
6
- const template = { bg: 1, fg: -1 };
7
- const stongerMask = createStrengthenMask();
8
- const weakerMask = createWeakenMask();
9
- const theme = createTheme(palette, template);
10
- if (theme.bg !== "1")
11
- throw `\u274C`;
12
- if (theme.fg !== "-1")
13
- throw `\u274C`;
5
+ const palette = ["0", "1", "2", "3", "-3", "-2", "-1", "-0"], template = { bg: 1, fg: -1 }, stongerMask = createStrengthenMask(), weakerMask = createWeakenMask(), theme = createTheme(palette, template);
6
+ if (theme.bg !== "1" || theme.fg !== "-1")
7
+ throw "\u274C";
14
8
  const str = applyMask(theme, stongerMask);
15
- if (str.bg !== "0")
16
- throw `\u274C`;
17
- if (str.fg !== "-0")
18
- throw `\u274C`;
9
+ if (str.bg !== "0" || str.fg !== "-0")
10
+ throw "\u274C";
19
11
  const weak = applyMask(theme, weakerMask);
20
- if (weak.bg !== "2")
21
- throw `\u274C`;
22
- if (weak.fg !== "-2")
23
- throw `\u274C`;
12
+ if (weak.bg !== "2" || weak.fg !== "-2")
13
+ throw "\u274C";
24
14
  const weak2 = applyMask(theme, weakerMask, { strength: 2 });
25
- if (weak2.bg !== "3")
26
- throw `\u274C`;
27
- if (weak2.fg !== "-3")
28
- throw `\u274C`;
15
+ if (weak2.bg !== "3" || weak2.fg !== "-3")
16
+ throw "\u274C";
29
17
  }
30
18
  //# sourceMappingURL=tests.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/tests.tsx"],
4
- "mappings": "AAAA,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB,wBAAwB;AAGvD,IAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAM,UAAU,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI;AAC3D,QAAM,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG;AAEjC,QAAM,cAAc,qBAAqB;AACzC,QAAM,aAAa,iBAAiB;AAEpC,QAAM,QAAQ,YAAY,SAAS,QAAQ;AAC3C,MAAI,MAAM,OAAO;AAAK,UAAM;AAC5B,MAAI,MAAM,OAAO;AAAM,UAAM;AAE7B,QAAM,MAAM,UAAU,OAAO,WAAW;AACxC,MAAI,IAAI,OAAO;AAAK,UAAM;AAC1B,MAAI,IAAI,OAAO;AAAM,UAAM;AAE3B,QAAM,OAAO,UAAU,OAAO,UAAU;AACxC,MAAI,KAAK,OAAO;AAAK,UAAM;AAC3B,MAAI,KAAK,OAAO;AAAM,UAAM;AAE5B,QAAM,QAAQ,UAAU,OAAO,YAAY,EAAE,UAAU,EAAE,CAAC;AAC1D,MAAI,MAAM,OAAO;AAAK,UAAM;AAC5B,MAAI,MAAM,OAAO;AAAM,UAAM;AAC/B;",
4
+ "mappings": "AAAA,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB,wBAAwB;AAGvD,IAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAM,UAAU,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,GACrD,WAAW,EAAE,IAAI,GAAG,IAAI,GAAG,GAE3B,cAAc,qBAAqB,GACnC,aAAa,iBAAiB,GAE9B,QAAQ,YAAY,SAAS,QAAQ;AAE3C,MADI,MAAM,OAAO,OACb,MAAM,OAAO;AAAM,UAAM;AAE7B,QAAM,MAAM,UAAU,OAAO,WAAW;AAExC,MADI,IAAI,OAAO,OACX,IAAI,OAAO;AAAM,UAAM;AAE3B,QAAM,OAAO,UAAU,OAAO,UAAU;AAExC,MADI,KAAK,OAAO,OACZ,KAAK,OAAO;AAAM,UAAM;AAE5B,QAAM,QAAQ,UAAU,OAAO,YAAY,EAAE,UAAU,EAAE,CAAC;AAE1D,MADI,MAAM,OAAO,OACb,MAAM,OAAO;AAAM,UAAM;AAC/B;",
5
5
  "names": []
6
6
  }
@@ -1,14 +1,9 @@
1
- const THEME_INFO = /* @__PURE__ */ new Map();
2
- const getThemeInfo = (theme, name) => {
3
- return THEME_INFO.get(name || JSON.stringify(theme));
4
- };
5
- const setThemeInfo = (theme, info) => {
1
+ const THEME_INFO = /* @__PURE__ */ new Map(), getThemeInfo = (theme, name) => THEME_INFO.get(name || JSON.stringify(theme)), setThemeInfo = (theme, info) => {
6
2
  const next = {
7
3
  ...info,
8
4
  cache: /* @__PURE__ */ new Map()
9
5
  };
10
- THEME_INFO.set(info.name || JSON.stringify(theme), next);
11
- THEME_INFO.set(JSON.stringify(info.definition), next);
6
+ THEME_INFO.set(info.name || JSON.stringify(theme), next), THEME_INFO.set(JSON.stringify(info.definition), next);
12
7
  };
13
8
  export {
14
9
  getThemeInfo,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/themeInfo.tsx"],
4
- "mappings": "AAcA,MAAM,aAAa,oBAAI,IAAuB;AAEvC,MAAM,eAAe,CAC1B,OACA,SAC0B;AAC1B,SAAO,WAAW,IAAI,QAAQ,KAAK,UAAU,KAAK,CAAC;AACrD;AAEO,MAAM,eAAe,CAC1B,OACA,SAGG;AACH,QAAM,OAAO;AAAA,IACX,GAAG;AAAA,IACH,OAAO,oBAAI,IAAI;AAAA,EACjB;AACA,aAAW,IAAI,KAAK,QAAQ,KAAK,UAAU,KAAK,GAAG,IAAI;AACvD,aAAW,IAAI,KAAK,UAAU,KAAK,UAAU,GAAG,IAAI;AACtD;",
4
+ "mappings": "AAcA,MAAM,aAAa,oBAAI,IAAuB,GAEjC,eAAe,CAC1B,OACA,SAEO,WAAW,IAAI,QAAQ,KAAK,UAAU,KAAK,CAAC,GAGxC,eAAe,CAC1B,OACA,SAGG;AACH,QAAM,OAAO;AAAA,IACX,GAAG;AAAA,IACH,OAAO,oBAAI,IAAI;AAAA,EACjB;AACA,aAAW,IAAI,KAAK,QAAQ,KAAK,UAAU,KAAK,GAAG,IAAI,GACvD,WAAW,IAAI,KAAK,UAAU,KAAK,UAAU,GAAG,IAAI;AACtD;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/create-theme",
3
- "version": "1.61.3",
3
+ "version": "1.62.0",
4
4
  "types": "./types/index.d.ts",
5
5
  "main": "dist/cjs",
6
6
  "module": "dist/esm",
@@ -28,10 +28,10 @@
28
28
  }
29
29
  },
30
30
  "dependencies": {
31
- "@tamagui/web": "1.61.3"
31
+ "@tamagui/web": "1.62.0"
32
32
  },
33
33
  "devDependencies": {
34
- "@tamagui/build": "1.61.3"
34
+ "@tamagui/build": "1.62.0"
35
35
  },
36
36
  "publishConfig": {
37
37
  "access": "public"