@tamagui/web 2.3.3 → 2.4.0-1783110557100

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 (205) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/cjs/Tamagui.native.js.map +1 -1
  3. package/dist/cjs/_withStableStyle.native.js.map +1 -1
  4. package/dist/cjs/animationDriverTypes.test-d.native.js.map +1 -1
  5. package/dist/cjs/config.native.js.map +1 -1
  6. package/dist/cjs/constants/constants.native.js.map +1 -1
  7. package/dist/cjs/constants/isDevTools.native.js.map +1 -1
  8. package/dist/cjs/contexts/ComponentContext.native.js.map +1 -1
  9. package/dist/cjs/contexts/GroupContext.native.js.map +1 -1
  10. package/dist/cjs/createComponent.cjs +4 -3
  11. package/dist/cjs/createComponent.native.js +7 -6
  12. package/dist/cjs/createComponent.native.js.map +1 -1
  13. package/dist/cjs/createFont.native.js.map +1 -1
  14. package/dist/cjs/createShorthands.native.js.map +1 -1
  15. package/dist/cjs/createTamagui.native.js.map +1 -1
  16. package/dist/cjs/createTokens.native.js.map +1 -1
  17. package/dist/cjs/createVariable.native.js.map +1 -1
  18. package/dist/cjs/createVariables.native.js.map +1 -1
  19. package/dist/cjs/defaultComponentState.native.js.map +1 -1
  20. package/dist/cjs/eventHandling.cjs +1 -1
  21. package/dist/cjs/eventHandling.native.js +12 -36
  22. package/dist/cjs/eventHandling.native.js.map +1 -1
  23. package/dist/cjs/helpers/createDesignSystem.native.js.map +1 -1
  24. package/dist/cjs/helpers/createMediaStyle.native.js.map +1 -1
  25. package/dist/cjs/helpers/createStyledContext.native.js.map +1 -1
  26. package/dist/cjs/helpers/defaultAnimationDriver.native.js.map +1 -1
  27. package/dist/cjs/helpers/defaultOffset.native.js.map +1 -1
  28. package/dist/cjs/helpers/expandStyle.native.js.map +1 -1
  29. package/dist/cjs/helpers/expandStyles.native.js.map +1 -1
  30. package/dist/cjs/helpers/getDefaultProps.native.js.map +1 -1
  31. package/dist/cjs/helpers/getDynamicVal.native.js.map +1 -1
  32. package/dist/cjs/helpers/getExpandedShorthands.native.js.map +1 -1
  33. package/dist/cjs/helpers/getFontLanguage.native.js.map +1 -1
  34. package/dist/cjs/helpers/getGroupPropParts.native.js.map +1 -1
  35. package/dist/cjs/helpers/getShorthandValue.native.js.map +1 -1
  36. package/dist/cjs/helpers/getSplitStyles.cjs +5 -0
  37. package/dist/cjs/helpers/getSplitStyles.native.js +9 -0
  38. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  39. package/dist/cjs/helpers/getTokenForKey.native.js.map +1 -1
  40. package/dist/cjs/helpers/getVariantExtras.native.js.map +1 -1
  41. package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -1
  42. package/dist/cjs/helpers/isActivePlatform.native.js.map +1 -1
  43. package/dist/cjs/helpers/isActiveTheme.native.js.map +1 -1
  44. package/dist/cjs/helpers/isObj.native.js.map +1 -1
  45. package/dist/cjs/helpers/isTamaguiComponent.native.js.map +1 -1
  46. package/dist/cjs/helpers/isTamaguiElement.native.js.map +1 -1
  47. package/dist/cjs/helpers/log.native.js.map +1 -1
  48. package/dist/cjs/helpers/mainThreadPressEvents.native.js +20 -3
  49. package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -1
  50. package/dist/cjs/helpers/mediaObjectToString.native.js.map +1 -1
  51. package/dist/cjs/helpers/mediaState.native.js.map +1 -1
  52. package/dist/cjs/helpers/mergeProps.native.js.map +1 -1
  53. package/dist/cjs/helpers/mergeRenderElementProps.native.js.map +1 -1
  54. package/dist/cjs/helpers/mergeSlotStyleProps.native.js.map +1 -1
  55. package/dist/cjs/helpers/mergeVariants.native.js.map +1 -1
  56. package/dist/cjs/helpers/nativeOnlyProps.native.js.map +1 -1
  57. package/dist/cjs/helpers/normalizeStyle.native.js.map +1 -1
  58. package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -1
  59. package/dist/cjs/helpers/objectIdentityKey.native.js.map +1 -1
  60. package/dist/cjs/helpers/parseNativeStyle.native.js.map +1 -1
  61. package/dist/cjs/helpers/pointerEvents.native.js +26 -20
  62. package/dist/cjs/helpers/pointerEvents.native.js.map +1 -1
  63. package/dist/cjs/helpers/propMapper.native.js +40 -15
  64. package/dist/cjs/helpers/propMapper.native.js.map +1 -1
  65. package/dist/cjs/helpers/proxyThemeToParents.native.js.map +1 -1
  66. package/dist/cjs/helpers/proxyThemeVariables.native.js.map +1 -1
  67. package/dist/cjs/helpers/pseudoDescriptors.native.js.map +1 -1
  68. package/dist/cjs/helpers/pseudoTransitions.native.js.map +1 -1
  69. package/dist/cjs/helpers/registerCSSVariable.native.js.map +1 -1
  70. package/dist/cjs/helpers/resolveAnimationDriver.native.js.map +1 -1
  71. package/dist/cjs/helpers/resolveCompoundTokens.native.js.map +1 -1
  72. package/dist/cjs/helpers/skipProps.native.js.map +1 -1
  73. package/dist/cjs/helpers/sortString.native.js.map +1 -1
  74. package/dist/cjs/helpers/styleOriginalValues.native.js.map +1 -1
  75. package/dist/cjs/helpers/subscribeToContextGroup.native.js.map +1 -1
  76. package/dist/cjs/helpers/themeable.native.js.map +1 -1
  77. package/dist/cjs/helpers/themes.native.js.map +1 -1
  78. package/dist/cjs/helpers/timer.native.js.map +1 -1
  79. package/dist/cjs/helpers/transformsToString.native.js.map +1 -1
  80. package/dist/cjs/helpers/useRenderElement.native.js.map +1 -1
  81. package/dist/cjs/helpers/wrapStyleTags.native.js.map +1 -1
  82. package/dist/cjs/hooks/getThemeProxied.native.js.map +1 -1
  83. package/dist/cjs/hooks/useComponentState.cjs +25 -1
  84. package/dist/cjs/hooks/useComponentState.native.js +25 -1
  85. package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
  86. package/dist/cjs/hooks/useDisableSSR.native.js.map +1 -1
  87. package/dist/cjs/hooks/useIsTouchDevice.native.js.map +1 -1
  88. package/dist/cjs/hooks/useMedia.cjs +107 -42
  89. package/dist/cjs/hooks/useMedia.native.js +149 -60
  90. package/dist/cjs/hooks/useMedia.native.js.map +1 -1
  91. package/dist/cjs/hooks/useProps.native.js.map +1 -1
  92. package/dist/cjs/hooks/useTheme.cjs +17 -4
  93. package/dist/cjs/hooks/useTheme.native.js +18 -4
  94. package/dist/cjs/hooks/useTheme.native.js.map +1 -1
  95. package/dist/cjs/hooks/useThemeName.native.js.map +1 -1
  96. package/dist/cjs/hooks/useThemeState.cjs +132 -67
  97. package/dist/cjs/hooks/useThemeState.native.js +144 -70
  98. package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
  99. package/dist/cjs/index.cjs +2 -0
  100. package/dist/cjs/index.native.js +2 -0
  101. package/dist/cjs/index.native.js.map +1 -1
  102. package/dist/cjs/inject-styles.native.js.map +1 -1
  103. package/dist/cjs/insertFont.native.js.map +1 -1
  104. package/dist/cjs/interfaces/CSSColorNames.native.js.map +1 -1
  105. package/dist/cjs/interfaces/GetRef.native.js.map +1 -1
  106. package/dist/cjs/interfaces/RNExclusiveTypes.native.js.map +1 -1
  107. package/dist/cjs/interfaces/TamaguiComponentEvents.native.js.map +1 -1
  108. package/dist/cjs/interfaces/TamaguiComponentPropsBaseBase.native.js.map +1 -1
  109. package/dist/cjs/opacityModifier.test-d.native.js.map +1 -1
  110. package/dist/cjs/setupHooks.native.js.map +1 -1
  111. package/dist/cjs/setupReactNative.native.js.map +1 -1
  112. package/dist/cjs/styled.native.js.map +1 -1
  113. package/dist/cjs/styledHtml.test-d.native.js.map +1 -1
  114. package/dist/cjs/styledNonStyleProps.test-d.native.js.map +1 -1
  115. package/dist/cjs/type-utils.native.js.map +1 -1
  116. package/dist/cjs/types.native.js.map +1 -1
  117. package/dist/cjs/views/Configuration.native.js.map +1 -1
  118. package/dist/cjs/views/Slot.native.js.map +1 -1
  119. package/dist/cjs/views/TamaguiProvider.native.js.map +1 -1
  120. package/dist/cjs/views/Text.native.js.map +1 -1
  121. package/dist/cjs/views/Theme.cjs +1 -1
  122. package/dist/cjs/views/Theme.native.js +1 -1
  123. package/dist/cjs/views/Theme.native.js.map +1 -1
  124. package/dist/cjs/views/ThemeProvider.native.js.map +1 -1
  125. package/dist/cjs/views/View.native.js.map +1 -1
  126. package/dist/esm/createComponent.mjs +4 -3
  127. package/dist/esm/createComponent.mjs.map +1 -1
  128. package/dist/esm/createComponent.native.js +10 -8
  129. package/dist/esm/createComponent.native.js.map +1 -1
  130. package/dist/esm/eventHandling.mjs +1 -1
  131. package/dist/esm/eventHandling.mjs.map +1 -1
  132. package/dist/esm/eventHandling.native.js +12 -36
  133. package/dist/esm/eventHandling.native.js.map +1 -1
  134. package/dist/esm/helpers/getSplitStyles.mjs +5 -0
  135. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  136. package/dist/esm/helpers/getSplitStyles.native.js +9 -0
  137. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  138. package/dist/esm/helpers/mainThreadPressEvents.native.js +20 -3
  139. package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -1
  140. package/dist/esm/helpers/pointerEvents.native.js +26 -20
  141. package/dist/esm/helpers/pointerEvents.native.js.map +1 -1
  142. package/dist/esm/helpers/propMapper.native.js +40 -15
  143. package/dist/esm/helpers/propMapper.native.js.map +1 -1
  144. package/dist/esm/hooks/useComponentState.mjs +26 -2
  145. package/dist/esm/hooks/useComponentState.mjs.map +1 -1
  146. package/dist/esm/hooks/useComponentState.native.js +26 -2
  147. package/dist/esm/hooks/useComponentState.native.js.map +1 -1
  148. package/dist/esm/hooks/useMedia.mjs +108 -43
  149. package/dist/esm/hooks/useMedia.mjs.map +1 -1
  150. package/dist/esm/hooks/useMedia.native.js +150 -61
  151. package/dist/esm/hooks/useMedia.native.js.map +1 -1
  152. package/dist/esm/hooks/useTheme.mjs +17 -4
  153. package/dist/esm/hooks/useTheme.mjs.map +1 -1
  154. package/dist/esm/hooks/useTheme.native.js +18 -4
  155. package/dist/esm/hooks/useTheme.native.js.map +1 -1
  156. package/dist/esm/hooks/useThemeState.mjs +133 -68
  157. package/dist/esm/hooks/useThemeState.mjs.map +1 -1
  158. package/dist/esm/hooks/useThemeState.native.js +145 -71
  159. package/dist/esm/hooks/useThemeState.native.js.map +1 -1
  160. package/dist/esm/index.js +3 -3
  161. package/dist/esm/index.js.map +1 -1
  162. package/dist/esm/index.mjs +3 -3
  163. package/dist/esm/index.mjs.map +1 -1
  164. package/dist/esm/index.native.js +3 -3
  165. package/dist/esm/index.native.js.map +1 -1
  166. package/dist/esm/views/Theme.mjs +1 -1
  167. package/dist/esm/views/Theme.mjs.map +1 -1
  168. package/dist/esm/views/Theme.native.js +1 -1
  169. package/dist/esm/views/Theme.native.js.map +1 -1
  170. package/package.json +13 -13
  171. package/src/createComponent.tsx +18 -7
  172. package/src/eventHandling.native.ts +28 -40
  173. package/src/eventHandling.ts +2 -1
  174. package/src/helpers/getSplitStyles.tsx +33 -0
  175. package/src/helpers/mainThreadPressEvents.native.ts +25 -3
  176. package/src/helpers/pointerEvents.native.ts +26 -19
  177. package/src/helpers/propMapper.ts +23 -0
  178. package/src/hooks/useComponentState.ts +39 -2
  179. package/src/hooks/useMedia.tsx +147 -42
  180. package/src/hooks/useTheme.tsx +27 -5
  181. package/src/hooks/useThemeState.ts +263 -137
  182. package/src/index.ts +7 -1
  183. package/src/types.tsx +53 -5
  184. package/src/views/Theme.tsx +4 -1
  185. package/types/createComponent.d.ts.map +1 -1
  186. package/types/eventHandling.d.ts +1 -1
  187. package/types/eventHandling.d.ts.map +1 -1
  188. package/types/eventHandling.native.d.ts +2 -2
  189. package/types/eventHandling.native.d.ts.map +1 -1
  190. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  191. package/types/helpers/mainThreadPressEvents.native.d.ts.map +1 -1
  192. package/types/helpers/pointerEvents.native.d.ts.map +1 -1
  193. package/types/helpers/propMapper.d.ts.map +1 -1
  194. package/types/hooks/useComponentState.d.ts +1 -1
  195. package/types/hooks/useComponentState.d.ts.map +1 -1
  196. package/types/hooks/useMedia.d.ts.map +1 -1
  197. package/types/hooks/useTheme.d.ts +1 -1
  198. package/types/hooks/useTheme.d.ts.map +1 -1
  199. package/types/hooks/useThemeState.d.ts +1 -1
  200. package/types/hooks/useThemeState.d.ts.map +1 -1
  201. package/types/index.d.ts +2 -2
  202. package/types/index.d.ts.map +1 -1
  203. package/types/types.d.ts +3 -1
  204. package/types/types.d.ts.map +1 -1
  205. package/types/views/Theme.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useTheme_exports","__export","useTheme","useThemeWithState","module","exports","import_react","require","import_getThemeProxied","import_useThemeState","EMPTY","theme","res","props","isRoot","arguments","length","keys","useRef","schemeKeys","themeState","useThemeState","process","env","NODE_ENV","passThrough","TAMAGUI_DISABLE_NO_THEME_WARNING","console","error","JSON","stringify","themeProxied","getThemeProxied"],"sources":["../../../src/hooks/useTheme.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,gBAAA;AAAAC,QAAA,CAAAD,gBAAA;EAAAE,QAAA,EAAAA,CAAA,KAAAA,QAAA;EAAAC,iBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAV,YAAuB,CAAAK,gBAAA;AAEvB,IAAAM,YAAA,GAAAC,OAAA,QAAmD;AACnD,IAAAC,sBAAA,GAA8BD,OAAA;AAE9B,IAAAE,oBAAe,GAAAF,OAAA;AAER,IAAAG,KAAM;AACX,IAAAR,QAAA,YAAAA,CAAA;EAEA,aAAY;;EACZ,KAAAS,KAAM,IAAMR,iBAAA,CAAAO,KAAA;EACZ,IAAAE,GAAO,GAAAD,KAAA;EACT,OAAAC,GAAA;AAOO;AAIL,IAAAT,iBAAA,YAAAA,CAAAU,KAAA;EAEA,aAAM;;EACN,IAAAC,MAAM,GAAAC,SAAA,CAAaC,MAAA,QAAAD,SAA2B,EAAI,eAAAA,SAAA;EAClD,IAAAE,IAAM,OAAAX,YAAa,CAAAY,MAAA;EAEnB,IAAIC,UAAQ,GAAI,IAAAb,YAAa,CAAAY,MAAA,MAAe;EAC1C,IAAAE,UAAW,OAAAX,oBAA4B,CAAAY,aAAO,EAAAR,KAAA,EAAAC,MAAA,EAAAG,IAAA,EAAAE,UAAA;EAC5C,IAAAG,OAAI,CAAAC,GAAA,CAAQC,QAAI;IACd,KAAAX,KAAA,CAAAY,WAAQ,MAAAL,UAAA,aAAAA,UAAA,uBAAAA,UAAA,CAAAT,KAAA;MAAA,IACNW,OAAA,CAAAC,GAAA,CAAAG,gCAAA;QAAgGC,OAC9F,CAAAC,KAAA,4FAAAC,IAAA,CAAAC,SAAA,CAAAjB,KAAA;AAAA;AACD;MAAA;IAAA;EACH;EACF,IACFkB,YAAA,GAAAlB,KAAA,CAAAY,WAAA,YAAAjB,sBAAA,CAAAwB,eAAA,EAAAnB,KAAA,EAAAO,UAAA,EAAAH,IAAA,EAAAE,UAAA;EACF,QAEAY,YAAM,EAINX,UAAQ,CACV","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useTheme_exports","useTheme","useThemeWithState","module","exports","import_react","require","import_getThemeProxied","import_useThemeState","EMPTY","theme","res","props","isRoot","arguments","length","forThemeView","bag","useRef","current","keys","schemeKeys","themeState","useThemeState","process","env","NODE_ENV","passThrough","TAMAGUI_DISABLE_NO_THEME_WARNING","console","error","JSON","stringify","themeProxied","getThemeProxied"],"sources":["useTheme.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar useTheme_exports = {};\n__export(useTheme_exports, {\n useTheme: () => useTheme,\n useThemeWithState: () => useThemeWithState\n});\nmodule.exports = __toCommonJS(useTheme_exports);\nvar import_react = require(\"react\");\nvar import_getThemeProxied = require(\"./getThemeProxied\");\nvar import_useThemeState = require(\"./useThemeState\");\nvar EMPTY = {};\nvar useTheme = function() {\n \"use no memo\";\n var [theme] = useThemeWithState(EMPTY);\n var res = theme;\n return res;\n};\nvar useThemeWithState = function(props) {\n \"use no memo\";\n var isRoot = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false, forThemeView = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;\n var bag = (0, import_react.useRef)(null);\n if (!bag.current) {\n bag.current = {\n keys: {\n current: null\n },\n schemeKeys: {\n current: null\n }\n };\n }\n var { keys, schemeKeys } = bag.current;\n var themeState = (0, import_useThemeState.useThemeState)(props, isRoot, keys, schemeKeys, forThemeView);\n if (process.env.NODE_ENV === \"development\") {\n if (!props.passThrough && !(themeState === null || themeState === void 0 ? void 0 : themeState.theme)) {\n if (process.env.TAMAGUI_DISABLE_NO_THEME_WARNING !== \"1\") {\n console.error(`[tamagui] No theme found, this could be due to an invalid theme name (given theme props ${JSON.stringify(props)}).\n\nIf this is intended and you are using Tamagui without any themes, you can disable this warning by setting the environment variable TAMAGUI_DISABLE_NO_THEME_WARNING=1`);\n }\n }\n }\n var themeProxied = props.passThrough ? {} : (0, import_getThemeProxied.getThemeProxied)(props, themeState, keys, schemeKeys);\n return [\n themeProxied,\n themeState\n ];\n};\n//# sourceMappingURL=useTheme.js.map\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useThemeName_exports","__export","useThemeName","module","exports","import_useThemeState","require","forceUpdateState","forceClassName","deopt","needsUpdate"],"sources":["../../../src/hooks/useThemeName.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,oBAAA;AAAAC,QAAA,CAAAD,oBAAA;EAAAE,YAAA,EAAAA,CAAA,KAAAA;AAAA;AACAC,MAAA,CAAAC,OAAA,GAAAT,YAA8B,CAAAK,oBAAA;AAG9B,IAAAK,oBAAM,GAAqBC,OAAA,4BAAsB;AACjD,IAAAC,gBAAoB;EAEbC,cAAS;EACdC,KAAA,MAAO;EACTC,WAAA,WAAAA,CAAA","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useThemeName_exports","useThemeName","module","exports","import_useThemeState","require","forceUpdateState","forceClassName","deopt","needsUpdate","forceKeys","current","Set","_useThemeState","useThemeState"],"sources":["useThemeName.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar useThemeName_exports = {};\n__export(useThemeName_exports, {\n useThemeName: () => useThemeName\n});\nmodule.exports = __toCommonJS(useThemeName_exports);\nvar import_useThemeState = require(\"./useThemeState\");\nvar forceUpdateState = {\n forceClassName: true,\n deopt: true,\n needsUpdate: function() {\n return true;\n }\n};\nvar forceKeys = {\n current: /* @__PURE__ */ new Set([\n \"\"\n ])\n};\nfunction useThemeName() {\n var _useThemeState;\n return ((_useThemeState = (0, import_useThemeState.useThemeState)(forceUpdateState, false, forceKeys)) === null || _useThemeState === void 0 ? void 0 : _useThemeState.name) || \"\";\n}\n//# sourceMappingURL=useThemeName.js.map\n"],"mappings":"AAAA,YAAY;;AACZ,IAAIA,SAAS,GAAGC,MAAM,CAACC,cAAc;AACrC,IAAIC,gBAAgB,GAAGF,MAAM,CAACG,wBAAwB;AACtD,IAAIC,iBAAiB,GAAGJ,MAAM,CAACK,mBAAmB;AAClD,IAAIC,YAAY,GAAGN,MAAM,CAACO,SAAS,CAACC,cAAc;AAClD,IAAIC,QAAQ,GAAGA,CAACC,MAAM,EAAEC,GAAG,KAAK;EAC9B,KAAK,IAAIC,IAAI,IAAID,GAAG,EAClBZ,SAAS,CAACW,MAAM,EAAEE,IAAI,EAAE;IAAEC,GAAG,EAAEF,GAAG,CAACC,IAAI,CAAC;IAAEE,UAAU,EAAE;EAAK,CAAC,CAAC;AACjE,CAAC;AACD,IAAIC,WAAW,GAAGA,CAACC,EAAE,EAAEC,IAAI,EAAEC,MAAM,EAAEC,IAAI,KAAK;EAC5C,IAAIF,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,OAAOA,IAAI,KAAK,UAAU,EAAE;IAClE,KAAK,IAAIG,GAAG,IAAIhB,iBAAiB,CAACa,IAAI,CAAC,EACrC,IAAI,CAACX,YAAY,CAACe,IAAI,CAACL,EAAE,EAAEI,GAAG,CAAC,IAAIA,GAAG,KAAKF,MAAM,EAC/CnB,SAAS,CAACiB,EAAE,EAAEI,GAAG,EAAE;MAAEP,GAAG,EAAEA,CAAA,KAAMI,IAAI,CAACG,GAAG,CAAC;MAAEN,UAAU,EAAE,EAAEK,IAAI,GAAGjB,gBAAgB,CAACe,IAAI,EAAEG,GAAG,CAAC,CAAC,IAAID,IAAI,CAACL;IAAW,CAAC,CAAC;EACxH;EACA,OAAOE,EAAE;AACX,CAAC;AACD,IAAIM,YAAY,GAAIC,GAAG,IAAKR,WAAW,CAAChB,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE;EAAEyB,KAAK,EAAE;AAAK,CAAC,CAAC,EAAED,GAAG,CAAC;AAC1F,IAAIE,oBAAoB,GAAG,CAAC,CAAC;AAC7BhB,QAAQ,CAACgB,oBAAoB,EAAE;EAC7BC,YAAY,EAAEA,CAAA,KAAMA;AACtB,CAAC,CAAC;AACFC,MAAM,CAACC,OAAO,GAAGN,YAAY,CAACG,oBAAoB,CAAC;AACnD,IAAII,oBAAoB,GAAGC,OAAO,CAAC,2BAAiB,CAAC;AACrD,IAAIC,gBAAgB,GAAG;EACrBC,cAAc,EAAE,IAAI;EACpBC,KAAK,EAAE,IAAI;EACXC,WAAW,EAAE,SAAAA,CAAA,EAAW;IACtB,OAAO,IAAI;EACb;AACF,CAAC;AACD,IAAIC,SAAS,GAAG;EACdC,OAAO,EAAE,eAAgB,IAAIC,GAAG,CAAC,CAC/B,EAAE,CACH;AACH,CAAC;AACD,SAASX,YAAYA,CAAA,EAAG;EACtB,IAAIY,cAAc;EAClB,OAAO,CAAC,CAACA,cAAc,GAAG,CAAC,CAAC,EAAET,oBAAoB,CAACU,aAAa,EAAER,gBAAgB,EAAE,KAAK,EAAEI,SAAS,CAAC,MAAM,IAAI,IAAIG,cAAc,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,cAAc,CAAC1B,IAAI,KAAK,EAAE;AACpL","ignoreList":[]}
