@contember/utilities 1.2.0-rc.9 → 1.2.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 (86) hide show
  1. package/dist/development/assert-types/Predicates.js +8 -0
  2. package/dist/development/assert-types/Predicates.js.map +1 -1
  3. package/dist/development/class-name/listClassName.js.map +1 -1
  4. package/dist/development/class-name/themeClassName.js.map +1 -1
  5. package/dist/development/css-utilities/px.js +1 -1
  6. package/dist/development/css-utilities/px.js.map +1 -1
  7. package/dist/development/deprecate/deprecate.js +1 -1
  8. package/dist/development/deprecate/deprecate.js.map +1 -1
  9. package/dist/development/deprecate/fallback.js +11 -0
  10. package/dist/development/deprecate/fallback.js.map +1 -0
  11. package/dist/development/functional/extend.js +33 -0
  12. package/dist/development/functional/extend.js.map +1 -0
  13. package/dist/development/functional/range.js +7 -0
  14. package/dist/development/functional/range.js.map +1 -0
  15. package/dist/development/index.js +9 -3
  16. package/dist/development/index.js.map +1 -1
  17. package/dist/production/assert-types/Predicates.js +8 -0
  18. package/dist/production/assert-types/Predicates.js.map +1 -1
  19. package/dist/production/class-name/listClassName.js.map +1 -1
  20. package/dist/production/class-name/themeClassName.js.map +1 -1
  21. package/dist/production/css-utilities/px.js +1 -1
  22. package/dist/production/css-utilities/px.js.map +1 -1
  23. package/dist/production/deprecate/deprecate.js +1 -1
  24. package/dist/production/deprecate/deprecate.js.map +1 -1
  25. package/dist/production/deprecate/fallback.js +11 -0
  26. package/dist/production/deprecate/fallback.js.map +1 -0
  27. package/dist/production/functional/extend.js +33 -0
  28. package/dist/production/functional/extend.js.map +1 -0
  29. package/dist/production/functional/range.js +7 -0
  30. package/dist/production/functional/range.js.map +1 -0
  31. package/dist/production/index.js +9 -3
  32. package/dist/production/index.js.map +1 -1
  33. package/dist/types/assert-types/Predicates.d.ts +2 -0
  34. package/dist/types/assert-types/Predicates.d.ts.map +1 -1
  35. package/dist/types/class-name/listClassName.d.ts +2 -1
  36. package/dist/types/class-name/listClassName.d.ts.map +1 -1
  37. package/dist/types/class-name/themeClassName.d.ts.map +1 -1
  38. package/dist/types/class-name/types.d.ts +2 -3
  39. package/dist/types/class-name/types.d.ts.map +1 -1
  40. package/dist/types/deprecate/deprecate.d.ts +2 -2
  41. package/dist/types/deprecate/deprecate.d.ts.map +1 -1
  42. package/dist/types/deprecate/fallback.d.ts +2 -0
  43. package/dist/types/deprecate/fallback.d.ts.map +1 -0
  44. package/dist/types/deprecate/index.d.ts +1 -1
  45. package/dist/types/deprecate/index.d.ts.map +1 -1
  46. package/dist/types/deprecate/types.d.ts +1 -1
  47. package/dist/types/deprecate/types.d.ts.map +1 -1
  48. package/dist/types/functional/extend.d.ts +5 -0
  49. package/dist/types/functional/extend.d.ts.map +1 -0
  50. package/dist/types/functional/index.d.ts +2 -0
  51. package/dist/types/functional/index.d.ts.map +1 -1
  52. package/dist/types/functional/range.d.ts +9 -0
  53. package/dist/types/functional/range.d.ts.map +1 -0
  54. package/dist/types/tsconfig.tsbuildinfo +1 -1
  55. package/dist/types/types/Any.d.ts +4 -0
  56. package/dist/types/types/Any.d.ts.map +1 -0
  57. package/dist/types/types/Narrow.d.ts +11 -0
  58. package/dist/types/types/Narrow.d.ts.map +1 -0
  59. package/dist/types/types/PolymorphicRefs.d.ts +9 -0
  60. package/dist/types/types/PolymorphicRefs.d.ts.map +1 -1
  61. package/dist/types/types/index.d.ts +3 -1
  62. package/dist/types/types/index.d.ts.map +1 -1
  63. package/package.json +3 -3
  64. package/src/assert-types/Predicates.ts +25 -19
  65. package/src/class-name/listClassName.ts +2 -1
  66. package/src/class-name/themeClassName.ts +0 -1
  67. package/src/class-name/types.ts +2 -3
  68. package/src/css-utilities/px.ts +1 -1
  69. package/src/deprecate/deprecate.ts +5 -5
  70. package/src/deprecate/fallback.ts +7 -0
  71. package/src/deprecate/index.ts +1 -1
  72. package/src/deprecate/types.ts +1 -1
  73. package/src/functional/extend.ts +37 -0
  74. package/src/functional/index.ts +2 -0
  75. package/src/functional/range.ts +11 -0
  76. package/src/types/Any.ts +3 -0
  77. package/src/types/Narrow.ts +21 -0
  78. package/src/types/PolymorphicRefs.ts +10 -0
  79. package/src/types/index.ts +4 -0
  80. package/dist/development/deprecate/currentOrDeprecated.js +0 -20
  81. package/dist/development/deprecate/currentOrDeprecated.js.map +0 -1
  82. package/dist/production/deprecate/currentOrDeprecated.js +0 -20
  83. package/dist/production/deprecate/currentOrDeprecated.js.map +0 -1
  84. package/dist/types/deprecate/currentOrDeprecated.d.ts +0 -35
  85. package/dist/types/deprecate/currentOrDeprecated.d.ts.map +0 -1
  86. package/src/deprecate/currentOrDeprecated.ts +0 -51
@@ -28,6 +28,9 @@ function isString(value) {
28
28
  function isSlugString(value) {
29
29
  return isNonEmptyString(value) && /^[a-z0-9_-]+$/.test(value);
30
30
  }
31
+ function isSingleWordString(value) {
32
+ return isNonEmptyString(value) && value.indexOf(" ") === -1;
33
+ }
31
34
  function isNonEmptyString(value) {
32
35
  return isString(value) && value.length > 0;
33
36
  }
@@ -63,6 +66,9 @@ function isArrayOfMembersSatisfyingFactory(predicate) {
63
66
  return Array.isArray(value) && value.every(predicate);
64
67
  };
65
68
  }
69
+ function isNonEmptyArray(value) {
70
+ return Array.isArray(value) && value.length > 0;
71
+ }
66
72
  function isHTMLElement(value) {
67
73
  return value instanceof HTMLElement;
68
74
  }
@@ -78,6 +84,7 @@ export {
78
84
  isDefined,
79
85
  isFalse,
80
86
  isHTMLElement,
87
+ isNonEmptyArray,
81
88
  isNonEmptyString,
82
89
  isNonEmptyTrimmedEndString,
83
90
  isNonEmptyTrimmedStartString,
@@ -91,6 +98,7 @@ export {
91
98
  isObject,
92
99
  isOneOfFactory,
93
100
  isPlainObject,
101
+ isSingleWordString,
94
102
  isSlugString,
95
103
  isString,
96
104
  isTrue,
@@ -1 +1 @@
1
- {"version":3,"file":"Predicates.js","sources":["../../../src/assert-types/Predicates.ts"],"sourcesContent":["import { Predicate, SlugString, UnionOfPredicateTypes } from './types'\n\nexport function isNull(value: unknown): value is null {\n return value === null\n}\nexport function isNotNull<T>(value: unknown): value is T {\n return value !== null\n}\nexport function isUndefined(value: unknown): value is undefined {\n return value === undefined\n}\nexport function isDefined<T>(value: unknown): value is Exclude<T, undefined> {\n return value !== undefined\n}\nexport function isNotNullish<T>(value: T): value is Exclude<T, null | undefined> {\n return value != null\n}\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean'\n}\nexport function isTrue(value: unknown): value is true {\n return value === true\n}\nexport function isFalse(value: unknown): value is false {\n return value === false\n}\nexport function isString(value: unknown): value is string {\n return typeof value === 'string'\n}\nexport function isSlugString(value: unknown): value is SlugString {\n\treturn isNonEmptyString(value) && /^[a-z0-9_-]+$/.test(value)\n}\nexport function isNonEmptyString(value: unknown): value is string {\n return isString(value) && value.length > 0\n}\nfunction isNonEmptyTrimmedStringFactory(trim: 'trim' | 'trimStart' | 'trimEnd' = 'trim') {\n return function isNonEmptyString(value: unknown): value is string {\n return isString(value) && value[trim]().length > 0\n }\n}\nexport const isNonEmptyTrimmedString = isNonEmptyTrimmedStringFactory()\nexport const isNonEmptyTrimmedStartString = isNonEmptyTrimmedStringFactory('trimStart')\nexport const isNonEmptyTrimmedEndString = isNonEmptyTrimmedStringFactory('trimEnd')\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number' && value === value\n}\nexport function isNonNegativeNumber(value: unknown): value is number {\n return isNumber(value) && value >= 0\n}\nexport function isNumericString(value: string): value is string {\n return isString(value) && !isNaN(parseFloat(value))\n}\nexport function isOneOfFactory<U, T = any>(\n\tmembers: T extends Array<U> | ReadonlyArray<U> ? T : never,\n): (value: unknown) => value is U {\n\treturn function isOneOfFactoryProduct(value: unknown): value is U {\n\t\treturn members.includes(value as U)\n\t}\n}\nexport function satisfiesOneOfFactory<T extends Array<Predicate<any, any>>>(\n\t...predicates: T\n): Predicate<unknown, UnionOfPredicateTypes<T>> {\n\treturn (value: any): value is UnionOfPredicateTypes<T> => {\n\t\treturn predicates.some(predicate => predicate(value))\n\t}\n}\nexport function isArrayOfMembersSatisfyingFactory<T>(\n\tpredicate: (value: unknown) => value is T,\n): (value: unknown) => value is Array<T> {\n\treturn function isArrayOfMembersSatisfyingProduct(value: unknown): value is Array<T> {\n\t\treturn Array.isArray(value) && value.every(predicate)\n\t}\n}\nexport function isHTMLElement(value: unknown): value is HTMLElement {\n return value instanceof HTMLElement\n}\nexport function isObject(value: unknown): value is Object {\n return typeof value === 'object' && value !== null\n}\nexport function isPlainObject<T extends Record<string, unknown>>(value: unknown): value is T {\n return isObject(value) && value.constructor === Object\n}\n"],"names":["isNonEmptyString"],"mappings":"AAEO,SAAS,OAAO,OAA+B;AACpD,SAAO,UAAU;AACnB;AACO,SAAS,UAAa,OAA4B;AACvD,SAAO,UAAU;AACnB;AACO,SAAS,YAAY,OAAoC;AAC9D,SAAO,UAAU;AACnB;AACO,SAAS,UAAa,OAAgD;AAC3E,SAAO,UAAU;AACnB;AACO,SAAS,aAAgB,OAAiD;AAC/E,SAAO,SAAS;AAClB;AACO,SAAS,UAAU,OAAkC;AAC1D,SAAO,OAAO,UAAU;AAC1B;AACO,SAAS,OAAO,OAA+B;AACpD,SAAO,UAAU;AACnB;AACO,SAAS,QAAQ,OAAgC;AACtD,SAAO,UAAU;AACnB;AACO,SAAS,SAAS,OAAiC;AACxD,SAAO,OAAO,UAAU;AAC1B;AACO,SAAS,aAAa,OAAqC;AACjE,SAAO,iBAAiB,KAAK,KAAK,gBAAgB,KAAK,KAAK;AAC7D;AACO,SAAS,iBAAiB,OAAiC;AAChE,SAAO,SAAS,KAAK,KAAK,MAAM,SAAS;AAC3C;AACA,SAAS,+BAA+B,OAAyC,QAAQ;AAChF,SAAA,SAASA,kBAAiB,OAAiC;AAChE,WAAO,SAAS,KAAK,KAAK,MAAM,IAAI,IAAI,SAAS;AAAA,EAAA;AAErD;AACO,MAAM,0BAA0B,+BAA+B;AACzD,MAAA,+BAA+B,+BAA+B,WAAW;AACzE,MAAA,6BAA6B,+BAA+B,SAAS;AAC3E,SAAS,SAAS,OAAiC;AACjD,SAAA,OAAO,UAAU,YAAY,UAAU;AAChD;AACO,SAAS,oBAAoB,OAAiC;AAC5D,SAAA,SAAS,KAAK,KAAK,SAAS;AACrC;AACO,SAAS,gBAAgB,OAAgC;AAC9D,SAAO,SAAS,KAAK,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC;AACpD;AACO,SAAS,eACf,SACiC;AAC1B,SAAA,SAAS,sBAAsB,OAA4B;AAC1D,WAAA,QAAQ,SAAS,KAAU;AAAA,EAAA;AAEpC;AACO,SAAS,yBACZ,YAC4C;AAC/C,SAAO,CAAC,UAAkD;AACzD,WAAO,WAAW,KAAK,CAAa,cAAA,UAAU,KAAK,CAAC;AAAA,EAAA;AAEtD;AACO,SAAS,kCACf,WACwC;AACjC,SAAA,SAAS,kCAAkC,OAAmC;AACpF,WAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,SAAS;AAAA,EAAA;AAEtD;AACO,SAAS,cAAc,OAAsC;AAClE,SAAO,iBAAiB;AAC1B;AACO,SAAS,SAAS,OAAiC;AACjD,SAAA,OAAO,UAAU,YAAY,UAAU;AAChD;AACO,SAAS,cAAiD,OAA4B;AAC3F,SAAO,SAAS,KAAK,KAAK,MAAM,gBAAgB;AAClD;"}
1
+ {"version":3,"file":"Predicates.js","sources":["../../../src/assert-types/Predicates.ts"],"sourcesContent":["import { Predicate, SlugString, UnionOfPredicateTypes } from './types'\n\nexport function isNull(value: unknown): value is null {\n\treturn value === null\n}\nexport function isNotNull<T>(value: unknown): value is T {\n\treturn value !== null\n}\nexport function isUndefined(value: unknown): value is undefined {\n\treturn value === undefined\n}\nexport function isDefined<T>(value: unknown): value is Exclude<T, undefined> {\n\treturn value !== undefined\n}\nexport function isNotNullish<T>(value: T): value is Exclude<T, null | undefined> {\n\treturn value != null\n}\nexport function isBoolean(value: unknown): value is boolean {\n\treturn typeof value === 'boolean'\n}\nexport function isTrue(value: unknown): value is true {\n\treturn value === true\n}\nexport function isFalse(value: unknown): value is false {\n\treturn value === false\n}\nexport function isString(value: unknown): value is string {\n\treturn typeof value === 'string'\n}\nexport function isSlugString(value: unknown): value is SlugString {\n\treturn isNonEmptyString(value) && /^[a-z0-9_-]+$/.test(value)\n}\nexport function isSingleWordString(value: unknown): value is string {\n\treturn isNonEmptyString(value) && value.indexOf(' ') === -1\n}\nexport function isNonEmptyString(value: unknown): value is string {\n\treturn isString(value) && value.length > 0\n}\nfunction isNonEmptyTrimmedStringFactory(trim: 'trim' | 'trimStart' | 'trimEnd' = 'trim') {\n\treturn function isNonEmptyString(value: unknown): value is string {\n\t\treturn isString(value) && value[trim]().length > 0\n\t}\n}\nexport const isNonEmptyTrimmedString = isNonEmptyTrimmedStringFactory()\nexport const isNonEmptyTrimmedStartString = isNonEmptyTrimmedStringFactory('trimStart')\nexport const isNonEmptyTrimmedEndString = isNonEmptyTrimmedStringFactory('trimEnd')\nexport function isNumber(value: unknown): value is number {\n\treturn typeof value === 'number' && value === value\n}\nexport function isNonNegativeNumber(value: unknown): value is number {\n\treturn isNumber(value) && value >= 0\n}\nexport function isNumericString(value: string): value is string {\n\treturn isString(value) && !isNaN(parseFloat(value))\n}\nexport function isOneOfFactory<U, T = any>(\n\tmembers: T extends Array<U> | ReadonlyArray<U> ? T : never,\n): (value: unknown) => value is U {\n\treturn function isOneOfFactoryProduct(value: unknown): value is U {\n\t\treturn members.includes(value as U)\n\t}\n}\nexport function satisfiesOneOfFactory<T extends Array<Predicate<any, any>>>(\n\t...predicates: T\n): Predicate<unknown, UnionOfPredicateTypes<T>> {\n\treturn (value: any): value is UnionOfPredicateTypes<T> => {\n\t\treturn predicates.some(predicate => predicate(value))\n\t}\n}\nexport function isArrayOfMembersSatisfyingFactory<T>(\n\tpredicate: (value: unknown) => value is T,\n): (value: unknown) => value is Array<T> {\n\treturn function isArrayOfMembersSatisfyingProduct(value: unknown): value is Array<T> {\n\t\treturn Array.isArray(value) && value.every(predicate)\n\t}\n}\nexport function isNonEmptyArray<T>(value: unknown): value is [T, ...T[]] {\n\treturn Array.isArray(value) && value.length > 0\n}\nexport function isHTMLElement(value: unknown): value is HTMLElement {\n\treturn value instanceof HTMLElement\n}\nexport function isObject(value: unknown): value is Object {\n\treturn typeof value === 'object' && value !== null\n}\nexport function isPlainObject<T extends Record<string, unknown>>(value: unknown): value is T {\n\treturn isObject(value) && value.constructor === Object\n}\n"],"names":["isNonEmptyString"],"mappings":"AAEO,SAAS,OAAO,OAA+B;AACrD,SAAO,UAAU;AAClB;AACO,SAAS,UAAa,OAA4B;AACxD,SAAO,UAAU;AAClB;AACO,SAAS,YAAY,OAAoC;AAC/D,SAAO,UAAU;AAClB;AACO,SAAS,UAAa,OAAgD;AAC5E,SAAO,UAAU;AAClB;AACO,SAAS,aAAgB,OAAiD;AAChF,SAAO,SAAS;AACjB;AACO,SAAS,UAAU,OAAkC;AAC3D,SAAO,OAAO,UAAU;AACzB;AACO,SAAS,OAAO,OAA+B;AACrD,SAAO,UAAU;AAClB;AACO,SAAS,QAAQ,OAAgC;AACvD,SAAO,UAAU;AAClB;AACO,SAAS,SAAS,OAAiC;AACzD,SAAO,OAAO,UAAU;AACzB;AACO,SAAS,aAAa,OAAqC;AACjE,SAAO,iBAAiB,KAAK,KAAK,gBAAgB,KAAK,KAAK;AAC7D;AACO,SAAS,mBAAmB,OAAiC;AACnE,SAAO,iBAAiB,KAAK,KAAK,MAAM,QAAQ,GAAG,MAAM;AAC1D;AACO,SAAS,iBAAiB,OAAiC;AACjE,SAAO,SAAS,KAAK,KAAK,MAAM,SAAS;AAC1C;AACA,SAAS,+BAA+B,OAAyC,QAAQ;AACjF,SAAA,SAASA,kBAAiB,OAAiC;AACjE,WAAO,SAAS,KAAK,KAAK,MAAM,IAAI,IAAI,SAAS;AAAA,EAAA;AAEnD;AACO,MAAM,0BAA0B,+BAA+B;AACzD,MAAA,+BAA+B,+BAA+B,WAAW;AACzE,MAAA,6BAA6B,+BAA+B,SAAS;AAC3E,SAAS,SAAS,OAAiC;AAClD,SAAA,OAAO,UAAU,YAAY,UAAU;AAC/C;AACO,SAAS,oBAAoB,OAAiC;AAC7D,SAAA,SAAS,KAAK,KAAK,SAAS;AACpC;AACO,SAAS,gBAAgB,OAAgC;AAC/D,SAAO,SAAS,KAAK,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC;AACnD;AACO,SAAS,eACf,SACiC;AAC1B,SAAA,SAAS,sBAAsB,OAA4B;AAC1D,WAAA,QAAQ,SAAS,KAAU;AAAA,EAAA;AAEpC;AACO,SAAS,yBACZ,YAC4C;AAC/C,SAAO,CAAC,UAAkD;AACzD,WAAO,WAAW,KAAK,CAAa,cAAA,UAAU,KAAK,CAAC;AAAA,EAAA;AAEtD;AACO,SAAS,kCACf,WACwC;AACjC,SAAA,SAAS,kCAAkC,OAAmC;AACpF,WAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,SAAS;AAAA,EAAA;AAEtD;AACO,SAAS,gBAAmB,OAAsC;AACxE,SAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS;AAC/C;AACO,SAAS,cAAc,OAAsC;AACnE,SAAO,iBAAiB;AACzB;AACO,SAAS,SAAS,OAAiC;AAClD,SAAA,OAAO,UAAU,YAAY,UAAU;AAC/C;AACO,SAAS,cAAiD,OAA4B;AAC5F,SAAO,SAAS,KAAK,KAAK,MAAM,gBAAgB;AACjD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"listClassName.js","sources":["../../../src/class-name/listClassName.ts"],"sourcesContent":["import { deduplicateClassName } from './deduplicateClassName'\nimport { flatClassNameList } from './flatClassNameList'\n\n/**\n * Combines a list of class names into a single string, even nested\n *\n * @param list - List of class names\n * @returns Combined class names as string\n */\nexport function listClassName(list: (string | false | null | undefined)[]) {\n\treturn deduplicateClassName(flatClassNameList(list)).join(' ')\n}\n"],"names":[],"mappings":";;AASO,SAAS,cAAc,MAA6C;AAC1E,SAAO,qBAAqB,kBAAkB,IAAI,CAAC,EAAE,KAAK,GAAG;AAC9D;"}
1
+ {"version":3,"file":"listClassName.js","sources":["../../../src/class-name/listClassName.ts"],"sourcesContent":["import { deduplicateClassName } from './deduplicateClassName'\nimport { flatClassNameList } from './flatClassNameList'\nimport { NestedClassName } from './types'\n\n/**\n * Combines a list of class names into a single string, even nested\n *\n * @param list - List of class names\n * @returns Combined class names as string\n */\nexport function listClassName(list: NestedClassName) {\n\treturn deduplicateClassName(flatClassNameList(list)).join(' ')\n}\n"],"names":[],"mappings":";;AAUO,SAAS,cAAc,MAAuB;AACpD,SAAO,qBAAqB,kBAAkB,IAAI,CAAC,EAAE,KAAK,GAAG;AAC9D;"}
@@ -1 +1 @@
1
- {"version":3,"file":"themeClassName.js","sources":["../../../src/class-name/themeClassName.ts"],"sourcesContent":["import { KebabCase } from 'type-fest'\nimport { colorSchemeClassName } from './colorSchemeClassName'\nimport { ThemeContentClassName, ThemeControlsClassName } from './types'\n\n/**\n * Returns a string with a content theme class name, prefixed with `theme-` and suffixed with `-content`\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param contentTheme - Theme name basis for content\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A content theme class name\n *\n * @see {@link controlsThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const contentThemeClassName = contentThemeClassName('default')\n * // ^ 'theme-default-content:hover'\n * const dangerOnMouseOverTheme = controlsThemeClassName('danger', ':hover')\n * // ^ 'theme-danger-controls:hover'\n *\n * return (\n * \t<div className={`${colorScheme} ${contentThemeClassName}`}>\n * \t\t<button className={`${colorScheme} ${dangerOnMouseOverTheme}`}>Delete</button>\n * \t</div>\n * )\n * ```\n */\nexport function contentThemeClassName<\n\tContentTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\ttheme: ContentTheme | null | undefined,\n\tstate?: State | null | undefined,\n) {\n\treturn theme ? `theme-${theme}-content${state ?? ''}` as ThemeContentClassName<ContentTheme, State> : undefined\n}\n\n/**\n * Returns a string with a controls theme class name, prefixed with `theme-` and suffixed with `-controls`\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param theme - Theme name basis for controls\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A controls theme class name\n *\n * @see {@link contentThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const contentThemeClassName = contentThemeClassName('default')\n * // ^ 'theme-default-content:hover'\n * const dangerOnMouseOverTheme = controlsThemeClassName('danger', ':hover')\n * // ^ 'theme-danger-controls:hover'\n *\n * return (\n * \t<div className={`${colorScheme} ${contentThemeClassName}`}>\n * \t\t<button className={`${colorScheme} ${dangerOnMouseOverTheme}`}>Delete</button>\n * \t</div>\n * )\n * ```\n */\nexport function controlsThemeClassName<\n\tControlsTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\ttheme: ControlsTheme | null | undefined,\n\tstate?: State | null | undefined,\n) {\n\treturn theme ? `theme-${theme}-controls${state ?? ''}` as ThemeControlsClassName<ControlsTheme, State> : undefined\n}\n\n/**\n * Returns a tuple with a content theme class name and a controls theme class name, prefixed with `theme-` and suffixed with `-content` and `-controls` respectively\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param theme - Theme name basis for content and controls\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A tuple with a content theme class name and a controls theme class name\n *\n * @see {@link contentThemeClassName}\n * @see {@link controlsThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const errorTheme = themeClassName('danger').join(' ')\n * // ^ 'theme-danger-content theme-danger-controls'\n *\n * return (\n * \t<div className={`${colorScheme} ${errorTheme}`}>File not found</div>\n * )\n * ```\n */\nexport function themeClassName<\n\tTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\t\ttheme: Theme | null | undefined,\n\t\tstate?: State | null | undefined,\n) {\n\treturn [\n\t\tcontentThemeClassName(theme, state),\n\t\tcontrolsThemeClassName(theme, state),\n\t] as const\n}\n"],"names":[],"mappings":"AAgCgB,SAAA,sBAIf,OACA,OACC;AACD,SAAO,QAAQ,SAAS,gBAAgB,SAAS,OAAqD;AACvG;AA8BgB,SAAA,uBAIf,OACA,OACC;AACD,SAAO,QAAQ,SAAS,iBAAiB,SAAS,OAAuD;AAC1G;AA2BgB,SAAA,eAId,OACA,OACA;AACM,SAAA;AAAA,IACN,sBAAsB,OAAO,KAAK;AAAA,IAClC,uBAAuB,OAAO,KAAK;AAAA,EAAA;AAErC;"}
1
+ {"version":3,"file":"themeClassName.js","sources":["../../../src/class-name/themeClassName.ts"],"sourcesContent":["import { KebabCase } from 'type-fest'\nimport { ThemeContentClassName, ThemeControlsClassName } from './types'\n\n/**\n * Returns a string with a content theme class name, prefixed with `theme-` and suffixed with `-content`\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param contentTheme - Theme name basis for content\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A content theme class name\n *\n * @see {@link controlsThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const contentThemeClassName = contentThemeClassName('default')\n * // ^ 'theme-default-content:hover'\n * const dangerOnMouseOverTheme = controlsThemeClassName('danger', ':hover')\n * // ^ 'theme-danger-controls:hover'\n *\n * return (\n * \t<div className={`${colorScheme} ${contentThemeClassName}`}>\n * \t\t<button className={`${colorScheme} ${dangerOnMouseOverTheme}`}>Delete</button>\n * \t</div>\n * )\n * ```\n */\nexport function contentThemeClassName<\n\tContentTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\ttheme: ContentTheme | null | undefined,\n\tstate?: State | null | undefined,\n) {\n\treturn theme ? `theme-${theme}-content${state ?? ''}` as ThemeContentClassName<ContentTheme, State> : undefined\n}\n\n/**\n * Returns a string with a controls theme class name, prefixed with `theme-` and suffixed with `-controls`\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param theme - Theme name basis for controls\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A controls theme class name\n *\n * @see {@link contentThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const contentThemeClassName = contentThemeClassName('default')\n * // ^ 'theme-default-content:hover'\n * const dangerOnMouseOverTheme = controlsThemeClassName('danger', ':hover')\n * // ^ 'theme-danger-controls:hover'\n *\n * return (\n * \t<div className={`${colorScheme} ${contentThemeClassName}`}>\n * \t\t<button className={`${colorScheme} ${dangerOnMouseOverTheme}`}>Delete</button>\n * \t</div>\n * )\n * ```\n */\nexport function controlsThemeClassName<\n\tControlsTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\ttheme: ControlsTheme | null | undefined,\n\tstate?: State | null | undefined,\n) {\n\treturn theme ? `theme-${theme}-controls${state ?? ''}` as ThemeControlsClassName<ControlsTheme, State> : undefined\n}\n\n/**\n * Returns a tuple with a content theme class name and a controls theme class name, prefixed with `theme-` and suffixed with `-content` and `-controls` respectively\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param theme - Theme name basis for content and controls\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A tuple with a content theme class name and a controls theme class name\n *\n * @see {@link contentThemeClassName}\n * @see {@link controlsThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const errorTheme = themeClassName('danger').join(' ')\n * // ^ 'theme-danger-content theme-danger-controls'\n *\n * return (\n * \t<div className={`${colorScheme} ${errorTheme}`}>File not found</div>\n * )\n * ```\n */\nexport function themeClassName<\n\tTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\t\ttheme: Theme | null | undefined,\n\t\tstate?: State | null | undefined,\n) {\n\treturn [\n\t\tcontentThemeClassName(theme, state),\n\t\tcontrolsThemeClassName(theme, state),\n\t] as const\n}\n"],"names":[],"mappings":"AA+BgB,SAAA,sBAIf,OACA,OACC;AACD,SAAO,QAAQ,SAAS,gBAAgB,SAAS,OAAqD;AACvG;AA8BgB,SAAA,uBAIf,OACA,OACC;AACD,SAAO,QAAQ,SAAS,iBAAiB,SAAS,OAAuD;AAC1G;AA2BgB,SAAA,eAId,OACA,OACA;AACM,SAAA;AAAA,IACN,sBAAsB,OAAO,KAAK;AAAA,IAClC,uBAAuB,OAAO,KAAK;AAAA,EAAA;AAErC;"}
@@ -1,5 +1,5 @@
1
1
  function px(value) {
2
- return typeof value === "number" && !isNaN(value) ? value + "px" : "";
2
+ return typeof value === "number" && !(isNaN(value) || value === Infinity || value === -Infinity) ? value + "px" : "";
3
3
  }
4
4
  export {
5
5
  px
@@ -1 +1 @@
1
- {"version":3,"file":"px.js","sources":["../../../src/css-utilities/px.ts"],"sourcesContent":["export function px<V extends number>(value: V): `${V}px`;\nexport function px<V extends false>(value: V): '';\nexport function px<V extends null>(value: V): '';\nexport function px<V extends undefined>(value: V): '';\n// NOTE: Next overload fixes:\n// The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible.\nexport function px<V extends number | false | null | undefined>(value?: V): string;\n/**\n * Converts a value to a string in the format '10px'\n *\n * @param value - The value to convert to a string.\n * @returns Returns a string in the format '10px' or '' when value is falsy.\n */\nexport function px<V extends number | false | null | undefined>(value?: V): string {\n\treturn typeof value === 'number' && !isNaN(value) ? value + 'px' : ''\n}\n"],"names":[],"mappings":"AAaO,SAAS,GAAgD,OAAmB;AAC3E,SAAA,OAAO,UAAU,YAAY,CAAC,MAAM,KAAK,IAAI,QAAQ,OAAO;AACpE;"}
1
+ {"version":3,"file":"px.js","sources":["../../../src/css-utilities/px.ts"],"sourcesContent":["export function px<V extends number>(value: V): `${V}px`;\nexport function px<V extends false>(value: V): '';\nexport function px<V extends null>(value: V): '';\nexport function px<V extends undefined>(value: V): '';\n// NOTE: Next overload fixes:\n// The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible.\nexport function px<V extends number | false | null | undefined>(value?: V): string;\n/**\n * Converts a value to a string in the format '10px'\n *\n * @param value - The value to convert to a string.\n * @returns Returns a string in the format '10px' or '' when value is falsy.\n */\nexport function px<V extends number | false | null | undefined>(value?: V): string {\n\treturn typeof value === 'number' && !(isNaN(value) || value === Infinity || value === -Infinity) ? value + 'px' : ''\n}\n"],"names":[],"mappings":"AAaO,SAAS,GAAgD,OAAmB;AAClF,SAAO,OAAO,UAAU,YAAY,EAAE,MAAM,KAAK,KAAK,UAAU,YAAY,UAAU,aAAa,QAAQ,OAAO;AACnH;"}
@@ -1,4 +1,4 @@
1
- function deprecate(removal, assertion, deprecated, replacement) {
1
+ function deprecate(removal, condition, deprecated, replacement) {
2
2
  }
3
3
  export {
4
4
  deprecate
@@ -1 +1 @@
1
- {"version":3,"file":"deprecate.js","sources":["../../../src/deprecate/deprecate.ts"],"sourcesContent":["import { SemverString } from './types'\n\n/**\n * Logs a deprecation warning if the assertion is `false`.\n * @internal\n *\n * @param removal - Version when the deprecated feature will be removed\n * @param assertion - Condition that must be true to avoid the deprecation warning\n * @param deprecated - Name of the deprecated feature\n * @param replacement - Name of the feature that replaces the deprecated feature\n *\n * @example\n * ```ts\n * const { visible } = props\n * deprecate(visible !== 'default', '1.3.0', '\"default\"', '\"hidden\"')\n * // Logs: Use of \"default\" is deprecated and might be removed in the next release. Use \"hidden\" instead.\n * ```\n */\nexport function deprecate(removal: SemverString, assertion: boolean, deprecated: string, replacement: string): void {\n\tif (assertion === false) {\n\t\tif (import.meta.env.DEV) {\n\t\t\tconst shouldThrow = Boolean(import.meta.env.VITE_CONTEMBER_ADMIN_STRICT_DEPRECATIONS)\n\n\t\t\tif (shouldThrow) {\n\t\t\t\tthrow new Error(`Support for ${deprecated} was planned to be removed in the ${removal} release. Replace it with ${replacement} instead.`)\n\t\t\t} else {\n\t\t\t\tconsole.warn(`Use of ${deprecated} is deprecated and might be removed in the next release. Use ${replacement} instead.`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"AAkBO,SAAS,UAAU,SAAuB,WAAoB,YAAoB,aAA2B;AAYpH;"}
1
+ {"version":3,"file":"deprecate.js","sources":["../../../src/deprecate/deprecate.ts"],"sourcesContent":["import { SemverString } from './types'\n\n/**\n * Logs a deprecation warning if the assertion is `false`.\n * @internal\n *\n * @param removal - Version when the deprecated feature will be removed\n * @param condition - Condition under which the deprecation warning will be logged\n * @param deprecated - Name of the deprecated feature\n * @param replacement - Name of the feature that replaces the deprecated feature\n *\n * @example\n * ```ts\n * const { visible } = props\n * deprecate(visible !== 'default', '1.3.0', '\"default\"', '\"hidden\"')\n * // Logs: Use of \"default\" is deprecated and might be removed in the next release. Use \"hidden\" instead.\n * ```\n */\nexport function deprecate(removal: SemverString, condition: boolean, deprecated: string, replacement: string | null): void {\n\tif (condition === true) {\n\t\tif (import.meta.env.DEV) {\n\t\t\tconst shouldThrow = Boolean(import.meta.env.VITE_CONTEMBER_ADMIN_STRICT_DEPRECATIONS)\n\n\t\t\tif (shouldThrow) {\n\t\t\t\tthrow new Error(`Support for ${deprecated} was planned to be removed in the ${removal} release.${replacement ? ` Replace it with ${replacement} instead.` : 'Remove it.'}`)\n\t\t\t} else {\n\t\t\t\tconsole.warn(`Use of ${deprecated} is deprecated and might be removed in the next release.${replacement ? ` Use ${replacement} instead.` : 'There is no replacement.'}`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"AAkBO,SAAS,UAAU,SAAuB,WAAoB,YAAoB,aAAkC;AAY3H;"}
@@ -0,0 +1,11 @@
1
+ function fallback(current, condition, mapped) {
2
+ if (condition === true) {
3
+ return mapped;
4
+ } else {
5
+ return current;
6
+ }
7
+ }
8
+ export {
9
+ fallback
10
+ };
11
+ //# sourceMappingURL=fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback.js","sources":["../../../src/deprecate/fallback.ts"],"sourcesContent":["export function fallback<R>(current: R, condition: boolean, mapped: R): R {\n\tif (condition === true) {\n\t\treturn mapped\n\t} else {\n\t\treturn current\n\t}\n}\n"],"names":[],"mappings":"AAAgB,SAAA,SAAY,SAAY,WAAoB,QAAc;AACzE,MAAI,cAAc,MAAM;AAChB,WAAA;AAAA,EAAA,OACD;AACC,WAAA;AAAA,EACR;AACD;"}
@@ -0,0 +1,33 @@
1
+ function extend(base, extension) {
2
+ base = Object.freeze(base);
3
+ extension = Object.freeze(extension);
4
+ if (typeof base !== typeof extension) {
5
+ return extension === void 0 ? base : extension;
6
+ } else {
7
+ if (typeof base === "object" && typeof extension === "object") {
8
+ if (Array.isArray(base) && Array.isArray(extension)) {
9
+ return Object.freeze([...base, ...extension]);
10
+ } else if (base && extension) {
11
+ if ("$$typeof" in extension) {
12
+ return extension;
13
+ }
14
+ const keys = [.../* @__PURE__ */ new Set([
15
+ ...Object.keys(base),
16
+ ...Object.keys(extension)
17
+ ])];
18
+ const entries = keys.map(
19
+ (key) => [key, extend(base[key], extension[key])]
20
+ );
21
+ return Object.freeze(Object.fromEntries(entries));
22
+ } else {
23
+ return extension;
24
+ }
25
+ } else {
26
+ return extension;
27
+ }
28
+ }
29
+ }
30
+ export {
31
+ extend
32
+ };
33
+ //# sourceMappingURL=extend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend.js","sources":["../../../src/functional/extend.ts"],"sourcesContent":["/** @internal */\nexport function extend<B, E>(\n\tbase: B,\n\textension: E,\n) {\n\tbase = Object.freeze(base)\n\textension = Object.freeze(extension)\n\n\tif (typeof base !== typeof extension) {\n\t\treturn extension === undefined ? base : extension\n\t} else {\n\t\tif (typeof base === 'object' && typeof extension === 'object') {\n\t\t\tif (Array.isArray(base) && Array.isArray(extension)) {\n\t\t\t\treturn Object.freeze([...base, ...extension])\n\t\t\t} else if (base && extension) {\n\t\t\t\tif ('$$typeof' in extension) {\n\t\t\t\t\treturn extension\n\t\t\t\t}\n\n\t\t\t\tconst keys = [...new Set([\n\t\t\t\t\t...Object.keys(base),\n\t\t\t\t\t...Object.keys(extension),\n\t\t\t\t])]\n\n\t\t\t\tconst entries: [string, unknown][] = keys.map(\n\t\t\t\t\tkey => [key, extend((base as Record<string, unknown>)[key], (extension as Record<string, unknown>)[key])],\n\t\t\t\t)\n\n\t\t\t\treturn Object.freeze(Object.fromEntries(entries))\n\t\t\t} else {\n\t\t\t\treturn extension\n\t\t\t}\n\t\t} else {\n\t\t\treturn extension\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"AACgB,SAAA,OACf,MACA,WACC;AACM,SAAA,OAAO,OAAO,IAAI;AACb,cAAA,OAAO,OAAO,SAAS;AAE/B,MAAA,OAAO,SAAS,OAAO,WAAW;AAC9B,WAAA,cAAc,SAAY,OAAO;AAAA,EAAA,OAClC;AACN,QAAI,OAAO,SAAS,YAAY,OAAO,cAAc,UAAU;AAC9D,UAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,SAAS,GAAG;AACpD,eAAO,OAAO,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;AAAA,MAAA,WAClC,QAAQ,WAAW;AAC7B,YAAI,cAAc,WAAW;AACrB,iBAAA;AAAA,QACR;AAEA,cAAM,OAAO,CAAC,GAAG,oBAAI,IAAI;AAAA,UACxB,GAAG,OAAO,KAAK,IAAI;AAAA,UACnB,GAAG,OAAO,KAAK,SAAS;AAAA,QACxB,CAAA,CAAC;AAEF,cAAM,UAA+B,KAAK;AAAA,UACzC,CAAA,QAAO,CAAC,KAAK,OAAQ,KAAiC,GAAG,GAAI,UAAsC,GAAG,CAAC,CAAC;AAAA,QAAA;AAGzG,eAAO,OAAO,OAAO,OAAO,YAAY,OAAO,CAAC;AAAA,MAAA,OAC1C;AACC,eAAA;AAAA,MACR;AAAA,IAAA,OACM;AACC,aAAA;AAAA,IACR;AAAA,EACD;AACD;"}
@@ -0,0 +1,7 @@
1
+ function range(start, end, step = 1) {
2
+ return Array.from({ length: Math.floor(Math.abs(end - start) / step) + 1 }, (_, i) => start + i * (end > start ? 1 : -1) * Math.abs(step));
3
+ }
4
+ export {
5
+ range
6
+ };
7
+ //# sourceMappingURL=range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.js","sources":["../../../src/functional/range.ts"],"sourcesContent":["\n/**\n * Get a list of numbers between start and end, inclusive, with the given step size (defaulting to 1)\n * @param start - The starting number.\n * @param end - The ending number.\n * @param step - The step size, optional, defaults to 1.\n * @returns A list of numbers between start and end, inclusive, with the given step size (defaulting to 1)\n */\nexport function range(start: number, end: number, step = 1): number[] {\n\treturn Array.from({ length: Math.floor(Math.abs(end - start) / step) + 1 }, (_, i) => start + i * (end > start ? 1 : -1) * Math.abs(step))\n}\n"],"names":[],"mappings":"AAQO,SAAS,MAAM,OAAe,KAAa,OAAO,GAAa;AAC9D,SAAA,MAAM,KAAK,EAAE,QAAQ,KAAK,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,QAAQ,KAAK,MAAM,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC;AAC1I;"}
@@ -1,5 +1,5 @@
1
1
  import { AssertionError } from "./assert-types/AssertionError.js";
2
- import { isArrayOfMembersSatisfyingFactory, isBoolean, isDefined, isFalse, isHTMLElement, isNonEmptyString, isNonEmptyTrimmedEndString, isNonEmptyTrimmedStartString, isNonEmptyTrimmedString, isNonNegativeNumber, isNotNull, isNotNullish, isNull, isNumber, isNumericString, isObject, isOneOfFactory, isPlainObject, isSlugString, isString, isTrue, isUndefined, satisfiesOneOfFactory } from "./assert-types/Predicates.js";
2
+ import { isArrayOfMembersSatisfyingFactory, isBoolean, isDefined, isFalse, isHTMLElement, isNonEmptyArray, isNonEmptyString, isNonEmptyTrimmedEndString, isNonEmptyTrimmedStartString, isNonEmptyTrimmedString, isNonNegativeNumber, isNotNull, isNotNullish, isNull, isNumber, isNumericString, isObject, isOneOfFactory, isPlainObject, isSingleWordString, isSlugString, isString, isTrue, isUndefined, satisfiesOneOfFactory } from "./assert-types/Predicates.js";
3
3
  import { assert } from "./assert-types/assert.js";
4
4
  import { assertNever } from "./assert-types/assertNever.js";
5
5
  import { colorSchemeClassName, isColorSchemeClassName } from "./class-name/colorSchemeClassName.js";
@@ -11,8 +11,8 @@ import { listClassName } from "./class-name/listClassName.js";
11
11
  import { stateClassName } from "./class-name/stateClassName.js";
12
12
  import { contentThemeClassName, controlsThemeClassName, themeClassName } from "./class-name/themeClassName.js";
13
13
  import { px } from "./css-utilities/px.js";
14
- import { currentOrDeprecated } from "./deprecate/currentOrDeprecated.js";
15
14
  import { deprecate } from "./deprecate/deprecate.js";
15
+ import { fallback } from "./deprecate/fallback.js";
16
16
  import { dataAttribute } from "./dom/dataAttribute.js";
17
17
  import { getMatchingParentElement } from "./dom/getMatchingParentElement.js";
18
18
  import { getSizeFromResizeObserverEntryFactory } from "./dom/getSizeFromResizeObserverEntry.js";
@@ -20,8 +20,10 @@ import { isScrollable } from "./dom/isScrollable.js";
20
20
  import { parseTransformMatrix } from "./dom/parseTransformMatrix.js";
21
21
  import { stateDataAttributes } from "./dom/stateDataAttributes.js";
22
22
  import { svgSizeProps } from "./dom/svgSizeProps.js";
23
+ import { extend } from "./functional/extend.js";
23
24
  import { omit } from "./functional/omit.js";
24
25
  import { pick } from "./functional/pick.js";
26
+ import { range } from "./functional/range.js";
25
27
  import { setHasOneOf } from "./functional/setHasOneOf.js";
26
28
  import { capitalize } from "./string-utilities/capitalize.js";
27
29
  import { toKebabCase } from "./string-utilities/kebabCase.js";
@@ -36,10 +38,11 @@ export {
36
38
  colorSchemeClassName,
37
39
  contentThemeClassName,
38
40
  controlsThemeClassName,
39
- currentOrDeprecated,
40
41
  dataAttribute,
41
42
  deduplicateClassName,
42
43
  deprecate,
44
+ extend,
45
+ fallback,
43
46
  filterThemedClassName,
44
47
  flatClassNameList,
45
48
  getMatchingParentElement,
@@ -50,6 +53,7 @@ export {
50
53
  isDefined,
51
54
  isFalse,
52
55
  isHTMLElement,
56
+ isNonEmptyArray,
53
57
  isNonEmptyString,
54
58
  isNonEmptyTrimmedEndString,
55
59
  isNonEmptyTrimmedStartString,
@@ -64,6 +68,7 @@ export {
64
68
  isOneOfFactory,
65
69
  isPlainObject,
66
70
  isScrollable,
71
+ isSingleWordString,
67
72
  isSlugString,
68
73
  isString,
69
74
  isTrue,
@@ -73,6 +78,7 @@ export {
73
78
  parseTransformMatrix,
74
79
  pick,
75
80
  px,
81
+ range,
76
82
  satisfiesOneOfFactory,
77
83
  setHasOneOf,
78
84
  stateClassName,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -28,6 +28,9 @@ function isString(value) {
28
28
  function isSlugString(value) {
29
29
  return isNonEmptyString(value) && /^[a-z0-9_-]+$/.test(value);
30
30
  }
31
+ function isSingleWordString(value) {
32
+ return isNonEmptyString(value) && value.indexOf(" ") === -1;
33
+ }
31
34
  function isNonEmptyString(value) {
32
35
  return isString(value) && value.length > 0;
33
36
  }
@@ -63,6 +66,9 @@ function isArrayOfMembersSatisfyingFactory(predicate) {
63
66
  return Array.isArray(value) && value.every(predicate);
64
67
  };
65
68
  }
69
+ function isNonEmptyArray(value) {
70
+ return Array.isArray(value) && value.length > 0;
71
+ }
66
72
  function isHTMLElement(value) {
67
73
  return value instanceof HTMLElement;
68
74
  }
@@ -78,6 +84,7 @@ export {
78
84
  isDefined,
79
85
  isFalse,
80
86
  isHTMLElement,
87
+ isNonEmptyArray,
81
88
  isNonEmptyString,
82
89
  isNonEmptyTrimmedEndString,
83
90
  isNonEmptyTrimmedStartString,
@@ -91,6 +98,7 @@ export {
91
98
  isObject,
92
99
  isOneOfFactory,
93
100
  isPlainObject,
101
+ isSingleWordString,
94
102
  isSlugString,
95
103
  isString,
96
104
  isTrue,
@@ -1 +1 @@
1
- {"version":3,"file":"Predicates.js","sources":["../../../src/assert-types/Predicates.ts"],"sourcesContent":["import { Predicate, SlugString, UnionOfPredicateTypes } from './types'\n\nexport function isNull(value: unknown): value is null {\n return value === null\n}\nexport function isNotNull<T>(value: unknown): value is T {\n return value !== null\n}\nexport function isUndefined(value: unknown): value is undefined {\n return value === undefined\n}\nexport function isDefined<T>(value: unknown): value is Exclude<T, undefined> {\n return value !== undefined\n}\nexport function isNotNullish<T>(value: T): value is Exclude<T, null | undefined> {\n return value != null\n}\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean'\n}\nexport function isTrue(value: unknown): value is true {\n return value === true\n}\nexport function isFalse(value: unknown): value is false {\n return value === false\n}\nexport function isString(value: unknown): value is string {\n return typeof value === 'string'\n}\nexport function isSlugString(value: unknown): value is SlugString {\n\treturn isNonEmptyString(value) && /^[a-z0-9_-]+$/.test(value)\n}\nexport function isNonEmptyString(value: unknown): value is string {\n return isString(value) && value.length > 0\n}\nfunction isNonEmptyTrimmedStringFactory(trim: 'trim' | 'trimStart' | 'trimEnd' = 'trim') {\n return function isNonEmptyString(value: unknown): value is string {\n return isString(value) && value[trim]().length > 0\n }\n}\nexport const isNonEmptyTrimmedString = isNonEmptyTrimmedStringFactory()\nexport const isNonEmptyTrimmedStartString = isNonEmptyTrimmedStringFactory('trimStart')\nexport const isNonEmptyTrimmedEndString = isNonEmptyTrimmedStringFactory('trimEnd')\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number' && value === value\n}\nexport function isNonNegativeNumber(value: unknown): value is number {\n return isNumber(value) && value >= 0\n}\nexport function isNumericString(value: string): value is string {\n return isString(value) && !isNaN(parseFloat(value))\n}\nexport function isOneOfFactory<U, T = any>(\n\tmembers: T extends Array<U> | ReadonlyArray<U> ? T : never,\n): (value: unknown) => value is U {\n\treturn function isOneOfFactoryProduct(value: unknown): value is U {\n\t\treturn members.includes(value as U)\n\t}\n}\nexport function satisfiesOneOfFactory<T extends Array<Predicate<any, any>>>(\n\t...predicates: T\n): Predicate<unknown, UnionOfPredicateTypes<T>> {\n\treturn (value: any): value is UnionOfPredicateTypes<T> => {\n\t\treturn predicates.some(predicate => predicate(value))\n\t}\n}\nexport function isArrayOfMembersSatisfyingFactory<T>(\n\tpredicate: (value: unknown) => value is T,\n): (value: unknown) => value is Array<T> {\n\treturn function isArrayOfMembersSatisfyingProduct(value: unknown): value is Array<T> {\n\t\treturn Array.isArray(value) && value.every(predicate)\n\t}\n}\nexport function isHTMLElement(value: unknown): value is HTMLElement {\n return value instanceof HTMLElement\n}\nexport function isObject(value: unknown): value is Object {\n return typeof value === 'object' && value !== null\n}\nexport function isPlainObject<T extends Record<string, unknown>>(value: unknown): value is T {\n return isObject(value) && value.constructor === Object\n}\n"],"names":["isNonEmptyString"],"mappings":"AAEO,SAAS,OAAO,OAA+B;AACpD,SAAO,UAAU;AACnB;AACO,SAAS,UAAa,OAA4B;AACvD,SAAO,UAAU;AACnB;AACO,SAAS,YAAY,OAAoC;AAC9D,SAAO,UAAU;AACnB;AACO,SAAS,UAAa,OAAgD;AAC3E,SAAO,UAAU;AACnB;AACO,SAAS,aAAgB,OAAiD;AAC/E,SAAO,SAAS;AAClB;AACO,SAAS,UAAU,OAAkC;AAC1D,SAAO,OAAO,UAAU;AAC1B;AACO,SAAS,OAAO,OAA+B;AACpD,SAAO,UAAU;AACnB;AACO,SAAS,QAAQ,OAAgC;AACtD,SAAO,UAAU;AACnB;AACO,SAAS,SAAS,OAAiC;AACxD,SAAO,OAAO,UAAU;AAC1B;AACO,SAAS,aAAa,OAAqC;AACjE,SAAO,iBAAiB,KAAK,KAAK,gBAAgB,KAAK,KAAK;AAC7D;AACO,SAAS,iBAAiB,OAAiC;AAChE,SAAO,SAAS,KAAK,KAAK,MAAM,SAAS;AAC3C;AACA,SAAS,+BAA+B,OAAyC,QAAQ;AAChF,SAAA,SAASA,kBAAiB,OAAiC;AAChE,WAAO,SAAS,KAAK,KAAK,MAAM,IAAI,IAAI,SAAS;AAAA,EAAA;AAErD;AACO,MAAM,0BAA0B,+BAA+B;AACzD,MAAA,+BAA+B,+BAA+B,WAAW;AACzE,MAAA,6BAA6B,+BAA+B,SAAS;AAC3E,SAAS,SAAS,OAAiC;AACjD,SAAA,OAAO,UAAU,YAAY,UAAU;AAChD;AACO,SAAS,oBAAoB,OAAiC;AAC5D,SAAA,SAAS,KAAK,KAAK,SAAS;AACrC;AACO,SAAS,gBAAgB,OAAgC;AAC9D,SAAO,SAAS,KAAK,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC;AACpD;AACO,SAAS,eACf,SACiC;AAC1B,SAAA,SAAS,sBAAsB,OAA4B;AAC1D,WAAA,QAAQ,SAAS,KAAU;AAAA,EAAA;AAEpC;AACO,SAAS,yBACZ,YAC4C;AAC/C,SAAO,CAAC,UAAkD;AACzD,WAAO,WAAW,KAAK,CAAa,cAAA,UAAU,KAAK,CAAC;AAAA,EAAA;AAEtD;AACO,SAAS,kCACf,WACwC;AACjC,SAAA,SAAS,kCAAkC,OAAmC;AACpF,WAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,SAAS;AAAA,EAAA;AAEtD;AACO,SAAS,cAAc,OAAsC;AAClE,SAAO,iBAAiB;AAC1B;AACO,SAAS,SAAS,OAAiC;AACjD,SAAA,OAAO,UAAU,YAAY,UAAU;AAChD;AACO,SAAS,cAAiD,OAA4B;AAC3F,SAAO,SAAS,KAAK,KAAK,MAAM,gBAAgB;AAClD;"}
1
+ {"version":3,"file":"Predicates.js","sources":["../../../src/assert-types/Predicates.ts"],"sourcesContent":["import { Predicate, SlugString, UnionOfPredicateTypes } from './types'\n\nexport function isNull(value: unknown): value is null {\n\treturn value === null\n}\nexport function isNotNull<T>(value: unknown): value is T {\n\treturn value !== null\n}\nexport function isUndefined(value: unknown): value is undefined {\n\treturn value === undefined\n}\nexport function isDefined<T>(value: unknown): value is Exclude<T, undefined> {\n\treturn value !== undefined\n}\nexport function isNotNullish<T>(value: T): value is Exclude<T, null | undefined> {\n\treturn value != null\n}\nexport function isBoolean(value: unknown): value is boolean {\n\treturn typeof value === 'boolean'\n}\nexport function isTrue(value: unknown): value is true {\n\treturn value === true\n}\nexport function isFalse(value: unknown): value is false {\n\treturn value === false\n}\nexport function isString(value: unknown): value is string {\n\treturn typeof value === 'string'\n}\nexport function isSlugString(value: unknown): value is SlugString {\n\treturn isNonEmptyString(value) && /^[a-z0-9_-]+$/.test(value)\n}\nexport function isSingleWordString(value: unknown): value is string {\n\treturn isNonEmptyString(value) && value.indexOf(' ') === -1\n}\nexport function isNonEmptyString(value: unknown): value is string {\n\treturn isString(value) && value.length > 0\n}\nfunction isNonEmptyTrimmedStringFactory(trim: 'trim' | 'trimStart' | 'trimEnd' = 'trim') {\n\treturn function isNonEmptyString(value: unknown): value is string {\n\t\treturn isString(value) && value[trim]().length > 0\n\t}\n}\nexport const isNonEmptyTrimmedString = isNonEmptyTrimmedStringFactory()\nexport const isNonEmptyTrimmedStartString = isNonEmptyTrimmedStringFactory('trimStart')\nexport const isNonEmptyTrimmedEndString = isNonEmptyTrimmedStringFactory('trimEnd')\nexport function isNumber(value: unknown): value is number {\n\treturn typeof value === 'number' && value === value\n}\nexport function isNonNegativeNumber(value: unknown): value is number {\n\treturn isNumber(value) && value >= 0\n}\nexport function isNumericString(value: string): value is string {\n\treturn isString(value) && !isNaN(parseFloat(value))\n}\nexport function isOneOfFactory<U, T = any>(\n\tmembers: T extends Array<U> | ReadonlyArray<U> ? T : never,\n): (value: unknown) => value is U {\n\treturn function isOneOfFactoryProduct(value: unknown): value is U {\n\t\treturn members.includes(value as U)\n\t}\n}\nexport function satisfiesOneOfFactory<T extends Array<Predicate<any, any>>>(\n\t...predicates: T\n): Predicate<unknown, UnionOfPredicateTypes<T>> {\n\treturn (value: any): value is UnionOfPredicateTypes<T> => {\n\t\treturn predicates.some(predicate => predicate(value))\n\t}\n}\nexport function isArrayOfMembersSatisfyingFactory<T>(\n\tpredicate: (value: unknown) => value is T,\n): (value: unknown) => value is Array<T> {\n\treturn function isArrayOfMembersSatisfyingProduct(value: unknown): value is Array<T> {\n\t\treturn Array.isArray(value) && value.every(predicate)\n\t}\n}\nexport function isNonEmptyArray<T>(value: unknown): value is [T, ...T[]] {\n\treturn Array.isArray(value) && value.length > 0\n}\nexport function isHTMLElement(value: unknown): value is HTMLElement {\n\treturn value instanceof HTMLElement\n}\nexport function isObject(value: unknown): value is Object {\n\treturn typeof value === 'object' && value !== null\n}\nexport function isPlainObject<T extends Record<string, unknown>>(value: unknown): value is T {\n\treturn isObject(value) && value.constructor === Object\n}\n"],"names":["isNonEmptyString"],"mappings":"AAEO,SAAS,OAAO,OAA+B;AACrD,SAAO,UAAU;AAClB;AACO,SAAS,UAAa,OAA4B;AACxD,SAAO,UAAU;AAClB;AACO,SAAS,YAAY,OAAoC;AAC/D,SAAO,UAAU;AAClB;AACO,SAAS,UAAa,OAAgD;AAC5E,SAAO,UAAU;AAClB;AACO,SAAS,aAAgB,OAAiD;AAChF,SAAO,SAAS;AACjB;AACO,SAAS,UAAU,OAAkC;AAC3D,SAAO,OAAO,UAAU;AACzB;AACO,SAAS,OAAO,OAA+B;AACrD,SAAO,UAAU;AAClB;AACO,SAAS,QAAQ,OAAgC;AACvD,SAAO,UAAU;AAClB;AACO,SAAS,SAAS,OAAiC;AACzD,SAAO,OAAO,UAAU;AACzB;AACO,SAAS,aAAa,OAAqC;AACjE,SAAO,iBAAiB,KAAK,KAAK,gBAAgB,KAAK,KAAK;AAC7D;AACO,SAAS,mBAAmB,OAAiC;AACnE,SAAO,iBAAiB,KAAK,KAAK,MAAM,QAAQ,GAAG,MAAM;AAC1D;AACO,SAAS,iBAAiB,OAAiC;AACjE,SAAO,SAAS,KAAK,KAAK,MAAM,SAAS;AAC1C;AACA,SAAS,+BAA+B,OAAyC,QAAQ;AACjF,SAAA,SAASA,kBAAiB,OAAiC;AACjE,WAAO,SAAS,KAAK,KAAK,MAAM,IAAI,IAAI,SAAS;AAAA,EAAA;AAEnD;AACO,MAAM,0BAA0B,+BAA+B;AACzD,MAAA,+BAA+B,+BAA+B,WAAW;AACzE,MAAA,6BAA6B,+BAA+B,SAAS;AAC3E,SAAS,SAAS,OAAiC;AAClD,SAAA,OAAO,UAAU,YAAY,UAAU;AAC/C;AACO,SAAS,oBAAoB,OAAiC;AAC7D,SAAA,SAAS,KAAK,KAAK,SAAS;AACpC;AACO,SAAS,gBAAgB,OAAgC;AAC/D,SAAO,SAAS,KAAK,KAAK,CAAC,MAAM,WAAW,KAAK,CAAC;AACnD;AACO,SAAS,eACf,SACiC;AAC1B,SAAA,SAAS,sBAAsB,OAA4B;AAC1D,WAAA,QAAQ,SAAS,KAAU;AAAA,EAAA;AAEpC;AACO,SAAS,yBACZ,YAC4C;AAC/C,SAAO,CAAC,UAAkD;AACzD,WAAO,WAAW,KAAK,CAAa,cAAA,UAAU,KAAK,CAAC;AAAA,EAAA;AAEtD;AACO,SAAS,kCACf,WACwC;AACjC,SAAA,SAAS,kCAAkC,OAAmC;AACpF,WAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,SAAS;AAAA,EAAA;AAEtD;AACO,SAAS,gBAAmB,OAAsC;AACxE,SAAO,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS;AAC/C;AACO,SAAS,cAAc,OAAsC;AACnE,SAAO,iBAAiB;AACzB;AACO,SAAS,SAAS,OAAiC;AAClD,SAAA,OAAO,UAAU,YAAY,UAAU;AAC/C;AACO,SAAS,cAAiD,OAA4B;AAC5F,SAAO,SAAS,KAAK,KAAK,MAAM,gBAAgB;AACjD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"listClassName.js","sources":["../../../src/class-name/listClassName.ts"],"sourcesContent":["import { deduplicateClassName } from './deduplicateClassName'\nimport { flatClassNameList } from './flatClassNameList'\n\n/**\n * Combines a list of class names into a single string, even nested\n *\n * @param list - List of class names\n * @returns Combined class names as string\n */\nexport function listClassName(list: (string | false | null | undefined)[]) {\n\treturn deduplicateClassName(flatClassNameList(list)).join(' ')\n}\n"],"names":[],"mappings":";;AASO,SAAS,cAAc,MAA6C;AAC1E,SAAO,qBAAqB,kBAAkB,IAAI,CAAC,EAAE,KAAK,GAAG;AAC9D;"}
1
+ {"version":3,"file":"listClassName.js","sources":["../../../src/class-name/listClassName.ts"],"sourcesContent":["import { deduplicateClassName } from './deduplicateClassName'\nimport { flatClassNameList } from './flatClassNameList'\nimport { NestedClassName } from './types'\n\n/**\n * Combines a list of class names into a single string, even nested\n *\n * @param list - List of class names\n * @returns Combined class names as string\n */\nexport function listClassName(list: NestedClassName) {\n\treturn deduplicateClassName(flatClassNameList(list)).join(' ')\n}\n"],"names":[],"mappings":";;AAUO,SAAS,cAAc,MAAuB;AACpD,SAAO,qBAAqB,kBAAkB,IAAI,CAAC,EAAE,KAAK,GAAG;AAC9D;"}
@@ -1 +1 @@
1
- {"version":3,"file":"themeClassName.js","sources":["../../../src/class-name/themeClassName.ts"],"sourcesContent":["import { KebabCase } from 'type-fest'\nimport { colorSchemeClassName } from './colorSchemeClassName'\nimport { ThemeContentClassName, ThemeControlsClassName } from './types'\n\n/**\n * Returns a string with a content theme class name, prefixed with `theme-` and suffixed with `-content`\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param contentTheme - Theme name basis for content\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A content theme class name\n *\n * @see {@link controlsThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const contentThemeClassName = contentThemeClassName('default')\n * // ^ 'theme-default-content:hover'\n * const dangerOnMouseOverTheme = controlsThemeClassName('danger', ':hover')\n * // ^ 'theme-danger-controls:hover'\n *\n * return (\n * \t<div className={`${colorScheme} ${contentThemeClassName}`}>\n * \t\t<button className={`${colorScheme} ${dangerOnMouseOverTheme}`}>Delete</button>\n * \t</div>\n * )\n * ```\n */\nexport function contentThemeClassName<\n\tContentTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\ttheme: ContentTheme | null | undefined,\n\tstate?: State | null | undefined,\n) {\n\treturn theme ? `theme-${theme}-content${state ?? ''}` as ThemeContentClassName<ContentTheme, State> : undefined\n}\n\n/**\n * Returns a string with a controls theme class name, prefixed with `theme-` and suffixed with `-controls`\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param theme - Theme name basis for controls\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A controls theme class name\n *\n * @see {@link contentThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const contentThemeClassName = contentThemeClassName('default')\n * // ^ 'theme-default-content:hover'\n * const dangerOnMouseOverTheme = controlsThemeClassName('danger', ':hover')\n * // ^ 'theme-danger-controls:hover'\n *\n * return (\n * \t<div className={`${colorScheme} ${contentThemeClassName}`}>\n * \t\t<button className={`${colorScheme} ${dangerOnMouseOverTheme}`}>Delete</button>\n * \t</div>\n * )\n * ```\n */\nexport function controlsThemeClassName<\n\tControlsTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\ttheme: ControlsTheme | null | undefined,\n\tstate?: State | null | undefined,\n) {\n\treturn theme ? `theme-${theme}-controls${state ?? ''}` as ThemeControlsClassName<ControlsTheme, State> : undefined\n}\n\n/**\n * Returns a tuple with a content theme class name and a controls theme class name, prefixed with `theme-` and suffixed with `-content` and `-controls` respectively\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param theme - Theme name basis for content and controls\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A tuple with a content theme class name and a controls theme class name\n *\n * @see {@link contentThemeClassName}\n * @see {@link controlsThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const errorTheme = themeClassName('danger').join(' ')\n * // ^ 'theme-danger-content theme-danger-controls'\n *\n * return (\n * \t<div className={`${colorScheme} ${errorTheme}`}>File not found</div>\n * )\n * ```\n */\nexport function themeClassName<\n\tTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\t\ttheme: Theme | null | undefined,\n\t\tstate?: State | null | undefined,\n) {\n\treturn [\n\t\tcontentThemeClassName(theme, state),\n\t\tcontrolsThemeClassName(theme, state),\n\t] as const\n}\n"],"names":[],"mappings":"AAgCgB,SAAA,sBAIf,OACA,OACC;AACD,SAAO,QAAQ,SAAS,gBAAgB,SAAS,OAAqD;AACvG;AA8BgB,SAAA,uBAIf,OACA,OACC;AACD,SAAO,QAAQ,SAAS,iBAAiB,SAAS,OAAuD;AAC1G;AA2BgB,SAAA,eAId,OACA,OACA;AACM,SAAA;AAAA,IACN,sBAAsB,OAAO,KAAK;AAAA,IAClC,uBAAuB,OAAO,KAAK;AAAA,EAAA;AAErC;"}
1
+ {"version":3,"file":"themeClassName.js","sources":["../../../src/class-name/themeClassName.ts"],"sourcesContent":["import { KebabCase } from 'type-fest'\nimport { ThemeContentClassName, ThemeControlsClassName } from './types'\n\n/**\n * Returns a string with a content theme class name, prefixed with `theme-` and suffixed with `-content`\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param contentTheme - Theme name basis for content\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A content theme class name\n *\n * @see {@link controlsThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const contentThemeClassName = contentThemeClassName('default')\n * // ^ 'theme-default-content:hover'\n * const dangerOnMouseOverTheme = controlsThemeClassName('danger', ':hover')\n * // ^ 'theme-danger-controls:hover'\n *\n * return (\n * \t<div className={`${colorScheme} ${contentThemeClassName}`}>\n * \t\t<button className={`${colorScheme} ${dangerOnMouseOverTheme}`}>Delete</button>\n * \t</div>\n * )\n * ```\n */\nexport function contentThemeClassName<\n\tContentTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\ttheme: ContentTheme | null | undefined,\n\tstate?: State | null | undefined,\n) {\n\treturn theme ? `theme-${theme}-content${state ?? ''}` as ThemeContentClassName<ContentTheme, State> : undefined\n}\n\n/**\n * Returns a string with a controls theme class name, prefixed with `theme-` and suffixed with `-controls`\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param theme - Theme name basis for controls\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A controls theme class name\n *\n * @see {@link contentThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const contentThemeClassName = contentThemeClassName('default')\n * // ^ 'theme-default-content:hover'\n * const dangerOnMouseOverTheme = controlsThemeClassName('danger', ':hover')\n * // ^ 'theme-danger-controls:hover'\n *\n * return (\n * \t<div className={`${colorScheme} ${contentThemeClassName}`}>\n * \t\t<button className={`${colorScheme} ${dangerOnMouseOverTheme}`}>Delete</button>\n * \t</div>\n * )\n * ```\n */\nexport function controlsThemeClassName<\n\tControlsTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\ttheme: ControlsTheme | null | undefined,\n\tstate?: State | null | undefined,\n) {\n\treturn theme ? `theme-${theme}-controls${state ?? ''}` as ThemeControlsClassName<ControlsTheme, State> : undefined\n}\n\n/**\n * Returns a tuple with a content theme class name and a controls theme class name, prefixed with `theme-` and suffixed with `-content` and `-controls` respectively\n *\n * IMPORTANT: Make sure to use color scheme class in combination with theme class names.\n *\n * @param theme - Theme name basis for content and controls\n * @param state - State of the theme starting with a \":\", e.g. `\":hover\"`, `\":focus\"`, `\":active\"`, `\":focus-visible\"`\n * @returns A tuple with a content theme class name and a controls theme class name\n *\n * @see {@link contentThemeClassName}\n * @see {@link controlsThemeClassName}\n * @see {@link (colorSchemeClassName:3)}\n *\n * @example\n * ```tsx\n * const colorScheme = colorSchemeClassName('system')\n * // ^ 'scheme-system'\n * const errorTheme = themeClassName('danger').join(' ')\n * // ^ 'theme-danger-content theme-danger-controls'\n *\n * return (\n * \t<div className={`${colorScheme} ${errorTheme}`}>File not found</div>\n * )\n * ```\n */\nexport function themeClassName<\n\tTheme extends KebabCase<string> = KebabCase<string>,\n\tState extends `:${KebabCase<string>}` | null | undefined = undefined,\n>(\n\t\ttheme: Theme | null | undefined,\n\t\tstate?: State | null | undefined,\n) {\n\treturn [\n\t\tcontentThemeClassName(theme, state),\n\t\tcontrolsThemeClassName(theme, state),\n\t] as const\n}\n"],"names":[],"mappings":"AA+BgB,SAAA,sBAIf,OACA,OACC;AACD,SAAO,QAAQ,SAAS,gBAAgB,SAAS,OAAqD;AACvG;AA8BgB,SAAA,uBAIf,OACA,OACC;AACD,SAAO,QAAQ,SAAS,iBAAiB,SAAS,OAAuD;AAC1G;AA2BgB,SAAA,eAId,OACA,OACA;AACM,SAAA;AAAA,IACN,sBAAsB,OAAO,KAAK;AAAA,IAClC,uBAAuB,OAAO,KAAK;AAAA,EAAA;AAErC;"}
@@ -1,5 +1,5 @@
1
1
  function px(value) {
2
- return typeof value === "number" && !isNaN(value) ? value + "px" : "";
2
+ return typeof value === "number" && !(isNaN(value) || value === Infinity || value === -Infinity) ? value + "px" : "";
3
3
  }
4
4
  export {
5
5
  px
@@ -1 +1 @@
1
- {"version":3,"file":"px.js","sources":["../../../src/css-utilities/px.ts"],"sourcesContent":["export function px<V extends number>(value: V): `${V}px`;\nexport function px<V extends false>(value: V): '';\nexport function px<V extends null>(value: V): '';\nexport function px<V extends undefined>(value: V): '';\n// NOTE: Next overload fixes:\n// The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible.\nexport function px<V extends number | false | null | undefined>(value?: V): string;\n/**\n * Converts a value to a string in the format '10px'\n *\n * @param value - The value to convert to a string.\n * @returns Returns a string in the format '10px' or '' when value is falsy.\n */\nexport function px<V extends number | false | null | undefined>(value?: V): string {\n\treturn typeof value === 'number' && !isNaN(value) ? value + 'px' : ''\n}\n"],"names":[],"mappings":"AAaO,SAAS,GAAgD,OAAmB;AAC3E,SAAA,OAAO,UAAU,YAAY,CAAC,MAAM,KAAK,IAAI,QAAQ,OAAO;AACpE;"}
1
+ {"version":3,"file":"px.js","sources":["../../../src/css-utilities/px.ts"],"sourcesContent":["export function px<V extends number>(value: V): `${V}px`;\nexport function px<V extends false>(value: V): '';\nexport function px<V extends null>(value: V): '';\nexport function px<V extends undefined>(value: V): '';\n// NOTE: Next overload fixes:\n// The call would have succeeded against this implementation, but implementation signatures of overloads are not externally visible.\nexport function px<V extends number | false | null | undefined>(value?: V): string;\n/**\n * Converts a value to a string in the format '10px'\n *\n * @param value - The value to convert to a string.\n * @returns Returns a string in the format '10px' or '' when value is falsy.\n */\nexport function px<V extends number | false | null | undefined>(value?: V): string {\n\treturn typeof value === 'number' && !(isNaN(value) || value === Infinity || value === -Infinity) ? value + 'px' : ''\n}\n"],"names":[],"mappings":"AAaO,SAAS,GAAgD,OAAmB;AAClF,SAAO,OAAO,UAAU,YAAY,EAAE,MAAM,KAAK,KAAK,UAAU,YAAY,UAAU,aAAa,QAAQ,OAAO;AACnH;"}
@@ -1,4 +1,4 @@
1
- function deprecate(removal, assertion, deprecated, replacement) {
1
+ function deprecate(removal, condition, deprecated, replacement) {
2
2
  }
3
3
  export {
4
4
  deprecate
@@ -1 +1 @@
1
- {"version":3,"file":"deprecate.js","sources":["../../../src/deprecate/deprecate.ts"],"sourcesContent":["import { SemverString } from './types'\n\n/**\n * Logs a deprecation warning if the assertion is `false`.\n * @internal\n *\n * @param removal - Version when the deprecated feature will be removed\n * @param assertion - Condition that must be true to avoid the deprecation warning\n * @param deprecated - Name of the deprecated feature\n * @param replacement - Name of the feature that replaces the deprecated feature\n *\n * @example\n * ```ts\n * const { visible } = props\n * deprecate(visible !== 'default', '1.3.0', '\"default\"', '\"hidden\"')\n * // Logs: Use of \"default\" is deprecated and might be removed in the next release. Use \"hidden\" instead.\n * ```\n */\nexport function deprecate(removal: SemverString, assertion: boolean, deprecated: string, replacement: string): void {\n\tif (assertion === false) {\n\t\tif (import.meta.env.DEV) {\n\t\t\tconst shouldThrow = Boolean(import.meta.env.VITE_CONTEMBER_ADMIN_STRICT_DEPRECATIONS)\n\n\t\t\tif (shouldThrow) {\n\t\t\t\tthrow new Error(`Support for ${deprecated} was planned to be removed in the ${removal} release. Replace it with ${replacement} instead.`)\n\t\t\t} else {\n\t\t\t\tconsole.warn(`Use of ${deprecated} is deprecated and might be removed in the next release. Use ${replacement} instead.`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"AAkBO,SAAS,UAAU,SAAuB,WAAoB,YAAoB,aAA2B;AAYpH;"}
1
+ {"version":3,"file":"deprecate.js","sources":["../../../src/deprecate/deprecate.ts"],"sourcesContent":["import { SemverString } from './types'\n\n/**\n * Logs a deprecation warning if the assertion is `false`.\n * @internal\n *\n * @param removal - Version when the deprecated feature will be removed\n * @param condition - Condition under which the deprecation warning will be logged\n * @param deprecated - Name of the deprecated feature\n * @param replacement - Name of the feature that replaces the deprecated feature\n *\n * @example\n * ```ts\n * const { visible } = props\n * deprecate(visible !== 'default', '1.3.0', '\"default\"', '\"hidden\"')\n * // Logs: Use of \"default\" is deprecated and might be removed in the next release. Use \"hidden\" instead.\n * ```\n */\nexport function deprecate(removal: SemverString, condition: boolean, deprecated: string, replacement: string | null): void {\n\tif (condition === true) {\n\t\tif (import.meta.env.DEV) {\n\t\t\tconst shouldThrow = Boolean(import.meta.env.VITE_CONTEMBER_ADMIN_STRICT_DEPRECATIONS)\n\n\t\t\tif (shouldThrow) {\n\t\t\t\tthrow new Error(`Support for ${deprecated} was planned to be removed in the ${removal} release.${replacement ? ` Replace it with ${replacement} instead.` : 'Remove it.'}`)\n\t\t\t} else {\n\t\t\t\tconsole.warn(`Use of ${deprecated} is deprecated and might be removed in the next release.${replacement ? ` Use ${replacement} instead.` : 'There is no replacement.'}`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"AAkBO,SAAS,UAAU,SAAuB,WAAoB,YAAoB,aAAkC;AAY3H;"}
@@ -0,0 +1,11 @@
1
+ function fallback(current, condition, mapped) {
2
+ if (condition === true) {
3
+ return mapped;
4
+ } else {
5
+ return current;
6
+ }
7
+ }
8
+ export {
9
+ fallback
10
+ };
11
+ //# sourceMappingURL=fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback.js","sources":["../../../src/deprecate/fallback.ts"],"sourcesContent":["export function fallback<R>(current: R, condition: boolean, mapped: R): R {\n\tif (condition === true) {\n\t\treturn mapped\n\t} else {\n\t\treturn current\n\t}\n}\n"],"names":[],"mappings":"AAAgB,SAAA,SAAY,SAAY,WAAoB,QAAc;AACzE,MAAI,cAAc,MAAM;AAChB,WAAA;AAAA,EAAA,OACD;AACC,WAAA;AAAA,EACR;AACD;"}
@@ -0,0 +1,33 @@
1
+ function extend(base, extension) {
2
+ base = Object.freeze(base);
3
+ extension = Object.freeze(extension);
4
+ if (typeof base !== typeof extension) {
5
+ return extension === void 0 ? base : extension;
6
+ } else {
7
+ if (typeof base === "object" && typeof extension === "object") {
8
+ if (Array.isArray(base) && Array.isArray(extension)) {
9
+ return Object.freeze([...base, ...extension]);
10
+ } else if (base && extension) {
11
+ if ("$$typeof" in extension) {
12
+ return extension;
13
+ }
14
+ const keys = [.../* @__PURE__ */ new Set([
15
+ ...Object.keys(base),
16
+ ...Object.keys(extension)
17
+ ])];
18
+ const entries = keys.map(
19
+ (key) => [key, extend(base[key], extension[key])]
20
+ );
21
+ return Object.freeze(Object.fromEntries(entries));
22
+ } else {
23
+ return extension;
24
+ }
25
+ } else {
26
+ return extension;
27
+ }
28
+ }
29
+ }
30
+ export {
31
+ extend
32
+ };
33
+ //# sourceMappingURL=extend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend.js","sources":["../../../src/functional/extend.ts"],"sourcesContent":["/** @internal */\nexport function extend<B, E>(\n\tbase: B,\n\textension: E,\n) {\n\tbase = Object.freeze(base)\n\textension = Object.freeze(extension)\n\n\tif (typeof base !== typeof extension) {\n\t\treturn extension === undefined ? base : extension\n\t} else {\n\t\tif (typeof base === 'object' && typeof extension === 'object') {\n\t\t\tif (Array.isArray(base) && Array.isArray(extension)) {\n\t\t\t\treturn Object.freeze([...base, ...extension])\n\t\t\t} else if (base && extension) {\n\t\t\t\tif ('$$typeof' in extension) {\n\t\t\t\t\treturn extension\n\t\t\t\t}\n\n\t\t\t\tconst keys = [...new Set([\n\t\t\t\t\t...Object.keys(base),\n\t\t\t\t\t...Object.keys(extension),\n\t\t\t\t])]\n\n\t\t\t\tconst entries: [string, unknown][] = keys.map(\n\t\t\t\t\tkey => [key, extend((base as Record<string, unknown>)[key], (extension as Record<string, unknown>)[key])],\n\t\t\t\t)\n\n\t\t\t\treturn Object.freeze(Object.fromEntries(entries))\n\t\t\t} else {\n\t\t\t\treturn extension\n\t\t\t}\n\t\t} else {\n\t\t\treturn extension\n\t\t}\n\t}\n}\n"],"names":[],"mappings":"AACgB,SAAA,OACf,MACA,WACC;AACM,SAAA,OAAO,OAAO,IAAI;AACb,cAAA,OAAO,OAAO,SAAS;AAE/B,MAAA,OAAO,SAAS,OAAO,WAAW;AAC9B,WAAA,cAAc,SAAY,OAAO;AAAA,EAAA,OAClC;AACN,QAAI,OAAO,SAAS,YAAY,OAAO,cAAc,UAAU;AAC9D,UAAI,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,SAAS,GAAG;AACpD,eAAO,OAAO,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;AAAA,MAAA,WAClC,QAAQ,WAAW;AAC7B,YAAI,cAAc,WAAW;AACrB,iBAAA;AAAA,QACR;AAEA,cAAM,OAAO,CAAC,GAAG,oBAAI,IAAI;AAAA,UACxB,GAAG,OAAO,KAAK,IAAI;AAAA,UACnB,GAAG,OAAO,KAAK,SAAS;AAAA,QACxB,CAAA,CAAC;AAEF,cAAM,UAA+B,KAAK;AAAA,UACzC,CAAA,QAAO,CAAC,KAAK,OAAQ,KAAiC,GAAG,GAAI,UAAsC,GAAG,CAAC,CAAC;AAAA,QAAA;AAGzG,eAAO,OAAO,OAAO,OAAO,YAAY,OAAO,CAAC;AAAA,MAAA,OAC1C;AACC,eAAA;AAAA,MACR;AAAA,IAAA,OACM;AACC,aAAA;AAAA,IACR;AAAA,EACD;AACD;"}
@@ -0,0 +1,7 @@
1
+ function range(start, end, step = 1) {
2
+ return Array.from({ length: Math.floor(Math.abs(end - start) / step) + 1 }, (_, i) => start + i * (end > start ? 1 : -1) * Math.abs(step));
3
+ }
4
+ export {
5
+ range
6
+ };
7
+ //# sourceMappingURL=range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.js","sources":["../../../src/functional/range.ts"],"sourcesContent":["\n/**\n * Get a list of numbers between start and end, inclusive, with the given step size (defaulting to 1)\n * @param start - The starting number.\n * @param end - The ending number.\n * @param step - The step size, optional, defaults to 1.\n * @returns A list of numbers between start and end, inclusive, with the given step size (defaulting to 1)\n */\nexport function range(start: number, end: number, step = 1): number[] {\n\treturn Array.from({ length: Math.floor(Math.abs(end - start) / step) + 1 }, (_, i) => start + i * (end > start ? 1 : -1) * Math.abs(step))\n}\n"],"names":[],"mappings":"AAQO,SAAS,MAAM,OAAe,KAAa,OAAO,GAAa;AAC9D,SAAA,MAAM,KAAK,EAAE,QAAQ,KAAK,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,QAAQ,KAAK,MAAM,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC;AAC1I;"}
@@ -1,5 +1,5 @@
1
1
  import { AssertionError } from "./assert-types/AssertionError.js";
2
- import { isArrayOfMembersSatisfyingFactory, isBoolean, isDefined, isFalse, isHTMLElement, isNonEmptyString, isNonEmptyTrimmedEndString, isNonEmptyTrimmedStartString, isNonEmptyTrimmedString, isNonNegativeNumber, isNotNull, isNotNullish, isNull, isNumber, isNumericString, isObject, isOneOfFactory, isPlainObject, isSlugString, isString, isTrue, isUndefined, satisfiesOneOfFactory } from "./assert-types/Predicates.js";
2
+ import { isArrayOfMembersSatisfyingFactory, isBoolean, isDefined, isFalse, isHTMLElement, isNonEmptyArray, isNonEmptyString, isNonEmptyTrimmedEndString, isNonEmptyTrimmedStartString, isNonEmptyTrimmedString, isNonNegativeNumber, isNotNull, isNotNullish, isNull, isNumber, isNumericString, isObject, isOneOfFactory, isPlainObject, isSingleWordString, isSlugString, isString, isTrue, isUndefined, satisfiesOneOfFactory } from "./assert-types/Predicates.js";
3
3
  import { assert } from "./assert-types/assert.js";
4
4
  import { assertNever } from "./assert-types/assertNever.js";
5
5
  import { colorSchemeClassName, isColorSchemeClassName } from "./class-name/colorSchemeClassName.js";
@@ -11,8 +11,8 @@ import { listClassName } from "./class-name/listClassName.js";
11
11
  import { stateClassName } from "./class-name/stateClassName.js";
12
12
  import { contentThemeClassName, controlsThemeClassName, themeClassName } from "./class-name/themeClassName.js";
13
13
  import { px } from "./css-utilities/px.js";
14
- import { currentOrDeprecated } from "./deprecate/currentOrDeprecated.js";
15
14
  import { deprecate } from "./deprecate/deprecate.js";
15
+ import { fallback } from "./deprecate/fallback.js";
16
16
  import { dataAttribute } from "./dom/dataAttribute.js";
17
17
  import { getMatchingParentElement } from "./dom/getMatchingParentElement.js";
18
18
  import { getSizeFromResizeObserverEntryFactory } from "./dom/getSizeFromResizeObserverEntry.js";
@@ -20,8 +20,10 @@ import { isScrollable } from "./dom/isScrollable.js";
20
20
  import { parseTransformMatrix } from "./dom/parseTransformMatrix.js";
21
21
  import { stateDataAttributes } from "./dom/stateDataAttributes.js";
22
22
  import { svgSizeProps } from "./dom/svgSizeProps.js";
23
+ import { extend } from "./functional/extend.js";
23
24
  import { omit } from "./functional/omit.js";
24
25
  import { pick } from "./functional/pick.js";
26
+ import { range } from "./functional/range.js";
25
27
  import { setHasOneOf } from "./functional/setHasOneOf.js";
26
28
  import { capitalize } from "./string-utilities/capitalize.js";
27
29
  import { toKebabCase } from "./string-utilities/kebabCase.js";
@@ -36,10 +38,11 @@ export {
36
38
  colorSchemeClassName,
37
39
  contentThemeClassName,
38
40
  controlsThemeClassName,
39
- currentOrDeprecated,
40
41
  dataAttribute,
41
42
  deduplicateClassName,
42
43
  deprecate,
44
+ extend,
45
+ fallback,
43
46
  filterThemedClassName,
44
47
  flatClassNameList,
45
48
  getMatchingParentElement,
@@ -50,6 +53,7 @@ export {
50
53
  isDefined,
51
54
  isFalse,
52
55
  isHTMLElement,
56
+ isNonEmptyArray,
53
57
  isNonEmptyString,
54
58
  isNonEmptyTrimmedEndString,
55
59
  isNonEmptyTrimmedStartString,
@@ -64,6 +68,7 @@ export {
64
68
  isOneOfFactory,
65
69
  isPlainObject,
66
70
  isScrollable,
71
+ isSingleWordString,
67
72
  isSlugString,
68
73
  isString,
69
74
  isTrue,
@@ -73,6 +78,7 @@ export {
73
78
  parseTransformMatrix,
74
79
  pick,
75
80
  px,
81
+ range,
76
82
  satisfiesOneOfFactory,
77
83
  setHasOneOf,
78
84
  stateClassName,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -9,6 +9,7 @@ export declare function isTrue(value: unknown): value is true;
9
9
  export declare function isFalse(value: unknown): value is false;
10
10
  export declare function isString(value: unknown): value is string;
11
11
  export declare function isSlugString(value: unknown): value is SlugString;
12
+ export declare function isSingleWordString(value: unknown): value is string;
12
13
  export declare function isNonEmptyString(value: unknown): value is string;
13
14
  export declare const isNonEmptyTrimmedString: (value: unknown) => value is string;
14
15
  export declare const isNonEmptyTrimmedStartString: (value: unknown) => value is string;
@@ -19,6 +20,7 @@ export declare function isNumericString(value: string): value is string;
19
20
  export declare function isOneOfFactory<U, T = any>(members: T extends Array<U> | ReadonlyArray<U> ? T : never): (value: unknown) => value is U;
20
21
  export declare function satisfiesOneOfFactory<T extends Array<Predicate<any, any>>>(...predicates: T): Predicate<unknown, UnionOfPredicateTypes<T>>;
21
22
  export declare function isArrayOfMembersSatisfyingFactory<T>(predicate: (value: unknown) => value is T): (value: unknown) => value is Array<T>;
23
+ export declare function isNonEmptyArray<T>(value: unknown): value is [T, ...T[]];
22
24
  export declare function isHTMLElement(value: unknown): value is HTMLElement;
23
25
  export declare function isObject(value: unknown): value is Object;
24
26
  export declare function isPlainObject<T extends Record<string, unknown>>(value: unknown): value is T;
@@ -1 +1 @@
1
- {"version":3,"file":"Predicates.d.ts","sourceRoot":"","sources":["../../../src/assert-types/Predicates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEtE,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAEpD;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC,CAEvD;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAE3E;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAE/E;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAEpD;AACD,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAEtD;AACD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AACD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEhE;AAMD,eAAO,MAAM,uBAAuB,UAJM,OAAO,oBAIsB,CAAA;AACvE,eAAO,MAAM,4BAA4B,UALC,OAAO,oBAKsC,CAAA;AACvF,eAAO,MAAM,0BAA0B,UANG,OAAO,oBAMkC,CAAA;AACnF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AACD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEnE;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,CAE9D;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EACxC,OAAO,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GACxD,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAIhC;AACD,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EACzE,GAAG,UAAU,EAAE,CAAC,GACd,SAAS,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAI9C;AACD,wBAAgB,iCAAiC,CAAC,CAAC,EAClD,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GACvC,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAIvC;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AACD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AACD,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC,CAE3F"}
1
+ {"version":3,"file":"Predicates.d.ts","sourceRoot":"","sources":["../../../src/assert-types/Predicates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEtE,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAEpD;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC,CAEvD;AACD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAE3E;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC,CAE/E;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;AACD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,CAEpD;AACD,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAEtD;AACD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AACD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAElE;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEhE;AAMD,eAAO,MAAM,uBAAuB,UAJK,OAAO,oBAIuB,CAAA;AACvE,eAAO,MAAM,4BAA4B,UALA,OAAO,oBAKuC,CAAA;AACvF,eAAO,MAAM,0BAA0B,UANE,OAAO,oBAMmC,CAAA;AACnF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AACD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEnE;AACD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,CAE9D;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EACxC,OAAO,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,GACxD,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAIhC;AACD,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EACzE,GAAG,UAAU,EAAE,CAAC,GACd,SAAS,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAI9C;AACD,wBAAgB,iCAAiC,CAAC,CAAC,EAClD,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GACvC,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAIvC;AACD,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAEvE;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AACD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AACD,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC,CAE3F"}
@@ -1,8 +1,9 @@
1
+ import { NestedClassName } from './types';
1
2
  /**
2
3
  * Combines a list of class names into a single string, even nested
3
4
  *
4
5
  * @param list - List of class names
5
6
  * @returns Combined class names as string
6
7
  */
7
- export declare function listClassName(list: (string | false | null | undefined)[]): string;
8
+ export declare function listClassName(list: NestedClassName): string;
8
9
  //# sourceMappingURL=listClassName.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"listClassName.d.ts","sourceRoot":"","sources":["../../../src/class-name/listClassName.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,UAExE"}
1
+ {"version":3,"file":"listClassName.d.ts","sourceRoot":"","sources":["../../../src/class-name/listClassName.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,UAElD"}