@tamagui/core 1.0.1-beta.152 → 1.0.1-beta.155

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 (56) hide show
  1. package/dist/cjs/createComponent.js +13 -11
  2. package/dist/cjs/createComponent.js.map +2 -2
  3. package/dist/cjs/helpers/getSplitStyles.js.map +1 -1
  4. package/dist/cjs/helpers/getStylesAtomic.js.map +1 -1
  5. package/dist/cjs/helpers/getThemeCSSRules.js +2 -1
  6. package/dist/cjs/helpers/getThemeCSSRules.js.map +2 -2
  7. package/dist/cjs/helpers/mergeTransform.js.map +1 -1
  8. package/dist/cjs/styled.js +5 -4
  9. package/dist/cjs/styled.js.map +2 -2
  10. package/dist/esm/createComponent.js +14 -12
  11. package/dist/esm/createComponent.js.map +2 -2
  12. package/dist/esm/helpers/getSplitStyles.js.map +1 -1
  13. package/dist/esm/helpers/getStylesAtomic.js.map +1 -1
  14. package/dist/esm/helpers/getThemeCSSRules.js +2 -1
  15. package/dist/esm/helpers/getThemeCSSRules.js.map +2 -2
  16. package/dist/esm/helpers/mergeTransform.js.map +1 -1
  17. package/dist/esm/styled.js +5 -4
  18. package/dist/esm/styled.js.map +2 -2
  19. package/package.json +11 -11
  20. package/src/createComponent.tsx +17 -14
  21. package/src/helpers/getSplitStyles.tsx +1 -1
  22. package/src/helpers/getStylesAtomic.ts +1 -1
  23. package/src/helpers/getThemeCSSRules.ts +2 -2
  24. package/src/helpers/mergeTransform.ts +1 -1
  25. package/src/styled.tsx +5 -5
  26. package/types/helpers/getSplitStyles.d.ts +1 -1
  27. package/types/helpers/getStylesAtomic.d.ts +1 -1
  28. package/types/helpers/mergeTransform.d.ts +1 -1
  29. package/dist/cjs/conf.js +0 -70
  30. package/dist/cjs/conf.js.map +0 -7
  31. package/dist/cjs/createComponent.server.js +0 -431
  32. package/dist/cjs/createComponent.server.js.map +0 -7
  33. package/dist/cjs/helpers/cssHash.js +0 -51
  34. package/dist/cjs/helpers/cssHash.js.map +0 -7
  35. package/dist/cjs/helpers/useAnimationDriver.js +0 -2
  36. package/dist/cjs/helpers/useAnimationDriver.js.map +0 -7
  37. package/dist/cjs/hooks/useAnimationDriver.js +0 -2
  38. package/dist/cjs/hooks/useAnimationDriver.js.map +0 -7
  39. package/dist/cjs/hooks/useFeatures.js +0 -89
  40. package/dist/cjs/hooks/useFeatures.js.map +0 -7
  41. package/dist/cjs/hooks/useServerContext.js +0 -21
  42. package/dist/cjs/hooks/useServerContext.js.map +0 -7
  43. package/dist/esm/conf.js +0 -39
  44. package/dist/esm/conf.js.map +0 -7
  45. package/dist/esm/createComponent.server.js +0 -408
  46. package/dist/esm/createComponent.server.js.map +0 -7
  47. package/dist/esm/helpers/cssHash.js +0 -27
  48. package/dist/esm/helpers/cssHash.js.map +0 -7
  49. package/dist/esm/helpers/useAnimationDriver.js +0 -1
  50. package/dist/esm/helpers/useAnimationDriver.js.map +0 -7
  51. package/dist/esm/hooks/useAnimationDriver.js +0 -1
  52. package/dist/esm/hooks/useAnimationDriver.js.map +0 -7
  53. package/dist/esm/hooks/useFeatures.js +0 -62
  54. package/dist/esm/hooks/useFeatures.js.map +0 -7
  55. package/dist/esm/hooks/useServerContext.js +0 -4
  56. package/dist/esm/hooks/useServerContext.js.map +0 -7
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/hooks/useFeatures.tsx"],
4
- "sourcesContent": ["import React from 'react'\nimport { RefObject } from 'react'\nimport { View, ViewStyle } from 'react-native'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport {\n PseudoStyles,\n SplitStyleState,\n StaticConfigParsed,\n TamaguiComponentState,\n UseAnimationHook,\n} from '../types'\nimport { addMediaQueryListener, mediaState, removeMediaQueryListener } from './useMedia'\n\ntype FeatureDefinition = {\n isEnabled: (props: any) => boolean\n Component: any\n}\n\ntype FeatureUtils = {\n forceUpdate: Function\n state: SplitStyleState\n setStateShallow: (next: Partial<TamaguiComponentState>) => void\n useAnimations?: UseAnimationHook\n pseudos: PseudoStyles\n style: ViewStyle | null | undefined\n staticConfig: StaticConfigParsed\n theme: any\n onDidAnimate?: () => void\n hostRef: RefObject<HTMLElement | View>\n}\n\nconst createDefinition = ({\n Component,\n propNames,\n}: {\n Component: (props: { _utils: FeatureUtils; [key: string]: any }) => void\n propNames: string[]\n}): FeatureDefinition => ({\n isEnabled: (props: any) => propNames.some((name) => !!props[name]),\n Component,\n})\n\nlet featureDefinitions: Record<string, FeatureDefinition> | null = null\n\ntype FeatureKeys = keyof ReturnType<typeof loadFeatures>\n\nexport const useFeatures = (props: any, utils?: FeatureUtils) => {\n if (!featureDefinitions) {\n featureDefinitions = loadFeatures()\n }\n const elements: JSX.Element[] = []\n const enabled: { [key in FeatureKeys]?: boolean } = {}\n for (const name in featureDefinitions) {\n const { isEnabled, Component } = featureDefinitions[name]\n if (isEnabled(props) && Component) {\n enabled[name] = true\n elements.push(<Component key={name} {...props} _utils={utils} />)\n }\n }\n return {\n elements,\n enabled,\n }\n}\n\nfunction loadFeatures() {\n return {\n // loads animations and sets state with the results\n // animation: loadAnimationFeature(),\n\n // will update the parent whenever media query changes\n // no need on web, media queries are inserted and run in css\n mediaQuery: loadMediaQueryFeature(),\n } as const\n}\n\nfunction loadMediaQueryFeature() {\n const mediaPropNames = Object.keys(mediaState)\n\n return createDefinition({\n Component: (props: any) => {\n const mediaKeys = mediaPropNames.filter((x) => x in props)\n\n useIsomorphicLayoutEffect(() => {\n for (const key of mediaKeys) {\n addMediaQueryListener(key, props._utils.forceUpdate)\n }\n return () => {\n for (const key of mediaKeys) {\n removeMediaQueryListener(key, props._utils.forceUpdate)\n }\n }\n }, [mediaKeys.join(',')])\n\n return null\n },\n propNames: mediaPropNames,\n })\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAkB;AAIlB,sBAA0C;AAQ1C,sBAA4E;AAoB5E,MAAM,mBAAmB,CAAC;AAAA,EACxB;AAAA,EACA;AAAA,MAIwB;AAAA,EACxB,WAAW,CAAC,UAAe,UAAU,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK;AAAA,EACjE;AACF;AAEA,IAAI,qBAA+D;AAI5D,MAAM,cAAc,CAAC,OAAY,UAAyB;AAC/D,MAAI,CAAC,oBAAoB;AACvB,yBAAqB,aAAa;AAAA,EACpC;AACA,QAAM,WAA0B,CAAC;AACjC,QAAM,UAA8C,CAAC;AACrD,aAAW,QAAQ,oBAAoB;AACrC,UAAM,EAAE,WAAW,cAAc,mBAAmB;AACpD,QAAI,UAAU,KAAK,KAAK,WAAW;AACjC,cAAQ,QAAQ;AAChB,eAAS,KAAK,mDAAC;AAAA,QAAU,KAAK;AAAA,QAAO,GAAG;AAAA,QAAO,QAAQ;AAAA,OAAO,CAAE;AAAA,IAClE;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,wBAAwB;AACtB,SAAO;AAAA,IAML,YAAY,sBAAsB;AAAA,EACpC;AACF;AAEA,iCAAiC;AAC/B,QAAM,iBAAiB,OAAO,KAAK,0BAAU;AAE7C,SAAO,iBAAiB;AAAA,IACtB,WAAW,CAAC,UAAe;AACzB,YAAM,YAAY,eAAe,OAAO,CAAC,MAAM,KAAK,KAAK;AAEzD,qDAA0B,MAAM;AAC9B,mBAAW,OAAO,WAAW;AAC3B,qDAAsB,KAAK,MAAM,OAAO,WAAW;AAAA,QACrD;AACA,eAAO,MAAM;AACX,qBAAW,OAAO,WAAW;AAC3B,0DAAyB,KAAK,MAAM,OAAO,WAAW;AAAA,UACxD;AAAA,QACF;AAAA,MACF,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC;AAExB,aAAO;AAAA,IACT;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AACH;",
6
- "names": []
7
- }
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from === "object" || typeof from === "function") {
10
- for (let key of __getOwnPropNames(from))
11
- if (!__hasOwnProp.call(to, key) && key !== except)
12
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
- }
14
- return to;
15
- };
16
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
17
- var React = __toESM(require("react"));
18
- const import_meta = {};
19
- console.log("ok", React["createServerContext"]);
20
- const isRSC = import_meta.env.SSR;
21
- //# sourceMappingURL=useServerContext.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/hooks/useServerContext.tsx"],
4
- "sourcesContent": ["import * as React from 'react'\n\nconsole.log('ok', React['createServerContext'])\n\n// @ts-ignore\nconst isRSC = import.meta.env.SSR\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;AAAA,YAAuB;AAAvB;AAEA,QAAQ,IAAI,MAAM,MAAM,sBAAsB;AAG9C,MAAM,QAAQ,YAAY,IAAI;",
6
- "names": []
7
- }
package/dist/esm/conf.js DELETED
@@ -1,39 +0,0 @@
1
- let conf;
2
- const setConfig = (next) => {
3
- conf = next;
4
- if (configListeners.size) {
5
- configListeners.forEach((cb) => cb(conf));
6
- configListeners.clear();
7
- }
8
- };
9
- const setConfigFont = (name, font, fontParsed) => {
10
- if (process.env.NODE_ENV === "development") {
11
- if (!conf)
12
- throw new Error(`Haven't called createTamagui yet`);
13
- }
14
- Object.assign(conf.fonts, { [name]: font });
15
- Object.assign(conf.fontsParsed, { [`$${name}`]: fontParsed });
16
- };
17
- const getHasConfigured = () => !!conf;
18
- const getConfig = () => conf;
19
- const getTokens = () => conf.tokensParsed;
20
- const getThemes = () => conf.themes;
21
- const configListeners = /* @__PURE__ */ new Set();
22
- const onConfiguredOnce = (cb) => {
23
- if (conf) {
24
- cb(conf);
25
- } else {
26
- configListeners.add(cb);
27
- }
28
- };
29
- export {
30
- configListeners,
31
- getConfig,
32
- getHasConfigured,
33
- getThemes,
34
- getTokens,
35
- onConfiguredOnce,
36
- setConfig,
37
- setConfigFont
38
- };
39
- //# sourceMappingURL=conf.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/conf.ts"],
4
- "sourcesContent": ["import { ConfigListener, TamaguiInternalConfig } from './types'\n\nlet conf: TamaguiInternalConfig | null\n\nexport const setConfig = (next: TamaguiInternalConfig) => {\n conf = next\n if (configListeners.size) {\n configListeners.forEach((cb) => cb(conf!))\n configListeners.clear()\n }\n}\n\nexport const setConfigFont = (name: string, font: any, fontParsed: any) => {\n if (process.env.NODE_ENV === 'development') {\n if (!conf) throw new Error(`Haven't called createTamagui yet`)\n }\n Object.assign(conf!.fonts, { [name]: font })\n Object.assign(conf!.fontsParsed, { [`$${name}`]: fontParsed })\n}\n\nexport const getHasConfigured = () => !!conf\nexport const getConfig = () => conf!\nexport const getTokens = () => conf!.tokensParsed\nexport const getThemes = () => conf!.themes\n\nexport const configListeners = new Set<ConfigListener>()\n\nexport const onConfiguredOnce = (cb: ConfigListener) => {\n if (conf) {\n cb(conf!)\n } else {\n configListeners.add(cb)\n }\n}\n"],
5
- "mappings": "AAEA,IAAI;AAEG,MAAM,YAAY,CAAC,SAAgC;AACxD,SAAO;AACP,MAAI,gBAAgB,MAAM;AACxB,oBAAgB,QAAQ,CAAC,OAAO,GAAG,IAAK,CAAC;AACzC,oBAAgB,MAAM;AAAA,EACxB;AACF;AAEO,MAAM,gBAAgB,CAAC,MAAc,MAAW,eAAoB;AACzE,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC;AAAM,YAAM,IAAI,MAAM,kCAAkC;AAAA,EAC/D;AACA,SAAO,OAAO,KAAM,OAAO,EAAE,CAAC,OAAO,KAAK,CAAC;AAC3C,SAAO,OAAO,KAAM,aAAa,EAAE,CAAC,IAAI,SAAS,WAAW,CAAC;AAC/D;AAEO,MAAM,mBAAmB,MAAM,CAAC,CAAC;AACjC,MAAM,YAAY,MAAM;AACxB,MAAM,YAAY,MAAM,KAAM;AAC9B,MAAM,YAAY,MAAM,KAAM;AAE9B,MAAM,kBAAkB,oBAAI,IAAoB;AAEhD,MAAM,mBAAmB,CAAC,OAAuB;AACtD,MAAI,MAAM;AACR,OAAG,IAAK;AAAA,EACV,OAAO;AACL,oBAAgB,IAAI,EAAE;AAAA,EACxB;AACF;",
6
- "names": []
7
- }
@@ -1,408 +0,0 @@
1
- import {
2
- stylePropsView,
3
- validPseudoKeys,
4
- validStyles
5
- } from "@tamagui/helpers";
6
- import { useForceUpdate } from "@tamagui/use-force-update";
7
- import React, {
8
- Children,
9
- Fragment,
10
- forwardRef,
11
- memo,
12
- useContext,
13
- useState
14
- } from "react";
15
- import { StyleSheet, View } from "react-native";
16
- import { getConfig, onConfiguredOnce } from "./conf";
17
- import { stackDefaultStyles } from "./constants/constants";
18
- import { isWeb } from "./constants/platform";
19
- import { FontLanguageContext } from "./contexts/FontLanguageContext";
20
- import { TextAncestorContext } from "./contexts/TextAncestorContext";
21
- import { extendStaticConfig, parseStaticConfig } from "./helpers/extendStaticConfig";
22
- import { insertSplitStyles, useSplitStyles } from "./helpers/getSplitStyles";
23
- import { mergeProps } from "./helpers/mergeProps";
24
- import { proxyThemeVariables } from "./helpers/proxyThemeVariables";
25
- import { useTheme } from "./hooks/useTheme";
26
- React["keep"];
27
- const isRSC = import.meta.env.SSR;
28
- const defaultComponentState = Object.freeze({
29
- hover: false,
30
- press: false,
31
- pressIn: false,
32
- focus: false,
33
- mounted: false,
34
- animation: null
35
- });
36
- const mouseUps = /* @__PURE__ */ new Set();
37
- if (typeof document !== "undefined") {
38
- const cancelTouches = () => {
39
- mouseUps.forEach((x) => x());
40
- mouseUps.clear();
41
- };
42
- document.addEventListener("mouseup", cancelTouches);
43
- document.addEventListener("touchend", cancelTouches);
44
- document.addEventListener("touchcancel", cancelTouches);
45
- }
46
- function mergeShorthands({ defaultProps }, { shorthands }) {
47
- for (const key in defaultProps) {
48
- defaultProps[shorthands[key] || key] = defaultProps[key];
49
- }
50
- }
51
- let initialTheme;
52
- let config;
53
- function createComponent(configIn, ParentComponent) {
54
- const staticConfig = (() => {
55
- const next = extendStaticConfig(configIn, ParentComponent);
56
- if ("parsed" in next) {
57
- return next;
58
- } else {
59
- return parseStaticConfig(next);
60
- }
61
- })();
62
- const defaultComponentClassName = `is_${staticConfig.componentName}`;
63
- let tamaguiConfig;
64
- let AnimatedText;
65
- let AnimatedView;
66
- let avoidClasses = true;
67
- let defaultNativeStyle;
68
- let defaultNativeStyleSheet;
69
- let tamaguiDefaultProps;
70
- let initialSplitStyles;
71
- const component = forwardRef((propsIn, forwardedRef) => {
72
- let props;
73
- if (tamaguiDefaultProps && !propsIn.asChild) {
74
- props = mergeProps(tamaguiDefaultProps, propsIn)[0];
75
- } else {
76
- props = propsIn;
77
- }
78
- const { Component, isText, isZStack } = staticConfig;
79
- const componentName = props.componentName || staticConfig.componentName;
80
- const componentClassName = props.asChild ? "" : props.componentName ? `is_${props.componentName}` : defaultComponentClassName;
81
- if (process.env.NODE_ENV === "development") {
82
- if (props["debug"]) {
83
- const name = `${componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]"}`;
84
- const banner = `${name} ${propsIn["data-is"] || ""}`;
85
- console.group(`%c \u{1F41B} ${banner}`, "background: yellow;");
86
- console.log("props", propsIn);
87
- if (props["debug"] === "break") {
88
- debugger;
89
- }
90
- }
91
- }
92
- const forceUpdate = useForceUpdate();
93
- config = config || getConfig();
94
- const theme = useTheme(props.theme, componentName, props, forceUpdate);
95
- const states = isRSC ? [defaultComponentState, null] : useState(defaultComponentState);
96
- const state = propsIn.forceStyle ? { ...states[0], [propsIn.forceStyle]: true } : states[0];
97
- const shouldAvoidClasses = !!(props.animation && avoidClasses);
98
- const shouldForcePseudo = !!propsIn.forceStyle;
99
- const hasTextAncestor = !!(isWeb && isText ? useContext(TextAncestorContext) : false);
100
- const splitStyleState = !shouldAvoidClasses && !shouldForcePseudo ? {
101
- ...state,
102
- hasTextAncestor,
103
- dynamicStylesInline: true
104
- } : {
105
- ...state,
106
- noClassNames: true,
107
- dynamicStylesInline: true,
108
- hasTextAncestor,
109
- resolveVariablesAs: "value"
110
- };
111
- const languageContext = isRSC ? null : useContext(FontLanguageContext);
112
- const splitStyles = useSplitStyles(props, staticConfig, theme, splitStyleState, props.asChild ? null : initialSplitStyles == null ? void 0 : initialSplitStyles.classNames, languageContext || void 0, props["debug"]);
113
- console.log("hi2");
114
- return propsIn.children;
115
- });
116
- if (staticConfig.componentName) {
117
- component.displayName = staticConfig.componentName;
118
- }
119
- onConfiguredOnce((conf) => {
120
- if (isRSC)
121
- return;
122
- if (process.env.IS_STATIC === "is_static")
123
- return;
124
- tamaguiConfig = conf;
125
- mergeShorthands(staticConfig, tamaguiConfig);
126
- if (tamaguiConfig.animations) {
127
- avoidClasses = !!tamaguiConfig.animations.avoidClasses;
128
- AnimatedText = tamaguiConfig.animations.Text;
129
- AnimatedView = tamaguiConfig.animations.View;
130
- }
131
- initialTheme = initialTheme || proxyThemeVariables(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]]);
132
- config = getConfig();
133
- let defaultPropsIn = staticConfig.defaultProps || {};
134
- const parentNames = [...staticConfig.parentNames || [], staticConfig.componentName];
135
- if (config.defaultProps && parentNames && staticConfig.componentName) {
136
- defaultPropsIn = mergeConfigDefaultProps(staticConfig.componentName, defaultPropsIn, config.defaultProps, parentNames, conf);
137
- }
138
- const debug = true ? defaultPropsIn["debug"] : false;
139
- if (process.env.NODE_ENV === "development" && debug === "break") {
140
- debugger;
141
- }
142
- const [parentProps, parentClassNames] = mergeProps(defaultPropsIn, {}, true);
143
- initialSplitStyles = insertSplitStyles(parentProps, staticConfig, initialTheme, {
144
- mounted: true,
145
- hover: false,
146
- press: false,
147
- pressIn: false,
148
- focus: false,
149
- resolveVariablesAs: "both",
150
- keepVariantsAsProps: true
151
- }, void 0, void 0, debug);
152
- const [defaults, defaultsClassnames] = mergeProps(component.defaultProps, initialSplitStyles.viewProps, true);
153
- initialSplitStyles.classNames = {
154
- ...parentClassNames,
155
- ...defaultsClassnames,
156
- ...initialSplitStyles.classNames
157
- };
158
- defaultNativeStyle = {};
159
- const validStyles2 = staticConfig.validStyles || stylePropsView;
160
- if (!isWeb) {
161
- for (const key in staticConfig.defaultProps) {
162
- const val = staticConfig.defaultProps[key];
163
- if (validPseudoKeys[key])
164
- continue;
165
- if (typeof val === "string" && val[0] === "$" || !validStyles2[key]) {
166
- defaults[key] = val;
167
- } else {
168
- defaultNativeStyle[key] = val;
169
- }
170
- }
171
- }
172
- defaultNativeStyleSheet = StyleSheet.create({
173
- base: defaultNativeStyle
174
- });
175
- if (Object.keys(defaults).length) {
176
- tamaguiDefaultProps = defaults;
177
- }
178
- if (process.env.NODE_ENV === "development" && debug) {
179
- if (process.env.IS_STATIC !== "is_static") {
180
- console.log(`\u{1F41B} [${staticConfig.componentName || "Component"}]`, {
181
- staticConfig,
182
- initialSplitStyles,
183
- tamaguiDefaultProps,
184
- defaultNativeStyle,
185
- defaults,
186
- defaultPropsIn
187
- });
188
- }
189
- }
190
- });
191
- let res = component;
192
- if (configIn.memo) {
193
- res = memo(res);
194
- }
195
- res.staticConfig = {
196
- validStyles: staticConfig.validStyles || stylePropsView,
197
- ...staticConfig
198
- };
199
- res.extractable = (Component, conf) => {
200
- Component.staticConfig = extendStaticConfig({
201
- Component,
202
- ...conf,
203
- neverFlatten: true,
204
- isExtractable: true,
205
- defaultProps: {
206
- ...Component.defaultProps,
207
- ...conf == null ? void 0 : conf.defaultProps
208
- }
209
- }, res);
210
- return Component;
211
- };
212
- return res;
213
- }
214
- const Unspaced = (props) => {
215
- return props.children;
216
- };
217
- Unspaced["isUnspaced"] = true;
218
- const Spacer = createComponent({
219
- memo: true,
220
- componentName: "Spacer",
221
- validStyles,
222
- defaultProps: {
223
- ...stackDefaultStyles,
224
- size: true
225
- },
226
- variants: {
227
- size: {
228
- "...size": (size, { tokens }) => {
229
- size = size == true ? "$true" : size;
230
- const sizePx = tokens.space[size] ?? size;
231
- return {
232
- width: sizePx,
233
- height: sizePx,
234
- minWidth: sizePx,
235
- minHeight: sizePx
236
- };
237
- }
238
- },
239
- flex: {
240
- true: {
241
- flexGrow: 1
242
- }
243
- },
244
- direction: {
245
- horizontal: {
246
- height: 0,
247
- minHeight: 0
248
- },
249
- vertical: {
250
- width: 0,
251
- minWidth: 0
252
- },
253
- both: {}
254
- }
255
- },
256
- defaultVariants: {
257
- direction: "both"
258
- }
259
- });
260
- function spacedChildren({
261
- isZStack,
262
- children,
263
- space,
264
- direction,
265
- spaceFlex,
266
- separator
267
- }) {
268
- const hasSpace = !!(space || spaceFlex);
269
- const hasSeparator = !(separator === void 0 || separator === null);
270
- if (!hasSpace && !hasSeparator && !isZStack) {
271
- return children;
272
- }
273
- const childrenList = Children.toArray(children);
274
- if (childrenList.length <= 1 && !isZStack) {
275
- return childrenList;
276
- }
277
- const final = [];
278
- for (const [index, child] of childrenList.entries()) {
279
- const isEmpty = child === null || child === void 0 || Array.isArray(child) && child.length === 0;
280
- if (isEmpty || !child || child["key"] && !isZStack) {
281
- final.push(child);
282
- } else {
283
- final.push(/* @__PURE__ */ React.createElement(Fragment, {
284
- key: index
285
- }, isZStack ? /* @__PURE__ */ React.createElement(AbsoluteFill, null, child) : child));
286
- }
287
- if (isUnspaced(child) && index === 0) {
288
- continue;
289
- }
290
- if (isZStack) {
291
- continue;
292
- }
293
- const next = childrenList[index + 1];
294
- if (next && !isUnspaced(next)) {
295
- if (separator) {
296
- if (hasSpace) {
297
- final.push(createSpacer({
298
- key: `_${index}_before_sep_spacer`,
299
- direction,
300
- space,
301
- spaceFlex
302
- }));
303
- }
304
- final.push(React.isValidElement(separator) ? React.cloneElement(separator, { key: `sep_${index}` }) : separator);
305
- if (hasSpace) {
306
- final.push(createSpacer({
307
- key: `_${index}_after_sep_spacer`,
308
- direction,
309
- space,
310
- spaceFlex
311
- }));
312
- }
313
- } else {
314
- final.push(createSpacer({
315
- key: `_${index}_spacer`,
316
- direction,
317
- space,
318
- spaceFlex
319
- }));
320
- }
321
- }
322
- }
323
- return final;
324
- }
325
- function createSpacer({ key, direction, space, spaceFlex }) {
326
- return /* @__PURE__ */ React.createElement(Spacer, {
327
- key,
328
- size: space,
329
- direction,
330
- ...spaceFlex && {
331
- flex: spaceFlex
332
- }
333
- });
334
- }
335
- function isUnspaced(child) {
336
- var _a, _b;
337
- return ((_a = child == null ? void 0 : child["type"]) == null ? void 0 : _a["isVisuallyHidden"]) || ((_b = child == null ? void 0 : child["type"]) == null ? void 0 : _b["isUnspaced"]);
338
- }
339
- function AbsoluteFill(props) {
340
- return /* @__PURE__ */ React.createElement(View, {
341
- pointerEvents: "box-none",
342
- style: StyleSheet.absoluteFill
343
- }, props.children);
344
- }
345
- function processIDRefList(idRefList) {
346
- return Array.isArray(idRefList) ? idRefList.join(" ") : idRefList;
347
- }
348
- const accessibilityRoleToWebRole = {
349
- adjustable: "slider",
350
- button: "button",
351
- header: "heading",
352
- image: "img",
353
- imagebutton: null,
354
- keyboardkey: null,
355
- label: null,
356
- link: "link",
357
- none: "presentation",
358
- search: "search",
359
- summary: "region",
360
- text: null
361
- };
362
- function addPseudoToStyles(styles, initialPseudos, pseudos, name, force = false) {
363
- const pseudoStyle = pseudos[name];
364
- const shouldNestObject = isWeb && name !== "enterStyle" && name !== "exitStyle";
365
- const defaultPseudoStyle = initialPseudos[name];
366
- const style = defaultPseudoStyle ? { ...defaultPseudoStyle, ...pseudoStyle } : pseudoStyle;
367
- if (style) {
368
- styles.push(shouldNestObject && !force ? { [name]: style } : style);
369
- }
370
- }
371
- const DefaultProps = /* @__PURE__ */ new Map();
372
- function mergeConfigDefaultProps(name, props, configDefaults, parentNames, conf) {
373
- const len = parentNames.length;
374
- let prev;
375
- for (let i = 0; i < len; i++) {
376
- const n = parentNames[i];
377
- if (!n)
378
- continue;
379
- if (DefaultProps.has(n)) {
380
- prev = DefaultProps.get(n);
381
- continue;
382
- }
383
- const props2 = configDefaults[n];
384
- if (!props2) {
385
- if (prev) {
386
- DefaultProps.set(n, prev);
387
- }
388
- continue;
389
- }
390
- prev = mergeProps(prev || {}, props2, false, conf.inverseShorthands)[0];
391
- DefaultProps.set(n, prev);
392
- }
393
- const ourDefaultsMerged = DefaultProps.get(name);
394
- if (ourDefaultsMerged) {
395
- return mergeProps(props, ourDefaultsMerged, false, conf.inverseShorthands)[0];
396
- }
397
- return props;
398
- }
399
- export {
400
- Spacer,
401
- Unspaced,
402
- accessibilityRoleToWebRole,
403
- createComponent,
404
- mouseUps,
405
- processIDRefList,
406
- spacedChildren
407
- };
408
- //# sourceMappingURL=createComponent.server.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/createComponent.server.tsx"],
4
- "sourcesContent": ["/* eslint-disable react-hooks/rules-of-hooks */\nimport {\n composeEventHandlers,\n stylePropsView,\n validPseudoKeys,\n validStyles,\n} from '@tamagui/helpers'\nimport {\n useElementLayout,\n useMergeRefs,\n usePlatformMethods,\n useResponderEvents,\n} from '@tamagui/rnw'\nimport { useForceUpdate } from '@tamagui/use-force-update'\nimport React, {\n Children,\n Fragment,\n createElement,\n forwardRef,\n memo,\n useCallback,\n useContext,\n useRef,\n useState,\n} from 'react'\nimport { StyleSheet, Text, View, ViewStyle } from 'react-native'\n\nimport { getConfig, onConfiguredOnce } from './conf'\nimport { stackDefaultStyles } from './constants/constants'\nimport { isClient, isWeb, useIsomorphicLayoutEffect } from './constants/platform'\nimport { FontLanguageContext } from './contexts/FontLanguageContext'\nimport { TextAncestorContext } from './contexts/TextAncestorContext'\nimport { assignNativePropsToWeb } from './helpers/assignNativePropsToWeb'\nimport { getReturnVariablesAs } from './helpers/createPropMapper'\nimport { createShallowUpdate } from './helpers/createShallowUpdate'\nimport { extendStaticConfig, parseStaticConfig } from './helpers/extendStaticConfig'\nimport { SplitStyleResult, insertSplitStyles, useSplitStyles } from './helpers/getSplitStyles'\nimport { getAllSelectors } from './helpers/insertStyleRule'\nimport { mergeProps } from './helpers/mergeProps'\nimport { proxyThemeVariables } from './helpers/proxyThemeVariables'\nimport { useFeatures } from './hooks/useFeatures'\nimport { mediaState } from './hooks/useMedia'\nimport { usePressable } from './hooks/usePressable'\nimport { getThemeManager, useTheme } from './hooks/useTheme'\nimport {\n SpaceDirection,\n SpaceTokens,\n SpacerProps,\n StaticConfig,\n StaticConfigParsed,\n StylableComponent,\n TamaguiComponent,\n TamaguiComponentState,\n TamaguiConfig,\n TamaguiElement,\n TamaguiInternalConfig,\n UseAnimationHook,\n} from './types'\nimport { usePressability } from './vendor/Pressability'\nimport { Slot, mergeEvent } from './views/Slot'\nimport { wrapThemeManagerContext } from './views/Theme'\n\nReact['keep']\n\n// @ts-ignore\nconst isRSC = import.meta.env.SSR\n\nconst defaultComponentState: TamaguiComponentState = Object.freeze({\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n // only used by enterStyle\n mounted: false,\n animation: null,\n})\n\nexport const mouseUps = new Set<Function>()\nif (typeof document !== 'undefined') {\n const cancelTouches = () => {\n mouseUps.forEach((x) => x())\n mouseUps.clear()\n }\n document.addEventListener('mouseup', cancelTouches)\n document.addEventListener('touchend', cancelTouches)\n document.addEventListener('touchcancel', cancelTouches)\n}\n\n// mutates\nfunction mergeShorthands({ defaultProps }: StaticConfigParsed, { shorthands }: TamaguiConfig) {\n // they are defined in correct order already { ...parent, ...child }\n for (const key in defaultProps) {\n defaultProps[shorthands[key] || key] = defaultProps[key]\n }\n}\n\nlet initialTheme: any\nlet config: TamaguiInternalConfig\n\nexport function createComponent<\n ComponentPropTypes extends Object = {},\n Ref = TamaguiElement,\n BaseProps = never\n>(configIn: Partial<StaticConfig> | StaticConfigParsed, ParentComponent?: StylableComponent) {\n const staticConfig = (() => {\n const next = extendStaticConfig(configIn, ParentComponent)\n if ('parsed' in next) {\n return next\n } else {\n return parseStaticConfig(next)\n }\n })()\n\n const defaultComponentClassName = `is_${staticConfig.componentName}`\n let tamaguiConfig: TamaguiInternalConfig\n let AnimatedText: any\n let AnimatedView: any\n let avoidClasses = true\n let defaultNativeStyle: any\n let defaultNativeStyleSheet: StyleSheet.NamedStyles<{ base: {} }>\n let tamaguiDefaultProps: any\n let initialSplitStyles: SplitStyleResult\n\n // see onConfiguredOnce below which attaches a name then to this component\n const component = forwardRef<Ref, ComponentPropTypes>((propsIn: any, forwardedRef) => {\n // React inserts default props after your props for some reason...\n // order important so we do loops, you can't just spread because JS does weird things\n let props: any\n if (tamaguiDefaultProps && !propsIn.asChild) {\n props = mergeProps(tamaguiDefaultProps, propsIn)[0]\n } else {\n props = propsIn\n }\n\n const { Component, isText, isZStack } = staticConfig\n const componentName = props.componentName || staticConfig.componentName\n const componentClassName = props.asChild\n ? ''\n : props.componentName\n ? `is_${props.componentName}`\n : defaultComponentClassName\n\n if (process.env.NODE_ENV === 'development') {\n if (props['debug']) {\n const name = `${\n componentName || Component?.displayName || Component?.name || '[Unnamed Component]'\n }`\n const banner = `${name} ${propsIn['data-is'] || ''}`\n // eslint-disable-next-line no-console\n console.group(`%c \uD83D\uDC1B ${banner}`, 'background: yellow;')\n // eslint-disable-next-line no-console\n console.log('props', propsIn)\n // eslint-disable-next-line no-console\n // console.log('ref', hostRef, '(click to view)')\n if (props['debug'] === 'break') {\n // eslint-disable-next-line no-debugger\n debugger\n }\n }\n }\n\n const forceUpdate = useForceUpdate()\n config = config || getConfig()\n const theme = useTheme(props.theme, componentName, props, forceUpdate)\n\n const states = isRSC\n ? ([defaultComponentState, null as any] as [\n TamaguiComponentState,\n React.Dispatch<React.SetStateAction<TamaguiComponentState>>\n ])\n : useState<TamaguiComponentState>(defaultComponentState)\n const state = propsIn.forceStyle ? { ...states[0], [propsIn.forceStyle]: true } : states[0]\n\n const shouldAvoidClasses = !!(props.animation && avoidClasses)\n const shouldForcePseudo = !!propsIn.forceStyle\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const hasTextAncestor = !!(isWeb && isText ? useContext(TextAncestorContext) : false)\n const splitStyleState =\n !shouldAvoidClasses && !shouldForcePseudo\n ? {\n ...state,\n hasTextAncestor,\n dynamicStylesInline: true,\n }\n : ({\n ...state,\n noClassNames: true,\n dynamicStylesInline: true,\n hasTextAncestor,\n resolveVariablesAs: 'value',\n } as const)\n\n const languageContext = isRSC ? null : useContext(FontLanguageContext)\n\n const splitStyles = useSplitStyles(\n props,\n staticConfig,\n theme,\n splitStyleState,\n props.asChild ? null : initialSplitStyles?.classNames,\n languageContext || undefined,\n props['debug']\n )\n\n console.log('hi2')\n\n return propsIn.children\n })\n\n if (staticConfig.componentName) {\n component.displayName = staticConfig.componentName\n }\n\n // Once configuration is run and all components are registered\n // get default props + className and analyze styles\n onConfiguredOnce((conf) => {\n if (isRSC) return\n // in static mode we just use these to lookup configuration\n // ... we likely want this? need to test\n if (process.env.IS_STATIC === 'is_static') return\n\n tamaguiConfig = conf\n\n // do this to make sure shorthands don't duplicate with.. longhands\n mergeShorthands(staticConfig, tamaguiConfig)\n\n if (tamaguiConfig.animations) {\n avoidClasses = !!tamaguiConfig.animations.avoidClasses\n AnimatedText = tamaguiConfig.animations.Text\n AnimatedView = tamaguiConfig.animations.View\n }\n\n initialTheme =\n initialTheme ||\n proxyThemeVariables(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]])\n\n // adds in user defined default props\n config = getConfig()\n\n let defaultPropsIn = staticConfig.defaultProps || {}\n\n // because we run createTamagui after styled() defs, have to do some work here\n // gather defaults props one time and merge downwards\n // find last unprocessed and process\n const parentNames = [...(staticConfig.parentNames || []), staticConfig.componentName]\n\n if (config.defaultProps && parentNames && staticConfig.componentName) {\n defaultPropsIn = mergeConfigDefaultProps(\n staticConfig.componentName,\n defaultPropsIn,\n config.defaultProps,\n parentNames,\n conf\n )\n }\n\n const debug = true ? defaultPropsIn['debug'] : false\n\n if (process.env.NODE_ENV === 'development' && debug === 'break') {\n // eslint-disable-next-line no-debugger\n debugger\n }\n\n // remove all classNames\n const [parentProps, parentClassNames] = mergeProps(defaultPropsIn, {}, true)\n\n initialSplitStyles = insertSplitStyles(\n parentProps,\n staticConfig,\n initialTheme,\n {\n mounted: true,\n hover: false,\n press: false,\n pressIn: false,\n focus: false,\n resolveVariablesAs: 'both',\n keepVariantsAsProps: true,\n },\n undefined,\n undefined,\n debug\n )\n\n // must preserve prop order\n // leave out className because we handle that already with initialSplitStyles.classNames\n // otherwise it confuses variant functions getting className props\n const [defaults, defaultsClassnames] = mergeProps(\n component.defaultProps as any,\n initialSplitStyles.viewProps,\n true\n // conf.inverseShorthands\n )\n\n // avoid passing className props to variants\n initialSplitStyles.classNames = {\n ...parentClassNames,\n ...defaultsClassnames,\n ...initialSplitStyles.classNames,\n }\n\n defaultNativeStyle = {}\n\n const validStyles = staticConfig.validStyles || stylePropsView\n\n // split - keep variables on props to be processed using theme values at runtime (native)\n if (!isWeb) {\n for (const key in staticConfig.defaultProps) {\n const val = staticConfig.defaultProps[key]\n if (validPseudoKeys[key]) continue\n if ((typeof val === 'string' && val[0] === '$') || !validStyles[key]) {\n defaults[key] = val\n } else {\n defaultNativeStyle[key] = val\n }\n }\n }\n\n defaultNativeStyleSheet = StyleSheet.create({\n base: defaultNativeStyle,\n })\n\n if (Object.keys(defaults).length) {\n tamaguiDefaultProps = defaults\n }\n\n // add debug logs\n if (process.env.NODE_ENV === 'development' && debug) {\n if (process.env.IS_STATIC !== 'is_static') {\n // eslint-disable-next-line no-console\n console.log(`\uD83D\uDC1B [${staticConfig.componentName || 'Component'}]`, {\n staticConfig,\n initialSplitStyles,\n tamaguiDefaultProps,\n defaultNativeStyle,\n defaults,\n defaultPropsIn,\n })\n }\n }\n })\n\n let res: TamaguiComponent<ComponentPropTypes, Ref, BaseProps> = component as any\n\n if (configIn.memo) {\n res = memo(res) as any\n }\n\n res.staticConfig = {\n validStyles: staticConfig.validStyles || stylePropsView,\n ...staticConfig,\n }\n\n // res.extractable HoC\n res.extractable = (Component: any, conf?: Partial<StaticConfig>) => {\n Component.staticConfig = extendStaticConfig(\n {\n Component,\n ...conf,\n neverFlatten: true,\n isExtractable: true,\n defaultProps: {\n ...Component.defaultProps,\n ...conf?.defaultProps,\n },\n },\n res\n )\n return Component\n }\n\n return res\n}\n\n// for elements to avoid spacing\nexport const Unspaced = (props: { children?: any }) => {\n return props.children\n}\nUnspaced['isUnspaced'] = true\n\n// dont used styled() here to avoid circular deps\n// keep inline to avoid circular deps\n\nexport const Spacer = createComponent<SpacerProps>({\n memo: true,\n componentName: 'Spacer',\n validStyles,\n defaultProps: {\n ...stackDefaultStyles,\n size: true,\n },\n variants: {\n size: {\n '...size': (size, { tokens }) => {\n size = size == true ? '$true' : size\n const sizePx = tokens.space[size] ?? size\n return {\n width: sizePx,\n height: sizePx,\n minWidth: sizePx,\n minHeight: sizePx,\n }\n },\n },\n\n flex: {\n true: {\n flexGrow: 1,\n },\n },\n\n direction: {\n horizontal: {\n height: 0,\n minHeight: 0,\n },\n vertical: {\n width: 0,\n minWidth: 0,\n },\n both: {},\n },\n },\n\n defaultVariants: {\n direction: 'both',\n },\n})\n\nexport type SpacedChildrenProps = {\n isZStack?: boolean\n children?: React.ReactNode\n space?: SpaceTokens | number | null\n spaceFlex?: boolean | number\n direction?: SpaceDirection\n separator?: React.ReactNode\n}\n\nexport function spacedChildren({\n isZStack,\n children,\n space,\n direction,\n spaceFlex,\n separator,\n}: SpacedChildrenProps) {\n const hasSpace = !!(space || spaceFlex)\n const hasSeparator = !(separator === undefined || separator === null)\n if (!hasSpace && !hasSeparator && !isZStack) {\n return children\n }\n const childrenList = Children.toArray(children)\n if (childrenList.length <= 1 && !isZStack) {\n return childrenList\n }\n const final: React.ReactNode[] = []\n for (const [index, child] of childrenList.entries()) {\n const isEmpty =\n child === null || child === undefined || (Array.isArray(child) && child.length === 0)\n\n // push them all, but wrap some in Fragment\n if (isEmpty || !child || (child['key'] && !isZStack)) {\n final.push(child)\n } else {\n final.push(\n <Fragment key={index}>{isZStack ? <AbsoluteFill>{child}</AbsoluteFill> : child}</Fragment>\n )\n }\n\n // first child unspaced avoid insert space\n if (isUnspaced(child) && index === 0) {\n continue\n }\n\n // no spacing on ZStack\n if (isZStack) {\n continue\n }\n\n const next = childrenList[index + 1]\n\n if (next && !isUnspaced(next)) {\n if (separator) {\n if (hasSpace) {\n final.push(\n createSpacer({\n key: `_${index}_before_sep_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n final.push(\n React.isValidElement(separator)\n ? React.cloneElement(separator, { key: `sep_${index}` })\n : separator\n )\n if (hasSpace) {\n final.push(\n createSpacer({\n key: `_${index}_after_sep_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n } else {\n final.push(\n createSpacer({\n key: `_${index}_spacer`,\n direction,\n space,\n spaceFlex,\n })\n )\n }\n }\n }\n\n return final\n}\n\ntype CreateSpacerProps = SpacedChildrenProps & { key: string }\n\nfunction createSpacer({ key, direction, space, spaceFlex }: CreateSpacerProps) {\n return (\n <Spacer\n key={key}\n size={space}\n direction={direction}\n {...(spaceFlex && {\n flex: spaceFlex,\n })}\n />\n )\n}\n\nfunction isUnspaced(child: React.ReactNode) {\n // console.log('unspaced?', child, getMedia())\n return child?.['type']?.['isVisuallyHidden'] || child?.['type']?.['isUnspaced']\n}\n\nfunction AbsoluteFill(props: { children?: any }) {\n return (\n <View pointerEvents=\"box-none\" style={StyleSheet.absoluteFill}>\n {props.children}\n </View>\n )\n}\n\n// this can be done with CSS entirely right?\n// const shouldWrapTextAncestor = isWeb && isText && !hasTextAncestor\n// if (shouldWrapTextAncestor) {\n// // from react-native-web\n// content = createElement(TextAncestorContext.Provider, { value: true }, content)\n// }\n\nexport function processIDRefList(idRefList: string | Array<string>): string {\n return Array.isArray(idRefList) ? idRefList.join(' ') : idRefList\n}\n\nexport const accessibilityRoleToWebRole = {\n adjustable: 'slider',\n button: 'button',\n header: 'heading',\n image: 'img',\n imagebutton: null,\n keyboardkey: null,\n label: null,\n link: 'link',\n none: 'presentation',\n search: 'search',\n summary: 'region',\n text: null,\n}\n\nfunction addPseudoToStyles(\n styles: any[],\n initialPseudos: SplitStyleResult['pseudos'],\n pseudos: any,\n name: string,\n force = false\n) {\n // on web use pseudo object { hoverStyle } to keep specificity with concatClassName\n const pseudoStyle = pseudos[name]\n const shouldNestObject = isWeb && name !== 'enterStyle' && name !== 'exitStyle'\n const defaultPseudoStyle = initialPseudos[name]\n const style = defaultPseudoStyle ? { ...defaultPseudoStyle, ...pseudoStyle } : pseudoStyle\n if (style) {\n styles.push(shouldNestObject && !force ? { [name]: style } : style)\n }\n}\n\nconst DefaultProps = new Map()\n\nfunction mergeConfigDefaultProps(\n name: string,\n props: Record<string, any>,\n configDefaults: Record<string, Object>,\n parentNames: (string | undefined)[],\n conf: TamaguiInternalConfig\n) {\n const len = parentNames.length\n let prev\n\n for (let i = 0; i < len; i++) {\n const n = parentNames[i]\n if (!n) continue\n if (DefaultProps.has(n)) {\n prev = DefaultProps.get(n)\n continue\n }\n const props = configDefaults[n]\n if (!props) {\n if (prev) {\n DefaultProps.set(n, prev)\n }\n continue\n }\n prev = mergeProps(prev || {}, props, false, conf.inverseShorthands)[0]\n DefaultProps.set(n, prev)\n }\n\n // overwrite the user defined defaults on top of internal defined defaults\n const ourDefaultsMerged = DefaultProps.get(name)\n if (ourDefaultsMerged) {\n return mergeProps(props, ourDefaultsMerged, false, conf.inverseShorthands)[0]\n }\n return props\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,27 +0,0 @@
1
- import { simpleHash } from "@tamagui/helpers";
2
- function cssHash(val, maxLen = 10) {
3
- if (val.length < maxLen) {
4
- let res = "";
5
- for (let i = 0; i < val.length; i++) {
6
- const char = val[i];
7
- if (specials[char]) {
8
- res += specials[char];
9
- } else {
10
- res += validCSS.test(char) ? char : "_" + char.charCodeAt(0).toString();
11
- }
12
- }
13
- return res;
14
- }
15
- return simpleHash(val);
16
- }
17
- const validCSS = /[a-z0-9]/i;
18
- const specials = {
19
- ".": "dot",
20
- ",": "_",
21
- "%": "pct",
22
- "-": "neg"
23
- };
24
- export {
25
- cssHash
26
- };
27
- //# sourceMappingURL=cssHash.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/helpers/cssHash.ts"],
4
- "sourcesContent": ["import { simpleHash } from '@tamagui/helpers'\n\n// not sure it's worth the extra weight, could be dev time though\n// affordances for simple values\nexport function cssHash(val: string, maxLen = 10) {\n if (val.length < maxLen) {\n let res = ''\n for (let i = 0; i < val.length; i++) {\n const char = val[i]\n if (specials[char]) {\n res += specials[char]\n } else {\n res += validCSS.test(char) ? char : '_' + char.charCodeAt(0).toString()\n }\n }\n return res\n }\n return simpleHash(val)\n}\n\nconst validCSS = /[a-z0-9]/i\n\nconst specials = {\n '.': 'dot',\n ',': '_',\n '%': 'pct',\n '-': 'neg',\n}\n"],
5
- "mappings": "AAAA,SAAS,kBAAkB;AAIpB,SAAS,QAAQ,KAAa,SAAS,IAAI;AAChD,MAAI,IAAI,SAAS,QAAQ;AACvB,QAAI,MAAM;AACV,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,YAAM,OAAO,IAAI;AACjB,UAAI,SAAS,OAAO;AAClB,eAAO,SAAS;AAAA,MAClB,OAAO;AACL,eAAO,SAAS,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,CAAC,EAAE,SAAS;AAAA,MACxE;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,SAAO,WAAW,GAAG;AACvB;AAEA,MAAM,WAAW;AAEjB,MAAM,WAAW;AAAA,EACf,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;",
6
- "names": []
7
- }
@@ -1 +0,0 @@
1
- //# sourceMappingURL=useAnimationDriver.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }
@@ -1 +0,0 @@
1
- //# sourceMappingURL=useAnimationDriver.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }