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 @@
1
+ {"version":3,"file":"parserCache.d.ts","sourceRoot":"","sources":["../../src/expressions/parserCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAalC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAEvD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,IAAI,CActD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * LRU cache
3
+ * JavaScript Map iteration is guaranteed to be performed in the insertation order
4
+ * On usage, remove the item from the Map and insert it in the end
5
+ */
6
+ const MAX_ENTRIES = 128;
7
+ const cache = new Map();
8
+ let latestItem;
9
+ export function cacheGet(expr) {
10
+ return cache.get(expr);
11
+ }
12
+ export function cacheSet(expr, ast) {
13
+ if (expr === latestItem) {
14
+ return;
15
+ }
16
+ cache.delete(expr);
17
+ if (cache.size >= MAX_ENTRIES) {
18
+ cache.delete(cache.keys().next().value);
19
+ }
20
+ cache.set(expr, ast);
21
+ latestItem = expr;
22
+ }
23
+ //# sourceMappingURL=parserCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parserCache.js","sourceRoot":"","sources":["../../src/expressions/parserCache.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;AACxB,IAAI,UAA8B,CAAC;AAEnC,MAAM,UAAU,QAAQ,CAAC,IAAY;IACjC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,GAAS;IAC5C,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEnB,IAAI,KAAK,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAErB,UAAU,GAAG,IAAI,CAAC;AACtB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function simpleUnescapeString(str: string): string;
2
+ //# sourceMappingURL=simpleUnescapeString.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simpleUnescapeString.d.ts","sourceRoot":"","sources":["../../src/expressions/simpleUnescapeString.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwDxD"}
@@ -0,0 +1,61 @@
1
+ export function simpleUnescapeString(str) {
2
+ let res = '';
3
+ let isAt = false;
4
+ let isBackslash = false;
5
+ for (let i = 0; i < str.length; ++i) {
6
+ const char = str.charAt(i);
7
+ if (char === '\\') {
8
+ if (isAt) {
9
+ isAt = false;
10
+ res += '@';
11
+ }
12
+ if (isBackslash) {
13
+ res += char;
14
+ isBackslash = false;
15
+ }
16
+ else {
17
+ isBackslash = true;
18
+ }
19
+ }
20
+ else if (char === '@') {
21
+ if (isBackslash) {
22
+ res += char;
23
+ }
24
+ else if (isAt) {
25
+ res += char;
26
+ }
27
+ else {
28
+ isAt = true;
29
+ }
30
+ }
31
+ else if (char === '{') {
32
+ if (isAt) {
33
+ throw new Error('Expressions is not supported');
34
+ }
35
+ else {
36
+ res += char;
37
+ }
38
+ }
39
+ else {
40
+ if (isBackslash) {
41
+ throw new Error('Incorrect escape');
42
+ }
43
+ if (isAt) {
44
+ isAt = false;
45
+ res += '@';
46
+ }
47
+ res += char;
48
+ }
49
+ if (isBackslash && char !== '\\') {
50
+ isBackslash = false;
51
+ }
52
+ }
53
+ if (isAt) {
54
+ res += '@';
55
+ }
56
+ if (isBackslash) {
57
+ throw new Error('Incorrect escape');
58
+ }
59
+ return res;
60
+ }
61
+ //# sourceMappingURL=simpleUnescapeString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simpleUnescapeString.js","sourceRoot":"","sources":["../../src/expressions/simpleUnescapeString.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC5C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,IAAI,EAAE,CAAC;gBACP,IAAI,GAAG,KAAK,CAAC;gBACb,GAAG,IAAI,GAAG,CAAC;YACf,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBACd,GAAG,IAAI,IAAI,CAAC;gBACZ,WAAW,GAAG,KAAK,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,WAAW,GAAG,IAAI,CAAC;YACvB,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,WAAW,EAAE,CAAC;gBACd,GAAG,IAAI,IAAI,CAAC;YAChB,CAAC;iBAAM,IAAI,IAAI,EAAE,CAAC;gBACd,GAAG,IAAI,IAAI,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACJ,IAAI,GAAG,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACJ,GAAG,IAAI,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,IAAI,EAAE,CAAC;gBACP,IAAI,GAAG,KAAK,CAAC;gBACb,GAAG,IAAI,GAAG,CAAC;YACf,CAAC;YACD,GAAG,IAAI,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,WAAW,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC/B,WAAW,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACP,GAAG,IAAI,GAAG,CAAC;IACf,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { EvalContext, EvalTypes, EvalValue, IntegerValue, NumberValue } from './eval';
2
+ import type { Node } from './ast';
3
+ import type { VariablesMap } from './eval';
4
+ import { type ParsedColor } from '../utils/correctColor';
5
+ import type { TypedValue } from '../../typings/common';
6
+ import type { MaybeMissing } from './json';
7
+ export declare class FuncError extends Error {
8
+ }
9
+ export declare function valToInternal(val: EvalValue): EvalValue;
10
+ export declare function dateToString(date: Date): string;
11
+ export declare function valToString(val: EvalValue, stringifyComplex: boolean): string;
12
+ export declare function valToPreview(val: EvalValue): string;
13
+ export declare function typeToString(type: string): string;
14
+ export declare function roundInteger(_ctx: EvalContext, val: bigint): bigint;
15
+ export declare function checkIntegerOverflow(_ctx: EvalContext, val: number | bigint): void;
16
+ export declare function checkUrl(val: unknown): void;
17
+ export declare function safeCheckUrl(val: unknown): boolean;
18
+ export declare function gatherVarsFromAst(ast: Node): string[];
19
+ export declare function evalError(msg: string, details: string): never;
20
+ export declare function evalOuterError(_msg: string, details: string): never;
21
+ export declare function containsUnsetVariables(ast: Node, variables: VariablesMap): boolean;
22
+ export declare function safeConvertColor(color: string): ParsedColor;
23
+ export declare function stringifyColor(color: ParsedColor): string;
24
+ export declare function transformColorValue(color: string): string;
25
+ export declare function integerToNumber(integerValue: IntegerValue): NumberValue;
26
+ export declare function convertJsValueToDivKit(ctx: EvalContext | undefined, val: unknown, evalType: EvalTypes): EvalValue;
27
+ export declare function convertDivKitValueToJson(value: EvalValue): string | number | boolean | object;
28
+ export declare function convertTypedValue(value: MaybeMissing<TypedValue>): string | number | boolean | object;
29
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/expressions/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAA4B,SAAS,EAAiB,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACpI,OAAO,KAAK,EAAE,IAAI,EAAY,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAAc,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAIrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,qBAAa,SAAU,SAAQ,KAAK;CACnC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,CASvD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAK/C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,GAAG,MAAM,CAuC7E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAYnD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIlF;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAW3C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAOlD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,EAAE,CAUrD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAE7D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAEnE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,GAAG,OAAO,CAYlF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAQ3D;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAQzD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW,CAKvE;AAaD,wBAAgB,sBAAsB,CAClC,GAAG,EAAE,WAAW,GAAG,SAAS,EAC5B,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,SAAS,GACpB,SAAS,CAgDX;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,sCAQxD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,sCAIhE"}
@@ -0,0 +1,236 @@
1
+ import { walk } from './walk';
2
+ import { parseColor } from '../utils/correctColor';
3
+ import { padLeft } from '../utils/padLeft';
4
+ import { MAX_INT, MIN_INT, toBigInt } from './bigint';
5
+ import { BOOLEAN, NUMBER } from './const';
6
+ export class FuncError extends Error {
7
+ }
8
+ export function valToInternal(val) {
9
+ if (val.type === 'url' || val.type === 'color') {
10
+ return {
11
+ type: 'string',
12
+ value: val.value
13
+ };
14
+ }
15
+ return val;
16
+ }
17
+ export function dateToString(date) {
18
+ return date
19
+ .toISOString()
20
+ .replace('T', ' ')
21
+ .replace(/\.\d{3}Z$/, '');
22
+ }
23
+ export function valToString(val, stringifyComplex) {
24
+ if (val.type === 'string') {
25
+ return val.value;
26
+ }
27
+ else if (val.type === 'integer') {
28
+ return String(val.value);
29
+ }
30
+ else if (val.type === 'number') {
31
+ let res = String(val.value);
32
+ if (!res.includes('.')) {
33
+ if (res.includes('e')) {
34
+ res = res.replace('e', '.0e');
35
+ }
36
+ else {
37
+ res += '.0';
38
+ }
39
+ }
40
+ res = res.replace(/e\+?/i, 'E');
41
+ return res;
42
+ }
43
+ else if (val.type === 'boolean') {
44
+ return val.value ? 'true' : 'false';
45
+ }
46
+ else if (val.type === 'datetime') {
47
+ return dateToString(val.value);
48
+ }
49
+ else if (val.type === 'color') {
50
+ return stringifyColor(safeConvertColor(val.value));
51
+ }
52
+ else if (val.type === 'url') {
53
+ return val.value;
54
+ }
55
+ else if ((val.type === 'dict' || val.type === 'array') && stringifyComplex) {
56
+ return JSON.stringify(val.value);
57
+ }
58
+ else if (val.type === 'dict') {
59
+ return '<dict>';
60
+ }
61
+ else if (val.type === 'array') {
62
+ return '<array>';
63
+ }
64
+ else if (val.type === 'function') {
65
+ return val.value[0].name || 'Function';
66
+ }
67
+ // For purpose when new eval value types will be added
68
+ throw new Error(`Unexpected type ${val.type}`);
69
+ }
70
+ export function valToPreview(val) {
71
+ let res = valToString(val, false);
72
+ if (val.type === 'string') {
73
+ res = "'" +
74
+ res
75
+ .replace(/\\/g, '\\\\')
76
+ .replace(/'/g, '\\\'') +
77
+ "'";
78
+ }
79
+ return res;
80
+ }
81
+ export function typeToString(type) {
82
+ if (type === 'datetime') {
83
+ return 'DateTime';
84
+ }
85
+ return type.charAt(0).toUpperCase() + type.substring(1);
86
+ }
87
+ export function roundInteger(_ctx, val) {
88
+ return toBigInt(val);
89
+ }
90
+ export function checkIntegerOverflow(_ctx, val) {
91
+ if (val < MIN_INT || val > MAX_INT) {
92
+ throw new Error('Integer overflow.');
93
+ }
94
+ }
95
+ export function checkUrl(val) {
96
+ if (typeof val !== 'string') {
97
+ throw new Error('Incorrect url value.');
98
+ }
99
+ try {
100
+ // eslint-disable-next-line no-new
101
+ new URL(val);
102
+ }
103
+ catch (_err) {
104
+ throw new Error('Incorrect url value.');
105
+ }
106
+ }
107
+ export function safeCheckUrl(val) {
108
+ try {
109
+ checkUrl(val);
110
+ return true;
111
+ }
112
+ catch {
113
+ return false;
114
+ }
115
+ }
116
+ export function gatherVarsFromAst(ast) {
117
+ const res = new Set();
118
+ walk(ast, {
119
+ Variable(node) {
120
+ res.add(node.id.name);
121
+ }
122
+ });
123
+ return [...res];
124
+ }
125
+ export function evalError(msg, details) {
126
+ throw new FuncError(`Failed to evaluate [${msg}]. ${details}`);
127
+ }
128
+ export function evalOuterError(_msg, details) {
129
+ throw new Error(details);
130
+ }
131
+ export function containsUnsetVariables(ast, variables) {
132
+ let result = false;
133
+ walk(ast, {
134
+ Variable(node) {
135
+ if (!variables.has(node.id.name)) {
136
+ result = true;
137
+ }
138
+ }
139
+ });
140
+ return result;
141
+ }
142
+ export function safeConvertColor(color) {
143
+ const res = parseColor(color);
144
+ if (res) {
145
+ return res;
146
+ }
147
+ throw new Error('Unable to convert value to Color, expected format #AARRGGBB.');
148
+ }
149
+ export function stringifyColor(color) {
150
+ return `#${[color.a, color.r, color.g, color.b].map(it => {
151
+ if (it < 0 || it > 255) {
152
+ throw new Error('Value out of range 0..1.');
153
+ }
154
+ return padLeft(Math.round(it).toString(16), 2);
155
+ }).join('').toUpperCase()}`;
156
+ }
157
+ export function transformColorValue(color) {
158
+ return stringifyColor(safeConvertColor(color));
159
+ }
160
+ export function integerToNumber(integerValue) {
161
+ return {
162
+ type: NUMBER,
163
+ value: Number(integerValue.value)
164
+ };
165
+ }
166
+ const EVAL_TYPE_TO_JS_TYPE = {
167
+ string: 'string',
168
+ number: 'number',
169
+ integer: 'number',
170
+ boolean: 'boolean',
171
+ color: 'string',
172
+ url: 'string',
173
+ array: 'array',
174
+ dict: 'object',
175
+ datetime: 'never'
176
+ };
177
+ export function convertJsValueToDivKit(ctx, val, evalType) {
178
+ if (evalType === 'function') {
179
+ throw new Error('Cannot convert function');
180
+ }
181
+ const jsType = EVAL_TYPE_TO_JS_TYPE[evalType];
182
+ let type = typeof val;
183
+ if (jsType === 'array' && !Array.isArray(val) ||
184
+ jsType !== 'array' && type !== jsType ||
185
+ type === 'object' && val === null) {
186
+ if (type === 'object') {
187
+ if (Array.isArray(val)) {
188
+ type = 'array';
189
+ }
190
+ else if (val === null) {
191
+ type = 'null';
192
+ }
193
+ else {
194
+ type = 'dict';
195
+ }
196
+ }
197
+ throw new Error(`Incorrect value type: expected ${typeToString(evalType)}, got ${typeToString(type)}.`);
198
+ }
199
+ if (jsType === 'number' && evalType === 'integer') {
200
+ if (ctx) {
201
+ checkIntegerOverflow(ctx, val);
202
+ }
203
+ try {
204
+ val = toBigInt(val);
205
+ }
206
+ catch (_err) {
207
+ throw new Error('Cannot convert value to integer.');
208
+ }
209
+ }
210
+ if (jsType === 'string' && evalType === 'color') {
211
+ val = transformColorValue(val);
212
+ }
213
+ if (jsType === 'string' && evalType === 'url') {
214
+ checkUrl(val);
215
+ }
216
+ if (jsType === 'boolean' && evalType === BOOLEAN) {
217
+ val = val ? 1 : 0;
218
+ }
219
+ return {
220
+ type: evalType,
221
+ value: val
222
+ };
223
+ }
224
+ export function convertDivKitValueToJson(value) {
225
+ if (value.type === 'number' || value.type === 'integer') {
226
+ return Number(value.value);
227
+ }
228
+ else if (value.type === 'boolean') {
229
+ return Boolean(value.value);
230
+ }
231
+ return value.value;
232
+ }
233
+ export function convertTypedValue(value) {
234
+ return convertDivKitValueToJson(convertJsValueToDivKit(undefined, value.value, value.type));
235
+ }
236
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/expressions/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import type { Writable, Subscriber, Unsubscriber } from '../stores/createObservable';
2
+ import type { EvalValue } from './eval';
3
+ export type VariableType = 'string' | 'number' | 'integer' | 'boolean' | 'color' | 'url' | 'dict' | 'array';
4
+ export type VariableValue = string | number | bigint | boolean | null | undefined | object | unknown[];
5
+ export declare abstract class Variable<ValueType extends ConvertedSetValue = any, TypeName = VariableType, ConvertedSetValue = ValueType> {
6
+ protected name: string;
7
+ protected value: ValueType;
8
+ protected store?: Writable<ValueType>;
9
+ constructor(name: string, value: ConvertedSetValue);
10
+ getName(): string;
11
+ protected abstract convertValue(value: unknown): ValueType;
12
+ subscribe(cb: Subscriber<ValueType>): Unsubscriber;
13
+ set(val: string): void;
14
+ protected abstract fromString(val: string): ValueType;
15
+ setValue(val: ConvertedSetValue): void;
16
+ getValue(): ValueType;
17
+ abstract getType(): TypeName;
18
+ }
19
+ export declare class StringVariable extends Variable<string, 'string'> {
20
+ protected convertValue(value: unknown): string;
21
+ protected fromString(val: string): string;
22
+ getType(): 'string';
23
+ }
24
+ export declare class IntegerVariable extends Variable<bigint, 'integer', bigint | number> {
25
+ protected convertValue(value: unknown): bigint;
26
+ protected fromString(val: string): bigint;
27
+ getType(): 'integer';
28
+ }
29
+ export declare class NumberVariable extends Variable<number, 'number'> {
30
+ protected convertValue(value: unknown): number;
31
+ protected fromString(val: string): number;
32
+ getType(): 'number';
33
+ }
34
+ export declare class BooleanVariable extends Variable<boolean, 'boolean'> {
35
+ protected convertValue(value: unknown): boolean;
36
+ protected fromString(val: string): boolean;
37
+ getType(): 'boolean';
38
+ }
39
+ export declare class ColorVariable extends Variable<string, 'color'> {
40
+ protected convertValue(value: unknown): string;
41
+ protected fromString(val: string): string;
42
+ getType(): 'color';
43
+ }
44
+ export declare class UrlVariable extends Variable<string, 'url'> {
45
+ protected convertValue(value: unknown): string;
46
+ protected fromString(val: string): string;
47
+ getType(): 'url';
48
+ }
49
+ export declare class DictVariable extends Variable<object, 'dict'> {
50
+ protected convertValue(value: unknown): object;
51
+ protected fromString(val: string): object;
52
+ getType(): 'dict';
53
+ }
54
+ export declare class ArrayVariable extends Variable<unknown[], 'array'> {
55
+ protected convertValue(value: unknown[]): unknown[];
56
+ protected fromString(val: string): unknown[];
57
+ getType(): 'array';
58
+ }
59
+ export declare const TYPE_TO_CLASS: Record<VariableType, new (name: string, value: any) => Variable>;
60
+ export declare function createVariable(name: string, type: VariableType, value: unknown): Variable;
61
+ declare class ConstDatetimeVariable extends Variable<Date, 'datetime'> {
62
+ protected convertValue(value: unknown): Date;
63
+ protected fromString(): never;
64
+ getType(): 'datetime';
65
+ }
66
+ export declare const CONST_TYPE_TO_CLASS: {
67
+ string: typeof StringVariable;
68
+ number: typeof NumberVariable;
69
+ integer: typeof IntegerVariable;
70
+ boolean: typeof BooleanVariable;
71
+ color: typeof ColorVariable;
72
+ url: typeof UrlVariable;
73
+ dict: typeof DictVariable;
74
+ array: typeof ArrayVariable;
75
+ datetime: typeof ConstDatetimeVariable;
76
+ };
77
+ export declare function createConstVariable(name: string, type: VariableType | 'datetime', value: unknown): Variable;
78
+ export declare function defaultValueByType(type: keyof typeof TYPE_TO_CLASS): VariableValue;
79
+ export declare function variableToValue(variable: Variable): EvalValue;
80
+ export declare function variableValueFromString(val: string, type: VariableType): VariableValue;
81
+ export {};
82
+ //# sourceMappingURL=variable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../src/expressions/variable.ts"],"names":[],"mappings":"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"}