@@ -56,7 +56,8 @@ let themeNameCacheVer = -1;
56
56
  let themes = null;
57
57
  let rootThemeState = null;
58
58
  const getRootThemeState = () => rootThemeState;
59
- const useThemeState = (props, isRoot = false, keys, schemeKeys) => {
59
+ const incReducer = c => c + 1;
60
+ const useThemeState = (props, isRoot = false, keys, schemeKeys, cascadeOnChange = false) => {
60
61
  "use no memo";
61
62
 
62
63
  const {
@@ -72,69 +73,68 @@ Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? `
72
73
  theme: (0, import_config.getConfig)().themes.light
73
74
  };
74
75
  const id = (0, import_react.useId)();
75
- const subscribe = (0, import_react.useCallback)(cb => {
76
- listenersByParent[parentId] = listenersByParent[parentId] || /* @__PURE__ */new Set();
77
- listenersByParent[parentId].add(id);
78
- allListeners.set(id, () => {
79
- PendingUpdate.set(id, shouldForce ? "force" : true);
80
- cb();
81
- });
82
- return () => {
83
- allListeners.delete(id);
84
- listenersByParent[parentId].delete(id);
85
- localStates.delete(id);
86
- states.delete(id);
87
- PendingUpdate.delete(id);
88
- };
89
- }, [id, parentId]);
90
76
  const propsKey = getPropsKey(props);
91
- const getSnapshot = () => {
92
- let local = localStates.get(id);
93
- const parentState = states.get(parentId);
94
- if (local && !PendingUpdate.has(id)) {
95
- if (parentState && local._parentName === parentState.name && local._propsKey === propsKey) return local;
96
- }
97
- const isSchemeOnlyChange = false;
98
- const keysSize = keys?.current?.size ?? 0;
99
- const allKeysSchemeOptimized = (schemeKeys?.current?.size ?? 0) === keysSize && keysSize > 0;
100
- const canSkipForSchemeChange = isSchemeOnlyChange;
101
- const needsUpdate = props.passThrough ? false : isRoot || props.name === "light" || props.name === "dark" || props.name === null ? true : !HasRenderedOnce.get(keys) ? true : keys?.current?.size ? true : props.needsUpdate?.();
102
- const [rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, PendingUpdate.get(id));
103
- PendingUpdate.delete(id);
104
- if (!local || rerender) {
105
- local = {
106
- ...next
107
- };
108
- localStates.set(id, local);
109
- }
110
- if (process.env.NODE_ENV === "development" && props.debug === "verbose") {
111
- console.groupCollapsed(` ${id} getSnapshot ${rerender}`, local.name, ">", next.name);
112
- console.info({
113
- props,
114
- propsKey,
115
- isRoot,
116
- parentId,
117
- local,
118
- next,
119
- needsUpdate,
120
- isSchemeOnlyChange,
121
- allKeysSchemeOptimized,
122
- canSkipForSchemeChange
123
- });
124
- console.groupEnd();
125
- }
126
- if (next !== local) {
127
- Object.assign(local, next);
128
- local.id = id;
129
- }
130
- local._parentName = parentState?.name;
131
- local._propsKey = propsKey;
132
- states.set(id, next);
133
- return local;
134
- };
77
+ const ref = (0, import_react.useRef)(null);
78
+ if (!ref.current) ref.current = {
79
+ id,
80
+ parentId,
81
+ props,
82
+ propsKey,
83
+ isRoot,
84
+ keys,
85
+ schemeKeys,
86
+ renderVersion: 0
87
+ };else {
88
+ ref.current.props = props;
89
+ ref.current.propsKey = propsKey;
90
+ ref.current.isRoot = isRoot;
91
+ ref.current.keys = keys;
92
+ ref.current.schemeKeys = schemeKeys;
93
+ ref.current.parentId = parentId;
94
+ }
95
+ ref.current.renderVersion++;
135
96
  if (process.env.NODE_ENV === "development" && globalThis.time) globalThis.time`theme-prep-uses`;
136
- const state = (0, import_react.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
137
- (0, import_constants.useIsomorphicLayoutEffect)(() => {
97
+ const [, forceUpdate] = (0, import_react.useReducer)(incReducer, 0);
98
+ const state = getSnapshotImpl(ref.current);
99
+ ref.current.lastSnap = state;
100
+ (0, import_react.useEffect)(() => {
101
+ const r = ref.current;
102
+ const renderVersion = r.renderVersion;
103
+ if (r.unsubscribe && r.subscribedParentId !== r.parentId) cleanupThemeSubscription(r);
104
+ if (shouldSubscribeToTheme(r, cascadeOnChange)) {
105
+ if (!r.unsubscribe) {
106
+ const pid = r.parentId;
107
+ const sid = r.id;
108
+ const cb = () => {
109
+ const next = getSnapshotImpl(r);
110
+ if (next !== r.lastSnap) {
111
+ r.lastSnap = next;
112
+ forceUpdate();
113
+ }
114
+ };
115
+ listenersByParent[pid] = listenersByParent[pid] || /* @__PURE__ */new Set();
116
+ listenersByParent[pid].add(sid);
117
+ allListeners.set(sid, () => {
118
+ PendingUpdate.set(sid, shouldForce ? "force" : true);
119
+ cb();
120
+ });
121
+ r.subscribedParentId = pid;
122
+ r.unsubscribe = () => {
123
+ allListeners.delete(sid);
124
+ listenersByParent[pid]?.delete(sid);
125
+ localStates.delete(sid);
126
+ states.delete(sid);
127
+ PendingUpdate.delete(sid);
128
+ r.unsubscribe = void 0;
129
+ r.subscribedParentId = void 0;
130
+ };
131
+ }
132
+ } else if (r.unsubscribe) cleanupThemeSubscription(r);
133
+ return () => {
134
+ if (r.renderVersion === renderVersion) cleanupThemeState(r);
135
+ };
136
+ });
137
+ if (cascadeOnChange) (0, import_constants.useIsomorphicLayoutEffect)(() => {
138
138
  if (!HasRenderedOnce.get(keys)) {
139
139
  HasRenderedOnce.set(keys, true);
140
140
  return;
@@ -150,6 +150,70 @@ Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? `
150
150
  }, [keys, propsKey]);
151
151
  return state;
152
152
  };
