loopwind 0.17.0 → 0.18.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 (341) hide show
  1. package/dist/sdk/index.d.ts +2 -2
  2. package/dist/sdk/index.d.ts.map +1 -1
  3. package/dist/sdk/index.js +1 -1
  4. package/dist/sdk/index.js.map +1 -1
  5. package/dist/sdk/template.d.ts +97 -0
  6. package/dist/sdk/template.d.ts.map +1 -1
  7. package/dist/sdk/template.js +217 -0
  8. package/dist/sdk/template.js.map +1 -1
  9. package/examples/code-editor-templates.ts +173 -0
  10. package/examples/nextjs-template-import.ts +58 -0
  11. package/examples/visual-builder-templates.ts +336 -0
  12. package/package.json +3 -1
  13. package/test-jsx-support.mjs +120 -0
  14. package/test-sdk-user-templates.mjs +469 -0
  15. package/website/.astro/integrations/_inox-tools_astro-when/types.d.ts +1 -0
  16. package/website/.astro/types.d.ts +1 -0
  17. package/website/DEPLOYMENT.md +142 -0
  18. package/website/OG_IMAGES.md +141 -0
  19. package/website/astro.config.mjs +9 -1
  20. package/website/dist/.gitkeep +1 -0
  21. package/website/dist/_astro/agents.Yx-L_igG.css +1 -0
  22. package/website/dist/_routes.json +30 -0
  23. package/website/dist/_worker.js/_@astrojs-ssr-adapter.mjs +1033 -0
  24. package/website/dist/_worker.js/_astro-internal_middleware.mjs +40 -0
  25. package/website/dist/_worker.js/chunks/abap_BTmsHiP5.mjs +1 -0
  26. package/website/dist/_worker.js/chunks/actionscript-3_DmBelb1E.mjs +1 -0
  27. package/website/dist/_worker.js/chunks/ada_8-E0ahCN.mjs +1 -0
  28. package/website/dist/_worker.js/chunks/andromeeda_XI-CXx50.mjs +1 -0
  29. package/website/dist/_worker.js/chunks/angular-html_DKGh3gGH.mjs +1 -0
  30. package/website/dist/_worker.js/chunks/angular-ts_-qZGsJoA.mjs +1 -0
  31. package/website/dist/_worker.js/chunks/apache_ijTUt0Ee.mjs +1 -0
  32. package/website/dist/_worker.js/chunks/apex_agu1c6Sh.mjs +1 -0
  33. package/website/dist/_worker.js/chunks/apl_Bj2f7Art.mjs +1 -0
  34. package/website/dist/_worker.js/chunks/applescript_B_vXrOh3.mjs +1 -0
  35. package/website/dist/_worker.js/chunks/ara_DCEQ2rnh.mjs +1 -0
  36. package/website/dist/_worker.js/chunks/asciidoc_CGN_EkYS.mjs +1 -0
  37. package/website/dist/_worker.js/chunks/asm_BBWZgnDp.mjs +1 -0
  38. package/website/dist/_worker.js/chunks/astro/assets-service_j52rQLzU.mjs +721 -0
  39. package/website/dist/_worker.js/chunks/astro/server_Y5_QHO8v.mjs +2401 -0
  40. package/website/dist/_worker.js/chunks/astro-designed-error-pages_BNTLO-TA.mjs +542 -0
  41. package/website/dist/_worker.js/chunks/astro_Dr_hht3h.mjs +1 -0
  42. package/website/dist/_worker.js/chunks/aurora-x_9GHG8nSq.mjs +1 -0
  43. package/website/dist/_worker.js/chunks/awk_DHRvhXot.mjs +1 -0
  44. package/website/dist/_worker.js/chunks/ayu-dark_CcvqmEHE.mjs +1 -0
  45. package/website/dist/_worker.js/chunks/ballerina_C7SdeSZb.mjs +1 -0
  46. package/website/dist/_worker.js/chunks/bat_Dv4A3u45.mjs +1 -0
  47. package/website/dist/_worker.js/chunks/beancount_BfPf9Luv.mjs +1 -0
  48. package/website/dist/_worker.js/chunks/berry_B8rfM3lL.mjs +1 -0
  49. package/website/dist/_worker.js/chunks/bibtex_TcjYgtJM.mjs +1 -0
  50. package/website/dist/_worker.js/chunks/bicep_CrlFWCdN.mjs +1 -0
  51. package/website/dist/_worker.js/chunks/blade_lanKVYID.mjs +1 -0
  52. package/website/dist/_worker.js/chunks/bsl_BhppzXMB.mjs +1 -0
  53. package/website/dist/_worker.js/chunks/c_6FBALJTK.mjs +1 -0
  54. package/website/dist/_worker.js/chunks/cadence_2txU9LVE.mjs +1 -0
  55. package/website/dist/_worker.js/chunks/cairo_BkrFAIlP.mjs +1 -0
  56. package/website/dist/_worker.js/chunks/catppuccin-frappe_CkEqIYhU.mjs +1 -0
  57. package/website/dist/_worker.js/chunks/catppuccin-latte_DG4Gx_-v.mjs +1 -0
  58. package/website/dist/_worker.js/chunks/catppuccin-macchiato_Cwi3vCXf.mjs +1 -0
  59. package/website/dist/_worker.js/chunks/catppuccin-mocha_L9_OPlFX.mjs +1 -0
  60. package/website/dist/_worker.js/chunks/clarity_BEAe4Ulu.mjs +1 -0
  61. package/website/dist/_worker.js/chunks/clojure_VnUX6p2g.mjs +1 -0
  62. package/website/dist/_worker.js/chunks/cmake_0-SGkZEj.mjs +1 -0
  63. package/website/dist/_worker.js/chunks/cobol_92M_KGaE.mjs +1 -0
  64. package/website/dist/_worker.js/chunks/codeowners_CzMwskBv.mjs +1 -0
  65. package/website/dist/_worker.js/chunks/codeql_DWJZNHv1.mjs +1 -0
  66. package/website/dist/_worker.js/chunks/coffee_CQjKU2fh.mjs +1 -0
  67. package/website/dist/_worker.js/chunks/common-lisp_BBLWDpS5.mjs +1 -0
  68. package/website/dist/_worker.js/chunks/coq_hedRFV3D.mjs +1 -0
  69. package/website/dist/_worker.js/chunks/cpp_DlS1i6Zs.mjs +1 -0
  70. package/website/dist/_worker.js/chunks/crystal_D6n65fKV.mjs +1 -0
  71. package/website/dist/_worker.js/chunks/csharp_C6FCVFzc.mjs +1 -0
  72. package/website/dist/_worker.js/chunks/css_C5uJEgmJ.mjs +1 -0
  73. package/website/dist/_worker.js/chunks/csv_CtMYuuJl.mjs +1 -0
  74. package/website/dist/_worker.js/chunks/cue_BsPexqx6.mjs +1 -0
  75. package/website/dist/_worker.js/chunks/cypher_apzf6OBi.mjs +1 -0
  76. package/website/dist/_worker.js/chunks/d_DcvIRcgm.mjs +1 -0
  77. package/website/dist/_worker.js/chunks/dark-plus_C01ONtzj.mjs +1 -0
  78. package/website/dist/_worker.js/chunks/dart_WkzM5WrV.mjs +1 -0
  79. package/website/dist/_worker.js/chunks/dax_DjXAO5V4.mjs +1 -0
  80. package/website/dist/_worker.js/chunks/desktop_C92LCxdc.mjs +1 -0
  81. package/website/dist/_worker.js/chunks/diff_CVwM_9XJ.mjs +1 -0
  82. package/website/dist/_worker.js/chunks/docker_DPzgJf6Z.mjs +1 -0
  83. package/website/dist/_worker.js/chunks/dotenv_D_vgANvA.mjs +1 -0
  84. package/website/dist/_worker.js/chunks/dracula-soft_CLnUBwFm.mjs +1 -0
  85. package/website/dist/_worker.js/chunks/dracula_lBVpb6Lb.mjs +1 -0
  86. package/website/dist/_worker.js/chunks/dream-maker_DTLbzd_J.mjs +1 -0
  87. package/website/dist/_worker.js/chunks/edge_i54JYm3_.mjs +1 -0
  88. package/website/dist/_worker.js/chunks/elixir_BJCIjTu4.mjs +1 -0
  89. package/website/dist/_worker.js/chunks/elm_BbXD39-_.mjs +1 -0
  90. package/website/dist/_worker.js/chunks/emacs-lisp_pxa5cXaN.mjs +1 -0
  91. package/website/dist/_worker.js/chunks/erb_Ccjijeee.mjs +1 -0
  92. package/website/dist/_worker.js/chunks/erlang_B2VM_hi7.mjs +1 -0
  93. package/website/dist/_worker.js/chunks/everforest-dark_BxvIPBim.mjs +1 -0
  94. package/website/dist/_worker.js/chunks/everforest-light_B7VoyaJM.mjs +1 -0
  95. package/website/dist/_worker.js/chunks/fennel_D-uo7X6c.mjs +1 -0
  96. package/website/dist/_worker.js/chunks/fish_BjePoK3m.mjs +1 -0
  97. package/website/dist/_worker.js/chunks/fluent_C8fgkzLX.mjs +1 -0
  98. package/website/dist/_worker.js/chunks/fortran-fixed-form_D1pu5zrc.mjs +1 -0
  99. package/website/dist/_worker.js/chunks/fortran-free-form_CSGOhJD6.mjs +1 -0
  100. package/website/dist/_worker.js/chunks/fsharp_B0xy-A4Y.mjs +1 -0
  101. package/website/dist/_worker.js/chunks/gdresource_CWppjlHq.mjs +1 -0
  102. package/website/dist/_worker.js/chunks/gdscript_eQCHchcS.mjs +1 -0
  103. package/website/dist/_worker.js/chunks/gdshader_C4kxepX7.mjs +1 -0
  104. package/website/dist/_worker.js/chunks/genie_ACtQLcDW.mjs +1 -0
  105. package/website/dist/_worker.js/chunks/gherkin_BFp2uKUd.mjs +1 -0
  106. package/website/dist/_worker.js/chunks/git-commit_CLg9ZwMV.mjs +1 -0
  107. package/website/dist/_worker.js/chunks/git-rebase_DG8A80Nt.mjs +1 -0
  108. package/website/dist/_worker.js/chunks/github-dark-default_BI0EP2Kv.mjs +1 -0
  109. package/website/dist/_worker.js/chunks/github-dark-dimmed_a_NIC0Xb.mjs +1 -0
  110. package/website/dist/_worker.js/chunks/github-dark-high-contrast_jZGqT7hk.mjs +1 -0
  111. package/website/dist/_worker.js/chunks/github-dark_CHCDNd2O.mjs +1 -0
  112. package/website/dist/_worker.js/chunks/github-light-default_DRbOW5RG.mjs +1 -0
  113. package/website/dist/_worker.js/chunks/github-light-high-contrast_tn_kWutM.mjs +1 -0
  114. package/website/dist/_worker.js/chunks/github-light_D9brYzot.mjs +1 -0
  115. package/website/dist/_worker.js/chunks/gleam_Dmhu1oxW.mjs +1 -0
  116. package/website/dist/_worker.js/chunks/glimmer-js_BfZbXy8A.mjs +1 -0
  117. package/website/dist/_worker.js/chunks/glimmer-ts_B9QVICrD.mjs +1 -0
  118. package/website/dist/_worker.js/chunks/glsl_DD2PPwOs.mjs +1 -0
  119. package/website/dist/_worker.js/chunks/gnuplot_D2OYChUX.mjs +1 -0
  120. package/website/dist/_worker.js/chunks/go_DYGFTe3h.mjs +1 -0
  121. package/website/dist/_worker.js/chunks/graphql_B7XsT3nH.mjs +1 -0
  122. package/website/dist/_worker.js/chunks/groovy_BO12Uwkl.mjs +1 -0
  123. package/website/dist/_worker.js/chunks/hack_CB2_ztCP.mjs +1 -0
  124. package/website/dist/_worker.js/chunks/haml_CyfDcDD3.mjs +1 -0
  125. package/website/dist/_worker.js/chunks/handlebars_CfpxpWm2.mjs +1 -0
  126. package/website/dist/_worker.js/chunks/haskell_jUeC5uN5.mjs +1 -0
  127. package/website/dist/_worker.js/chunks/haxe_B6GxP1WB.mjs +1 -0
  128. package/website/dist/_worker.js/chunks/hcl_DwoHV2oh.mjs +1 -0
  129. package/website/dist/_worker.js/chunks/hjson_DV7cJRk4.mjs +1 -0
  130. package/website/dist/_worker.js/chunks/hlsl_BlFCscPI.mjs +1 -0
  131. package/website/dist/_worker.js/chunks/houston_COBFG1Mx.mjs +1 -0
  132. package/website/dist/_worker.js/chunks/html-derivative_C9pJ337h.mjs +1 -0
  133. package/website/dist/_worker.js/chunks/html_D1OkrZS5.mjs +1 -0
  134. package/website/dist/_worker.js/chunks/http_DIGXRqvJ.mjs +1 -0
  135. package/website/dist/_worker.js/chunks/hxml_DEwh9i-c.mjs +1 -0
  136. package/website/dist/_worker.js/chunks/hy_DDoIgW1K.mjs +1 -0
  137. package/website/dist/_worker.js/chunks/imba_B00zbHo4.mjs +1 -0
  138. package/website/dist/_worker.js/chunks/index_C1UTDwYg.mjs +1861 -0
  139. package/website/dist/_worker.js/chunks/ini_D7XQA_p8.mjs +1 -0
  140. package/website/dist/_worker.js/chunks/java_B9wdFd8K.mjs +1 -0
  141. package/website/dist/_worker.js/chunks/javascript_CLsPGOON.mjs +1 -0
  142. package/website/dist/_worker.js/chunks/jinja_jarBCAN1.mjs +1 -0
  143. package/website/dist/_worker.js/chunks/jison_oGg3J708.mjs +1 -0
  144. package/website/dist/_worker.js/chunks/json5_DlZ1Kyaa.mjs +1 -0
  145. package/website/dist/_worker.js/chunks/json_DaYk_FMp.mjs +1 -0
  146. package/website/dist/_worker.js/chunks/jsonc_DlwgfSDs.mjs +1 -0
  147. package/website/dist/_worker.js/chunks/jsonl_BbCCVaZF.mjs +1 -0
  148. package/website/dist/_worker.js/chunks/jsonnet_Dt-G75xe.mjs +1 -0
  149. package/website/dist/_worker.js/chunks/jssm_BtKFTj2A.mjs +1 -0
  150. package/website/dist/_worker.js/chunks/jsx_DDx_xAZ8.mjs +1 -0
  151. package/website/dist/_worker.js/chunks/julia_CK0lv68l.mjs +1 -0
  152. package/website/dist/_worker.js/chunks/kanagawa-dragon_BldAK3Oo.mjs +1 -0
  153. package/website/dist/_worker.js/chunks/kanagawa-lotus_DVM8FX9_.mjs +1 -0
  154. package/website/dist/_worker.js/chunks/kanagawa-wave_Dpih0AKP.mjs +1 -0
  155. package/website/dist/_worker.js/chunks/kotlin_kWneB9V_.mjs +1 -0
  156. package/website/dist/_worker.js/chunks/kusto_BKVATd95.mjs +1 -0
  157. package/website/dist/_worker.js/chunks/laserwave_BqatxsVl.mjs +1 -0
  158. package/website/dist/_worker.js/chunks/latex_LVDcGBbc.mjs +1 -0
  159. package/website/dist/_worker.js/chunks/lean_W7qo-5M2.mjs +1 -0
  160. package/website/dist/_worker.js/chunks/less_DFNwJnBH.mjs +1 -0
  161. package/website/dist/_worker.js/chunks/light-plus_Dp0AoWsO.mjs +1 -0
  162. package/website/dist/_worker.js/chunks/liquid_D24qs0pc.mjs +1 -0
  163. package/website/dist/_worker.js/chunks/log_IPWMXriF.mjs +1 -0
  164. package/website/dist/_worker.js/chunks/logo_C6KaatrQ.mjs +1 -0
  165. package/website/dist/_worker.js/chunks/lua_CwnEf-T7.mjs +1 -0
  166. package/website/dist/_worker.js/chunks/luau_Br3-CXjS.mjs +1 -0
  167. package/website/dist/_worker.js/chunks/make_UBNG-kOo.mjs +1 -0
  168. package/website/dist/_worker.js/chunks/markdown_C7mhJFCm.mjs +1 -0
  169. package/website/dist/_worker.js/chunks/marko_4tchUvI7.mjs +1 -0
  170. package/website/dist/_worker.js/chunks/material-theme-darker_SKtaNEPn.mjs +1 -0
  171. package/website/dist/_worker.js/chunks/material-theme-lighter_zOX_DZCH.mjs +1 -0
  172. package/website/dist/_worker.js/chunks/material-theme-ocean_BN9WbhdC.mjs +1 -0
  173. package/website/dist/_worker.js/chunks/material-theme-palenight_DT_covjH.mjs +1 -0
  174. package/website/dist/_worker.js/chunks/material-theme_6RpeM3kc.mjs +1 -0
  175. package/website/dist/_worker.js/chunks/matlab_DCOXsPKR.mjs +1 -0
  176. package/website/dist/_worker.js/chunks/mdc_B9gb2UFP.mjs +1 -0
  177. package/website/dist/_worker.js/chunks/mdx_DGU7Nu9u.mjs +1 -0
  178. package/website/dist/_worker.js/chunks/mermaid_B69URzsZ.mjs +1 -0
  179. package/website/dist/_worker.js/chunks/min-dark_BgxifOMI.mjs +1 -0
  180. package/website/dist/_worker.js/chunks/min-light_BrPjXxUp.mjs +1 -0
  181. package/website/dist/_worker.js/chunks/mipsasm_9U-4_t7k.mjs +1 -0
  182. package/website/dist/_worker.js/chunks/mojo_B0wt7ug3.mjs +1 -0
  183. package/website/dist/_worker.js/chunks/monokai_B6Pxpoyi.mjs +1 -0
  184. package/website/dist/_worker.js/chunks/move_1eid4CyR.mjs +1 -0
  185. package/website/dist/_worker.js/chunks/narrat_Ds6-p5JZ.mjs +1 -0
  186. package/website/dist/_worker.js/chunks/nextflow_v2N1Qlqa.mjs +1 -0
  187. package/website/dist/_worker.js/chunks/nginx_Bp9Ab2NH.mjs +1 -0
  188. package/website/dist/_worker.js/chunks/night-owl_CdwOw_sc.mjs +1 -0
  189. package/website/dist/_worker.js/chunks/nim_BXGDUe53.mjs +1 -0
  190. package/website/dist/_worker.js/chunks/nix_CUig1nJH.mjs +1 -0
  191. package/website/dist/_worker.js/chunks/noop-middleware_DlWGj5t5.mjs +10 -0
  192. package/website/dist/_worker.js/chunks/nord_SPoG1iae.mjs +1 -0
  193. package/website/dist/_worker.js/chunks/nushell_DJw1Lca8.mjs +1 -0
  194. package/website/dist/_worker.js/chunks/objective-c_Bktzl_CO.mjs +1 -0
  195. package/website/dist/_worker.js/chunks/objective-cpp_CP4DWdDp.mjs +1 -0
  196. package/website/dist/_worker.js/chunks/ocaml_CeEAs7bZ.mjs +1 -0
  197. package/website/dist/_worker.js/chunks/one-dark-pro_-hIwCNMi.mjs +1 -0
  198. package/website/dist/_worker.js/chunks/one-light_DSmYvJ05.mjs +1 -0
  199. package/website/dist/_worker.js/chunks/pascal_C-S_Ms_o.mjs +1 -0
  200. package/website/dist/_worker.js/chunks/perl_CKamvo15.mjs +1 -0
  201. package/website/dist/_worker.js/chunks/php_BlmcX_F3.mjs +1 -0
  202. package/website/dist/_worker.js/chunks/plastic_Ryt8tVoA.mjs +1 -0
  203. package/website/dist/_worker.js/chunks/plsql_Cb3v7cBj.mjs +1 -0
  204. package/website/dist/_worker.js/chunks/po_DZbdNRlo.mjs +1 -0
  205. package/website/dist/_worker.js/chunks/poimandres_bYmE3_5d.mjs +1 -0
  206. package/website/dist/_worker.js/chunks/polar_pJkMGwoW.mjs +1 -0
  207. package/website/dist/_worker.js/chunks/postcss_BAXSOKgk.mjs +1 -0
  208. package/website/dist/_worker.js/chunks/powerquery_oITMGN4x.mjs +1 -0
  209. package/website/dist/_worker.js/chunks/powershell_6306-xIF.mjs +1 -0
  210. package/website/dist/_worker.js/chunks/prisma_DSDxnZGz.mjs +1 -0
  211. package/website/dist/_worker.js/chunks/prolog_CxG7tjZR.mjs +1 -0
  212. package/website/dist/_worker.js/chunks/proto_CS9ByXm1.mjs +1 -0
  213. package/website/dist/_worker.js/chunks/pug_BMtLJo6U.mjs +1 -0
  214. package/website/dist/_worker.js/chunks/puppet_BfeeSzee.mjs +1 -0
  215. package/website/dist/_worker.js/chunks/purescript_BFfueNaH.mjs +1 -0
  216. package/website/dist/_worker.js/chunks/python_Cc4Faapv.mjs +1 -0
  217. package/website/dist/_worker.js/chunks/qml_C1CTJTK8.mjs +1 -0
  218. package/website/dist/_worker.js/chunks/qmldir_nG1KaqKR.mjs +1 -0
  219. package/website/dist/_worker.js/chunks/qss_Cncxk263.mjs +1 -0
  220. package/website/dist/_worker.js/chunks/r_ChR54Ihi.mjs +1 -0
  221. package/website/dist/_worker.js/chunks/racket_BDrhptDs.mjs +1 -0
  222. package/website/dist/_worker.js/chunks/raku_07OUHa0P.mjs +1 -0
  223. package/website/dist/_worker.js/chunks/razor_DIP3INLa.mjs +1 -0
  224. package/website/dist/_worker.js/chunks/red_DOPXfj-6.mjs +1 -0
  225. package/website/dist/_worker.js/chunks/reg_B64SwEDj.mjs +1 -0
  226. package/website/dist/_worker.js/chunks/regexp_ButFGoB5.mjs +1 -0
  227. package/website/dist/_worker.js/chunks/rel_BWJAWqZD.mjs +1 -0
  228. package/website/dist/_worker.js/chunks/riscv_79gXlbsF.mjs +1 -0
  229. package/website/dist/_worker.js/chunks/rose-pine-dawn_DHIjVGd3.mjs +1 -0
  230. package/website/dist/_worker.js/chunks/rose-pine-moon_t86aEbs0.mjs +1 -0
  231. package/website/dist/_worker.js/chunks/rose-pine_BHgrcDCs.mjs +1 -0
  232. package/website/dist/_worker.js/chunks/rst_D3F4Fcpj.mjs +1 -0
  233. package/website/dist/_worker.js/chunks/ruby_Cs7vM9iv.mjs +1 -0
  234. package/website/dist/_worker.js/chunks/rust_DpyRVatH.mjs +1 -0
  235. package/website/dist/_worker.js/chunks/sas_DW45xZXN.mjs +1 -0
  236. package/website/dist/_worker.js/chunks/sass_C6SiMwN_.mjs +1 -0
  237. package/website/dist/_worker.js/chunks/scala_DlZOjNZk.mjs +1 -0
  238. package/website/dist/_worker.js/chunks/scheme_D2ezSJXu.mjs +1 -0
  239. package/website/dist/_worker.js/chunks/scss_DG5Spjqu.mjs +1 -0
  240. package/website/dist/_worker.js/chunks/sdbl_ZCYaj4VN.mjs +1 -0
  241. package/website/dist/_worker.js/chunks/shaderlab_CAcRkg1_.mjs +1 -0
  242. package/website/dist/_worker.js/chunks/shellscript_BWwhkDVh.mjs +1 -0
  243. package/website/dist/_worker.js/chunks/shellsession_BfEA3juK.mjs +1 -0
  244. package/website/dist/_worker.js/chunks/slack-dark_CL3lSpCc.mjs +1 -0
  245. package/website/dist/_worker.js/chunks/slack-ochin_DdZKOQVh.mjs +1 -0
  246. package/website/dist/_worker.js/chunks/smalltalk_DgilzSui.mjs +1 -0
  247. package/website/dist/_worker.js/chunks/snazzy-light_eJU08Pz_.mjs +1 -0
  248. package/website/dist/_worker.js/chunks/solarized-dark_Dg_YQywx.mjs +1 -0
  249. package/website/dist/_worker.js/chunks/solarized-light_BnIsrA6p.mjs +1 -0
  250. package/website/dist/_worker.js/chunks/solidity_DkseH8pQ.mjs +1 -0
  251. package/website/dist/_worker.js/chunks/soy_DU7bOYoG.mjs +1 -0
  252. package/website/dist/_worker.js/chunks/sparql_BuI1DBDH.mjs +1 -0
  253. package/website/dist/_worker.js/chunks/splunk_B8Ha9Pkg.mjs +1 -0
  254. package/website/dist/_worker.js/chunks/sql_BniHwea5.mjs +1 -0
  255. package/website/dist/_worker.js/chunks/ssh-config_CkE1GuVe.mjs +1 -0
  256. package/website/dist/_worker.js/chunks/stata_Dtqpbd_l.mjs +1 -0
  257. package/website/dist/_worker.js/chunks/stylus_CXTtglzO.mjs +1 -0
  258. package/website/dist/_worker.js/chunks/svelte_BjWYcUCN.mjs +1 -0
  259. package/website/dist/_worker.js/chunks/swift_BzHql_rM.mjs +1 -0
  260. package/website/dist/_worker.js/chunks/synthwave-84_DLRNhxNA.mjs +1 -0
  261. package/website/dist/_worker.js/chunks/system-verilog_ChyInPph.mjs +1 -0
  262. package/website/dist/_worker.js/chunks/systemd_Bi9Qa2qD.mjs +1 -0
  263. package/website/dist/_worker.js/chunks/talonscript_B3sH_Y-V.mjs +1 -0
  264. package/website/dist/_worker.js/chunks/tasl_BJ5yipRs.mjs +1 -0
  265. package/website/dist/_worker.js/chunks/tcl_CoJQjNoP.mjs +1 -0
  266. package/website/dist/_worker.js/chunks/templ_CrU7Ffil.mjs +1 -0
  267. package/website/dist/_worker.js/chunks/terraform_DT9JSFpC.mjs +1 -0
  268. package/website/dist/_worker.js/chunks/tex_5PKu2yA0.mjs +1 -0
  269. package/website/dist/_worker.js/chunks/tokyo-night_Buo8OK7-.mjs +1 -0
  270. package/website/dist/_worker.js/chunks/toml_CPuXX3oc.mjs +1 -0
  271. package/website/dist/_worker.js/chunks/ts-tags_D0M_1VSH.mjs +1 -0
  272. package/website/dist/_worker.js/chunks/tsv_CuivVNot.mjs +1 -0
  273. package/website/dist/_worker.js/chunks/tsx_MkuGr8MY.mjs +1 -0
  274. package/website/dist/_worker.js/chunks/turtle_BqgEPK7f.mjs +1 -0
  275. package/website/dist/_worker.js/chunks/twig_r1G9rpYJ.mjs +1 -0
  276. package/website/dist/_worker.js/chunks/typescript_Au5buqzM.mjs +1 -0
  277. package/website/dist/_worker.js/chunks/typespec_47rhBK_z.mjs +1 -0
  278. package/website/dist/_worker.js/chunks/typst_BAtuQLh-.mjs +1 -0
  279. package/website/dist/_worker.js/chunks/v_BIvWImHg.mjs +1 -0
  280. package/website/dist/_worker.js/chunks/vala_DYEacj30.mjs +1 -0
  281. package/website/dist/_worker.js/chunks/vb_CikQuqGJ.mjs +1 -0
  282. package/website/dist/_worker.js/chunks/verilog_BQRENwI-.mjs +1 -0
  283. package/website/dist/_worker.js/chunks/vesper_DA0kvTmj.mjs +1 -0
  284. package/website/dist/_worker.js/chunks/vhdl_DHscJIyg.mjs +1 -0
  285. package/website/dist/_worker.js/chunks/viml_F2pvMwvG.mjs +1 -0
  286. package/website/dist/_worker.js/chunks/vitesse-black_D9tjNzd0.mjs +1 -0
  287. package/website/dist/_worker.js/chunks/vitesse-dark_Bnm5d0hd.mjs +1 -0
  288. package/website/dist/_worker.js/chunks/vitesse-light_CHwbyjNR.mjs +1 -0
  289. package/website/dist/_worker.js/chunks/vue-html_DyYtbbMK.mjs +1 -0
  290. package/website/dist/_worker.js/chunks/vue_DofN6juy.mjs +1 -0
  291. package/website/dist/_worker.js/chunks/vyper_CiR0m-OV.mjs +1 -0
  292. package/website/dist/_worker.js/chunks/wasm_CwIGgRGf.mjs +1 -0
  293. package/website/dist/_worker.js/chunks/wasm_jKWhg0J0.mjs +1 -0
  294. package/website/dist/_worker.js/chunks/wenyan_DKvVZKXW.mjs +1 -0
  295. package/website/dist/_worker.js/chunks/wgsl_BOWZY7yw.mjs +1 -0
  296. package/website/dist/_worker.js/chunks/wikitext_CXDhhHPy.mjs +1 -0
  297. package/website/dist/_worker.js/chunks/wolfram_ChkmGnW0.mjs +1 -0
  298. package/website/dist/_worker.js/chunks/xml_DXH3hHIu.mjs +1 -0
  299. package/website/dist/_worker.js/chunks/xsl_DuP2mFjg.mjs +1 -0
  300. package/website/dist/_worker.js/chunks/yaml_IGiEkTge.mjs +1 -0
  301. package/website/dist/_worker.js/chunks/zenscript_59iXGyNw.mjs +1 -0
  302. package/website/dist/_worker.js/chunks/zig_DKzb0zdT.mjs +1 -0
  303. package/website/dist/_worker.js/index.js +53 -0
  304. package/website/dist/_worker.js/manifest_BAAoOzaU.mjs +98 -0
  305. package/website/dist/_worker.js/pages/_image.astro.mjs +24 -0
  306. package/website/dist/_worker.js/pages/agents.astro.mjs +1 -0
  307. package/website/dist/_worker.js/pages/animation.astro.mjs +1 -0
  308. package/website/dist/_worker.js/pages/api/raw-markdown/_---path_.astro.mjs +44 -0
  309. package/website/dist/_worker.js/pages/config.astro.mjs +1 -0
  310. package/website/dist/_worker.js/pages/fonts.astro.mjs +1 -0
  311. package/website/dist/_worker.js/pages/getting-started.astro.mjs +1 -0
  312. package/website/dist/_worker.js/pages/helpers.astro.mjs +1 -0
  313. package/website/dist/_worker.js/pages/images.astro.mjs +1 -0
  314. package/website/dist/_worker.js/pages/index.astro.mjs +1 -0
  315. package/website/dist/_worker.js/pages/llm.txt.astro.mjs +1 -0
  316. package/website/dist/_worker.js/pages/preview.astro.mjs +1 -0
  317. package/website/dist/_worker.js/pages/sdk.astro.mjs +1 -0
  318. package/website/dist/_worker.js/pages/sitemap.xml.astro.mjs +1 -0
  319. package/website/dist/_worker.js/pages/styling.astro.mjs +1 -0
  320. package/website/dist/_worker.js/pages/templates.astro.mjs +1 -0
  321. package/website/dist/_worker.js/pages/video.astro.mjs +1 -0
  322. package/website/dist/_worker.js/renderers.mjs +57 -0
  323. package/website/dist/agents/index.html +3 -2
  324. package/website/dist/animation/index.html +402 -128
  325. package/website/dist/config/index.html +184 -0
  326. package/website/dist/fonts/index.html +56 -52
  327. package/website/dist/getting-started/index.html +107 -0
  328. package/website/dist/helpers/index.html +8 -8
  329. package/website/dist/images/index.html +50 -23
  330. package/website/dist/index.html +114 -148
  331. package/website/dist/llm.txt +751 -1055
  332. package/website/dist/preview/index.html +111 -0
  333. package/website/dist/robots.txt +35 -0
  334. package/website/dist/sdk/index.html +390 -52
  335. package/website/dist/sitemap.xml +76 -0
  336. package/website/dist/styling/index.html +10 -7
  337. package/website/dist/templates/index.html +11 -59
  338. package/website/dist/video/index.html +106 -537
  339. package/website/package-lock.json +1077 -17
  340. package/website/templates/og-image.tsx +61 -0
  341. package/website/dist/_astro/agents.I1-fN38o.css +0 -1
