@builder.io/sdk-svelte 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/package/--package.json +43 -29
  2. package/package/CHANGELOG.md +13 -0
  3. package/package/blocks/BaseText.svelte +1 -1
  4. package/package/blocks/button/button.svelte +18 -33
  5. package/package/blocks/button/button.svelte.d.ts +3 -1
  6. package/package/blocks/button/component-info.d.ts +1 -1
  7. package/package/blocks/button/component-info.js +9 -13
  8. package/package/blocks/columns/columns.svelte +14 -20
  9. package/package/blocks/columns/columns.svelte.d.ts +11 -7
  10. package/package/blocks/columns/component-info.d.ts +1 -1
  11. package/package/blocks/columns/component-info.js +62 -83
  12. package/package/blocks/custom-code/component-info.d.ts +1 -1
  13. package/package/blocks/custom-code/component-info.js +7 -11
  14. package/package/blocks/embed/component-info.d.ts +1 -1
  15. package/package/blocks/embed/component-info.js +8 -15
  16. package/package/blocks/embed/helpers.js +1 -5
  17. package/package/blocks/form/component-info.d.ts +1 -1
  18. package/package/blocks/form/component-info.js +94 -129
  19. package/package/blocks/form/form.svelte +2 -289
  20. package/package/blocks/form/form.svelte.d.ts +1 -57
  21. package/package/blocks/fragment/component-info.d.ts +1 -1
  22. package/package/blocks/fragment/component-info.js +1 -1
  23. package/package/blocks/helpers.d.ts +13 -0
  24. package/package/blocks/helpers.js +40 -0
  25. package/package/blocks/image/component-info.d.ts +1 -1
  26. package/package/blocks/image/component-info.js +33 -63
  27. package/package/blocks/image/image.helpers.js +2 -11
  28. package/package/blocks/image/image.svelte.d.ts +0 -1
  29. package/package/blocks/img/component-info.d.ts +1 -1
  30. package/package/blocks/img/component-info.js +4 -6
  31. package/package/blocks/img/img.svelte +4 -29
  32. package/package/blocks/img/img.svelte.d.ts +3 -1
  33. package/package/blocks/input/component-info.d.ts +1 -1
  34. package/package/blocks/input/component-info.js +15 -40
  35. package/package/blocks/input/input.svelte +4 -29
  36. package/package/blocks/input/input.svelte.d.ts +3 -1
  37. package/package/blocks/raw-text/component-info.d.ts +1 -1
  38. package/package/blocks/raw-text/component-info.js +3 -5
  39. package/package/blocks/raw-text/raw-text.svelte +3 -5
  40. package/package/blocks/raw-text/raw-text.svelte.d.ts +1 -1
  41. package/package/blocks/section/component-info.d.ts +1 -1
  42. package/package/blocks/section/component-info.js +13 -18
  43. package/package/blocks/section/section.svelte +4 -29
  44. package/package/blocks/section/section.svelte.d.ts +3 -1
  45. package/package/blocks/select/component-info.d.ts +1 -1
  46. package/package/blocks/select/component-info.js +22 -34
  47. package/package/blocks/select/select.svelte +4 -29
  48. package/package/blocks/select/select.svelte.d.ts +3 -1
  49. package/package/blocks/submit-button/component-info.d.ts +1 -1
  50. package/package/blocks/submit-button/component-info.js +5 -7
  51. package/package/blocks/submit-button/submit-button.svelte +4 -29
  52. package/package/blocks/submit-button/submit-button.svelte.d.ts +3 -1
  53. package/package/blocks/symbol/component-info.d.ts +1 -1
  54. package/package/blocks/symbol/component-info.js +12 -17
  55. package/package/blocks/symbol/symbol.helpers.d.ts +14 -0
  56. package/package/blocks/symbol/symbol.helpers.js +31 -0
  57. package/package/blocks/symbol/symbol.svelte +38 -85
  58. package/package/blocks/symbol/symbol.svelte.d.ts +13 -7
  59. package/package/blocks/text/component-info.d.ts +1 -1
  60. package/package/blocks/text/component-info.js +6 -7
  61. package/package/blocks/text/text.svelte +1 -1
  62. package/package/blocks/text/text.svelte.d.ts +1 -1
  63. package/package/blocks/textarea/component-info.d.ts +1 -1
  64. package/package/blocks/textarea/component-info.js +13 -19
  65. package/package/blocks/textarea/textarea.svelte +4 -29
  66. package/package/blocks/textarea/textarea.svelte.d.ts +3 -1
  67. package/package/blocks/video/component-info.d.ts +1 -1
  68. package/package/blocks/video/component-info.js +35 -55
  69. package/package/blocks/video/video.svelte +4 -30
  70. package/package/blocks/video/video.svelte.d.ts +2 -0
  71. package/package/components/block/block.helpers.d.ts +13 -0
  72. package/package/components/{render-block/render-block.helpers.js → block/block.helpers.js} +12 -29
  73. package/package/components/block/block.svelte +135 -0
  74. package/package/components/block/block.svelte.d.ts +26 -0
  75. package/package/components/{render-block → block/components}/block-styles.svelte +21 -23
  76. package/package/components/{render-block → block/components}/block-styles.svelte.d.ts +2 -2
  77. package/package/components/block/components/block-wrapper.svelte +53 -0
  78. package/package/components/block/components/block-wrapper.svelte.d.ts +33 -0
  79. package/package/components/block/components/component-ref/component-ref.helpers.d.ts +36 -0
  80. package/package/components/block/components/component-ref/component-ref.helpers.js +22 -0
  81. package/package/components/block/components/component-ref/component-ref.svelte +37 -0
  82. package/package/components/block/components/component-ref/component-ref.svelte.d.ts +24 -0
  83. package/package/components/block/components/interactive-element.svelte +29 -0
  84. package/package/components/block/components/interactive-element.svelte.d.ts +31 -0
  85. package/package/components/{render-block/render-repeated-block.svelte → block/components/repeated-block.svelte} +4 -3
  86. package/package/components/block/components/repeated-block.svelte.d.ts +25 -0
  87. package/package/components/{render-blocks.svelte → blocks/blocks-wrapper.svelte} +3 -20
  88. package/package/components/blocks/blocks-wrapper.svelte.d.ts +29 -0
  89. package/package/components/blocks/blocks.svelte +26 -0
  90. package/package/components/blocks/blocks.svelte.d.ts +28 -0
  91. package/package/components/{render-content/render-content.svelte → content/components/enable-editor.svelte} +51 -169
  92. package/package/components/content/components/enable-editor.svelte.d.ts +36 -0
  93. package/package/components/{render-content/components/render-styles.helpers.d.ts → content/components/styles.helpers.d.ts} +1 -1
  94. package/package/components/{render-content/components/render-styles.helpers.js → content/components/styles.helpers.js} +3 -4
  95. package/package/components/{render-content/components/render-styles.svelte → content/components/styles.svelte} +4 -4
  96. package/package/components/{render-content/components/render-styles.svelte.d.ts → content/components/styles.svelte.d.ts} +5 -5
  97. package/package/components/content/content.helpers.d.ts +7 -0
  98. package/package/components/content/content.helpers.js +30 -0
  99. package/package/components/content/content.svelte +113 -0
  100. package/package/components/content/content.svelte.d.ts +30 -0
  101. package/package/components/content/content.types.d.ts +24 -0
  102. package/package/components/content/index.d.ts +1 -0
  103. package/package/components/content/index.js +1 -0
  104. package/package/components/content-variants/content-variants.svelte +98 -0
  105. package/package/components/content-variants/content-variants.svelte.d.ts +34 -0
  106. package/package/components/content-variants/content-variants.types.d.ts +20 -0
  107. package/package/components/content-variants/helpers.d.ts +41 -0
  108. package/package/components/{render-content-variants → content-variants}/helpers.js +46 -41
  109. package/package/components/inlined-script.svelte +7 -0
  110. package/package/components/inlined-script.svelte.d.ts +21 -0
  111. package/package/components/inlined-styles.svelte.d.ts +21 -0
  112. package/package/constants/builder-registered-components.js +34 -13
  113. package/package/constants/device-sizes.js +9 -8
  114. package/package/constants/sdk-version.d.ts +1 -1
  115. package/package/constants/sdk-version.js +1 -1
  116. package/package/constants/target.d.ts +1 -1
  117. package/package/context/builder.context.d.ts +1 -1
  118. package/package/context/builder.context.js +1 -1
  119. package/package/context/types.d.ts +1 -1
  120. package/package/functions/apply-patch-with-mutation.d.ts +10 -0
  121. package/package/functions/apply-patch-with-mutation.js +54 -0
  122. package/package/functions/evaluate/acorn.d.ts +0 -0
  123. package/package/functions/evaluate/acorn.js +2433 -0
  124. package/package/functions/{evaluate.d.ts → evaluate/evaluate.d.ts} +5 -2
  125. package/package/functions/{evaluate.js → evaluate/evaluate.js} +34 -13
  126. package/package/functions/evaluate/index.d.ts +1 -0
  127. package/package/functions/evaluate/index.js +1 -0
  128. package/package/functions/evaluate/interpreter.d.ts +2 -0
  129. package/package/functions/evaluate/interpreter.js +3853 -0
  130. package/package/functions/evaluate/non-node-runtime.d.ts +2 -0
  131. package/package/functions/evaluate/non-node-runtime.js +84 -0
  132. package/package/functions/evaluate/types.d.ts +10 -0
  133. package/package/functions/extract-text-styles.js +2 -14
  134. package/package/functions/get-block-actions-handler.js +3 -3
  135. package/package/functions/get-block-actions.d.ts +1 -0
  136. package/package/functions/get-block-actions.js +14 -1
  137. package/package/functions/get-block-component-options.js +1 -1
  138. package/package/functions/get-block-properties.d.ts +5 -1
  139. package/package/functions/get-block-properties.js +15 -9
  140. package/package/functions/get-builder-search-params/index.js +3 -7
  141. package/package/functions/get-content/generate-content-url.js +7 -5
  142. package/package/functions/get-content/index.d.ts +2 -6
  143. package/package/functions/get-content/index.js +26 -6
  144. package/package/functions/get-processed-block.d.ts +1 -1
  145. package/package/functions/get-processed-block.js +11 -7
  146. package/package/functions/get-react-native-block-styles.d.ts +1 -1
  147. package/package/functions/get-react-native-block-styles.js +2 -2
  148. package/package/functions/if-target.d.ts +1 -1
  149. package/package/functions/if-target.js +1 -1
  150. package/package/functions/is-editing.js +1 -3
  151. package/package/functions/is-non-node-server.d.ts +4 -0
  152. package/package/functions/is-non-node-server.js +8 -0
  153. package/package/functions/on-change.js +1 -1
  154. package/package/functions/register-component.d.ts +2 -1
  155. package/package/functions/register-component.js +20 -8
  156. package/package/functions/register.js +2 -2
  157. package/package/functions/sanitize-react-native-block-styles.js +13 -5
  158. package/package/functions/set-editor-settings.js +1 -1
  159. package/package/functions/set.js +2 -9
  160. package/package/functions/track/helpers.js +6 -11
  161. package/package/functions/track/index.js +26 -14
  162. package/package/functions/track/interaction.js +15 -16
  163. package/package/helpers/ab-tests.d.ts +2 -2
  164. package/package/helpers/ab-tests.js +48 -30
  165. package/package/helpers/canTrack.js +1 -1
  166. package/package/helpers/cookie.d.ts +2 -2
  167. package/package/helpers/cookie.js +13 -26
  168. package/package/helpers/css.d.ts +1 -1
  169. package/package/helpers/css.js +1 -1
  170. package/package/helpers/flatten.js +8 -8
  171. package/package/helpers/localStorage.d.ts +2 -2
  172. package/package/helpers/localStorage.js +2 -2
  173. package/package/helpers/logger.js +1 -1
  174. package/package/helpers/preview-lru-cache/get.d.ts +1 -0
  175. package/package/helpers/preview-lru-cache/get.js +7 -0
  176. package/package/helpers/preview-lru-cache/helpers.d.ts +1 -0
  177. package/package/helpers/preview-lru-cache/helpers.js +9 -0
  178. package/package/helpers/preview-lru-cache/init.d.ts +6 -0
  179. package/package/helpers/preview-lru-cache/init.js +15 -0
  180. package/package/helpers/preview-lru-cache/set.d.ts +7 -0
  181. package/package/helpers/preview-lru-cache/set.js +9 -0
  182. package/package/helpers/preview-lru-cache/types.d.ts +12 -0
  183. package/package/helpers/preview-lru-cache/types.js +6 -0
  184. package/package/helpers/sessionId.d.ts +2 -2
  185. package/package/helpers/sessionId.js +11 -4
  186. package/package/helpers/uuid.js +1 -1
  187. package/package/helpers/visitorId.d.ts +1 -1
  188. package/package/helpers/visitorId.js +7 -4
  189. package/package/index-helpers/blocks-exports.d.ts +2 -2
  190. package/package/index-helpers/blocks-exports.js +2 -2
  191. package/package/index.d.ts +2 -2
  192. package/package/index.js +1 -1
  193. package/package/scripts/init-editing.js +65 -57
  194. package/package/types/builder-props.d.ts +10 -0
  195. package/package/types/components.d.ts +8 -2
  196. package/package/types/enforced-partials.d.ts +21 -0
  197. package/package/types/targets.d.ts +1 -3
  198. package/package/types/typescript.d.ts +6 -0
  199. package/package.json +2 -2
  200. package/src/blocks/BaseText.svelte +1 -1
  201. package/src/blocks/button/button.svelte +21 -34
  202. package/src/blocks/button/component-info.ts +20 -27
  203. package/src/blocks/columns/columns.svelte +28 -32
  204. package/src/blocks/columns/component-info.ts +205 -240
  205. package/src/blocks/custom-code/component-info.ts +20 -27
  206. package/src/blocks/embed/component-info.ts +34 -51
  207. package/src/blocks/embed/helpers.ts +2 -8
  208. package/src/blocks/form/component-info.ts +204 -253
  209. package/src/blocks/form/form.svelte +1 -368
  210. package/src/blocks/fragment/component-info.ts +3 -5
  211. package/src/blocks/helpers.ts +43 -0
  212. package/src/blocks/image/component-info.ts +113 -161
  213. package/src/blocks/image/image.helpers.ts +5 -33
  214. package/src/blocks/img/component-info.ts +11 -16
  215. package/src/blocks/img/img.svelte +7 -31
  216. package/src/blocks/input/component-info.ts +35 -66
  217. package/src/blocks/input/input.svelte +7 -31
  218. package/src/blocks/raw-text/component-info.ts +8 -12
  219. package/src/blocks/raw-text/raw-text.svelte +2 -5
  220. package/src/blocks/section/component-info.ts +28 -37
  221. package/src/blocks/section/section.svelte +7 -30
  222. package/src/blocks/select/component-info.ts +38 -55
  223. package/src/blocks/select/select.svelte +7 -31
  224. package/src/blocks/submit-button/component-info.ts +10 -15
  225. package/src/blocks/submit-button/submit-button.svelte +7 -30
  226. package/src/blocks/symbol/component-info.ts +31 -39
  227. package/src/blocks/symbol/symbol.helpers.ts +47 -0
  228. package/src/blocks/symbol/symbol.svelte +51 -95
  229. package/src/blocks/text/component-info.ts +14 -18
  230. package/src/blocks/text/text.svelte +2 -2
  231. package/src/blocks/textarea/component-info.ts +26 -36
  232. package/src/blocks/textarea/textarea.svelte +7 -30
  233. package/src/blocks/video/component-info.ts +77 -103
  234. package/src/blocks/video/video.svelte +4 -31
  235. package/src/components/{render-block/render-block.helpers.ts → block/block.helpers.ts} +22 -49
  236. package/src/components/block/block.svelte +158 -0
  237. package/src/components/{render-block → block/components}/block-styles.svelte +24 -25
  238. package/src/components/block/components/block-wrapper.svelte +70 -0
  239. package/src/components/block/components/component-ref/component-ref.helpers.ts +53 -0
  240. package/src/components/block/components/component-ref/component-ref.svelte +41 -0
  241. package/src/components/block/components/interactive-element.svelte +42 -0
  242. package/src/components/block/components/repeated-block.svelte +30 -0
  243. package/src/components/{render-block → block}/types.ts +1 -2
  244. package/src/components/{render-blocks.svelte → blocks/blocks-wrapper.svelte} +14 -32
  245. package/src/components/blocks/blocks.svelte +39 -0
  246. package/src/components/{render-content/render-content.svelte → content/components/enable-editor.svelte} +75 -202
  247. package/src/components/{render-content/components/render-styles.helpers.ts → content/components/styles.helpers.ts} +9 -11
  248. package/src/components/{render-content/components/render-styles.svelte → content/components/styles.svelte} +5 -5
  249. package/src/components/content/content.helpers.ts +42 -0
  250. package/src/components/content/content.svelte +138 -0
  251. package/src/components/content/content.types.ts +23 -0
  252. package/src/components/content/index.ts +1 -0
  253. package/src/components/{render-content → content}/wrap-component-ref.ts +1 -1
  254. package/src/components/content-variants/content-variants.svelte +120 -0
  255. package/src/components/content-variants/content-variants.types.ts +20 -0
  256. package/src/components/{render-content-variants → content-variants}/helpers.ts +53 -94
  257. package/src/components/inlined-script.svelte +13 -0
  258. package/src/constants/builder-registered-components.ts +34 -14
  259. package/src/constants/device-sizes.ts +16 -22
  260. package/src/constants/sdk-version.ts +1 -1
  261. package/src/constants/target.ts +3 -1
  262. package/src/context/builder.context.ts +1 -1
  263. package/src/context/types.ts +2 -7
  264. package/src/functions/apply-patch-with-mutation.ts +61 -0
  265. package/src/functions/camel-to-kebab-case.ts +1 -2
  266. package/src/functions/evaluate/acorn.ts +2501 -0
  267. package/src/functions/evaluate/evaluate.ts +90 -0
  268. package/src/functions/evaluate/index.ts +1 -0
  269. package/src/functions/evaluate/interpreter.ts +3887 -0
  270. package/src/functions/evaluate/non-node-runtime.ts +94 -0
  271. package/src/functions/evaluate/types.ts +10 -0
  272. package/src/functions/extract-text-styles.ts +3 -18
  273. package/src/functions/fast-clone.ts +1 -2
  274. package/src/functions/get-block-actions-handler.ts +11 -20
  275. package/src/functions/get-block-actions.ts +22 -14
  276. package/src/functions/get-block-component-options.ts +2 -3
  277. package/src/functions/get-block-properties.ts +24 -17
  278. package/src/functions/get-builder-search-params/index.ts +5 -21
  279. package/src/functions/get-content/generate-content-url.ts +10 -25
  280. package/src/functions/get-content/index.ts +34 -37
  281. package/src/functions/get-content/types.ts +4 -2
  282. package/src/functions/get-fetch.ts +3 -10
  283. package/src/functions/get-global-this.ts +1 -2
  284. package/src/functions/get-processed-block.ts +14 -21
  285. package/src/functions/get-react-native-block-styles.ts +6 -12
  286. package/src/functions/if-target.ts +2 -3
  287. package/src/functions/is-browser.ts +1 -1
  288. package/src/functions/is-editing.ts +2 -7
  289. package/src/functions/is-iframe.ts +1 -2
  290. package/src/functions/is-non-node-server.ts +9 -0
  291. package/src/functions/is-previewing.ts +1 -4
  292. package/src/functions/on-change.ts +2 -2
  293. package/src/functions/register-component.ts +24 -26
  294. package/src/functions/register.ts +6 -8
  295. package/src/functions/sanitize-react-native-block-styles.ts +17 -24
  296. package/src/functions/set-editor-settings.ts +5 -6
  297. package/src/functions/set.ts +3 -15
  298. package/src/functions/track/helpers.ts +8 -24
  299. package/src/functions/track/index.ts +37 -42
  300. package/src/functions/track/interaction.ts +21 -38
  301. package/src/functions/transform-block-properties.ts +1 -1
  302. package/src/functions/transform-block.ts +1 -1
  303. package/src/helpers/ab-tests.ts +69 -78
  304. package/src/helpers/canTrack.ts +2 -4
  305. package/src/helpers/cookie.ts +15 -46
  306. package/src/helpers/css.ts +4 -13
  307. package/src/helpers/flatten.ts +11 -16
  308. package/src/helpers/localStorage.ts +4 -8
  309. package/src/helpers/logger.ts +2 -2
  310. package/src/helpers/nullable.ts +1 -3
  311. package/src/helpers/preview-lru-cache/get.ts +8 -0
  312. package/src/helpers/preview-lru-cache/helpers.ts +9 -0
  313. package/src/helpers/preview-lru-cache/init.ts +17 -0
  314. package/src/helpers/preview-lru-cache/set.ts +18 -0
  315. package/src/helpers/preview-lru-cache/types.ts +12 -0
  316. package/src/helpers/sessionId.ts +12 -13
  317. package/src/helpers/time.ts +1 -3
  318. package/src/helpers/url.ts +1 -2
  319. package/src/helpers/uuid.ts +3 -3
  320. package/src/helpers/visitorId.ts +14 -17
  321. package/src/index-helpers/blocks-exports.ts +2 -2
  322. package/src/index-helpers/top-of-file.ts +1 -1
  323. package/src/index.ts +2 -13
  324. package/src/scripts/init-editing.ts +85 -98
  325. package/src/types/api-version.ts +1 -1
  326. package/src/types/builder-block.ts +1 -3
  327. package/src/types/builder-content.ts +7 -4
  328. package/src/types/builder-props.ts +10 -0
  329. package/src/types/can-track.ts +1 -1
  330. package/src/types/components.ts +17 -13
  331. package/src/types/deep-partial.ts +1 -7
  332. package/src/types/element.ts +1 -3
  333. package/src/types/enforced-partials.ts +13 -0
  334. package/src/types/input.ts +6 -9
  335. package/src/types/targets.ts +1 -6
  336. package/src/types/typescript.ts +10 -5
  337. package/package/blocks/util.d.ts +0 -4
  338. package/package/blocks/util.js +0 -13
  339. package/package/components/render-block/render-block.helpers.d.ts +0 -12
  340. package/package/components/render-block/render-block.svelte +0 -152
  341. package/package/components/render-block/render-block.svelte.d.ts +0 -24
  342. package/package/components/render-block/render-component.svelte +0 -21
  343. package/package/components/render-block/render-component.svelte.d.ts +0 -34
  344. package/package/components/render-block/render-repeated-block.svelte.d.ts +0 -23
  345. package/package/components/render-blocks.svelte.d.ts +0 -26
  346. package/package/components/render-content/builder-editing.svelte +0 -4
  347. package/package/components/render-content/builder-editing.svelte.d.ts +0 -14
  348. package/package/components/render-content/index.d.ts +0 -1
  349. package/package/components/render-content/index.js +0 -1
  350. package/package/components/render-content/render-content.helpers.d.ts +0 -7
  351. package/package/components/render-content/render-content.helpers.js +0 -30
  352. package/package/components/render-content/render-content.svelte.d.ts +0 -31
  353. package/package/components/render-content/render-content.types.d.ts +0 -38
  354. package/package/components/render-content-variants/helpers.d.ts +0 -17
  355. package/package/components/render-content-variants/render-content-variants.svelte +0 -70
  356. package/package/components/render-content-variants/render-content-variants.svelte.d.ts +0 -23
  357. package/package/components/render-inlined-styles.svelte.d.ts +0 -21
  358. package/package/functions/evaluate.test.js +0 -17
  359. package/package/functions/get-builder-search-params/fn.test.js +0 -13
  360. package/package/functions/get-content/generate-content-url.test.js +0 -97
  361. package/package/functions/get-processed-block.test.js +0 -33
  362. package/package/functions/on-change.test.d.ts +0 -1
  363. package/package/functions/on-change.test.js +0 -20
  364. package/package/functions/set.test.d.ts +0 -1
  365. package/package/functions/set.test.js +0 -16
  366. package/package/helpers/url.test.d.ts +0 -1
  367. package/package/helpers/url.test.js +0 -21
  368. package/src/blocks/util.ts +0 -18
  369. package/src/components/render-block/render-block.svelte +0 -173
  370. package/src/components/render-block/render-component.svelte +0 -40
  371. package/src/components/render-block/render-repeated-block.svelte +0 -25
  372. package/src/components/render-content/builder-editing.svelte +0 -4
  373. package/src/components/render-content/index.ts +0 -1
  374. package/src/components/render-content/render-content.helpers.ts +0 -48
  375. package/src/components/render-content/render-content.types.ts +0 -42
  376. package/src/components/render-content-variants/render-content-variants.svelte +0 -83
  377. package/src/functions/evaluate.test.ts +0 -21
  378. package/src/functions/evaluate.ts +0 -99
  379. package/src/functions/get-builder-search-params/fn.test.ts +0 -19
  380. package/src/functions/get-content/generate-content-url.test.ts +0 -112
  381. package/src/functions/get-processed-block.test.ts +0 -35
  382. package/src/functions/on-change.test.ts +0 -23
  383. package/src/functions/set.test.ts +0 -19
  384. package/src/helpers/url.test.ts +0 -23
  385. /package/package/components/{render-block → block}/types.d.ts +0 -0
  386. /package/package/components/{render-block → block}/types.js +0 -0
  387. /package/package/{functions/evaluate.test.d.ts → components/content/content.types.js} +0 -0
  388. /package/package/components/{render-content → content}/wrap-component-ref.d.ts +0 -0
  389. /package/package/components/{render-content → content}/wrap-component-ref.js +0 -0
  390. /package/package/components/{render-content/render-content.types.js → content-variants/content-variants.types.js} +0 -0
  391. /package/package/components/{render-inlined-styles.svelte → inlined-styles.svelte} +0 -0
  392. /package/package/functions/{get-builder-search-params/fn.test.d.ts → evaluate/types.js} +0 -0
  393. /package/package/{functions/get-content/generate-content-url.test.d.ts → types/builder-props.js} +0 -0
  394. /package/package/{functions/get-processed-block.test.d.ts → types/enforced-partials.js} +0 -0
  395. /package/src/components/{render-inlined-styles.svelte → inlined-styles.svelte} +0 -0
@@ -1,32 +1,31 @@
1
1
  import type { BuilderContextInterface } from '../context/types.js';
2
2
  import type { BuilderBlock } from '../types/builder-block.js';
3
- import { evaluate } from './evaluate.js';
3
+ import { evaluate } from './evaluate';
4
4
  import { fastClone } from './fast-clone.js';
5
5
  import { set } from './set.js';
6
6
  import { transformBlock } from './transform-block.js';
7
-
8
7
  const evaluateBindings = ({
9
8
  block,
10
9
  context,
11
10
  localState,
12
11
  rootState,
13
- rootSetState,
12
+ rootSetState
14
13
  }: {
15
14
  block: BuilderBlock;
16
- } & Pick<
17
- BuilderContextInterface,
18
- 'localState' | 'context' | 'rootState' | 'rootSetState'
19
- >): BuilderBlock => {
15
+ } & Pick<BuilderContextInterface, 'localState' | 'context' | 'rootState' | 'rootSetState'>): BuilderBlock => {
20
16
  if (!block.bindings) {
21
17
  return block;
22
18
  }
23
19
  const copy = fastClone(block);
24
20
  const copied = {
25
21
  ...copy,
26
- properties: { ...copy.properties },
27
- actions: { ...copy.actions },
22
+ properties: {
23
+ ...copy.properties
24
+ },
25
+ actions: {
26
+ ...copy.actions
27
+ }
28
28
  };
29
-
30
29
  for (const binding in block.bindings) {
31
30
  const expression = block.bindings[binding];
32
31
  const value = evaluate({
@@ -34,21 +33,19 @@ const evaluateBindings = ({
34
33
  localState,
35
34
  rootState,
36
35
  rootSetState,
37
- context,
36
+ context
38
37
  });
39
38
  set(copied, binding, value);
40
39
  }
41
-
42
40
  return copied;
43
41
  };
44
-
45
42
  export function getProcessedBlock({
46
43
  block,
47
44
  context,
48
45
  shouldEvaluateBindings,
49
46
  localState,
50
47
  rootState,
51
- rootSetState,
48
+ rootSetState
52
49
  }: {
53
50
  block: BuilderBlock;
54
51
  /**
@@ -56,21 +53,17 @@ export function getProcessedBlock({
56
53
  * also sometimes too early to consider bindings, e.g. when we might be looking at a repeated block.
57
54
  */
58
55
  shouldEvaluateBindings: boolean;
59
- } & Pick<
60
- BuilderContextInterface,
61
- 'localState' | 'context' | 'rootState' | 'rootSetState'
62
- >): BuilderBlock {
56
+ } & Pick<BuilderContextInterface, 'localState' | 'context' | 'rootState' | 'rootSetState'>): BuilderBlock {
63
57
  const transformedBlock = transformBlock(block);
64
-
65
58
  if (shouldEvaluateBindings) {
66
59
  return evaluateBindings({
67
60
  block: transformedBlock,
68
61
  localState,
69
62
  rootState,
70
63
  rootSetState,
71
- context,
64
+ context
72
65
  });
73
66
  } else {
74
67
  return transformedBlock;
75
68
  }
76
- }
69
+ }
@@ -1,11 +1,10 @@
1
1
  import type { BuilderContextInterface } from '../context/types.js';
2
2
  import type { BuilderBlock } from '../types/builder-block.js';
3
3
  import { sanitizeReactNativeBlockStyles } from './sanitize-react-native-block-styles.js';
4
-
5
4
  export function getReactNativeBlockStyles({
6
5
  block,
7
6
  context,
8
- blockStyles,
7
+ blockStyles
9
8
  }: {
10
9
  block: BuilderBlock;
11
10
  context: BuilderContextInterface;
@@ -15,19 +14,14 @@ export function getReactNativeBlockStyles({
15
14
  if (!responsiveStyles) {
16
15
  return {};
17
16
  }
18
-
19
- const styles = {
17
+ const styles = ({
20
18
  // recursively apply inherited styles so that they can be passed down to children `Text` blocks
21
19
  ...context.inheritedStyles,
22
20
  ...(responsiveStyles.large || {}),
23
21
  ...(responsiveStyles.medium || {}),
24
22
  ...(responsiveStyles.small || {}),
25
- ...blockStyles,
26
- } as Record<string, string | number>;
27
-
28
- const newStyles = sanitizeReactNativeBlockStyles(
29
- styles
30
- ) as any as CSSStyleDeclaration;
31
-
23
+ ...blockStyles
24
+ } as Record<string, string | number>);
25
+ const newStyles = ((sanitizeReactNativeBlockStyles(styles) as any) as CSSStyleDeclaration);
32
26
  return newStyles;
33
- }
27
+ }
@@ -1,12 +1,11 @@
1
1
  import { TARGET } from '../constants/target.js';
2
-
3
2
  type Target = import('../types/targets').Target;
4
3
 
5
4
  // TODO: babel compile to include certain code only if the target matches
6
5
  export function ifTarget<A, B>({
7
6
  targets,
8
7
  doThing,
9
- elseThing,
8
+ elseThing
10
9
  }: {
11
10
  targets: Target[];
12
11
  doThing: () => A;
@@ -17,4 +16,4 @@ export function ifTarget<A, B>({
17
16
  } else {
18
17
  return elseThing?.();
19
18
  }
20
- }
19
+ }
@@ -1,3 +1,3 @@
1
1
  export function isBrowser(): boolean {
2
2
  return typeof window !== 'undefined' && typeof document !== 'undefined';
3
- }
3
+ }
@@ -1,10 +1,5 @@
1
1
  import { TARGET } from '../constants/target.js';
2
2
  import { isIframe } from './is-iframe.js';
3
-
4
3
  export function isEditing(): boolean {
5
- return (
6
- isIframe() &&
7
- (TARGET === 'reactNative' ||
8
- window.location.search.indexOf('builder.frameEditing=') !== -1)
9
- );
10
- }
4
+ return isIframe() && (TARGET === 'reactNative' || window.location.search.indexOf('builder.frameEditing=') !== -1);
5
+ }
@@ -1,5 +1,4 @@
1
1
  import { isBrowser } from './is-browser.js';
2
-
3
2
  export function isIframe(): boolean {
4
3
  return isBrowser() && window.self !== window.top;
5
- }
4
+ }
@@ -0,0 +1,9 @@
1
+ import { isBrowser } from './is-browser';
2
+
3
+ /**
4
+ * Identifies non-node server runtimes (edge, workers, serverless, etc.)
5
+ */
6
+ export function isNonNodeServer(): boolean {
7
+ const hasNode = () => typeof process !== 'undefined' && process?.versions?.node;
8
+ return !isBrowser() && !hasNode();
9
+ }
@@ -1,14 +1,11 @@
1
1
  import { isBrowser } from './is-browser.js';