153
+ const shouldSubscribeToTheme = (r, cascadeOnChange) => r.isRoot || cascadeOnChange || hasThemeUpdatingProps(r.props) || !!r.keys.current?.size || !!r.props.needsUpdate?.();
154
+ function cleanupThemeSubscription(r) {
155
+ r.unsubscribe?.();
156
+ }
157
+ function cleanupThemeState(r) {
158
+ if (r.unsubscribe) cleanupThemeSubscription(r);else {
159
+ localStates.delete(r.id);
160
+ states.delete(r.id);
161
+ PendingUpdate.delete(r.id);
162
+ }
163
+ }
164
+ const getSnapshotImpl = r => {
165
+ const {
166
+ id,
167
+ parentId,
168
+ props,
169
+ propsKey,
170
+ isRoot,
171
+ keys,
172
+ schemeKeys
173
+ } = r;
174
+ let local = localStates.get(id);
175
+ const parentState = states.get(parentId);
176
+ if (local && !PendingUpdate.has(id)) {
177
+ if (parentState && local._parentName === parentState.name && local._propsKey === propsKey) return local;
178
+ }
179
+ const isSchemeOnlyChange = false;
180
+ const keysSize = keys?.current?.size ?? 0;
181
+ const allKeysSchemeOptimized = (schemeKeys?.current?.size ?? 0) === keysSize && keysSize > 0;
182
+ const canSkipForSchemeChange = isSchemeOnlyChange;
183
+ const needsUpdate = props.passThrough ? false : isRoot || props.name === "light" || props.name === "dark" || props.name === null ? true : !HasRenderedOnce.get(keys) ? true : keys?.current?.size ? true : props.needsUpdate?.();
184
+ const [rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, PendingUpdate.get(id));
185
+ PendingUpdate.delete(id);
186
+ if (!local || rerender) {
187
+ local = {
188
+ ...next
189
+ };
190
+ localStates.set(id, local);
191
+ }
192
+ if (process.env.NODE_ENV === "development" && props.debug === "verbose") {
193
+ console.groupCollapsed(` ${id} getSnapshot ${rerender}`, local.name, ">", next.name);
194
+ console.info({
195
+ props,
196
+ propsKey,
197
+ isRoot,
198
+ parentId,
199
+ local,
200
+ next,
201
+ needsUpdate,
202
+ isSchemeOnlyChange,
203
+ allKeysSchemeOptimized,
204
+ canSkipForSchemeChange
205
+ });
206
+ console.groupEnd();
207
+ }
208
+ if (next !== local) {
209
+ Object.assign(local, next);
210
+ local.id = id;
211
+ }
212
+ local._parentName = parentState?.name;
213
+ local._propsKey = propsKey;
214
+ states.set(id, next);
215
+ return local;
216
+ };
153
217
  const getNextState = (lastState, props, propsKey, isRoot = false, id, parentId, needsUpdate, pendingUpdate) => {
154
218
  const {
155
219
  debug
@@ -184,12 +248,13 @@ const getNextState = (lastState, props, propsKey, isRoot = false, id, parentId,
184
248
  }];
185
249
  }