@@ -1,6 +1,6 @@
1
1
  import type { TemplateDefinition, StyleConfig } from './template.js';
2
- export { defineTemplate } from './template.js';
3
- export type { TemplateDefinition, StyleConfig } from './template.js';
2
+ export { defineTemplate, defineTemplateFromFile, defineTemplateFromSource, defineTemplateFromSchema } from './template.js';
3
+ export type { TemplateDefinition, StyleConfig, TemplateSchema, SchemaElement } from './template.js';
4
4
  /**
5
5
  * Render options for image generation
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQrE,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;IAC9E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAAC,MAAM,GAAG,GAAG,EAC5C,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAoDjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,WAAW,CAAC,MAAM,GAAG,GAAG,EAC5C,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,CA+CjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQrE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC3H,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC;IAC9E,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,WAAW,CAAC,MAAM,GAAG,GAAG,EAC5C,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,CAoDjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,WAAW,CAAC,MAAM,GAAG,GAAG,EAC5C,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACpC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,CAAC,CA+CjB"}
package/dist/sdk/index.js CHANGED
@@ -4,7 +4,7 @@ import { renderVideo as renderVideoInternal } from '../lib/video-renderer.js';
4
4
  import fs from 'fs/promises';
5
5
  import path from 'path';
6
6
  import os from 'os';
7
- export { defineTemplate } from './template.js';
7
+ export { defineTemplate, defineTemplateFromFile, defineTemplateFromSource, defineTemplateFromSchema } from './template.js';
8
8
  /**
9
9
  * Render an image from a template definition
10
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
@@ -39,4 +39,101 @@ export declare function defineTemplate<TProps = any>(definition: TemplateDefinit
39
39
  * @internal
40
40
  */
41
41
  export declare function templateToMeta(template: TemplateDefinition): TemplateMeta;
42
+ /**
43
+ * Define a template from an imported template file
44
+ *
45
+ * Allows reusing file-based templates from _loopwind/templates/ in the SDK
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * import * as videoIntro from './_loopwind/templates/video-intro/template';
50
+ *
51
+ * const template = defineTemplateFromFile(videoIntro, {
52
+ * config: {
53
+ * colors: { primary: '#ff0000' }
54
+ * }
55
+ * });
56
+ *
57
+ * const mp4 = await renderVideo(template, { version: '2.0.0' });
58
+ * ```
59
+ */
60
+ export declare function defineTemplateFromFile<TProps = any>(templateModule: {
61
+ meta: TemplateMeta;
62
+ default: (props: TProps & TemplateProps) => JSX.Element;
63
+ }, options?: {
64
+ config?: StyleConfig;
65
+ }): TemplateDefinition<TProps>;
66
+ export declare function defineTemplateFromSource<TProps = any>(sourceCode: string, options?: {
67
+ config?: StyleConfig;
68
+ }): TemplateDefinition<TProps>;
69
+ /**
70
+ * Schema element definition for visual template builders
71
+ */
72
+ export interface SchemaElement {
73
+ type: 'div' | 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'img';
74
+ className?: string;
75
+ content?: string;
76
+ src?: string;
77
+ style?: Record<string, any>;
78
+ children?: SchemaElement[];
79
+ }
80
+ /**
81
+ * Template schema for visual builders
82
+ */
83
+ export interface TemplateSchema {
84
+ name: string;
85
+ type?: 'image' | 'video';
86
+ size: {
87
+ width: number;
88
+ height: number;
89
+ };
90
+ video?: {
91
+ fps: number;
92
+ duration: number;
93
+ };
94
+ config?: StyleConfig;
95
+ elements: SchemaElement[];
96
+ }
97
+ /**
98
+ * Define a template from a JSON schema
99
+ *
100
+ * Perfect for visual template builders where users drag and drop elements.
101
+ * Converts a declarative JSON schema into a working template.
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const schema: TemplateSchema = {
106
+ * name: 'card',
107
+ * size: { width: 1200, height: 630 },
108
+ * config: {
109
+ * colors: { primary: '#3b82f6', background: '#ffffff' }
110
+ * },
111
+ * elements: [
112
+ * {
113
+ * type: 'div',
114
+ * className: 'flex flex-col w-full h-full bg-background p-12',
115
+ * children: [
116
+ * {
117
+ * type: 'h1',
118
+ * className: 'text-6xl font-bold text-primary',
119
+ * content: '{{title}}'
120
+ * },
121
+ * {
122
+ * type: 'p',
123
+ * className: 'text-2xl text-gray-600',
124
+ * content: '{{description}}'
125
+ * }
126
+ * ]
127
+ * }
128
+ * ]
129
+ * };
130
+ *
131
+ * const template = defineTemplateFromSchema(schema);
132
+ * const png = await renderImage(template, {
133
+ * title: 'Hello World',
134
+ * description: 'Created with visual builder'
135
+ * });
136
+ * ```
137
+ */
138
+ export declare function defineTemplateFromSchema<TProps = any>(schema: TemplateSchema): TemplateDefinition<TProps>;
42
139
  //# sourceMappingURL=template.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/sdk/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC;AAEvC,MAAM,WAAW,kBAAkB,CAAC,MAAM,GAAG,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,KAAK,GAAG,CAAC,OAAO,CAAC;CACxD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,MAAM,GAAG,GAAG,EACzC,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACrC,kBAAkB,CAAC,MAAM,CAAC,CAyB5B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,YAAY,CASzE"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/sdk/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC;AAEvC,MAAM,WAAW,kBAAkB,CAAC,MAAM,GAAG,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,KAAK,GAAG,CAAC,OAAO,CAAC;CACxD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,MAAM,GAAG,GAAG,EACzC,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,GACrC,kBAAkB,CAAC,MAAM,CAAC,CAyB5B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,kBAAkB,GAAG,YAAY,CASzE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,GAAG,GAAG,EACjD,cAAc,EAAE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,KAAK,GAAG,CAAC,OAAO,CAAA;CAAE,EAC/F,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GACrC,kBAAkB,CAAC,MAAM,CAAC,CAW5B;AAuDD,wBAAgB,wBAAwB,CAAC,MAAM,GAAG,GAAG,EACnD,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GACrC,kBAAkB,CAAC,MAAM,CAAC,CAmC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,GAAG,GAAG,EACnD,MAAM,EAAE,cAAc,GACrB,kBAAkB,CAAC,MAAM,CAAC,CA+D5B"}
