react-native-divkit 0.1.0-alpha.1

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 (322) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +340 -0
  3. package/dist/DivKit.d.ts +68 -0
  4. package/dist/DivKit.d.ts.map +1 -0
  5. package/dist/DivKit.js +400 -0
  6. package/dist/DivKit.js.map +1 -0
  7. package/dist/actions/array.d.ts +8 -0
  8. package/dist/actions/array.d.ts.map +1 -0
  9. package/dist/actions/array.js +139 -0
  10. package/dist/actions/array.js.map +1 -0
  11. package/dist/actions/copyToClipboard.d.ts +22 -0
  12. package/dist/actions/copyToClipboard.d.ts.map +1 -0
  13. package/dist/actions/copyToClipboard.js +63 -0
  14. package/dist/actions/copyToClipboard.js.map +1 -0
  15. package/dist/actions/dict.d.ts +6 -0
  16. package/dist/actions/dict.d.ts.map +1 -0
  17. package/dist/actions/dict.js +58 -0
  18. package/dist/actions/dict.js.map +1 -0
  19. package/dist/actions/index.d.ts +11 -0
  20. package/dist/actions/index.d.ts.map +1 -0
  21. package/dist/actions/index.js +11 -0
  22. package/dist/actions/index.js.map +1 -0
  23. package/dist/actions/updateStructure.d.ts +6 -0
  24. package/dist/actions/updateStructure.d.ts.map +1 -0
  25. package/dist/actions/updateStructure.js +116 -0
  26. package/dist/actions/updateStructure.js.map +1 -0
  27. package/dist/components/DivComponent.d.ts +29 -0
  28. package/dist/components/DivComponent.d.ts.map +1 -0
  29. package/dist/components/DivComponent.js +62 -0
  30. package/dist/components/DivComponent.js.map +1 -0
  31. package/dist/components/container/DivContainer.d.ts +26 -0
  32. package/dist/components/container/DivContainer.d.ts.map +1 -0
  33. package/dist/components/container/DivContainer.js +172 -0
  34. package/dist/components/container/DivContainer.js.map +1 -0
  35. package/dist/components/container/index.d.ts +3 -0
  36. package/dist/components/container/index.d.ts.map +1 -0
  37. package/dist/components/container/index.js +2 -0
  38. package/dist/components/container/index.js.map +1 -0
  39. package/dist/components/image/DivImage.d.ts +29 -0
  40. package/dist/components/image/DivImage.d.ts.map +1 -0
  41. package/dist/components/image/DivImage.js +122 -0
  42. package/dist/components/image/DivImage.js.map +1 -0
  43. package/dist/components/image/index.d.ts +3 -0
  44. package/dist/components/image/index.d.ts.map +1 -0
  45. package/dist/components/image/index.js +2 -0
  46. package/dist/components/image/index.js.map +1 -0
  47. package/dist/components/index.d.ts +14 -0
  48. package/dist/components/index.d.ts.map +1 -0
  49. package/dist/components/index.js +11 -0
  50. package/dist/components/index.js.map +1 -0
  51. package/dist/components/state/DivState.d.ts +26 -0
  52. package/dist/components/state/DivState.d.ts.map +1 -0
  53. package/dist/components/state/DivState.js +121 -0
  54. package/dist/components/state/DivState.js.map +1 -0
  55. package/dist/components/state/index.d.ts +3 -0
  56. package/dist/components/state/index.d.ts.map +1 -0
  57. package/dist/components/state/index.js +2 -0
  58. package/dist/components/state/index.js.map +1 -0
  59. package/dist/components/text/DivText.d.ts +28 -0
  60. package/dist/components/text/DivText.d.ts.map +1 -0
  61. package/dist/components/text/DivText.js +143 -0
  62. package/dist/components/text/DivText.js.map +1 -0
  63. package/dist/components/text/index.d.ts +3 -0
  64. package/dist/components/text/index.d.ts.map +1 -0
  65. package/dist/components/text/index.js +2 -0
  66. package/dist/components/text/index.js.map +1 -0
  67. package/dist/components/utilities/Outer.d.ts +17 -0
  68. package/dist/components/utilities/Outer.d.ts.map +1 -0
  69. package/dist/components/utilities/Outer.js +210 -0
  70. package/dist/components/utilities/Outer.js.map +1 -0
  71. package/dist/components/utilities/Unknown.d.ts +11 -0
  72. package/dist/components/utilities/Unknown.d.ts.map +1 -0
  73. package/dist/components/utilities/Unknown.js +50 -0
  74. package/dist/components/utilities/Unknown.js.map +1 -0
  75. package/dist/components/utilities/index.d.ts +5 -0
  76. package/dist/components/utilities/index.d.ts.map +1 -0
  77. package/dist/components/utilities/index.js +3 -0
  78. package/dist/components/utilities/index.js.map +1 -0
  79. package/dist/context/ActionContext.d.ts +25 -0
  80. package/dist/context/ActionContext.d.ts.map +1 -0
  81. package/dist/context/ActionContext.js +20 -0
  82. package/dist/context/ActionContext.js.map +1 -0
  83. package/dist/context/DivKitContext.d.ts +33 -0
  84. package/dist/context/DivKitContext.d.ts.map +1 -0
  85. package/dist/context/DivKitContext.js +14 -0
  86. package/dist/context/DivKitContext.js.map +1 -0
  87. package/dist/context/EnabledContext.d.ts +31 -0
  88. package/dist/context/EnabledContext.d.ts.map +1 -0
  89. package/dist/context/EnabledContext.js +31 -0
  90. package/dist/context/EnabledContext.js.map +1 -0
  91. package/dist/context/StateContext.d.ts +57 -0
  92. package/dist/context/StateContext.d.ts.map +1 -0
  93. package/dist/context/StateContext.js +20 -0
  94. package/dist/context/StateContext.js.map +1 -0
  95. package/dist/context/index.d.ts +9 -0
  96. package/dist/context/index.d.ts.map +1 -0
  97. package/dist/context/index.js +9 -0
  98. package/dist/context/index.js.map +1 -0
  99. package/dist/expressions/bigint.d.ts +8 -0
  100. package/dist/expressions/bigint.d.ts.map +1 -0
  101. package/dist/expressions/bigint.js +31 -0
  102. package/dist/expressions/bigint.js.map +1 -0
  103. package/dist/expressions/const.d.ts +15 -0
  104. package/dist/expressions/const.d.ts.map +1 -0
  105. package/dist/expressions/const.js +15 -0
  106. package/dist/expressions/const.js.map +1 -0
  107. package/dist/expressions/eval.d.ts +77 -0
  108. package/dist/expressions/eval.d.ts.map +1 -0
  109. package/dist/expressions/eval.js +459 -0
  110. package/dist/expressions/eval.js.map +1 -0
  111. package/dist/expressions/expressions.d.ts +7 -0
  112. package/dist/expressions/expressions.d.ts.map +1 -0
  113. package/dist/expressions/expressions.js +3191 -0
  114. package/dist/expressions/expressions.js.map +1 -0
  115. package/dist/expressions/funcs/array.d.ts +2 -0
  116. package/dist/expressions/funcs/array.d.ts.map +1 -0
  117. package/dist/expressions/funcs/array.js +381 -0
  118. package/dist/expressions/funcs/array.js.map +1 -0
  119. package/dist/expressions/funcs/colors.d.ts +2 -0
  120. package/dist/expressions/funcs/colors.d.ts.map +1 -0
  121. package/dist/expressions/funcs/colors.js +75 -0
  122. package/dist/expressions/funcs/colors.js.map +1 -0
  123. package/dist/expressions/funcs/customFuncs.d.ts +8 -0
  124. package/dist/expressions/funcs/customFuncs.d.ts.map +1 -0
  125. package/dist/expressions/funcs/customFuncs.js +114 -0
  126. package/dist/expressions/funcs/customFuncs.js.map +1 -0
  127. package/dist/expressions/funcs/datetime.d.ts +2 -0
  128. package/dist/expressions/funcs/datetime.d.ts.map +1 -0
  129. package/dist/expressions/funcs/datetime.js +182 -0
  130. package/dist/expressions/funcs/datetime.js.map +1 -0
  131. package/dist/expressions/funcs/dict.d.ts +2 -0
  132. package/dist/expressions/funcs/dict.d.ts.map +1 -0
  133. package/dist/expressions/funcs/dict.js +170 -0
  134. package/dist/expressions/funcs/dict.js.map +1 -0
  135. package/dist/expressions/funcs/funcs.d.ts +80 -0
  136. package/dist/expressions/funcs/funcs.d.ts.map +1 -0
  137. package/dist/expressions/funcs/funcs.js +146 -0
  138. package/dist/expressions/funcs/funcs.js.map +1 -0
  139. package/dist/expressions/funcs/index.d.ts +2 -0
  140. package/dist/expressions/funcs/index.d.ts.map +1 -0
  141. package/dist/expressions/funcs/index.js +23 -0
  142. package/dist/expressions/funcs/index.js.map +1 -0
  143. package/dist/expressions/funcs/interval.d.ts +2 -0
  144. package/dist/expressions/funcs/interval.d.ts.map +1 -0
  145. package/dist/expressions/funcs/interval.js +61 -0
  146. package/dist/expressions/funcs/interval.js.map +1 -0
  147. package/dist/expressions/funcs/math.d.ts +2 -0
  148. package/dist/expressions/funcs/math.d.ts.map +1 -0
  149. package/dist/expressions/funcs/math.js +324 -0
  150. package/dist/expressions/funcs/math.js.map +1 -0
  151. package/dist/expressions/funcs/std.d.ts +2 -0
  152. package/dist/expressions/funcs/std.d.ts.map +1 -0
  153. package/dist/expressions/funcs/std.js +293 -0
  154. package/dist/expressions/funcs/std.js.map +1 -0
  155. package/dist/expressions/funcs/stored.d.ts +4 -0
  156. package/dist/expressions/funcs/stored.d.ts.map +1 -0
  157. package/dist/expressions/funcs/stored.js +62 -0
  158. package/dist/expressions/funcs/stored.js.map +1 -0
  159. package/dist/expressions/funcs/strings.d.ts +2 -0
  160. package/dist/expressions/funcs/strings.d.ts.map +1 -0
  161. package/dist/expressions/funcs/strings.js +158 -0
  162. package/dist/expressions/funcs/strings.js.map +1 -0
  163. package/dist/expressions/funcs/trigonometry.d.ts +2 -0
  164. package/dist/expressions/funcs/trigonometry.d.ts.map +1 -0
  165. package/dist/expressions/funcs/trigonometry.js +92 -0
  166. package/dist/expressions/funcs/trigonometry.js.map +1 -0
  167. package/dist/expressions/json.d.ts +18 -0
  168. package/dist/expressions/json.d.ts.map +1 -0
  169. package/dist/expressions/json.js +271 -0
  170. package/dist/expressions/json.js.map +1 -0
  171. package/dist/expressions/parserCache.d.ts +4 -0
  172. package/dist/expressions/parserCache.d.ts.map +1 -0
  173. package/dist/expressions/parserCache.js +23 -0
  174. package/dist/expressions/parserCache.js.map +1 -0
  175. package/dist/expressions/simpleUnescapeString.d.ts +2 -0
  176. package/dist/expressions/simpleUnescapeString.d.ts.map +1 -0
  177. package/dist/expressions/simpleUnescapeString.js +61 -0
  178. package/dist/expressions/simpleUnescapeString.js.map +1 -0
  179. package/dist/expressions/utils.d.ts +29 -0
  180. package/dist/expressions/utils.d.ts.map +1 -0
  181. package/dist/expressions/utils.js +236 -0
  182. package/dist/expressions/utils.js.map +1 -0
  183. package/dist/expressions/variable.d.ts +82 -0
  184. package/dist/expressions/variable.d.ts.map +1 -0
  185. package/dist/expressions/variable.js +337 -0
  186. package/dist/expressions/variable.js.map +1 -0
  187. package/dist/expressions/walk.d.ts +7 -0
  188. package/dist/expressions/walk.d.ts.map +1 -0
  189. package/dist/expressions/walk.js +39 -0
  190. package/dist/expressions/walk.js.map +1 -0
  191. package/dist/hooks/index.d.ts +8 -0
  192. package/dist/hooks/index.d.ts.map +1 -0
  193. package/dist/hooks/index.js +11 -0
  194. package/dist/hooks/index.js.map +1 -0
  195. package/dist/hooks/useAction.d.ts +102 -0
  196. package/dist/hooks/useAction.d.ts.map +1 -0
  197. package/dist/hooks/useAction.js +116 -0
  198. package/dist/hooks/useAction.js.map +1 -0
  199. package/dist/hooks/useDerivedFromVars.d.ts +72 -0
  200. package/dist/hooks/useDerivedFromVars.d.ts.map +1 -0
  201. package/dist/hooks/useDerivedFromVars.js +100 -0
  202. package/dist/hooks/useDerivedFromVars.js.map +1 -0
  203. package/dist/hooks/useVariable.d.ts +86 -0
  204. package/dist/hooks/useVariable.d.ts.map +1 -0
  205. package/dist/hooks/useVariable.js +130 -0
  206. package/dist/hooks/useVariable.js.map +1 -0
  207. package/dist/index.d.ts +30 -0
  208. package/dist/index.d.ts.map +1 -0
  209. package/dist/index.js +28 -0
  210. package/dist/index.js.map +1 -0
  211. package/dist/stores/createObservable.d.ts +38 -0
  212. package/dist/stores/createObservable.d.ts.map +1 -0
  213. package/dist/stores/createObservable.js +49 -0
  214. package/dist/stores/createObservable.js.map +1 -0
  215. package/dist/utils/applyTemplate.d.ts +8 -0
  216. package/dist/utils/applyTemplate.d.ts.map +1 -0
  217. package/dist/utils/applyTemplate.js +94 -0
  218. package/dist/utils/applyTemplate.js.map +1 -0
  219. package/dist/utils/correctColor.d.ts +18 -0
  220. package/dist/utils/correctColor.d.ts.map +1 -0
  221. package/dist/utils/correctColor.js +79 -0
  222. package/dist/utils/correctColor.js.map +1 -0
  223. package/dist/utils/escapeRegExp.d.ts +2 -0
  224. package/dist/utils/escapeRegExp.d.ts.map +1 -0
  225. package/dist/utils/escapeRegExp.js +4 -0
  226. package/dist/utils/escapeRegExp.js.map +1 -0
  227. package/dist/utils/formatDate.d.ts +6 -0
  228. package/dist/utils/formatDate.d.ts.map +1 -0
  229. package/dist/utils/formatDate.js +325 -0
  230. package/dist/utils/formatDate.js.map +1 -0
  231. package/dist/utils/padLeft.d.ts +2 -0
  232. package/dist/utils/padLeft.d.ts.map +1 -0
  233. package/dist/utils/padLeft.js +7 -0
  234. package/dist/utils/padLeft.js.map +1 -0
  235. package/dist/utils/uniq.d.ts +2 -0
  236. package/dist/utils/uniq.d.ts.map +1 -0
  237. package/dist/utils/uniq.js +4 -0
  238. package/dist/utils/uniq.js.map +1 -0
  239. package/dist/utils/wrapError.d.ts +10 -0
  240. package/dist/utils/wrapError.d.ts.map +1 -0
  241. package/dist/utils/wrapError.js +9 -0
  242. package/dist/utils/wrapError.js.map +1 -0
  243. package/package.json +58 -0
  244. package/src/DivKit.tsx +542 -0
  245. package/src/actions/array.ts +170 -0
  246. package/src/actions/copyToClipboard.ts +82 -0
  247. package/src/actions/dict.ts +71 -0
  248. package/src/actions/index.ts +11 -0
  249. package/src/actions/updateStructure.ts +134 -0
  250. package/src/components/DivComponent.tsx +75 -0
  251. package/src/components/README.md +230 -0
  252. package/src/components/container/DivContainer.tsx +222 -0
  253. package/src/components/container/index.ts +2 -0
  254. package/src/components/image/DivImage.tsx +172 -0
  255. package/src/components/image/index.ts +2 -0
  256. package/src/components/index.ts +20 -0
  257. package/src/components/state/DivState.tsx +146 -0
  258. package/src/components/state/index.ts +2 -0
  259. package/src/components/text/DivText.tsx +186 -0
  260. package/src/components/text/index.ts +2 -0
  261. package/src/components/utilities/Outer.tsx +239 -0
  262. package/src/components/utilities/README.md +175 -0
  263. package/src/components/utilities/Unknown.tsx +60 -0
  264. package/src/components/utilities/index.ts +4 -0
  265. package/src/context/ActionContext.tsx +37 -0
  266. package/src/context/DivKitContext.tsx +54 -0
  267. package/src/context/EnabledContext.tsx +50 -0
  268. package/src/context/StateContext.tsx +75 -0
  269. package/src/context/index.ts +33 -0
  270. package/src/expressions/ast.d.ts +101 -0
  271. package/src/expressions/bigint.ts +38 -0
  272. package/src/expressions/const.ts +16 -0
  273. package/src/expressions/eval.ts +669 -0
  274. package/src/expressions/expressions.peggy +235 -0
  275. package/src/expressions/expressions.ts +2854 -0
  276. package/src/expressions/funcs/array.ts +412 -0
  277. package/src/expressions/funcs/colors.ts +100 -0
  278. package/src/expressions/funcs/customFuncs.ts +139 -0
  279. package/src/expressions/funcs/datetime.ts +232 -0
  280. package/src/expressions/funcs/dict.ts +207 -0
  281. package/src/expressions/funcs/funcs.ts +323 -0
  282. package/src/expressions/funcs/index.ts +23 -0
  283. package/src/expressions/funcs/interval.ts +76 -0
  284. package/src/expressions/funcs/math.ts +395 -0
  285. package/src/expressions/funcs/std.ts +392 -0
  286. package/src/expressions/funcs/stored.ts +62 -0
  287. package/src/expressions/funcs/strings.ts +200 -0
  288. package/src/expressions/funcs/trigonometry.ts +108 -0
  289. package/src/expressions/json.ts +367 -0
  290. package/src/expressions/parserCache.ts +32 -0
  291. package/src/expressions/simpleUnescapeString.ts +57 -0
  292. package/src/expressions/utils.ts +271 -0
  293. package/src/expressions/variable.ts +429 -0
  294. package/src/expressions/walk.ts +43 -0
  295. package/src/hooks/README.md +265 -0
  296. package/src/hooks/index.ts +28 -0
  297. package/src/hooks/useAction.ts +152 -0
  298. package/src/hooks/useDerivedFromVars.ts +187 -0
  299. package/src/hooks/useVariable.ts +157 -0
  300. package/src/index.ts +97 -0
  301. package/src/stores/createObservable.ts +64 -0
  302. package/src/types/alignment.d.ts +13 -0
  303. package/src/types/background.d.ts +71 -0
  304. package/src/types/base.d.ts +224 -0
  305. package/src/types/border.d.ts +46 -0
  306. package/src/types/componentContext.d.ts +98 -0
  307. package/src/types/container.d.ts +40 -0
  308. package/src/types/edgeInserts.d.ts +9 -0
  309. package/src/types/general.d.ts +3 -0
  310. package/src/types/image.d.ts +33 -0
  311. package/src/types/imageScale.d.ts +1 -0
  312. package/src/types/layoutParams.d.ts +27 -0
  313. package/src/types/sizes.d.ts +37 -0
  314. package/src/types/state.d.ts +19 -0
  315. package/src/types/text.d.ts +126 -0
  316. package/src/utils/applyTemplate.ts +145 -0
  317. package/src/utils/correctColor.ts +102 -0
  318. package/src/utils/escapeRegExp.ts +3 -0
  319. package/src/utils/formatDate.ts +385 -0
  320. package/src/utils/padLeft.ts +6 -0
  321. package/src/utils/uniq.ts +3 -0
  322. package/src/utils/wrapError.ts +21 -0