186
250
  if (!name) {
187
- const next = lastState ?? parentState;
188
- if (!next) throw new Error(process.env.NODE_ENV === "development" ? `${import_constants2.MISSING_THEME_MESSAGE}
189
-
190
- Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? ` (component: ${props.componentName})` : ""}, but no theme state was resolved (parentId: ${parentId}, id: ${id}).` : import_constants2.MISSING_THEME_MESSAGE);
251
+ const next = lastState ?? parentState ?? rootThemeState ?? {
252
+ id,
253
+ name: "light",
254
+ theme: (0, import_config.getConfig)().themes.light
255
+ };
191
256
  if (shouldRerender) return [true, {
192
- ...(parentState || lastState)
257
+ ...(parentState || lastState || next)
193
258
  }];
194
259
  return [false, next];
195
260
  }
@@ -67,12 +67,16 @@ var getRootThemeState = function () {
67
67
  var getThemeBaseName = function (name) {
68
68
  return name.replace(/^(light|dark)_/, "");
69
69
  };
70
+ var incReducer = function (c) {
71
+ return c + 1;
72
+ };
70
73
  var useThemeState = function (props) {
71
74
  "use no memo";
72
75
 
73
76
  var isRoot = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false,
74
77
  keys = arguments.length > 2 ? arguments[2] : void 0,
75
- schemeKeys = arguments.length > 3 ? arguments[3] : void 0;
78
+ schemeKeys = arguments.length > 3 ? arguments[3] : void 0,
79
+ cascadeOnChange = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
76
80
  var {
77
81
  disable
78
82
  } = props;
@@ -86,72 +90,69 @@ Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? `
86
90
  theme: (0, import_config.getConfig)().themes.light
87
91
  };
88
92
  var id = (0, import_react.useId)();
89
- var subscribe = (0, import_react.useCallback)(function (cb) {
90
- listenersByParent[parentId] = listenersByParent[parentId] || /* @__PURE__ */new Set();
91
- listenersByParent[parentId].add(id);
92
- allListeners.set(id, function () {
93
- PendingUpdate.set(id, shouldForce ? "force" : true);
94
- cb();
95
- });
96
- return function () {
97
- allListeners.delete(id);
98
- listenersByParent[parentId].delete(id);
99
- localStates.delete(id);
100
- states.delete(id);
101
- PendingUpdate.delete(id);
102
- };
103
- }, [id, parentId]);
104
93
  var propsKey = getPropsKey(props);
105
- var getSnapshot = function () {
106
- var _keys_current, _schemeKeys_current, _keys_current1, _props_needsUpdate;
107
- var local = localStates.get(id);
108
- var parentState = states.get(parentId);
109
- if (local && !PendingUpdate.has(id)) {
110
- if (parentState && local._parentName === parentState.name && local._propsKey === propsKey) return local;
111
- }
112
- var isSchemeOnlyChange = import_constants.supportsDynamicColorIOS && (0, import_config.getSetting)("fastSchemeChange") && local && parentState && local.scheme !== parentState.scheme && getThemeBaseName(local.name) === getThemeBaseName(parentState.name);
113
- var _keys_current_size;
114
- var keysSize = (_keys_current_size = keys === null || keys === void 0 ? void 0 : (_keys_current = keys.current) === null || _keys_current === void 0 ? void 0 : _keys_current.size) !== null && _keys_current_size !== void 0 ? _keys_current_size : 0;
115
- var _schemeKeys_current_size;
116
- var allKeysSchemeOptimized = ((_schemeKeys_current_size = schemeKeys === null || schemeKeys === void 0 ? void 0 : (_schemeKeys_current = schemeKeys.current) === null || _schemeKeys_current === void 0 ? void 0 : _schemeKeys_current.size) !== null && _schemeKeys_current_size !== void 0 ? _schemeKeys_current_size : 0) === keysSize && keysSize > 0;
117
- var canSkipForSchemeChange = isSchemeOnlyChange && allKeysSchemeOptimized;
118
- var needsUpdate = props.passThrough ? false : isRoot || props.name === "light" || props.name === "dark" || props.name === null ? true : !HasRenderedOnce.get(keys) ? true : canSkipForSchemeChange ? false : (keys === null || keys === void 0 ? void 0 : (_keys_current1 = keys.current) === null || _keys_current1 === void 0 ? void 0 : _keys_current1.size) ? true : (_props_needsUpdate = props.needsUpdate) === null || _props_needsUpdate === void 0 ? void 0 : _props_needsUpdate.call(props);
119
- var [rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, PendingUpdate.get(id));
120
- PendingUpdate.delete(id);
121
- if (!local || rerender) {
122
- local = {
123
- ...next
124
- };
125
- localStates.set(id, local);
126
- }
127
- if (process.env.NODE_ENV === "development" && props.debug === "verbose") {
128
- console.groupCollapsed(` ${id} getSnapshot ${rerender}`, local.name, ">", next.name);
129
- console.info({
130
- props,
131
- propsKey,
132
- isRoot,
133
- parentId,
134
- local,
135
- next,
136
- needsUpdate,
137
- isSchemeOnlyChange,
138
- allKeysSchemeOptimized,
139
- canSkipForSchemeChange
140
- });
141
- console.groupEnd();
142
- }
143
- if (next !== local) {
144
- Object.assign(local, next);
145
- local.id = id;
146
- }
147
- local._parentName = parentState === null || parentState === void 0 ? void 0 : parentState.name;
148
- local._propsKey = propsKey;
149
- states.set(id, next);
150
- return local;
151
- };
94
+ var ref = (0, import_react.useRef)(null);
95
+ if (!ref.current) ref.current = {
96
+ id,
97
+ parentId,
98
+ props,
99
+ propsKey,
100
+ isRoot,
101
+ keys,
102
+ schemeKeys,
103
+ renderVersion: 0
104
+ };else {
105
+ ref.current.props = props;
106
+ ref.current.propsKey = propsKey;
107
+ ref.current.isRoot = isRoot;
108
+ ref.current.keys = keys;
109
+ ref.current.schemeKeys = schemeKeys;
110
+ ref.current.parentId = parentId;
111
+ }
112
+ ref.current.renderVersion++;
152
113
  if (process.env.NODE_ENV === "development" && globalThis.time) globalThis.time`theme-prep-uses`;
153
- var state = (0, import_react.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
154
- (0, import_constants.useIsomorphicLayoutEffect)(function () {
114
+ var [, forceUpdate] = (0, import_react.useReducer)(incReducer, 0);
115
+ var state = getSnapshotImpl(ref.current);
116
+ ref.current.lastSnap = state;
117
+ (0, import_react.useEffect)(function () {
118
+ var r = ref.current;
119
+ var renderVersion = r.renderVersion;
120
+ if (r.unsubscribe && r.subscribedParentId !== r.parentId) cleanupThemeSubscription(r);
121
+ if (shouldSubscribeToTheme(r, cascadeOnChange)) {
122
+ if (!r.unsubscribe) {
123
+ var pid = r.parentId;
124
+ var sid = r.id;
125
+ var cb = function () {
126
+ var next = getSnapshotImpl(r);
127
+ if (next !== r.lastSnap) {
128
+ r.lastSnap = next;
129
+ forceUpdate();
130
+ }
131
+ };
132
+ listenersByParent[pid] = listenersByParent[pid] || /* @__PURE__ */new Set();
133
+ listenersByParent[pid].add(sid);
134
+ allListeners.set(sid, function () {
135
+ PendingUpdate.set(sid, shouldForce ? "force" : true);
136
+ cb();
137
+ });
138
+ r.subscribedParentId = pid;
139
+ r.unsubscribe = function () {
140
+ var _listenersByParent_pid;
141
+ allListeners.delete(sid);
142
+ (_listenersByParent_pid = listenersByParent[pid]) === null || _listenersByParent_pid === void 0 || _listenersByParent_pid.delete(sid);
143
+ localStates.delete(sid);
144
+ states.delete(sid);
145
+ PendingUpdate.delete(sid);
146
+ r.unsubscribe = void 0;
147
+ r.subscribedParentId = void 0;
148
+ };
149
+ }
150
+ } else if (r.unsubscribe) cleanupThemeSubscription(r);
151
+ return function () {
152
+ if (r.renderVersion === renderVersion) cleanupThemeState(r);
153
+ };
154
+ });
155
+ if (cascadeOnChange) (0, import_constants.useIsomorphicLayoutEffect)(function () {
155
156
  if (!HasRenderedOnce.get(keys)) {
156
157
  HasRenderedOnce.set(keys, true);
157
158
  return;
@@ -170,6 +171,77 @@ Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? `
170
171
  }, [keys, propsKey]);