@@ -1,3 +1,5 @@
1
+ import React from 'react';
2
+ import * as Babel from '@babel/standalone';
1
3
  /**
2
4
  * Define a template programmatically for use in serverless environments
3
5
  *
@@ -51,4 +53,219 @@ export function templateToMeta(template) {
51
53
  props: {}, // SDK templates don't need props metadata
52
54
  };
53
55
  }
56
+ /**
57
+ * Define a template from an imported template file
58
+ *
59
+ * Allows reusing file-based templates from _loopwind/templates/ in the SDK
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * import * as videoIntro from './_loopwind/templates/video-intro/template';
64
+ *
65
+ * const template = defineTemplateFromFile(videoIntro, {
66
+ * config: {
67
+ * colors: { primary: '#ff0000' }
68
+ * }
69
+ * });
70
+ *
71
+ * const mp4 = await renderVideo(template, { version: '2.0.0' });
72
+ * ```
73
+ */
74
+ export function defineTemplateFromFile(templateModule, options = {}) {
75
+ const { meta, default: render } = templateModule;
76
+ return defineTemplate({
77
+ name: meta.name,
78
+ type: meta.type,
79
+ size: meta.size,
80
+ video: meta.video,
81
+ config: options.config,
82
+ render,
83
+ });
84
+ }
85
+ /**
86
+ * Define a template from a source code string
87
+ *
88
+ * **WARNING:** This function evaluates code strings using `new Function()`.
89
+ * Only use with **trusted** template sources. Never use with user input from
90
+ * untrusted sources as it can execute arbitrary code.
91
+ *
92
+ * Perfect for:
93
+ * - Templates stored in a database (admin-created only)
94
+ * - Templates from a trusted CMS
95
+ * - Code editor features where templates are validated
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * const templateSource = `
100
+ * export const meta = {
101
+ * name: 'user-template',
102
+ * type: 'image',
103
+ * size: { width: 1200, height: 630 }
104
+ * };
105
+ *
106
+ * export default ({ tw, title }) => {
107
+ * const h = React.createElement;
108
+ * return h('div', { style: tw('flex w-full h-full bg-blue-500 p-12') },
109
+ * h('h1', { style: tw('text-6xl font-bold text-white') }, title)
110
+ * );
111
+ * };
112
+ * `;
113
+ *
114
+ * const template = defineTemplateFromSource(templateSource, {
115
+ * config: { colors: { primary: '#3b82f6' } }
116
+ * });
117
+ *
118
+ * const png = await renderImage(template, { title: 'Hello' });
119
+ * ```
120
+ */
121
+ /**
122
+ * Transform JSX to JavaScript using Babel
123
+ * @internal
124
+ */
125
+ function transformJSX(code) {
126
+ try {
127
+ const result = Babel.transform(code, {
128
+ presets: ['react'],
129
+ filename: 'template.tsx',
130
+ });
131
+ return result.code || code;
132
+ }
133
+ catch (error) {
134
+ // If Babel fails, return original code (might be plain JS without JSX)
135
+ return code;
136
+ }
137
+ }
138
+ export function defineTemplateFromSource(sourceCode, options = {}) {
139
+ try {
140
+ // Transform JSX to React.createElement calls
141
+ let processedSource = transformJSX(sourceCode);
142
+ // Strip export keywords to make it work in function context
143
+ // Convert "export const meta = ..." to "const meta = ..."
144
+ // Convert "export default ..." to "const defaultExport = ..."
145
+ processedSource = processedSource
146
+ .replace(/export\s+const\s+meta\s*=/g, 'const meta =')
147
+ .replace(/export\s+default\s+/g, 'const defaultExport = ');
148
+ // Create a module evaluation function
149
+ // This executes the source code and returns the exports
150
+ const moduleFactory = new Function('React', `
151
+ 'use strict';
152
+ ${processedSource}
153
+ return { meta, default: defaultExport };
154
+ `);
155
+ // Execute to get meta and render function
156
+ const templateModule = moduleFactory(React);
157
+ if (!templateModule.meta) {
158
+ throw new Error('Template source must export a "meta" object');
159
+ }
160
+ if (!templateModule.default || typeof templateModule.default !== 'function') {
161
+ throw new Error('Template source must have a default export function');
162
+ }
163
+ return defineTemplateFromFile(templateModule, options);
164
+ }
165
+ catch (error) {
166
+ throw new Error(`Failed to parse template source: ${error instanceof Error ? error.message : String(error)}`);
167
+ }
168
+ }
169
+ /**
170
+ * Define a template from a JSON schema
171
+ *
172
+ * Perfect for visual template builders where users drag and drop elements.
173
+ * Converts a declarative JSON schema into a working template.
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * const schema: TemplateSchema = {
178
+ * name: 'card',
179
+ * size: { width: 1200, height: 630 },
180
+ * config: {
181
+ * colors: { primary: '#3b82f6', background: '#ffffff' }
182
+ * },
183
+ * elements: [
184
+ * {
185
+ * type: 'div',
186
+ * className: 'flex flex-col w-full h-full bg-background p-12',
187
+ * children: [
188
+ * {
189
+ * type: 'h1',
190
+ * className: 'text-6xl font-bold text-primary',
191
+ * content: '{{title}}'
192
+ * },
193
+ * {
194
+ * type: 'p',
195
+ * className: 'text-2xl text-gray-600',
196
+ * content: '{{description}}'
197
+ * }
198
+ * ]
199
+ * }
200
+ * ]
201
+ * };
202
+ *
203
+ * const template = defineTemplateFromSchema(schema);
204
+ * const png = await renderImage(template, {
205
+ * title: 'Hello World',
206
+ * description: 'Created with visual builder'
207
+ * });
208
+ * ```
209
+ */
210
+ export function defineTemplateFromSchema(schema) {
211
+ if (schema.elements.length === 0) {
212
+ throw new Error('Schema must have at least one element');
213
+ }
214
+ // Embed schema directly in the function body as a JSON literal
215
+ // This way the function is completely self-contained and survives serialization
216
+ const elementsJSON = JSON.stringify(schema.elements);
217
+ // Create a completely self-contained render function
218
+ // The function body contains the entire schema and all helper functions
219
+ // React must be available globally or passed in
220
+ const render = new Function('React', `
221
+ return function(props) {
222
+ const h = React.createElement;
223
+ const elements = ${elementsJSON};
224
+
225
+ const interpolate = (str) => {
226
+ return str.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => {
227
+ return props[key] !== undefined ? String(props[key]) : '';
228
+ });
229
+ };
230
+
231
+ const buildElement = (element, key) => {
232
+ const { type, className, content, src, style, children } = element;
233
+ const elementProps = { key };
234
+
235
+ if (className && props.tw) {
236
+ elementProps.style = props.tw(className);
237
+ } else if (style) {
238
+ elementProps.style = style;
239
+ }
240
+
241
+ if (type === 'img' && src) {
242
+ elementProps.src = interpolate(src);
243
+ }
244
+
245
+ let elementChildren = null;
246
+ if (content) {
247
+ elementChildren = interpolate(content);
248
+ } else if (children && children.length > 0) {
249
+ elementChildren = children.map((child, i) => buildElement(child, i));
250
+ }
251
+
252
+ return h(type, elementProps, elementChildren);
253
+ };
254
+
255
+ if (elements.length === 1) {
256
+ return buildElement(elements[0]);
257
+ }
258
+
259
+ return h(React.Fragment, null, elements.map((el, i) => buildElement(el, i)));
260
+ }
261
+ `)(React);
262
+ return defineTemplate({
263
+ name: schema.name,
264
+ type: schema.type,
265
+ size: schema.size,
266
+ video: schema.video,
267
+ config: schema.config,
268
+ render,
269
+ });
270
+ }
54
271
  //# sourceMappingURL=template.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/sdk/template.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,cAAc,CAC5B,UAAsC;IAEtC,sBAAsB;IACtB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,eAAe;IACf,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC;IAExC,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO;QACL,GAAG,UAAU;QACb,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,QAA4B;IACzD,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,4CAA4C;QACxE,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,OAAO;QAC9B,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,EAAE,EAAE,0CAA0C;KACtD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/sdk/template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Example: Code Editor - User-created templates from source strings