@@ -0,0 +1,72 @@
1
+ /**
2
+ * React hook for reactive variable substitution in JSON props
3
+ * Replaces Svelte's $: reactive statements with React hooks
4
+ *
5
+ * Based on getDerivedFromVars pattern from Web Root.svelte
6
+ */
7
+ import type { MaybeMissing } from '../expressions/json';
8
+ import type { Variable } from '../expressions/variable';
9
+ import type { VariablesMap } from '../expressions/eval';
10
+ import type { Store } from '../../typings/store';
11
+ import type { CustomFunctions } from '../expressions/funcs/customFuncs';
12
+ export interface UseDerivedFromVarsOptions {
13
+ /**
14
+ * Variables map (from DivKitContext)
15
+ */
16
+ variables: VariablesMap;
17
+ /**
18
+ * Additional variables (optional, for local context)
19
+ */
20
+ additionalVars?: Map<string, Variable>;
21
+ /**
22
+ * Keep complex types (dict, array) as objects instead of stringifying
23
+ * Default: false
24
+ */
25
+ keepComplex?: boolean;
26
+ /**
27
+ * Maximum depth for expression processing
28
+ * Default: 10
29
+ */
30
+ maxDepth?: number;
31
+ /**
32
+ * Custom functions for expressions
33
+ */
34
+ customFunctions?: CustomFunctions;
35
+ /**
36
+ * Store context (for advanced features)
37
+ */
38
+ store?: Store;
39
+ /**
40
+ * Week start day (0 = Sunday, 1 = Monday)
41
+ * Default: 0
42
+ */
43
+ weekStartDay?: number;
44
+ /**
45
+ * Error logger
46
+ */
47
+ logError?: (error: Error) => void;
48
+ }
49
+ /**
50
+ * Hook that subscribes to variables used in JSON expressions and re-evaluates when they change
51
+ *
52
+ * @example
53
+ * ```tsx
54
+ * const text = useDerivedFromVars(
55
+ * json.text, // "Hello @{userName}"
56
+ * { variables }
57
+ * );
58
+ * // text = "Hello Alice"
59
+ * // When userName variable changes, text automatically updates
60
+ * ```
61
+ */
62
+ export declare function useDerivedFromVars<T>(jsonProp: T, options: UseDerivedFromVarsOptions): MaybeMissing<T>;
63
+ /**
64
+ * Simplified version that only takes variables map (most common use case)
65
+ *
66
+ * @example
67
+ * ```tsx
68
+ * const text = useDerivedFromVarsSimple(json.text, variables);
69
+ * ```
70
+ */
71
+ export declare function useDerivedFromVarsSimple<T>(jsonProp: T, variables: VariablesMap): MaybeMissing<T>;
72
+ //# sourceMappingURL=useDerivedFromVars.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDerivedFromVars.d.ts","sourceRoot":"","sources":["../../src/hooks/useDerivedFromVars.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGxE,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,SAAS,EAAE,YAAY,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEvC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAChC,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,yBAAyB,GACnC,YAAY,CAAC,CAAC,CAAC,CA8FjB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EACtC,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,YAAY,GACxB,YAAY,CAAC,CAAC,CAAC,CAEjB"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * React hook for reactive variable substitution in JSON props
3
+ * Replaces Svelte's $: reactive statements with React hooks
4
+ *
5
+ * Based on getDerivedFromVars pattern from Web Root.svelte
6
+ */
7
+ import { useEffect, useState, useMemo, useRef } from 'react';
8
+ import { prepareVars } from '../expressions/json';
9
+ /**
10
+ * Hook that subscribes to variables used in JSON expressions and re-evaluates when they change
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * const text = useDerivedFromVars(
15
+ * json.text, // "Hello @{userName}"
16
+ * { variables }
17
+ * );
18
+ * // text = "Hello Alice"
19
+ * // When userName variable changes, text automatically updates
20
+ * ```
21
+ */
22
+ export function useDerivedFromVars(jsonProp, options) {
23
+ const { variables, additionalVars, keepComplex = false, maxDepth = 10, customFunctions, store, weekStartDay = 0, logError = console.error } = options;
24
+ // Merge variables maps
25
+ const allVariables = useMemo(() => {
26
+ if (!additionalVars || additionalVars.size === 0) {
27
+ return variables;
28
+ }
29
+ const merged = new Map(variables);
30
+ additionalVars.forEach((value, key) => {
31
+ merged.set(key, value);
32
+ });
33
+ return merged;
34
+ }, [variables, additionalVars]);
35
+ // Prepare expressions once (parse and analyze JSON for @{} expressions)
36
+ const prepared = useMemo(() => {
37
+ return prepareVars(jsonProp, logError, store, weekStartDay, maxDepth);
38
+ }, [jsonProp, logError, store, weekStartDay, maxDepth]);
39
+ // Apply variables and get initial value
40
+ const getComputedValue = () => {
41
+ const { result, usedVars } = prepared.applyVars(allVariables, customFunctions, keepComplex);
42
+ return { result, usedVars };
43
+ };
44
+ // State for the computed value
45
+ const [value, setValue] = useState(() => getComputedValue().result);
46
+ // Track used variables for subscription
47
+ const usedVarsRef = useRef();
48
+ // Subscribe to used variables and update when they change
49
+ useEffect(() => {
50
+ // If no expressions, no need to subscribe
51
+ if (!prepared.hasExpression) {
52
+ return;
53
+ }
54
+ // Compute initial value and get used variables
55
+ const { result, usedVars } = getComputedValue();
56
+ setValue(result);
57
+ usedVarsRef.current = usedVars;
58
+ // Subscribe to all used variables
59
+ const unsubscribers = [];
60
+ if (usedVars) {
61
+ usedVars.forEach(variable => {
62
+ const unsubscribe = variable.subscribe(() => {
63
+ // Variable changed - recompute value
64
+ const { result: newResult, usedVars: newUsedVars } = getComputedValue();
65
+ setValue(newResult);
66
+ // If used variables changed, we need to re-subscribe
67
+ // This happens if expression result depends on conditional logic
68
+ if (newUsedVars && newUsedVars !== usedVarsRef.current) {
69
+ const hasChanged = newUsedVars.size !== usedVarsRef.current?.size ||
70
+ Array.from(newUsedVars).some(v => !usedVarsRef.current?.has(v));
71
+ if (hasChanged) {
72
+ // usedVars changed - trigger re-render to re-subscribe
73
+ usedVarsRef.current = newUsedVars;
74
+ }
75
+ }
76
+ });
77
+ unsubscribers.push(unsubscribe);
78
+ });
79
+ }
80
+ return () => {
81
+ unsubscribers.forEach(unsub => unsub());
82
+ };
83
+ }, [prepared, allVariables, customFunctions, keepComplex]);
84
+ if (!prepared.hasExpression) {
85
+ return getComputedValue().result;
86
+ }
87
+ return value;
88
+ }
89
+ /**
90
+ * Simplified version that only takes variables map (most common use case)
91
+ *
92
+ * @example
93
+ * ```tsx
94
+ * const text = useDerivedFromVarsSimple(json.text, variables);
95
+ * ```
96
+ */
97
+ export function useDerivedFromVarsSimple(jsonProp, variables) {
98
+ return useDerivedFromVars(jsonProp, { variables });
99
+ }
100
+ //# sourceMappingURL=useDerivedFromVars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDerivedFromVars.js","sourceRoot":"","sources":["../../src/hooks/useDerivedFromVars.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * React hook for subscribing to a specific DivKit variable
3
+ * Automatically updates component when variable value changes
4
+ */
5
+ import type { Variable, VariableValue } from '../expressions/variable';
6
+ /**
7
+ * Subscribe to a variable by name and get its current value
8
+ *
9
+ * @param variableName Name of the variable to subscribe to
10
+ * @returns Current value of the variable, or undefined if not found
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * function MyComponent() {
15
+ * const userName = useVariable('userName');
16
+ * return <Text>Hello {userName}</Text>;
17
+ * }
18
+ * ```
19
+ */
20
+ export declare function useVariable(variableName: string): VariableValue | undefined;
21
+ /**
22
+ * Subscribe to a Variable instance directly (for advanced use cases)
23
+ *
24
+ * @param variable Variable instance to subscribe to
25
+ * @returns Current value of the variable
26
+ *
27
+ * @example
28
+ * ```tsx
29
+ * function MyComponent({ variable }: { variable: Variable }) {
30
+ * const value = useVariableInstance(variable);
31
+ * return <Text>{String(value)}</Text>;
32
+ * }
33
+ * ```
34
+ */
35
+ export declare function useVariableInstance<T extends VariableValue>(variable: Variable<T> | undefined): T | undefined;
36
+ /**
37
+ * Get variable setter function
38
+ * Returns a function that updates the variable value
39
+ *
40
+ * @param variableName Name of the variable
41
+ * @returns Setter function, or undefined if variable not found
42
+ *
43
+ * @example
44
+ * ```tsx
45
+ * function MyComponent() {
46
+ * const userName = useVariable('userName');
47
+ * const setUserName = useVariableSetter('userName');
48
+ *
49
+ * return (
50
+ * <View>
51
+ * <Text>Hello {userName}</Text>
52
+ * <Button
53
+ * title="Change name"
54
+ * onPress={() => setUserName?.('Bob')}
55
+ * />
56
+ * </View>
57
+ * );
58
+ * }
59
+ * ```
60
+ */
61
+ export declare function useVariableSetter(variableName: string): ((value: VariableValue) => void) | undefined;
62
+ /**
63
+ * Combined hook that returns both value and setter
64
+ *
65
+ * @param variableName Name of the variable
66
+ * @returns Tuple of [value, setter]
67
+ *
68
+ * @example
69
+ * ```tsx
70
+ * function MyComponent() {
71
+ * const [userName, setUserName] = useVariableState('userName');
72
+ *
73
+ * return (
74
+ * <View>
75
+ * <Text>Hello {userName}</Text>
76
+ * <Button
77
+ * title="Change name"
78
+ * onPress={() => setUserName('Bob')}
79
+ * />
80
+ * </View>
81
+ * );
82
+ * }
83
+ * ```
84
+ */
85
+ export declare function useVariableState(variableName: string): [VariableValue | undefined, (value: VariableValue) => void];
86
+ //# sourceMappingURL=useVariable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVariable.d.ts","sourceRoot":"","sources":["../../src/hooks/useVariable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGvE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAuB3E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,aAAa,EACvD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS,GAClC,CAAC,GAAG,SAAS,CAoBf;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAC7B,YAAY,EAAE,MAAM,GACrB,CAAC,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC,GAAG,SAAS,CAO9C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAC5B,YAAY,EAAE,MAAM,GACrB,CAAC,aAAa,GAAG,SAAS,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC,CAS7D"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * React hook for subscribing to a specific DivKit variable
3
+ * Automatically updates component when variable value changes
4
+ */
5
+ import { useEffect, useState } from 'react';
6
+ import { useDivKitContext } from '../context/DivKitContext';
7
+ /**
8
+ * Subscribe to a variable by name and get its current value
9
+ *
10
+ * @param variableName Name of the variable to subscribe to
11
+ * @returns Current value of the variable, or undefined if not found
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * function MyComponent() {
16
+ * const userName = useVariable('userName');
17
+ * return <Text>Hello {userName}</Text>;
18
+ * }
19
+ * ```
20
+ */
21
+ export function useVariable(variableName) {
22
+ const { getVariable } = useDivKitContext();
23
+ const variable = getVariable(variableName);
24
+ const [value, setValue] = useState(() => variable ? variable.getValue() : undefined);
25
+ useEffect(() => {
26
+ if (!variable) {
27
+ setValue(undefined);
28
+ return;
29
+ }
30
+ // Subscribe to variable changes
31
+ const unsubscribe = variable.subscribe((newValue) => {
32
+ setValue(newValue);
33
+ });
34
+ return unsubscribe;
35
+ }, [variable]);
36
+ return value;
37
+ }
38
+ /**
39
+ * Subscribe to a Variable instance directly (for advanced use cases)
40
+ *
41
+ * @param variable Variable instance to subscribe to
42
+ * @returns Current value of the variable
43
+ *
44
+ * @example
45
+ * ```tsx
46
+ * function MyComponent({ variable }: { variable: Variable }) {
47
+ * const value = useVariableInstance(variable);
48
+ * return <Text>{String(value)}</Text>;
49
+ * }
50
+ * ```
51
+ */
52
+ export function useVariableInstance(variable) {
53
+ const [value, setValue] = useState(() => variable ? variable.getValue() : undefined);
54
+ useEffect(() => {
55
+ if (!variable) {
56
+ setValue(undefined);
57
+ return;
58
+ }
59
+ // Subscribe to variable changes
60
+ const unsubscribe = variable.subscribe((newValue) => {
61
+ setValue(newValue);
62
+ });
63
+ return unsubscribe;
64
+ }, [variable]);
65
+ return value;
66
+ }
67
+ /**
68
+ * Get variable setter function
69
+ * Returns a function that updates the variable value
70
+ *
71
+ * @param variableName Name of the variable
72
+ * @returns Setter function, or undefined if variable not found
73
+ *
74
+ * @example
75
+ * ```tsx
76
+ * function MyComponent() {
77
+ * const userName = useVariable('userName');
78
+ * const setUserName = useVariableSetter('userName');
79
+ *
80
+ * return (
81
+ * <View>
82
+ * <Text>Hello {userName}</Text>
83
+ * <Button
84
+ * title="Change name"
85
+ * onPress={() => setUserName?.('Bob')}
86
+ * />
87
+ * </View>
88
+ * );
89
+ * }
90
+ * ```
91
+ */
92
+ export function useVariableSetter(variableName) {
93
+ const { setVariable } = useDivKitContext();
94
+ // Return stable function reference
95
+ return (value) => {
96
+ setVariable(variableName, value);
97
+ };
98
+ }
99
+ /**
100
+ * Combined hook that returns both value and setter
101
+ *
102
+ * @param variableName Name of the variable
103
+ * @returns Tuple of [value, setter]
104
+ *
105
+ * @example
106
+ * ```tsx
107
+ * function MyComponent() {
108
+ * const [userName, setUserName] = useVariableState('userName');
109
+ *
110
+ * return (
111
+ * <View>
112
+ * <Text>Hello {userName}</Text>
113
+ * <Button
114
+ * title="Change name"
115
+ * onPress={() => setUserName('Bob')}
116
+ * />
117
+ * </View>
118
+ * );
119
+ * }
120
+ * ```
121
+ */
122
+ export function useVariableState(variableName) {
123
+ const value = useVariable(variableName);
124
+ const { setVariable } = useDivKitContext();
125
+ const setter = (newValue) => {
126
+ setVariable(variableName, newValue);
127
+ };
128
+ return [value, setter];
129
+ }
130
+ //# sourceMappingURL=useVariable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVariable.js","sourceRoot":"","sources":["../../src/hooks/useVariable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,YAAoB;IAC5C,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IAE3C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAA4B,GAAG,EAAE,CAC/D,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7C,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACX,CAAC;QAED,gCAAgC;QAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChD,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACvB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAC/B,QAAiC;IAEjC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,GAAG,EAAE,CACnD,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7C,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,OAAO;QACX,CAAC;QAED,gCAAgC;QAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE;YAChD,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACvB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,iBAAiB,CAC7B,YAAoB;IAEpB,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE3C,mCAAmC;IACnC,OAAO,CAAC,KAAoB,EAAE,EAAE;QAC5B,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,gBAAgB,CAC5B,YAAoB;IAEpB,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE3C,MAAM,MAAM,GAAG,CAAC,QAAuB,EAAE,EAAE;QACvC,WAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * react-native-divkit
3
+ *
4
+ * React Native implementation of DivKit
5
+ * Based on Web (TypeScript + Svelte) implementation
6
+ *
7
+ * MVP Scope:
8
+ * - 4 basic components: Text, Container, Image, State
9
+ * - Expression engine with variable system
10
+ * - Action execution
11
+ * - Template resolution
12
+ *
13
+ * @see https://github.com/divkit/divkit
14
+ */
15
+ export { DivKit } from './DivKit';
16
+ export type { DivKitProps, StatCallback, CustomActionCallback, ErrorCallback } from './DivKit';
17
+ export type { Action, DivJson, DivBase, DivVariable, Direction, TemplateContext, BooleanInt } from '../typings/common';
18
+ export type { DivBaseData } from './types/base';
19
+ export type { ComponentContext } from './types/componentContext';
20
+ export { createVariable, Variable, StringVariable, IntegerVariable, NumberVariable, BooleanVariable, ColorVariable, UrlVariable, DictVariable, ArrayVariable } from './expressions/variable';
21
+ export type { VariableType, VariableValue } from './expressions/variable';
22
+ export { useDivKitContext, DivKitContext } from './context/DivKitContext';
23
+ export type { DivKitContextValue } from './context/DivKitContext';
24
+ export { useDerivedFromVars, useDerivedFromVarsSimple } from './hooks/useDerivedFromVars';
25
+ export { useVariable, useVariableInstance, useVariableSetter, useVariableState } from './hooks/useVariable';
26
+ export { useAction, useActions, useActionHandler, useHasActions } from './hooks/useAction';
27
+ export { wrapError } from './utils/wrapError';
28
+ export type { WrappedError } from './utils/wrapError';
29
+ export { correctColor } from './utils/correctColor';
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EACR,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,aAAa,EAChB,MAAM,UAAU,CAAC;AAGlB,YAAY,EACR,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,SAAS,EACT,eAAe,EACf,UAAU,EACb,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACR,WAAW,EACd,MAAM,cAAc,CAAC;AAEtB,YAAY,EACR,gBAAgB,EACnB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACH,cAAc,EACd,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EAChB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACR,YAAY,EACZ,aAAa,EAChB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACH,gBAAgB,EAChB,aAAa,EAChB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EACR,kBAAkB,EACrB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACH,kBAAkB,EAClB,wBAAwB,EAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACH,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACH,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,aAAa,EAChB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * react-native-divkit
3
+ *
4
+ * React Native implementation of DivKit
5
+ * Based on Web (TypeScript + Svelte) implementation
6
+ *
7
+ * MVP Scope:
8
+ * - 4 basic components: Text, Container, Image, State
9
+ * - Expression engine with variable system
10
+ * - Action execution
11
+ * - Template resolution
12
+ *
13
+ * @see https://github.com/divkit/divkit
14
+ */
15
+ // Main component
16
+ export { DivKit } from './DivKit';
17
+ // Variables
18
+ export { createVariable, Variable, StringVariable, IntegerVariable, NumberVariable, BooleanVariable, ColorVariable, UrlVariable, DictVariable, ArrayVariable } from './expressions/variable';
19
+ // Context hooks (for advanced usage)
20
+ export { useDivKitContext, DivKitContext } from './context/DivKitContext';
21
+ // Hooks (for custom components)
22
+ export { useDerivedFromVars, useDerivedFromVarsSimple } from './hooks/useDerivedFromVars';
23
+ export { useVariable, useVariableInstance, useVariableSetter, useVariableState } from './hooks/useVariable';
24
+ export { useAction, useActions, useActionHandler, useHasActions } from './hooks/useAction';
25
+ // Utils (for advanced usage)
26
+ export { wrapError } from './utils/wrapError';
27
+ export { correctColor } from './utils/correctColor';
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,iBAAiB;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AA2BlC,YAAY;AACZ,OAAO,EACH,cAAc,EACd,QAAQ,EACR,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACZ,aAAa,EAChB,MAAM,wBAAwB,CAAC;AAOhC,qCAAqC;AACrC,OAAO,EACH,gBAAgB,EAChB,aAAa,EAChB,MAAM,yBAAyB,CAAC;AAMjC,gCAAgC;AAChC,OAAO,EACH,kBAAkB,EAClB,wBAAwB,EAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACH,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACH,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,aAAa,EAChB,MAAM,mBAAmB,CAAC;AAE3B,6BAA6B;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Observable implementation to replace Svelte stores for React Native
3
+ * Provides subscribe/set pattern compatible with Svelte store interface
4
+ */
5
+ export type Subscriber<T> = (value: T) => void;
6
+ export type Unsubscriber = () => void;
7
+ export declare class Observable<T> {
8
+ private value;
9
+ private subscribers;
10
+ constructor(initialValue: T);
11
+ /**
12
+ * Subscribe to value changes
13
+ * @param callback Function called immediately with current value and on each change
14
+ * @returns Unsubscribe function
15
+ */
16
+ subscribe(callback: Subscriber<T>): Unsubscriber;
17
+ /**
18
+ * Update the value and notify all subscribers
19
+ * @param newValue New value to set
20
+ */
21
+ set(newValue: T): void;
22
+ /**
23
+ * Get current value without subscribing
24
+ * @returns Current value
25
+ */
26
+ get(): T;
27
+ }
28
+ /**
29
+ * Create a writable observable (compatible with Svelte's writable store)
30
+ * @param initialValue Initial value
31
+ * @returns Observable instance
32
+ */
33
+ export declare function writable<T>(initialValue: T): Observable<T>;
34
+ /**
35
+ * TypeScript type compatibility with Svelte stores
36
+ */
37
+ export type Writable<T> = Observable<T>;
38
+ //# sourceMappingURL=createObservable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createObservable.d.ts","sourceRoot":"","sources":["../../src/stores/createObservable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAC/C,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC;AAEtC,qBAAa,UAAU,CAAC,CAAC;IACvB,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,WAAW,CAA4B;gBAEnC,YAAY,EAAE,CAAC;IAI3B;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,YAAY;IAUhD;;;OAGG;IACH,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI;IAOtB;;;OAGG;IACH,GAAG,IAAI,CAAC;CAGT;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAE1D;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Observable implementation to replace Svelte stores for React Native
3
+ * Provides subscribe/set pattern compatible with Svelte store interface
4
+ */
5
+ export class Observable {
6
+ constructor(initialValue) {
7
+ this.subscribers = new Set();
8
+ this.value = initialValue;
9
+ }
10
+ /**
11
+ * Subscribe to value changes
12
+ * @param callback Function called immediately with current value and on each change
13
+ * @returns Unsubscribe function
14
+ */
15
+ subscribe(callback) {
16
+ this.subscribers.add(callback);
17
+ // Immediately call with current value (Svelte store behavior)
18
+ callback(this.value);
19
+ return () => {
20
+ this.subscribers.delete(callback);
21
+ };
22
+ }
23
+ /**
24
+ * Update the value and notify all subscribers
25
+ * @param newValue New value to set
26
+ */
27
+ set(newValue) {
28
+ if (this.value !== newValue) {
29
+ this.value = newValue;
30
+ this.subscribers.forEach(cb => cb(newValue));
31
+ }
32
+ }
33
+ /**
34
+ * Get current value without subscribing
35
+ * @returns Current value
36
+ */
37
+ get() {
38
+ return this.value;
39
+ }
40
+ }
41
+ /**
42
+ * Create a writable observable (compatible with Svelte's writable store)
43
+ * @param initialValue Initial value
44
+ * @returns Observable instance
45
+ */
46
+ export function writable(initialValue) {
47
+ return new Observable(initialValue);
48
+ }
49
+ //# sourceMappingURL=createObservable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createObservable.js","sourceRoot":"","sources":["../../src/stores/createObservable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,OAAO,UAAU;IAIrB,YAAY,YAAe;QAFnB,gBAAW,GAAG,IAAI,GAAG,EAAiB,CAAC;QAG7C,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,QAAuB;QAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,8DAA8D;QAC9D,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAErB,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,QAAW;QACb,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,GAAG;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAI,YAAe;IACzC,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { WrappedError } from "./wrapError";
2
+ import type { DivBase, TemplateContext } from "../../typings/common";
3
+ export declare function applyTemplate<T extends DivBase>(json: T, templateContext: TemplateContext, templates: Record<string, unknown>, _logError: (error: WrappedError) => void): {
4
+ json: T;
5
+ templateContext: TemplateContext;
6
+ };
7
+ export declare function applyTemplatesRecursively(json: any, templates: Record<string, unknown>, logError: (error: WrappedError) => void): any;
8
+ //# sourceMappingURL=applyTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyTemplate.d.ts","sourceRoot":"","sources":["../../src/utils/applyTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGrE,wBAAgB,aAAa,CAAC,CAAC,SAAS,OAAO,EAC7C,IAAI,EAAE,CAAC,EACP,eAAe,EAAE,eAAe,EAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GACvC;IACD,IAAI,EAAE,CAAC,CAAC;IACR,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AAuFF,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GACtC,GAAG,CAyCL"}