2
2
  import { isEditing } from './is-editing.js';
3
-
4
3
  export function isPreviewing() {
5
4
  if (!isBrowser()) {
6
5
  return false;
7
6
  }
8
-
9
7
  if (isEditing()) {
10
8
  return false;
11
9
  }
12
-
13
10
  return Boolean(location.search.indexOf('builder.preview=') !== -1);
14
- }
11
+ }
@@ -24,6 +24,6 @@ export function onChange<T extends object = any>(obj: T, cb: () => void): T {
24
24
  const returnValue = Reflect.set(target, key, value);
25
25
  cb();
26
26
  return returnValue;
27
- },
27
+ }
28
28
  });
29
- }
29
+ }
@@ -1,4 +1,3 @@
1
- import { serializeFn } from '../blocks/util.js';
2
1
  import type { RegisteredComponent } from '../context/types.js';
3
2
  import type { ComponentInfo } from '../types/components.js';
4
3
  import type { Input } from '../types/input.js';
@@ -13,38 +12,37 @@ export const components: RegisteredComponent[] = [];
13
12
  * @deprecated. Use the `customComponents` prop in RenderContent instead to provide your custom components to the builder SDK.
14
13
  */
15
14
  export function registerComponent(component: any, info: ComponentInfo): void {
16
- components.push({ component, ...info });
17
-
18
- console.warn(
19
- 'registerComponent is deprecated. Use the `customComponents` prop in RenderContent instead to provide your custom components to the builder SDK.'
20
- );
21
-
15
+ components.push({
16
+ component,
17
+ ...info
18
+ });
19
+ console.warn('registerComponent is deprecated. Use the `customComponents` prop in RenderContent instead to provide your custom components to the builder SDK.');
22
20
  return component;
23
21
  }