3
+ *
4
+ * Use case: Building a code editor where users write template code
5
+ * directly as strings (e.g., Monaco Editor, CodeMirror).
6
+ *
7
+ * ⚠️ SECURITY WARNING:
8
+ * Only use defineTemplateFromSource() with TRUSTED sources!
9
+ * It evaluates code using new Function() which can execute arbitrary code.
10
+ * Never pass untrusted user input directly.
11
+ */
12
+
13
+ import { defineTemplateFromSource, renderImage, renderVideo } from 'loopwind/sdk';
14
+ import fs from 'fs/promises';
15
+
16
+ // Example 1: Simple image template from string
17
+ const imageTemplateSource = `
18
+ export const meta = {
19
+ name: 'user-card',
20
+ type: 'image',
21
+ size: { width: 1200, height: 630 }
22
+ };
23
+
24
+ export default ({ tw, title, description }) => {
25
+ const h = React.createElement;
26
+ return h('div', {
27
+ style: tw('flex flex-col w-full h-full bg-gradient-to-br from-blue-600 to-purple-700 p-12 justify-between')
28
+ },
29
+ h('div', { style: tw('flex items-center gap-4') },
30
+ h('div', { style: tw('w-16 h-16 rounded-full bg-white/20') })
31
+ ),
32
+ h('div', null,
33
+ h('h1', { style: tw('text-6xl font-bold text-white mb-4') }, title),
34
+ h('p', { style: tw('text-2xl text-white/80') }, description)
35
+ )
36
+ );
37
+ };
38
+ `;
39
+
40
+ async function renderUserTemplate() {
41
+ // Create template from source string
42
+ const template = defineTemplateFromSource(imageTemplateSource, {
43
+ config: {
44
+ colors: {
45
+ primary: '#3b82f6',
46
+ background: '#ffffff',
47
+ },
48
+ },
49
+ });
50
+
51
+ // Render with user props
52
+ const png = await renderImage(template, {
53
+ title: 'User Created Template',
54
+ description: 'Built with code editor',
55
+ });
56
+
57
+ await fs.writeFile('user-card.png', png);
58
+ console.log('✓ Rendered user-card.png');
59
+ }
60
+
61
+ // Example 2: Video template from string
62
+ const videoTemplateSource = `
63
+ export const meta = {
64
+ name: 'intro-animation',
65
+ type: 'video',
66
+ size: { width: 1920, height: 1080 },
67
+ video: { fps: 30, duration: 3 }
68
+ };
69
+
70
+ export default ({ tw, progress, title }) => {
71
+ const h = React.createElement;
72
+
73
+ // Fade in animation
74
+ const opacity = progress < 0.5 ? progress / 0.5 : 1;
75
+ const scale = 0.8 + (opacity * 0.2);
76
+
77
+ return h('div', {
78
+ style: tw('flex items-center justify-center w-full h-full bg-black')
79
+ },
80
+ h('h1', {
81
+ style: {
82
+ ...tw('text-8xl font-bold text-white'),
83
+ opacity,
84
+ transform: \`scale(\${scale})\`
85
+ }
86
+ }, title)
87
+ );
88
+ };
89
+ `;
90
+
91
+ async function renderVideoTemplate() {
92
+ const template = defineTemplateFromSource(videoTemplateSource);
93
+
94
+ const mp4 = await renderVideo(template, {
95
+ title: 'Hello World',
96
+ });
97
+
98
+ await fs.writeFile('intro-animation.mp4', mp4);
99
+ console.log('✓ Rendered intro-animation.mp4');
100
+ }
101
+
102
+ // Example 3: Database-stored template
103
+ // This simulates loading templates from a database
104
+ interface StoredTemplate {
105
+ id: string;
106
+ name: string;
107
+ source: string;
108
+ config?: any;
109
+ }
110
+
111
+ const templatesDB: StoredTemplate[] = [
112
+ {
113
+ id: 'og-1',
114
+ name: 'Blog OG Image',
115
+ source: `
116
+ export const meta = {
117
+ name: 'blog-og',
118
+ type: 'image',
119
+ size: { width: 1200, height: 630 }
120
+ };
121
+
122
+ export default ({ tw, title, author }) => {
123
+ const h = React.createElement;
124
+ return h('div', {
125
+ style: tw('flex flex-col w-full h-full bg-white p-12 justify-center')
126
+ },
127
+ h('h1', { style: tw('text-6xl font-bold text-gray-900 mb-4') }, title),
128
+ h('p', { style: tw('text-2xl text-gray-600') }, 'By ' + author)
129
+ );
130
+ };
131
+ `,
132
+ config: {
133
+ colors: {
134
+ primary: '#1f2937',
135
+ background: '#ffffff',
136
+ },
137
+ },
138
+ },
139
+ ];
140
+
141
+ async function renderFromDatabase(templateId: string, props: any) {
142
+ // Fetch template from "database"
143
+ const stored = templatesDB.find((t) => t.id === templateId);
144
+ if (!stored) {
145
+ throw new Error('Template not found');
146
+ }
147
+
148
+ // Create template from stored source
149
+ const template = defineTemplateFromSource(stored.source, {
150
+ config: stored.config,
151
+ });
152
+
153
+ // Render
154
+ const png = await renderImage(template, props);
155
+ await fs.writeFile(`${stored.id}.png`, png);
156
+ console.log(`✓ Rendered ${stored.id}.png`);
157
+ }
158
+
159
+ // Run examples
160
+ async function main() {
161
+ console.log('Code Editor Examples\n');
162
+
163
+ await renderUserTemplate();
164
+ await renderVideoTemplate();
165
+ await renderFromDatabase('og-1', {
166
+ title: 'Building a Template Editor',
167
+ author: 'John Doe',
168
+ });
169
+
170
+ console.log('\n✅ All code editor examples completed!');
171
+ }
172
+
173
+ main().catch(console.error);
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Example: Importing template files in Next.js API routes
3
+ *
4
+ * This demonstrates how to reuse _loopwind/templates/ files
5
+ * in your SDK code with Next.js (or any other bundler)
6
+ */
7
+
8
+ import type { NextApiRequest, NextApiResponse } from 'next';
9
+ import { defineTemplateFromFile, renderVideo } from 'loopwind/sdk';
10
+
11
+ // Import your template file (Next.js/bundler handles TSX automatically)
12
+ import * as videoIntroTemplate from '../../_loopwind/templates/video-intro/template';
13
+
14
+ // Create SDK template from file with custom config
15
+ const template = defineTemplateFromFile(videoIntroTemplate, {
16
+ config: {
17
+ colors: {
18
+ primary: '#ff0000', // Override gradient colors
19
+ 'indigo-900': '#1a0033',
20
+ },
21
+ },
22
+ });
23
+
24
+ export default async function handler(
25
+ req: NextApiRequest,
26
+ res: NextApiResponse
27
+ ) {
28
+ const { version = '1.0.0', changes } = req.query;
29
+
30
+ // Parse changes from query param (comma-separated)
31
+ const changeList = typeof changes === 'string'
32
+ ? changes.split(',').map(c => c.trim())
33
+ : undefined;
34
+
35
+ // Render video using imported template
36
+ const mp4 = await renderVideo(template, {
37
+ version: String(version),
38
+ changes: changeList,
39
+ });
40
+
41
+ res.setHeader('Content-Type', 'video/mp4');
42
+ res.setHeader('Cache-Control', 's-maxage=3600, stale-while-revalidate');
43
+ res.send(mp4);
44
+ }
45
+
46
+ /**
47
+ * Usage:
48
+ *
49
+ * GET /api/release-video?version=2.0.0&changes=New%20feature,Bug%20fix,Performance
50
+ *
51
+ * Returns: MP4 video with version 2.0.0 and custom changes list
52
+ *
53
+ * Benefits:
54
+ * - Reuse CLI templates in API
55
+ * - Override config for custom branding
56
+ * - Type-safe with TypeScript
57
+ * - No duplicate template code
58
+ */