171
172
  return state;
172
173
  };
174
+ var shouldSubscribeToTheme = function (r, cascadeOnChange) {
175
+ var _r_keys_current, _r_props_needsUpdate, _r_props;
176
+ return r.isRoot || cascadeOnChange || hasThemeUpdatingProps(r.props) || !!((_r_keys_current = r.keys.current) === null || _r_keys_current === void 0 ? void 0 : _r_keys_current.size) || !!((_r_props_needsUpdate = (_r_props = r.props).needsUpdate) === null || _r_props_needsUpdate === void 0 ? void 0 : _r_props_needsUpdate.call(_r_props));
177
+ };
178
+ function cleanupThemeSubscription(r) {
179
+ var _r_unsubscribe;
180
+ (_r_unsubscribe = r.unsubscribe) === null || _r_unsubscribe === void 0 || _r_unsubscribe.call(r);
181
+ }
182
+ function cleanupThemeState(r) {
183
+ if (r.unsubscribe) cleanupThemeSubscription(r);else {
184
+ localStates.delete(r.id);
185
+ states.delete(r.id);
186
+ PendingUpdate.delete(r.id);
187
+ }
188
+ }
189
+ var getSnapshotImpl = function (r) {
190
+ var _keys_current, _schemeKeys_current, _keys_current1, _props_needsUpdate;
191
+ var {
192
+ id,
193
+ parentId,
194
+ props,
195
+ propsKey,
196
+ isRoot,
197
+ keys,
198
+ schemeKeys
199
+ } = r;
200
+ var local = localStates.get(id);
201
+ var parentState = states.get(parentId);
202
+ if (local && !PendingUpdate.has(id)) {
203
+ if (parentState && local._parentName === parentState.name && local._propsKey === propsKey) return local;
204
+ }
205
+ var isSchemeOnlyChange = import_constants.supportsDynamicColorIOS && (0, import_config.getSetting)("fastSchemeChange") && local && parentState && local.scheme !== parentState.scheme && getThemeBaseName(local.name) === getThemeBaseName(parentState.name);
206
+ var _keys_current_size;
207
+ var keysSize = (_keys_current_size = keys === null || keys === void 0 ? void 0 : (_keys_current = keys.current) === null || _keys_current === void 0 ? void 0 : _keys_current.size) !== null && _keys_current_size !== void 0 ? _keys_current_size : 0;
208
+ var _schemeKeys_current_size;
209
+ var allKeysSchemeOptimized = ((_schemeKeys_current_size = schemeKeys === null || schemeKeys === void 0 ? void 0 : (_schemeKeys_current = schemeKeys.current) === null || _schemeKeys_current === void 0 ? void 0 : _schemeKeys_current.size) !== null && _schemeKeys_current_size !== void 0 ? _schemeKeys_current_size : 0) === keysSize && keysSize > 0;
210
+ var canSkipForSchemeChange = isSchemeOnlyChange && allKeysSchemeOptimized;
211
+ var needsUpdate = props.passThrough ? false : isRoot || props.name === "light" || props.name === "dark" || props.name === null ? true : !HasRenderedOnce.get(keys) ? true : canSkipForSchemeChange ? false : (keys === null || keys === void 0 ? void 0 : (_keys_current1 = keys.current) === null || _keys_current1 === void 0 ? void 0 : _keys_current1.size) ? true : (_props_needsUpdate = props.needsUpdate) === null || _props_needsUpdate === void 0 ? void 0 : _props_needsUpdate.call(props);
212
+ var [rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, PendingUpdate.get(id));
213
+ PendingUpdate.delete(id);
214
+ if (!local || rerender) {
215
+ local = {
216
+ ...next
217
+ };
218
+ localStates.set(id, local);
219
+ }
220
+ if (process.env.NODE_ENV === "development" && props.debug === "verbose") {
221
+ console.groupCollapsed(` ${id} getSnapshot ${rerender}`, local.name, ">", next.name);
222
+ console.info({
223
+ props,
224
+ propsKey,
225
+ isRoot,
226
+ parentId,
227
+ local,
228
+ next,
229
+ needsUpdate,
230
+ isSchemeOnlyChange,
231
+ allKeysSchemeOptimized,
232
+ canSkipForSchemeChange
233
+ });
234
+ console.groupEnd();
235
+ }
236
+ if (next !== local) {
237
+ Object.assign(local, next);
238
+ local.id = id;
239
+ }
240
+ local._parentName = parentState === null || parentState === void 0 ? void 0 : parentState.name;
241
+ local._propsKey = propsKey;
242
+ states.set(id, next);
243
+ return local;
244
+ };
173
245
  var getNextState = function (lastState, props, propsKey) {
174
246
  var isRoot = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false,
175
247
  id = arguments.length > 4 ? arguments[4] : void 0,
@@ -199,12 +271,14 @@ var getNextState = function (lastState, props, propsKey) {
199
271
  }];
200
272
  }
201
273
  if (!name) {
202
- var next = lastState !== null && lastState !== void 0 ? lastState : parentState;
203
- if (!next) throw new Error(process.env.NODE_ENV === "development" ? `${import_constants2.MISSING_THEME_MESSAGE}
204
-
205
- Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? ` (component: ${props.componentName})` : ""}, but no theme state was resolved (parentId: ${parentId}, id: ${id}).` : import_constants2.MISSING_THEME_MESSAGE);
274
+ var _ref, _ref1;
275
+ var next = (_ref1 = (_ref = lastState !== null && lastState !== void 0 ? lastState : parentState) !== null && _ref !== void 0 ? _ref : rootThemeState) !== null && _ref1 !== void 0 ? _ref1 : {
276
+ id,
277
+ name: "light",
278
+ theme: (0, import_config.getConfig)().themes.light
279
+ };
206
280
  if (shouldRerender) return [true, {
207
- ...(parentState || lastState)
281
+ ...(parentState || lastState || next)
208
282
  }];
209
283
  return [false, next];
210
284
  }