24
-
25
- export const createRegisterComponentMessage = ({
26
- component: _,
27
- ...info
28
- }: RegisteredComponent) => ({
22
+ export const createRegisterComponentMessage = (info: ComponentInfo) => ({
29
23
  type: 'builder.registerComponent',
30
- data: prepareComponentInfoToSend(info),
24
+ data: info
31
25
  });
32
26
 
33
- const serializeValue = (value: object): any =>
34
- typeof value === 'function' ? serializeFn(value) : fastClone(value);
27
+ // eslint-disable-next-line @typescript-eslint/ban-types
28
+ const serializeFn = (fnValue: Function) => {
29
+ const fnStr = fnValue.toString().trim();
35
30
 
36
- const prepareComponentInfoToSend = ({
31
+ // we need to account for a few different fn syntaxes:
32
+ // 1. `function name(args) => {code}`
33
+ // 2. `name(args) => {code}`
34
+ // 3. `(args) => {}`
35
+ const appendFunction = !fnStr.startsWith('function') && !fnStr.startsWith('(');
36
+ return `return (${appendFunction ? 'function ' : ''}${fnStr}).apply(this, arguments)`;
37
+ };
38
+ const serializeValue = (value: object): any => typeof value === 'function' ? serializeFn(value) : fastClone(value);
39
+ export const serializeComponentInfo = ({
37
40
  inputs,
38
41
  ...info
39
42
  }: ComponentInfo): ComponentInfo => ({
40
43
  ...fastClone(info),
41
- inputs: inputs?.map((input) =>
42
- Object.entries(input).reduce(
43
- (acc, [key, value]) => ({
44
- ...acc,
45
- [key]: serializeValue(value),
46
- }),
47
- {} as Input
48
- )
49
- ),
50
- });
44
+ inputs: inputs?.map(input => Object.entries(input).reduce((acc, [key, value]) => ({
45
+ ...acc,
46
+ [key]: serializeValue(value)
47
+ }), ({} as Input)))
48
+ })
@@ -1,13 +1,11 @@
1
1
  import type { BuilderBlock } from '../types/builder-block.js';
2
2
  import type { DeepPartial } from '../types/deep-partial.js';
3
3
  import { isBrowser } from './is-browser.js';
4
-
5
4
  export interface InsertMenuItem {
6
5
  name: string;
7
6
  icon?: string;
8
7
  item: DeepPartial<BuilderBlock>;
9
8
  }
10
-
11
9
  export interface InsertMenuConfig {
12
10
  name: string;
13
11
  priority?: number;
@@ -15,9 +13,9 @@ export interface InsertMenuConfig {
15
13
  advanced?: boolean;
16
14
  items: InsertMenuItem[];
17
15
  }
18
-
19
- const registry: { [key: string]: any[] } = {};
20
-
16
+ const registry: {
17
+ [key: string]: any[];
18
+ } = {};
21
19
  export function register(type: 'insertMenu', info: InsertMenuConfig): void;
22
20
  export function register(type: string, info: any): void;
23
21
  export function register(type: string, info: any) {
@@ -31,8 +29,8 @@ export function register(type: string, info: any) {
31
29
  type: 'builder.register',
32
30
  data: {
33
31
  type,
34
- info,
35
- },
32
+ info
33
+ }
36
34
  };
37
35
  try {
38
36
  parent.postMessage(message, '*');
@@ -43,4 +41,4 @@ export function register(type: string, info: any) {
43
41
  console.debug('Could not postmessage', err);
44
42
  }
45
43
  }
46
- }
44
+ }
@@ -1,10 +1,7 @@
1
1
  const propertiesThatMustBeNumber = new Set(['lineHeight']);
2
2
  const displayValues = new Set(['flex', 'none']);
3
-
4
3
  const SHOW_WARNINGS = false;
5
-
6
4
  type Styles = Record<string, string | number>;
7
-
8
5
  const normalizeNumber = (value: number): number | undefined => {
9
6
  if (Number.isNaN(value)) {
10
7
  return undefined;
@@ -15,51 +12,47 @@ const normalizeNumber = (value: number): number | undefined => {
15
12
  return value;
16
13
  }
17
14
  };
18
-
19
15
  export const sanitizeReactNativeBlockStyles = (styles: Styles): Styles => {
20
16
  return Object.keys(styles).reduce<Styles>((acc, key): Styles => {
21
17
  const propertyValue = styles[key];
22
-
23
- if (key === 'display' && !displayValues.has(propertyValue as string)) {
18
+ if (key === 'display' && !displayValues.has((propertyValue as string))) {
24
19
  if (SHOW_WARNINGS) {
25
- console.warn(
26
- `Style value for key "display" must be "flex" or "none" but had ${propertyValue}`
27
- );
20
+ console.warn(`Style value for key "display" must be "flex" or "none" but had ${propertyValue}`);
28
21
  }
29
22
  return acc;
30
23
  }
31
-
32
- if (
33
- propertiesThatMustBeNumber.has(key) &&
34
- typeof propertyValue !== 'number'
35
- ) {
24
+ if (propertiesThatMustBeNumber.has(key) && typeof propertyValue !== 'number') {
36
25
  if (SHOW_WARNINGS) {
37
- console.warn(
38
- `Style key ${key} must be a number, but had value \`${styles[key]}\``
39
- );
26
+ console.warn(`Style key ${key} must be a number, but had value \`${styles[key]}\``);
40
27
  }
41
28
  return acc;
42
29
  }
43
-
44
30
  if (typeof propertyValue === 'string') {
45
31
  // `px` units need to be stripped and replaced with numbers
46
32
  // https://regexr.com/6ualn
47
33
  const isPixelUnit = propertyValue.match(/^-?(\d*)(\.?)(\d*)*px$/);
48
-
49
34
  if (isPixelUnit) {
50
35
  const newValue = parseFloat(propertyValue);
51
36
  const normalizedValue = normalizeNumber(newValue);
52
37
  if (normalizedValue) {
53
- return { ...acc, [key]: normalizedValue };
38
+ return {
39
+ ...acc,
40
+ [key]: normalizedValue
41
+ };
54
42
  } else {
55
43
  return acc;
56
44
  }
57
45
  } else if (propertyValue === '0') {
58
46
  // 0 edge case needs to be handled
59
- return { ...acc, [key]: 0 };
47
+ return {
48
+ ...acc,
49
+ [key]: 0
50
+ };
60
51
  }
61
52
  }
62
-
63
- return { ...acc, [key]: propertyValue };
53
+ return {
54
+ ...acc,
55
+ [key]: propertyValue
56
+ };
64
57
  }, {});
65
- };
58
+ }
@@ -1,16 +1,15 @@
1
1
  import { isBrowser } from './is-browser.js';
2
-
3
2
  const settings: Settings = {};
4
-
5
- export type Settings = { customInsertMenu?: boolean };
6
-
3
+ export type Settings = {
4
+ customInsertMenu?: boolean;
5
+ };
7
6
  export function setEditorSettings(newSettings: Settings) {
8
7
  if (isBrowser()) {
9
8
  Object.assign(settings, newSettings);
10
9
  const message = {
11
10
  type: 'builder.settingsChange',
12
- data: settings,
11
+ data: settings
13
12
  };
14
13
  parent.postMessage(message, '*');
15
14
  }
16
- }
15
+ }
@@ -8,19 +8,7 @@ export const set = (obj: any, _path: string | string[], value: any) => {
8
8
  if (Object(obj) !== obj) {
9
9
  return obj;
10
10
  }
11
- const path: string[] = Array.isArray(_path)
12
- ? _path
13
- : (_path.toString().match(/[^.[\]]+/g) as string[]);
14
-
15
- path
16
- .slice(0, -1)
17
- .reduce(
18
- (a, c, i) =>
19
- Object(a[c]) === a[c]
20
- ? a[c]
21
- : (a[c] =
22
- Math.abs(Number(path[i + 1])) >> 0 === +path[i + 1] ? [] : {}),
23
- obj
24
- )[path[path.length - 1]] = value;
11
+ const path: string[] = Array.isArray(_path) ? _path : (_path.toString().match(/[^.[\]]+/g) as string[]);
12
+ path.slice(0, -1).reduce((a, c, i) => Object(a[c]) === a[c] ? a[c] : a[c] = Math.abs(Number(path[i + 1])) >> 0 === +path[i + 1] ? [] : {}, obj)[path[path.length - 1]] = value;
25
13
  return obj;
26
- };
14
+ }
@@ -1,7 +1,6 @@
1
- import { TARGET } from '../../constants/target';
2
- import type { Nullable } from '../../helpers/nullable';
3
- import { isBrowser } from '../is-browser';
4
-
1
+ import { TARGET } from '../../constants/target.js';
2
+ import type { Nullable } from '../../helpers/nullable.js';
3
+ import { isBrowser } from '../is-browser.js';
5
4
  const getLocation = (): Nullable<URL> => {
6
5
  if (TARGET === 'reactNative') {
7
6
  return null;
@@ -13,20 +12,15 @@ const getLocation = (): Nullable<URL> => {
13
12
  if (parsedLocation.pathname === '') {
14
13
  parsedLocation.pathname = '/';
15
14
  }
16
-
17
15
  return parsedLocation;
18
16
  } else {
19
17
  console.warn('Cannot get location for tracking in non-browser environment');
20
18
  return null;
21
19
  }
22
20
  };
23
-
24
- const getUserAgent = () =>
25
- (typeof navigator === 'object' && navigator.userAgent) || '';
26
-
21
+ const getUserAgent = () => typeof navigator === 'object' && navigator.userAgent || '';
27
22
  export const getUserAttributes = () => {
28
23
  const userAgent = getUserAgent();
29
-
30
24
  const isMobile = {
31
25
  Android() {
32
26
  return userAgent.match(/Android/i);
@@ -44,24 +38,14 @@ export const getUserAttributes = () => {
44
38
  return userAgent.match(/IEMobile/i) || userAgent.match(/WPDesktop/i);
45
39
  },
46
40
  any() {
47
- return (
48
- isMobile.Android() ||
49
- isMobile.BlackBerry() ||
50
- isMobile.iOS() ||
51
- isMobile.Opera() ||
52
- isMobile.Windows() ||
53
- TARGET === 'reactNative'
54
- );
55
- },
41
+ return isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows() || TARGET === 'reactNative';
42
+ }
56
43
  };
57
-
58
44
  const isTablet = userAgent.match(/Tablet|iPad/i);
59
-
60
45
  const url = getLocation();
61
-
62
46
  return {
63
47
  urlPath: url?.pathname,
64
48
  host: url?.host || url?.hostname,
65
- device: isTablet ? 'tablet' : isMobile.any() ? 'mobile' : 'desktop',
49
+ device: isTablet ? 'tablet' : isMobile.any() ? 'mobile' : 'desktop'
66
50
  };
67
- };
51
+ }
@@ -7,7 +7,6 @@ import type { Dictionary } from '../../types/typescript.js';
7
7
  import { isBrowser } from '../is-browser.js';
8
8
  import { isEditing } from '../is-editing.js';
9
9
  import { getUserAttributes } from './helpers.js';
10
-
11
10
  interface Event {
12
11
  /**
13
12
  * The type of your event.
@@ -43,42 +42,41 @@ interface Event {
43
42
  [index: string]: any;
44
43
  };
45
44
  }
46
-
47
45
  type TrackingData = {
48
46
  visitorId: string | undefined;
49
47
  sessionId: string | undefined;
50
48
  };
51
-
52
49
  const getTrackingEventData = async ({
53
- canTrack,
50
+ canTrack
54
51
  }: CanTrack): Promise<TrackingData> => {
55
52
  if (!canTrack) {
56
- return { visitorId: undefined, sessionId: undefined };
53
+ return {
54
+ visitorId: undefined,
55
+ sessionId: undefined
56
+ };
57
57
  }
58
-
59
- const sessionId = await getSessionId({ canTrack });
60
- const visitorId = getVisitorId({ canTrack });
61
-
58
+ const sessionId = await getSessionId({
59
+ canTrack
60
+ });
61
+ const visitorId = getVisitorId({
62
+ canTrack
63
+ });
62
64
  return {
63
65
  sessionId,
64
- visitorId,
66
+ visitorId
65
67
  };
66
68
  };
67
-
68
- type EventProperties = Pick<Event, 'type'> &
69
- Pick<Event['data'], 'contentId' | 'variationId' | 'metadata'> & {
70
- /**
71
- * Your organization's API key.
72
- */
73
- apiKey: Event['data']['ownerId'];
74
- /**
75
- * (Optional) Any additional (non-metadata) properties to add to the event.
76
- */
77
- [index: string]: any;
78
- };
79
-
69
+ type EventProperties = Pick<Event, 'type'> & Pick<Event['data'], 'contentId' | 'variationId' | 'metadata'> & {
70
+ /**
71
+ * Your organization's API key.
72
+ */
73
+ apiKey: Event['data']['ownerId'];
74
+ /**
75
+ * (Optional) Any additional (non-metadata) properties to add to the event.
76
+ */
77
+ [index: string]: any;
78
+ };
80
79
  export type EventProps = EventProperties & CanTrack;
81
-
82
80
  const createEvent = async ({
83
81
  type: eventType,
84
82
  canTrack,
@@ -91,46 +89,43 @@ const createEvent = async ({
91
89
  ...properties,
92
90
  metadata: {
93
91
  url: location.href,
94
- ...metadata,
92
+ ...metadata
95
93
  },
96
- ...(await getTrackingEventData({ canTrack })),
94
+ ...(await getTrackingEventData({
95
+ canTrack
96
+ })),
97
97
  userAttributes: getUserAttributes(),
98
- ownerId: apiKey,
99
- },
98
+ ownerId: apiKey
99
+ }
100
100
  });
101
-
102
101
  export async function _track(eventProps: EventProps) {
103
102
  if (!eventProps.apiKey) {
104
- logger.error(
105
- 'Missing API key for track call. Please provide your API key.'
106
- );
103
+ logger.error('Missing API key for track call. Please provide your API key.');
107
104
  return;
108
105
  }
109
-
110
106
  if (!eventProps.canTrack) {
111
107
  return;
112
108
  }
113
-
114
109
  if (isEditing()) {
115
110
  return;
116
111
  }
117
112
  if (!(isBrowser() || TARGET === 'reactNative')) {
118
113
  return;
119
114
  }
120
-
121
115
  return fetch(`https://cdn.builder.io/api/v1/track`, {
122
116
  method: 'POST',
123
117
  body: JSON.stringify({
124
- events: [await createEvent(eventProps)],
118
+ events: [await createEvent(eventProps)]
125
119
  }),
126
120
  headers: {
127
- 'content-type': 'application/json',
121
+ 'content-type': 'application/json'
128
122
  },
129
- mode: 'cors',
130
- }).catch((err) => {
123
+ mode: 'cors'
124
+ }).catch(err => {
131
125
  console.error('Failed to track: ', err);
132
126
  });
133
127
  }
134
-
135
- export const track = (args: EventProperties) =>
136
- _track({ ...args, canTrack: true });
128
+ export const track = (args: EventProperties) => _track({
129
+ ...args,
130
+ canTrack: true
131
+ })