@turnipxenon/pineapple 2.4.72 → 2.4.74

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 (259) hide show
  1. package/.idea/shelf/Fix_attempt_for_slug/shelved.patch +63 -0
  2. package/.idea/shelf/Fix_attempt_for_slug.xml +4 -0
  3. package/.idea/workspace.xml +62 -45
  4. package/.svelte-kit/__package__/index.d.ts +1 -0
  5. package/.svelte-kit/__package__/index.js +1 -0
  6. package/.svelte-kit/__package__/template/seaweed/SeaweedTemplate.svelte +36 -158
  7. package/.svelte-kit/__package__/template/seaweed/SeaweedTemplate.svelte.d.ts +6 -0
  8. package/.svelte-kit/__package__/template/seaweed/SeaweedTemplateData.js +3 -9
  9. package/.svelte-kit/__package__/template/seaweed/entries/EntryProps.d.ts +6 -0
  10. package/.svelte-kit/__package__/template/seaweed/entries/WorkExperience.svelte +143 -0
  11. package/.svelte-kit/__package__/template/seaweed/entries/WorkExperience.svelte.d.ts +18 -0
  12. package/.svelte-kit/__package__/template/seaweed/entry_order_config/EntryOrderConfig.svelte +2 -2
  13. package/.svelte-kit/__package__/template/seaweed/entry_order_config/EntryOrderConfig.svelte.d.ts +1 -0
  14. package/.svelte-kit/ambient.d.ts +1 -12
  15. package/.svelte-kit/generated/client/app.js +1 -1
  16. package/.svelte-kit/generated/client-optimized/app.js +47 -0
  17. package/.svelte-kit/generated/client-optimized/matchers.js +1 -0
  18. package/.svelte-kit/generated/client-optimized/nodes/0.js +1 -0
  19. package/.svelte-kit/generated/client-optimized/nodes/1.js +1 -0
  20. package/.svelte-kit/generated/client-optimized/nodes/10.js +1 -0
  21. package/.svelte-kit/generated/client-optimized/nodes/11.js +1 -0
  22. package/.svelte-kit/generated/client-optimized/nodes/12.js +1 -0
  23. package/.svelte-kit/generated/client-optimized/nodes/13.js +3 -0
  24. package/.svelte-kit/generated/client-optimized/nodes/14.js +3 -0
  25. package/.svelte-kit/generated/client-optimized/nodes/15.js +3 -0
  26. package/.svelte-kit/generated/client-optimized/nodes/16.js +1 -0
  27. package/.svelte-kit/generated/client-optimized/nodes/2.js +1 -0
  28. package/.svelte-kit/generated/client-optimized/nodes/3.js +1 -0
  29. package/.svelte-kit/generated/client-optimized/nodes/4.js +1 -0
  30. package/.svelte-kit/generated/client-optimized/nodes/5.js +1 -0
  31. package/.svelte-kit/generated/client-optimized/nodes/6.js +1 -0
  32. package/.svelte-kit/generated/client-optimized/nodes/7.js +1 -0
  33. package/.svelte-kit/generated/client-optimized/nodes/8.js +1 -0
  34. package/.svelte-kit/generated/client-optimized/nodes/9.js +1 -0
  35. package/.svelte-kit/generated/server/internal.js +1 -1
  36. package/.svelte-kit/output/client/.vite/manifest.json +694 -0
  37. package/.svelte-kit/output/client/_app/immutable/assets/0.BZfguPbX.css +10 -0
  38. package/.svelte-kit/output/client/_app/immutable/assets/13.BIMIBpeM.css +1 -0
  39. package/.svelte-kit/output/client/_app/immutable/assets/4.ClTmhFiH.css +1 -0
  40. package/.svelte-kit/output/client/_app/immutable/assets/NavigationComponent.DcXBcmND.css +1 -0
  41. package/.svelte-kit/output/client/_app/immutable/assets/PineappleBaseLayout.BJNkM2lS.css +1 -0
  42. package/.svelte-kit/output/client/_app/immutable/assets/ProgressBar.Cirlo5Z8.css +1 -0
  43. package/.svelte-kit/output/client/_app/immutable/assets/_layout.BgClWDWR.css +10 -0
  44. package/.svelte-kit/output/client/_app/immutable/assets/_page.BIMIBpeM.css +1 -0
  45. package/.svelte-kit/output/client/_app/immutable/assets/_page.ClTmhFiH.css +1 -0
  46. package/.svelte-kit/output/client/_app/immutable/assets/ares_blushing.B6Q0SsBp.webp +0 -0
  47. package/.svelte-kit/output/client/_app/immutable/assets/ares_disappointed.LOpkh7Q7.webp +0 -0
  48. package/.svelte-kit/output/client/_app/immutable/assets/ares_happy.Cz9WhdwO.webp +0 -0
  49. package/.svelte-kit/output/client/_app/immutable/assets/ares_lets_go.BxjJjKUv.webp +0 -0
  50. package/.svelte-kit/output/client/_app/immutable/assets/ares_logo.C_a3ZQAP.webp +0 -0
  51. package/.svelte-kit/output/client/_app/immutable/assets/ares_mad.DofDLDmM.webp +0 -0
  52. package/.svelte-kit/output/client/_app/immutable/assets/ares_neutral.Hp923t8N.webp +0 -0
  53. package/.svelte-kit/output/client/_app/immutable/assets/ares_slightly_mad.DdwOp6J5.webp +0 -0
  54. package/.svelte-kit/output/client/_app/immutable/assets/ares_surprised.BxbNH_w8.webp +0 -0
  55. package/.svelte-kit/output/client/_app/immutable/assets/ares_yay.EM2SNr0e.webp +0 -0
  56. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_ares.DTcFskeK.png +0 -0
  57. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_corn.D22ZwTZ0.png +0 -0
  58. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_pineapple.D28N65_A.png +0 -0
  59. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_reinhard.D22NV0xw.png +0 -0
  60. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_tomato.O9Z7_E07.png +0 -0
  61. package/.svelte-kit/output/client/_app/immutable/assets/bg_tiled_turnip.DMU0uHH4.png +0 -0
  62. package/.svelte-kit/output/client/_app/immutable/assets/footage-chef-wings.dVBm8Uit.gif +0 -0
  63. package/.svelte-kit/output/client/_app/immutable/assets/header-hep-cat.DcyPS3Oy.mp4 +0 -0
  64. package/.svelte-kit/output/client/_app/immutable/assets/header-pengi.DWAOeO4q.mp4 +0 -0
  65. package/.svelte-kit/output/client/_app/immutable/assets/header-soulwork.BQRWmhTu.mp4 +0 -0
  66. package/.svelte-kit/output/client/_app/immutable/assets/placeholder_circle.Ij3bN7bI.png +0 -0
  67. package/.svelte-kit/output/client/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4 +0 -0
  68. package/.svelte-kit/output/client/_app/immutable/assets/weaver-footage.sjDEbkrX.gif +0 -0
  69. package/.svelte-kit/output/client/_app/immutable/assets/window-set.IpgsYUna.png +0 -0
  70. package/.svelte-kit/output/client/_app/immutable/chunks/DialogManagerStore.uKBS8wDS.js +7 -0
  71. package/.svelte-kit/output/client/_app/immutable/chunks/NavigationComponent.svelte_svelte_type_style_lang.DfEIDspS.js +33 -0
  72. package/.svelte-kit/output/client/_app/immutable/chunks/PineappleBaseLayout.svelte_svelte_type_style_lang.DYXCZxRe.js +5 -0
  73. package/.svelte-kit/output/client/_app/immutable/chunks/PineappleSlideToggle.Cpnzq8nG.js +1 -0
  74. package/.svelte-kit/output/client/_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.gYVkR-Pp.js +1 -0
  75. package/.svelte-kit/output/client/_app/immutable/chunks/SeaweedTemplate.D8BMpFyR.js +42 -0
  76. package/.svelte-kit/output/client/_app/immutable/chunks/Toast.CfxCQiZJ.js +1 -0
  77. package/.svelte-kit/output/client/_app/immutable/chunks/_page.BCsXwAds.js +8 -0
  78. package/.svelte-kit/output/client/_app/immutable/chunks/_page.CER3LJw4.js +8 -0
  79. package/.svelte-kit/output/client/_app/immutable/chunks/_page.CJqYI1vC.js +7 -0
  80. package/.svelte-kit/output/client/_app/immutable/chunks/_page.CRke_Vt-.js +8 -0
  81. package/.svelte-kit/output/client/_app/immutable/chunks/_page.CdlE3ZqM.js +8 -0
  82. package/.svelte-kit/output/client/_app/immutable/chunks/_page.D8F_fKwN.js +8 -0
  83. package/.svelte-kit/output/client/_app/immutable/chunks/_page.DOjmKWLN.js +8 -0
  84. package/.svelte-kit/output/client/_app/immutable/chunks/_page.UybeXHGE.js +8 -0
  85. package/.svelte-kit/output/client/_app/immutable/chunks/close.BSBWitOq.js +1 -0
  86. package/.svelte-kit/output/client/_app/immutable/chunks/each.SQ7NrLlo.js +1 -0
  87. package/.svelte-kit/output/client/_app/immutable/chunks/entry.B9Zoh-6L.js +3 -0
  88. package/.svelte-kit/output/client/_app/immutable/chunks/index.BID2VU8k.js +4 -0
  89. package/.svelte-kit/output/client/_app/immutable/chunks/index.D_vqlE3X.js +1 -0
  90. package/.svelte-kit/output/client/_app/immutable/chunks/index.DbwYs1Xx.js +1 -0
  91. package/.svelte-kit/output/client/_app/immutable/chunks/index.lAcdadTB.js +1 -0
  92. package/.svelte-kit/output/client/_app/immutable/chunks/index.qztrOHW4.js +6 -0
  93. package/.svelte-kit/output/client/_app/immutable/chunks/preload-helper.BQ24v_F8.js +1 -0
  94. package/.svelte-kit/output/client/_app/immutable/chunks/scheduler.DsUDfRdB.js +1 -0
  95. package/.svelte-kit/output/client/_app/immutable/chunks/spread.CgU5AtxT.js +1 -0
  96. package/.svelte-kit/output/client/_app/immutable/chunks/store.yyGEKEAe.js +1 -0
  97. package/.svelte-kit/output/client/_app/immutable/chunks/stores.BVA7LtvQ.js +1 -0
  98. package/.svelte-kit/output/client/_app/immutable/chunks/stores.CYFggfyT.js +1 -0
  99. package/.svelte-kit/output/client/_app/immutable/chunks/stores.DEMC0xoI.js +1 -0
  100. package/.svelte-kit/output/client/_app/immutable/chunks/stores.UNf3hc21.js +1 -0
  101. package/.svelte-kit/output/client/_app/immutable/chunks/transitions.FXurGCgU.js +1 -0
  102. package/.svelte-kit/output/client/_app/immutable/chunks/util.CpV-3U2s.js +1 -0
  103. package/.svelte-kit/output/client/_app/immutable/entry/app.CsPg_tSG.js +7 -0
  104. package/.svelte-kit/output/client/_app/immutable/entry/start.BK4UymrI.js +1 -0
  105. package/.svelte-kit/output/client/_app/immutable/nodes/0.DpxE_iuA.js +2 -0
  106. package/.svelte-kit/output/client/_app/immutable/nodes/1.CfFtBDAU.js +4 -0
  107. package/.svelte-kit/output/client/_app/immutable/nodes/10.B_ssKps0.js +1 -0
  108. package/.svelte-kit/output/client/_app/immutable/nodes/11.B_ssKps0.js +1 -0
  109. package/.svelte-kit/output/client/_app/immutable/nodes/12.CnXaShb6.js +1 -0
  110. package/.svelte-kit/output/client/_app/immutable/nodes/13.D6l5S0uo.js +61 -0
  111. package/.svelte-kit/output/client/_app/immutable/nodes/14.D-06Eivu.js +1 -0
  112. package/.svelte-kit/output/client/_app/immutable/nodes/15.UZK1S76t.js +1 -0
  113. package/.svelte-kit/output/client/_app/immutable/nodes/16.C52UdDDz.js +1 -0
  114. package/.svelte-kit/output/client/_app/immutable/nodes/2.C_PeLfm6.js +5 -0
  115. package/.svelte-kit/output/client/_app/immutable/nodes/3.DRZNxJIx.js +1 -0
  116. package/.svelte-kit/output/client/_app/immutable/nodes/4.7r5Yp15Y.js +1 -0
  117. package/.svelte-kit/output/client/_app/immutable/nodes/5.B_ssKps0.js +1 -0
  118. package/.svelte-kit/output/client/_app/immutable/nodes/6.B_ssKps0.js +1 -0
  119. package/.svelte-kit/output/client/_app/immutable/nodes/7.B_ssKps0.js +1 -0
  120. package/.svelte-kit/output/client/_app/immutable/nodes/8.B_ssKps0.js +1 -0
  121. package/.svelte-kit/output/client/_app/immutable/nodes/9.B_ssKps0.js +1 -0
  122. package/.svelte-kit/output/client/_app/version.json +1 -0
  123. package/.svelte-kit/output/client/default-card.png +0 -0
  124. package/.svelte-kit/output/client/favicon.png +0 -0
  125. package/.svelte-kit/output/client/robots.txt +5 -0
  126. package/.svelte-kit/output/server/.vite/manifest.json +617 -0
  127. package/.svelte-kit/output/server/_app/immutable/assets/NavigationComponent.DcXBcmND.css +1 -0
  128. package/.svelte-kit/output/server/_app/immutable/assets/PineappleBaseLayout.BJNkM2lS.css +1 -0
  129. package/.svelte-kit/output/server/_app/immutable/assets/ProgressBar.Cirlo5Z8.css +1 -0
  130. package/.svelte-kit/output/server/_app/immutable/assets/_layout.BgClWDWR.css +10 -0
  131. package/.svelte-kit/output/server/_app/immutable/assets/_page.BIMIBpeM.css +1 -0
  132. package/.svelte-kit/output/server/_app/immutable/assets/_page.ClTmhFiH.css +1 -0
  133. package/.svelte-kit/output/server/_app/immutable/assets/ares_blushing.B6Q0SsBp.webp +0 -0
  134. package/.svelte-kit/output/server/_app/immutable/assets/ares_disappointed.LOpkh7Q7.webp +0 -0
  135. package/.svelte-kit/output/server/_app/immutable/assets/ares_happy.Cz9WhdwO.webp +0 -0
  136. package/.svelte-kit/output/server/_app/immutable/assets/ares_lets_go.BxjJjKUv.webp +0 -0
  137. package/.svelte-kit/output/server/_app/immutable/assets/ares_logo.C_a3ZQAP.webp +0 -0
  138. package/.svelte-kit/output/server/_app/immutable/assets/ares_mad.DofDLDmM.webp +0 -0
  139. package/.svelte-kit/output/server/_app/immutable/assets/ares_neutral.Hp923t8N.webp +0 -0
  140. package/.svelte-kit/output/server/_app/immutable/assets/ares_slightly_mad.DdwOp6J5.webp +0 -0
  141. package/.svelte-kit/output/server/_app/immutable/assets/ares_surprised.BxbNH_w8.webp +0 -0
  142. package/.svelte-kit/output/server/_app/immutable/assets/ares_yay.EM2SNr0e.webp +0 -0
  143. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_ares.DTcFskeK.png +0 -0
  144. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_corn.D22ZwTZ0.png +0 -0
  145. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_pineapple.D28N65_A.png +0 -0
  146. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_reinhard.D22NV0xw.png +0 -0
  147. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_tomato.O9Z7_E07.png +0 -0
  148. package/.svelte-kit/output/server/_app/immutable/assets/bg_tiled_turnip.DMU0uHH4.png +0 -0
  149. package/.svelte-kit/output/server/_app/immutable/assets/footage-chef-wings.dVBm8Uit.gif +0 -0
  150. package/.svelte-kit/output/server/_app/immutable/assets/header-hep-cat.DcyPS3Oy.mp4 +0 -0
  151. package/.svelte-kit/output/server/_app/immutable/assets/header-pengi.DWAOeO4q.mp4 +0 -0
  152. package/.svelte-kit/output/server/_app/immutable/assets/header-soulwork.BQRWmhTu.mp4 +0 -0
  153. package/.svelte-kit/output/server/_app/immutable/assets/placeholder_circle.Ij3bN7bI.png +0 -0
  154. package/.svelte-kit/output/server/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4 +0 -0
  155. package/.svelte-kit/output/server/_app/immutable/assets/weaver-footage.sjDEbkrX.gif +0 -0
  156. package/.svelte-kit/output/server/_app/immutable/assets/window-set.IpgsYUna.png +0 -0
  157. package/.svelte-kit/output/server/chunks/CreateUrl.js +17 -0
  158. package/.svelte-kit/output/server/chunks/DialogManagerStore.js +1412 -0
  159. package/.svelte-kit/output/server/chunks/NavigationComponent.svelte_svelte_type_style_lang.js +272 -0
  160. package/.svelte-kit/output/server/chunks/PineappleBaseLayout.svelte_svelte_type_style_lang.js +50 -0
  161. package/.svelte-kit/output/server/chunks/PineappleSlideToggle.js +120 -0
  162. package/.svelte-kit/output/server/chunks/ProgressBar.svelte_svelte_type_style_lang.js +60 -0
  163. package/.svelte-kit/output/server/chunks/SeaweedTemplate.js +786 -0
  164. package/.svelte-kit/output/server/chunks/_page.js +4 -0
  165. package/.svelte-kit/output/server/chunks/_page2.js +4 -0
  166. package/.svelte-kit/output/server/chunks/_page3.js +4 -0
  167. package/.svelte-kit/output/server/chunks/_page4.js +4 -0
  168. package/.svelte-kit/output/server/chunks/_page5.js +4 -0
  169. package/.svelte-kit/output/server/chunks/_page6.js +4 -0
  170. package/.svelte-kit/output/server/chunks/_page7.js +4 -0
  171. package/.svelte-kit/output/server/chunks/_page8.js +4 -0
  172. package/.svelte-kit/output/server/chunks/client.js +12 -0
  173. package/.svelte-kit/output/server/chunks/close.js +262 -0
  174. package/.svelte-kit/output/server/chunks/exports.js +200 -0
  175. package/.svelte-kit/output/server/chunks/index.js +52 -0
  176. package/.svelte-kit/output/server/chunks/index2.js +34 -0
  177. package/.svelte-kit/output/server/chunks/index3.js +48 -0
  178. package/.svelte-kit/output/server/chunks/index4.js +12 -0
  179. package/.svelte-kit/output/server/chunks/internal.js +247 -0
  180. package/.svelte-kit/output/server/chunks/prod-ssr.js +6 -0
  181. package/.svelte-kit/output/server/chunks/ssr.js +322 -0
  182. package/.svelte-kit/output/server/chunks/stores.js +5 -0
  183. package/.svelte-kit/output/server/chunks/stores2.js +26 -0
  184. package/.svelte-kit/output/server/chunks/stores3.js +38 -0
  185. package/.svelte-kit/output/server/chunks/stores4.js +79 -0
  186. package/.svelte-kit/output/server/entries/endpoints/api/create-url/_server.ts.js +21 -0
  187. package/.svelte-kit/output/server/entries/endpoints/api/get-latest-blogs/_server.ts.js +11 -0
  188. package/.svelte-kit/output/server/entries/pages/(pineapple)/_layout.svelte.js +291 -0
  189. package/.svelte-kit/output/server/entries/pages/(pineapple)/_page.svelte.js +21 -0
  190. package/.svelte-kit/output/server/entries/pages/(pineapple)/pineapple/(extra-pages)/page1/_page.svelte.js +20 -0
  191. package/.svelte-kit/output/server/entries/pages/(pineapple)/pineapple/(extra-pages)/page2/_page.svelte.js +20 -0
  192. package/.svelte-kit/output/server/entries/pages/(pineapple)/pineapple/(extra-pages)/page3/_page.svelte.js +20 -0
  193. package/.svelte-kit/output/server/entries/pages/(pineapple)/pineapple/(extra-pages)/page3/page5/_page.svelte.js +20 -0
  194. package/.svelte-kit/output/server/entries/pages/(pineapple)/pineapple/(extra-pages)/page3/page6/_page.svelte.js +20 -0
  195. package/.svelte-kit/output/server/entries/pages/(pineapple)/pineapple/(extra-pages)/page3/page7/(test_layout)/page8/_page.svelte.js +20 -0
  196. package/.svelte-kit/output/server/entries/pages/(pineapple)/pineapple/(extra-pages)/page3/page7/_page.svelte.js +20 -0
  197. package/.svelte-kit/output/server/entries/pages/(pineapple)/pineapple/(extra-pages)/page4/_page.svelte.js +16 -0
  198. package/.svelte-kit/output/server/entries/pages/(pineapple)/pineapple/(pineapple)/_page.svelte.js +333 -0
  199. package/.svelte-kit/output/server/entries/pages/(pineapple)/pineapple/(pineapple)/_page.ts.js +9 -0
  200. package/.svelte-kit/output/server/entries/pages/(seaweed)/_layout.svelte.js +301 -0
  201. package/.svelte-kit/output/server/entries/pages/(seaweed)/portfolio/_page.svelte.js +19 -0
  202. package/.svelte-kit/output/server/entries/pages/(seaweed)/portfolio/_page.ts.js +9 -0
  203. package/.svelte-kit/output/server/entries/pages/(seaweed)/portfolio/actual/_page.svelte.js +23 -0
  204. package/.svelte-kit/output/server/entries/pages/(seaweed)/portfolio/actual/_page.ts.js +9 -0
  205. package/.svelte-kit/output/server/entries/pages/(seaweed)/portfolio/actual/_slug_/_page.server.ts.js +32 -0
  206. package/.svelte-kit/output/server/entries/pages/(seaweed)/portfolio/actual/_slug_/_page.svelte.js +39 -0
  207. package/.svelte-kit/output/server/entries/pages/_error.svelte.js +29 -0
  208. package/.svelte-kit/output/server/entries/pages/_layout.svelte.js +58 -0
  209. package/.svelte-kit/output/server/index.js +2955 -0
  210. package/.svelte-kit/output/server/internal.js +13 -0
  211. package/.svelte-kit/output/server/manifest-full.js +147 -0
  212. package/.svelte-kit/output/server/manifest.js +147 -0
  213. package/.svelte-kit/output/server/nodes/0.js +8 -0
  214. package/.svelte-kit/output/server/nodes/1.js +8 -0
  215. package/.svelte-kit/output/server/nodes/10.js +8 -0
  216. package/.svelte-kit/output/server/nodes/11.js +8 -0
  217. package/.svelte-kit/output/server/nodes/12.js +8 -0
  218. package/.svelte-kit/output/server/nodes/13.js +10 -0
  219. package/.svelte-kit/output/server/nodes/14.js +10 -0
  220. package/.svelte-kit/output/server/nodes/15.js +10 -0
  221. package/.svelte-kit/output/server/nodes/16.js +10 -0
  222. package/.svelte-kit/output/server/nodes/2.js +8 -0
  223. package/.svelte-kit/output/server/nodes/3.js +8 -0
  224. package/.svelte-kit/output/server/nodes/4.js +8 -0
  225. package/.svelte-kit/output/server/nodes/5.js +8 -0
  226. package/.svelte-kit/output/server/nodes/6.js +8 -0
  227. package/.svelte-kit/output/server/nodes/7.js +8 -0
  228. package/.svelte-kit/output/server/nodes/8.js +8 -0
  229. package/.svelte-kit/output/server/nodes/9.js +8 -0
  230. package/.svelte-kit/types/route_meta_data.json +1 -2
  231. package/.svelte-kit/types/src/routes/(seaweed)/portfolio/$types.d.ts +2 -9
  232. package/dist/index.d.ts +1 -0
  233. package/dist/index.js +1 -0
  234. package/dist/template/seaweed/SeaweedTemplate.svelte +36 -158
  235. package/dist/template/seaweed/SeaweedTemplate.svelte.d.ts +6 -0
  236. package/dist/template/seaweed/SeaweedTemplateData.js +3 -9
  237. package/dist/template/seaweed/entries/EntryProps.d.ts +6 -0
  238. package/dist/template/seaweed/entries/WorkExperience.svelte +143 -0
  239. package/dist/template/seaweed/entries/WorkExperience.svelte.d.ts +18 -0
  240. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte +2 -2
  241. package/dist/template/seaweed/entry_order_config/EntryOrderConfig.svelte.d.ts +1 -0
  242. package/package.json +1 -2
  243. package/src/lib/index.ts +1 -0
  244. package/src/lib/template/seaweed/SeaweedTemplate.svelte +41 -161
  245. package/src/lib/template/seaweed/SeaweedTemplateData.ts +3 -9
  246. package/src/lib/template/seaweed/entries/EntryProps.ts +7 -0
  247. package/src/lib/template/seaweed/entries/WorkExperience.svelte +146 -0
  248. package/src/lib/template/seaweed/entry_order_config/EntryOrderConfig.svelte +1 -2
  249. package/src/routes/(seaweed)/portfolio/+page.svelte +12 -1
  250. package/src/routes/(seaweed)/portfolio/actual/+page.svelte +9 -0
  251. package/src/routes/(seaweed)/portfolio/actual/[slug]/+page.svelte +8 -0
  252. package/.env +0 -5
  253. package/.svelte-kit/__package__/scripts/SetDefaultEnvironment.d.ts +0 -1
  254. package/.svelte-kit/__package__/scripts/SetDefaultEnvironment.js +0 -41
  255. package/.svelte-kit/types/src/routes/(seaweed)/portfolio/proxy+page.server.ts +0 -46
  256. package/dist/scripts/SetDefaultEnvironment.d.ts +0 -1
  257. package/dist/scripts/SetDefaultEnvironment.js +0 -41
  258. package/src/lib/scripts/SetDefaultEnvironment.ts +0 -45
  259. package/src/routes/(seaweed)/portfolio/+page.server.ts +0 -44
@@ -0,0 +1,1412 @@
1
+ import { w as writable } from "./index.js";
2
+ import { r as noop, t as assign, u as identity } from "./ssr.js";
3
+ import { b as backOut } from "./index4.js";
4
+ import { B as BROWSER } from "./prod-ssr.js";
5
+ const is_client = typeof window !== "undefined";
6
+ let now = is_client ? () => window.performance.now() : () => Date.now();
7
+ let raf = is_client ? (cb) => requestAnimationFrame(cb) : noop;
8
+ const tasks = /* @__PURE__ */ new Set();
9
+ function run_tasks(now2) {
10
+ tasks.forEach((task) => {
11
+ if (!task.c(now2)) {
12
+ tasks.delete(task);
13
+ task.f();
14
+ }
15
+ });
16
+ if (tasks.size !== 0)
17
+ raf(run_tasks);
18
+ }
19
+ function loop(callback) {
20
+ let task;
21
+ if (tasks.size === 0)
22
+ raf(run_tasks);
23
+ return {
24
+ promise: new Promise((fulfill) => {
25
+ tasks.add(task = { c: callback, f: fulfill });
26
+ }),
27
+ abort() {
28
+ tasks.delete(task);
29
+ }
30
+ };
31
+ }
32
+ const browser = BROWSER;
33
+ const createNewMapStore = () => {
34
+ return {
35
+ // dumb storage if not in browser
36
+ length: 0,
37
+ setItem: (key, value) => {
38
+ },
39
+ getItem: (key) => {
40
+ return null;
41
+ },
42
+ clear: () => {
43
+ },
44
+ key: (index) => {
45
+ return null;
46
+ },
47
+ removeItem: (key) => {
48
+ }
49
+ };
50
+ };
51
+ var DialogState = /* @__PURE__ */ ((DialogState2) => {
52
+ DialogState2[DialogState2["Invisible"] = 0] = "Invisible";
53
+ DialogState2[DialogState2["Visible"] = 1] = "Visible";
54
+ DialogState2[DialogState2["Busy"] = 2] = "Busy";
55
+ DialogState2[DialogState2["Inherit"] = 3] = "Inherit";
56
+ return DialogState2;
57
+ })(DialogState || {});
58
+ function is_date(obj) {
59
+ return Object.prototype.toString.call(obj) === "[object Date]";
60
+ }
61
+ function get_interpolator(a, b) {
62
+ if (a === b || a !== a)
63
+ return () => a;
64
+ const type = typeof a;
65
+ if (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) {
66
+ throw new Error("Cannot interpolate values of different type");
67
+ }
68
+ if (Array.isArray(a)) {
69
+ const arr = b.map((bi, i) => {
70
+ return get_interpolator(a[i], bi);
71
+ });
72
+ return (t) => arr.map((fn) => fn(t));
73
+ }
74
+ if (type === "object") {
75
+ if (!a || !b)
76
+ throw new Error("Object cannot be null");
77
+ if (is_date(a) && is_date(b)) {
78
+ a = a.getTime();
79
+ b = b.getTime();
80
+ const delta = b - a;
81
+ return (t) => new Date(a + t * delta);
82
+ }
83
+ const keys = Object.keys(b);
84
+ const interpolators = {};
85
+ keys.forEach((key) => {
86
+ interpolators[key] = get_interpolator(a[key], b[key]);
87
+ });
88
+ return (t) => {
89
+ const result = {};
90
+ keys.forEach((key) => {
91
+ result[key] = interpolators[key](t);
92
+ });
93
+ return result;
94
+ };
95
+ }
96
+ if (type === "number") {
97
+ const delta = b - a;
98
+ return (t) => a + t * delta;
99
+ }
100
+ throw new Error(`Cannot interpolate ${type} values`);
101
+ }
102
+ function tweened(value, defaults = {}) {
103
+ const store = writable(value);
104
+ let task;
105
+ let target_value = value;
106
+ function set(new_value, opts) {
107
+ if (value == null) {
108
+ store.set(value = new_value);
109
+ return Promise.resolve();
110
+ }
111
+ target_value = new_value;
112
+ let previous_task = task;
113
+ let started = false;
114
+ let {
115
+ delay = 0,
116
+ duration = 400,
117
+ easing = identity,
118
+ interpolate = get_interpolator
119
+ } = assign(assign({}, defaults), opts);
120
+ if (duration === 0) {
121
+ if (previous_task) {
122
+ previous_task.abort();
123
+ previous_task = null;
124
+ }
125
+ store.set(value = target_value);
126
+ return Promise.resolve();
127
+ }
128
+ const start = now() + delay;
129
+ let fn;
130
+ task = loop((now2) => {
131
+ if (now2 < start)
132
+ return true;
133
+ if (!started) {
134
+ fn = interpolate(value, new_value);
135
+ if (typeof duration === "function")
136
+ duration = duration(value, new_value);
137
+ started = true;
138
+ }
139
+ if (previous_task) {
140
+ previous_task.abort();
141
+ previous_task = null;
142
+ }
143
+ const elapsed = now2 - start;
144
+ if (elapsed > /** @type {number} */
145
+ duration) {
146
+ store.set(value = new_value);
147
+ return false;
148
+ }
149
+ store.set(value = fn(easing(elapsed / duration)));
150
+ return true;
151
+ });
152
+ return task.promise;
153
+ }
154
+ return {
155
+ set,
156
+ update: (fn, opts) => set(fn(target_value, value), opts),
157
+ subscribe: store.subscribe
158
+ };
159
+ }
160
+ var PortraitType = /* @__PURE__ */ ((PortraitType2) => {
161
+ PortraitType2["AresHappy"] = "AresHappy";
162
+ PortraitType2["AresDisappointed"] = "AresDisappointed";
163
+ PortraitType2["AresBlushing"] = "AresBlushing";
164
+ PortraitType2["AresLetsGo"] = "AresLetsGo";
165
+ PortraitType2["AresMad"] = "AresMad";
166
+ PortraitType2["AresNeutral"] = "AresNeutral";
167
+ PortraitType2["AresSlightlyMad"] = "AresSlightlyMad";
168
+ PortraitType2["AresSurprised"] = "AresSurprised";
169
+ PortraitType2["AresYay"] = "AresYay";
170
+ return PortraitType2;
171
+ })(PortraitType || {});
172
+ const AresHappy = "/_app/immutable/assets/ares_happy.Cz9WhdwO.webp";
173
+ const AresBlushing = "/_app/immutable/assets/ares_blushing.B6Q0SsBp.webp";
174
+ const AresDisappointed = "/_app/immutable/assets/ares_disappointed.LOpkh7Q7.webp";
175
+ const AresLetsGo = "/_app/immutable/assets/ares_lets_go.BxjJjKUv.webp";
176
+ const AresMad = "/_app/immutable/assets/ares_mad.DofDLDmM.webp";
177
+ const AresNeutral = "/_app/immutable/assets/ares_neutral.Hp923t8N.webp";
178
+ const AresSlightlyMad = "/_app/immutable/assets/ares_slightly_mad.DdwOp6J5.webp";
179
+ const AresSurprised = "/_app/immutable/assets/ares_surprised.BxbNH_w8.webp";
180
+ const TestImage = "/_app/immutable/assets/ares_yay.EM2SNr0e.webp";
181
+ var IfMode = /* @__PURE__ */ ((IfMode2) => {
182
+ IfMode2[IfMode2["Search"] = 0] = "Search";
183
+ IfMode2[IfMode2["Ignore"] = 1] = "Ignore";
184
+ IfMode2[IfMode2["Evaluated"] = 2] = "Evaluated";
185
+ IfMode2[IfMode2["EvaluateNext"] = 3] = "EvaluateNext";
186
+ return IfMode2;
187
+ })(IfMode || {});
188
+ class BehaviorState {
189
+ ifModeStack = [IfMode.Search];
190
+ ignoreJumps = false;
191
+ }
192
+ var BehaviorStatus = /* @__PURE__ */ ((BehaviorStatus2) => {
193
+ BehaviorStatus2[BehaviorStatus2["Running"] = 0] = "Running";
194
+ BehaviorStatus2[BehaviorStatus2["Success"] = 1] = "Success";
195
+ BehaviorStatus2[BehaviorStatus2["Failure"] = 2] = "Failure";
196
+ return BehaviorStatus2;
197
+ })(BehaviorStatus || {});
198
+ var OperatorType = /* @__PURE__ */ ((OperatorType2) => {
199
+ OperatorType2[OperatorType2["Unary"] = 0] = "Unary";
200
+ OperatorType2[OperatorType2["Binary"] = 1] = "Binary";
201
+ return OperatorType2;
202
+ })(OperatorType || {});
203
+ class OperatorLogicNode {
204
+ process(nodeArgs) {
205
+ const currentOperands = [];
206
+ switch (this.getOperatorType()) {
207
+ case 0:
208
+ currentOperands.unshift(nodeArgs.initState.operandStack.pop());
209
+ break;
210
+ case 1:
211
+ currentOperands.unshift(nodeArgs.initState.operandStack.pop());
212
+ currentOperands.unshift(nodeArgs.initState.operandStack.pop());
213
+ break;
214
+ default:
215
+ console.error(`Unimplemented operator type: ${this.getOperatorType()}`);
216
+ break;
217
+ }
218
+ this.doOperation(currentOperands, nodeArgs);
219
+ return {
220
+ nextState: nodeArgs.initState,
221
+ status: BehaviorStatus.Success
222
+ };
223
+ }
224
+ }
225
+ class EqualityOperator extends OperatorLogicNode {
226
+ doOperation = (currentOperands, nodeArgs) => {
227
+ nodeArgs.initState.operandStack.push(String(currentOperands[0] === currentOperands[1]));
228
+ };
229
+ getOperatorType = () => {
230
+ return OperatorType.Binary;
231
+ };
232
+ getToken = () => {
233
+ return "==";
234
+ };
235
+ }
236
+ class InequalityOperator extends OperatorLogicNode {
237
+ doOperation = (currentOperands, nodeArgs) => {
238
+ nodeArgs.initState.operandStack.push(String(currentOperands[0] !== currentOperands[1]));
239
+ };
240
+ getOperatorType = () => {
241
+ return OperatorType.Binary;
242
+ };
243
+ getToken = () => {
244
+ return "!=";
245
+ };
246
+ }
247
+ class GreaterThanOperator extends OperatorLogicNode {
248
+ doOperation = (currentOperands, nodeArgs) => {
249
+ nodeArgs.initState.operandStack.push(
250
+ String(Number(currentOperands[0]) > Number(currentOperands[1]))
251
+ );
252
+ };
253
+ getOperatorType = () => {
254
+ return OperatorType.Binary;
255
+ };
256
+ getToken = () => {
257
+ return ">";
258
+ };
259
+ }
260
+ class GreaterThanEqualOperator extends OperatorLogicNode {
261
+ doOperation = (currentOperands, nodeArgs) => {
262
+ nodeArgs.initState.operandStack.push(
263
+ String(Number(currentOperands[0]) >= Number(currentOperands[1]))
264
+ );
265
+ };
266
+ getOperatorType = () => {
267
+ return OperatorType.Binary;
268
+ };
269
+ getToken = () => {
270
+ return ">=";
271
+ };
272
+ }
273
+ class LessThanOperator extends OperatorLogicNode {
274
+ doOperation = (currentOperands, nodeArgs) => {
275
+ nodeArgs.initState.operandStack.push(
276
+ String(Number(currentOperands[0]) < Number(currentOperands[1]))
277
+ );
278
+ };
279
+ getOperatorType = () => {
280
+ return OperatorType.Binary;
281
+ };
282
+ getToken = () => {
283
+ return "<";
284
+ };
285
+ }
286
+ class LessThanEqualOperator extends OperatorLogicNode {
287
+ doOperation = (currentOperands, nodeArgs) => {
288
+ nodeArgs.initState.operandStack.push(
289
+ String(Number(currentOperands[0]) <= Number(currentOperands[1]))
290
+ );
291
+ };
292
+ getOperatorType = () => {
293
+ return OperatorType.Binary;
294
+ };
295
+ getToken = () => {
296
+ return "<=";
297
+ };
298
+ }
299
+ class BTreeUtils {
300
+ /**
301
+ * peek the top of a stack object with the assumption it's not an empty stack
302
+ * todo: add possible protection like an assertion
303
+ * @param stack
304
+ * @return top of the stack
305
+ */
306
+ peek = (stack) => {
307
+ return stack[stack.length - 1];
308
+ };
309
+ removeQuotes = (value) => {
310
+ return value.replace(/^"/, "").replace(/"$/, "");
311
+ };
312
+ simplifyToken = (oldToken) => {
313
+ if (oldToken[0] == "$") {
314
+ const value = localStorage.getItem(oldToken);
315
+ if (value) {
316
+ return value;
317
+ }
318
+ console.error(`Value obtained in local storage false: ${oldToken}`);
319
+ return "";
320
+ }
321
+ return btreeUtils.removeQuotes(oldToken);
322
+ };
323
+ isTrue = (value) => {
324
+ return value.trim().toLowerCase() === "true";
325
+ };
326
+ isFalse = (value) => {
327
+ return value.trim().toLowerCase() === "false";
328
+ };
329
+ }
330
+ const btreeUtils = new BTreeUtils();
331
+ class NegationOperator extends OperatorLogicNode {
332
+ doOperation = (currentOperands, nodeArgs) => {
333
+ nodeArgs.initState.operandStack.push(String(!btreeUtils.isTrue(currentOperands[0])));
334
+ };
335
+ getOperatorType = () => {
336
+ return OperatorType.Unary;
337
+ };
338
+ getToken = () => {
339
+ return "!";
340
+ };
341
+ }
342
+ class AndOperator extends OperatorLogicNode {
343
+ doOperation = (currentOperands, nodeArgs) => {
344
+ nodeArgs.initState.operandStack.push(
345
+ String(btreeUtils.isTrue(currentOperands[0]) && btreeUtils.isTrue(currentOperands[1]))
346
+ );
347
+ };
348
+ getOperatorType = () => {
349
+ return OperatorType.Binary;
350
+ };
351
+ getToken = () => {
352
+ return "&&";
353
+ };
354
+ }
355
+ class OrOperator extends OperatorLogicNode {
356
+ doOperation = (currentOperands, nodeArgs) => {
357
+ nodeArgs.initState.operandStack.push(
358
+ String(btreeUtils.isTrue(currentOperands[0]) || btreeUtils.isTrue(currentOperands[1]))
359
+ );
360
+ };
361
+ getOperatorType = () => {
362
+ return OperatorType.Binary;
363
+ };
364
+ getToken = () => {
365
+ return "||";
366
+ };
367
+ }
368
+ class XorOperator extends OperatorLogicNode {
369
+ doOperation = (currentOperands, nodeArgs) => {
370
+ const A = btreeUtils.isTrue(currentOperands[0]);
371
+ const B = btreeUtils.isTrue(currentOperands[1]);
372
+ nodeArgs.initState.operandStack.push(String(!(A && B || A || B)));
373
+ };
374
+ getOperatorType = () => {
375
+ return OperatorType.Binary;
376
+ };
377
+ getToken = () => {
378
+ return "^";
379
+ };
380
+ }
381
+ class AddOperator extends OperatorLogicNode {
382
+ doOperation = (currentOperands, nodeArgs) => {
383
+ nodeArgs.initState.operandStack.push(
384
+ String(Number(currentOperands[0]) + Number(currentOperands[1]))
385
+ );
386
+ };
387
+ getOperatorType = () => {
388
+ return OperatorType.Binary;
389
+ };
390
+ getToken = () => {
391
+ return "+";
392
+ };
393
+ }
394
+ class MinusOperator extends OperatorLogicNode {
395
+ doOperation = (currentOperands, nodeArgs) => {
396
+ nodeArgs.initState.operandStack.push(
397
+ String(Number(currentOperands[0]) - Number(currentOperands[1]))
398
+ );
399
+ };
400
+ getOperatorType = () => {
401
+ return OperatorType.Binary;
402
+ };
403
+ getToken = () => {
404
+ return "-";
405
+ };
406
+ }
407
+ class MultiplicationOperator extends OperatorLogicNode {
408
+ doOperation = (currentOperands, nodeArgs) => {
409
+ nodeArgs.initState.operandStack.push(
410
+ String(Number(currentOperands[0]) * Number(currentOperands[1]))
411
+ );
412
+ };
413
+ getOperatorType = () => {
414
+ return OperatorType.Binary;
415
+ };
416
+ getToken = () => {
417
+ return "*";
418
+ };
419
+ }
420
+ class DivisionOperator extends OperatorLogicNode {
421
+ doOperation = (currentOperands, nodeArgs) => {
422
+ nodeArgs.initState.operandStack.push(
423
+ String(Number(currentOperands[0]) / Number(currentOperands[1]))
424
+ );
425
+ };
426
+ getOperatorType = () => {
427
+ return OperatorType.Binary;
428
+ };
429
+ getToken = () => {
430
+ return "/";
431
+ };
432
+ }
433
+ class RemainderDivisionOperator extends OperatorLogicNode {
434
+ doOperation = (currentOperands, nodeArgs) => {
435
+ nodeArgs.initState.operandStack.push(
436
+ String(Number(currentOperands[0]) % Number(currentOperands[1]))
437
+ );
438
+ };
439
+ getOperatorType = () => {
440
+ return OperatorType.Binary;
441
+ };
442
+ getToken = () => {
443
+ return "%";
444
+ };
445
+ }
446
+ class OperatorMap {
447
+ _operatorLogicMap = /* @__PURE__ */ new Map();
448
+ constructor() {
449
+ [
450
+ new EqualityOperator(),
451
+ new InequalityOperator(),
452
+ new GreaterThanOperator(),
453
+ new GreaterThanEqualOperator(),
454
+ new LessThanOperator(),
455
+ new LessThanEqualOperator(),
456
+ new NegationOperator(),
457
+ new AndOperator(),
458
+ new OrOperator(),
459
+ new XorOperator(),
460
+ new AddOperator(),
461
+ new MinusOperator(),
462
+ new MultiplicationOperator(),
463
+ new DivisionOperator(),
464
+ new RemainderDivisionOperator()
465
+ ].forEach((operatorLogic) => {
466
+ this._operatorLogicMap.set(operatorLogic.getToken(), operatorLogic);
467
+ });
468
+ }
469
+ get = (operator) => {
470
+ return this._operatorLogicMap.get(operator);
471
+ };
472
+ exists = (operator) => {
473
+ return this.get(operator) !== void 0;
474
+ };
475
+ }
476
+ const operatorMap = new OperatorMap();
477
+ class OperatorNode {
478
+ process(nodeArgs) {
479
+ if (!operatorMap.exists(nodeArgs.token)) {
480
+ return {
481
+ nextState: nodeArgs.initState,
482
+ status: BehaviorStatus.Failure
483
+ };
484
+ }
485
+ const logic = operatorMap.get(nodeArgs.token);
486
+ if (logic === void 0) {
487
+ console.error(`Unimplemented operator: ${nodeArgs.token}`);
488
+ return {
489
+ nextState: nodeArgs.initState,
490
+ status: BehaviorStatus.Failure
491
+ };
492
+ }
493
+ logic.process(nodeArgs);
494
+ return {
495
+ nextState: nodeArgs.initState,
496
+ status: BehaviorStatus.Success
497
+ };
498
+ }
499
+ }
500
+ class OperandNode {
501
+ process(nodeArgs) {
502
+ nodeArgs.initState.operandStack.push(btreeUtils.simplifyToken(nodeArgs.token));
503
+ return {
504
+ nextState: nodeArgs.initState,
505
+ status: BehaviorStatus.Success
506
+ };
507
+ }
508
+ }
509
+ class SelectorNode {
510
+ nodeList;
511
+ constructor(nodeList) {
512
+ this.nodeList = nodeList;
513
+ }
514
+ process(nodeArgs) {
515
+ let finalResult = this.defaultResult();
516
+ for (const node of this.nodeList) {
517
+ const currentResult = node.process(nodeArgs);
518
+ if (currentResult.status !== BehaviorStatus.Failure) {
519
+ finalResult = currentResult;
520
+ break;
521
+ }
522
+ }
523
+ return finalResult;
524
+ }
525
+ }
526
+ class ExpressionSelectorNode extends SelectorNode {
527
+ constructor(nodeList) {
528
+ super(nodeList);
529
+ }
530
+ defaultResult = () => {
531
+ return {
532
+ nextState: {
533
+ operandStack: []
534
+ },
535
+ status: BehaviorStatus.Failure
536
+ };
537
+ };
538
+ }
539
+ class CommandLogicNode {
540
+ // do side effects on to the result instead
541
+ process(nodeArgs) {
542
+ const currentOperands = nodeArgs.initState.operandStack.slice(
543
+ nodeArgs.initState.operandStack.length - this.getArgumentCount(),
544
+ nodeArgs.initState.operandStack.length
545
+ );
546
+ nodeArgs.initState.operandStack = nodeArgs.initState.operandStack.slice(
547
+ 0,
548
+ nodeArgs.initState.operandStack.length - this.getArgumentCount()
549
+ );
550
+ if (currentOperands.length !== this.getArgumentCount()) {
551
+ console.error(`Insufficient operands/arguments found for command ${this.getToken()}`);
552
+ console.error(`Arguments found instead: ${currentOperands}`);
553
+ console.error(`Error occurred at token: ${nodeArgs.token}`);
554
+ } else {
555
+ this.doOperation(currentOperands, nodeArgs);
556
+ }
557
+ return {
558
+ nextState: nodeArgs.initState,
559
+ status: BehaviorStatus.Success
560
+ };
561
+ }
562
+ }
563
+ class RandomRangeCommand extends CommandLogicNode {
564
+ /**
565
+ * From: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/random#getting_a_random_integer_between_two_values
566
+ */
567
+ getRandomInt = (min, max) => {
568
+ min = Math.ceil(min);
569
+ max = Math.floor(max);
570
+ return Math.floor(Math.random() * (max - min + 1)) + min;
571
+ };
572
+ doOperation = (currentOperands, nodeArgs) => {
573
+ nodeArgs.initState.operandStack.push(
574
+ String(this.getRandomInt(Number(currentOperands[0]), Number(currentOperands[1])))
575
+ );
576
+ };
577
+ getArgumentCount = () => {
578
+ return 2;
579
+ };
580
+ getToken = () => {
581
+ return "#random_range";
582
+ };
583
+ }
584
+ class VisitedCountCommand extends CommandLogicNode {
585
+ doOperation = (currentOperands, nodeArgs) => {
586
+ const value = Number(dialogVariableStore.getItem(`+${currentOperands[0]}`));
587
+ if (isNaN(value) || value === 0) {
588
+ nodeArgs.initState.operandStack.push("0");
589
+ } else {
590
+ nodeArgs.initState.operandStack.push(String(value));
591
+ }
592
+ };
593
+ getArgumentCount = () => {
594
+ return 1;
595
+ };
596
+ getToken = () => {
597
+ return "#visited_count";
598
+ };
599
+ }
600
+ class VisitedCommand extends CommandLogicNode {
601
+ visitedCountCommand = new VisitedCountCommand();
602
+ doOperation = (currentOperands, nodeArgs) => {
603
+ this.visitedCountCommand.process(nodeArgs);
604
+ const value = Number(nodeArgs.initState.operandStack.pop());
605
+ if (isNaN(value) || value === 0) {
606
+ nodeArgs.initState.operandStack.push("false");
607
+ } else {
608
+ nodeArgs.initState.operandStack.push("true");
609
+ }
610
+ };
611
+ getArgumentCount = () => {
612
+ return 0;
613
+ };
614
+ getToken = () => {
615
+ return "#visited";
616
+ };
617
+ }
618
+ class CommandMap {
619
+ _commandMap = /* @__PURE__ */ new Map();
620
+ constructor() {
621
+ [new RandomRangeCommand(), new VisitedCountCommand(), new VisitedCommand()].forEach(
622
+ (commandLogic) => {
623
+ this._commandMap.set(commandLogic.getToken(), commandLogic);
624
+ }
625
+ );
626
+ }
627
+ get = (command) => {
628
+ return this._commandMap.get(command);
629
+ };
630
+ exists = (command) => {
631
+ return this.get(command) !== void 0;
632
+ };
633
+ }
634
+ const commandMap = new CommandMap();
635
+ class CommandExpressionNode {
636
+ process(nodeArgs) {
637
+ const commandNode = commandMap.get(nodeArgs.token);
638
+ if (commandNode === void 0) {
639
+ if (nodeArgs.token.startsWith("#")) {
640
+ console.error(`Unimplemented command: ${nodeArgs.token}`);
641
+ }
642
+ return {
643
+ nextState: nodeArgs.initState,
644
+ status: BehaviorStatus.Failure
645
+ };
646
+ }
647
+ commandNode.process(nodeArgs);
648
+ return {
649
+ nextState: nodeArgs.initState,
650
+ status: BehaviorStatus.Success
651
+ };
652
+ }
653
+ }
654
+ class ExpressionEvaluator {
655
+ evaluatorTree = new ExpressionSelectorNode([
656
+ new OperatorNode(),
657
+ new CommandExpressionNode(),
658
+ new OperandNode()
659
+ ]);
660
+ // from https://stackoverflow.com/a/175787/17836168
661
+ isNumeric = (str) => {
662
+ return (
663
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
664
+ // @ts-ignore
665
+ !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
666
+ !isNaN(parseFloat(str))
667
+ );
668
+ };
669
+ getPrecedence = (token) => {
670
+ switch (token) {
671
+ case "&&":
672
+ case "||":
673
+ case "^":
674
+ return 1;
675
+ case "==":
676
+ case "!=":
677
+ return 2;
678
+ case "<":
679
+ case ">":
680
+ case ">=":
681
+ case "<=":
682
+ return 3;
683
+ case "+":
684
+ case "-":
685
+ return 4;
686
+ case "*":
687
+ case "/":
688
+ case "%":
689
+ return 3;
690
+ case "!":
691
+ return 4;
692
+ case "(":
693
+ case ")":
694
+ return 0;
695
+ default:
696
+ return -1;
697
+ }
698
+ };
699
+ evaluateFreeform = (line, prefix) => {
700
+ {
701
+ return [];
702
+ }
703
+ };
704
+ /**
705
+ * evaluates a yarn if or elseif statement
706
+ * @param line is the current line being evaluated
707
+ * @param prefix is either "<<if" or "<<elseif"
708
+ */
709
+ evaluate = (line, prefix) => {
710
+ {
711
+ return false;
712
+ }
713
+ };
714
+ }
715
+ const expressionEvaluator = new ExpressionEvaluator();
716
+ class IfNode {
717
+ process(nodeArgs) {
718
+ if (!nodeArgs.line.startsWith("<<if")) {
719
+ return {
720
+ renderedLine: "",
721
+ nextState: nodeArgs.initState,
722
+ status: BehaviorStatus.Failure
723
+ };
724
+ }
725
+ const currentIfMode = btreeUtils.peek(nodeArgs.initState.ifModeStack);
726
+ if ([IfMode.EvaluateNext, IfMode.Ignore].includes(currentIfMode)) {
727
+ console.log("Skipping if node because");
728
+ nodeArgs.initState.ifModeStack.push(IfMode.Ignore);
729
+ return {
730
+ renderedLine: "",
731
+ nextState: nodeArgs.initState,
732
+ status: BehaviorStatus.Success
733
+ };
734
+ }
735
+ if (expressionEvaluator.evaluate(nodeArgs.line, "<<if")) {
736
+ nodeArgs.initState.ifModeStack.push(IfMode.Evaluated);
737
+ } else {
738
+ nodeArgs.initState.ifModeStack.push(IfMode.EvaluateNext);
739
+ }
740
+ return {
741
+ renderedLine: "",
742
+ nextState: nodeArgs.initState,
743
+ status: BehaviorStatus.Success
744
+ };
745
+ }
746
+ }
747
+ class EndIfNode {
748
+ process(nodeArgs) {
749
+ if (!nodeArgs.line.startsWith("<<endif>>")) {
750
+ return {
751
+ nextState: nodeArgs.initState,
752
+ renderedLine: "",
753
+ status: BehaviorStatus.Failure
754
+ };
755
+ }
756
+ nodeArgs.initState.ifModeStack.pop();
757
+ return {
758
+ nextState: nodeArgs.initState,
759
+ renderedLine: "",
760
+ status: BehaviorStatus.Success
761
+ };
762
+ }
763
+ }
764
+ class ElseNode {
765
+ process(nodeArgs) {
766
+ if (!nodeArgs.line.startsWith("<<else>>")) {
767
+ return {
768
+ nextState: nodeArgs.initState,
769
+ renderedLine: "",
770
+ status: BehaviorStatus.Failure
771
+ };
772
+ }
773
+ const currentIfMode = btreeUtils.peek(nodeArgs.initState.ifModeStack);
774
+ switch (currentIfMode) {
775
+ case IfMode.Search:
776
+ console.error("Syntax error found in yarn dialog!");
777
+ console.error(`Check out line ${nodeArgs.lineIndex + 1}: ${nodeArgs.line}`);
778
+ break;
779
+ case IfMode.Ignore:
780
+ break;
781
+ case IfMode.Evaluated:
782
+ nodeArgs.initState.ifModeStack.pop();
783
+ nodeArgs.initState.ifModeStack.push(IfMode.Ignore);
784
+ break;
785
+ case IfMode.EvaluateNext:
786
+ nodeArgs.initState.ifModeStack.pop();
787
+ nodeArgs.initState.ifModeStack.push(IfMode.Evaluated);
788
+ break;
789
+ default:
790
+ console.error("Unimplemented if state!");
791
+ console.error(`Check out line ${nodeArgs.lineIndex + 1}: ${nodeArgs.line}`);
792
+ break;
793
+ }
794
+ return {
795
+ nextState: nodeArgs.initState,
796
+ renderedLine: "",
797
+ status: BehaviorStatus.Success
798
+ };
799
+ }
800
+ }
801
+ class ElseIfNode {
802
+ process(nodeArgs) {
803
+ if (!nodeArgs.line.startsWith("<<elseif")) {
804
+ return {
805
+ nextState: nodeArgs.initState,
806
+ renderedLine: "",
807
+ status: BehaviorStatus.Failure
808
+ };
809
+ }
810
+ const currentIfMode = btreeUtils.peek(nodeArgs.initState.ifModeStack);
811
+ switch (currentIfMode) {
812
+ case IfMode.Search:
813
+ console.error("Syntax error found in yarn dialog!");
814
+ console.error(`Check out line ${nodeArgs.lineIndex + 1}: ${nodeArgs.line}`);
815
+ break;
816
+ case IfMode.Ignore:
817
+ break;
818
+ case IfMode.Evaluated:
819
+ nodeArgs.initState.ifModeStack.pop();
820
+ nodeArgs.initState.ifModeStack.push(IfMode.Ignore);
821
+ break;
822
+ case IfMode.EvaluateNext:
823
+ if (expressionEvaluator.evaluate(nodeArgs.line, "<<elseif")) {
824
+ nodeArgs.initState.ifModeStack.pop();
825
+ nodeArgs.initState.ifModeStack.push(IfMode.Evaluated);
826
+ }
827
+ break;
828
+ default:
829
+ console.error("Unimplemented if state!");
830
+ console.error(`Check out line ${nodeArgs.lineIndex + 1}: ${nodeArgs.line}`);
831
+ break;
832
+ }
833
+ return {
834
+ nextState: nodeArgs.initState,
835
+ renderedLine: "",
836
+ status: BehaviorStatus.Success
837
+ };
838
+ }
839
+ }
840
+ class SetVariableNode {
841
+ process(nodeArgs) {
842
+ if (!nodeArgs.line.startsWith("<<set")) {
843
+ return {
844
+ nextState: nodeArgs.initState,
845
+ renderedLine: "",
846
+ status: BehaviorStatus.Failure
847
+ };
848
+ }
849
+ const setValuePair = nodeArgs.line.split("=");
850
+ const key = setValuePair[0].slice("<<set ".length).trim();
851
+ setValuePair.shift();
852
+ const preValue = setValuePair.join("=").trim();
853
+ const value = expressionEvaluator.evaluateFreeform(preValue, "");
854
+ dialogVariableStore.setItem(key, btreeUtils.peek(value));
855
+ return {
856
+ nextState: nodeArgs.initState,
857
+ renderedLine: "",
858
+ status: BehaviorStatus.Success
859
+ };
860
+ }
861
+ }
862
+ class IgnoreGuardNode {
863
+ process(nodeArgs) {
864
+ const currentIfMode = btreeUtils.peek(nodeArgs.initState.ifModeStack);
865
+ if ([IfMode.Ignore, IfMode.EvaluateNext].includes(currentIfMode)) {
866
+ return {
867
+ nextState: nodeArgs.initState,
868
+ renderedLine: "",
869
+ status: BehaviorStatus.Success
870
+ };
871
+ }
872
+ return {
873
+ nextState: nodeArgs.initState,
874
+ renderedLine: "",
875
+ status: BehaviorStatus.Failure
876
+ };
877
+ }
878
+ }
879
+ class NormalLineProcessorNode {
880
+ process(nodeArgs) {
881
+ const renderedLine = nodeArgs.line.split("{$").map((token, index) => {
882
+ if (index == 0) {
883
+ return token;
884
+ }
885
+ return token.split("}").map((varToken, index2) => {
886
+ if (index2 == 0 && browser) {
887
+ const varValue = localStorage.getItem(`$${varToken}`);
888
+ if (varValue !== null) {
889
+ return varValue;
890
+ }
891
+ console.warn(
892
+ `Null variable in yarn: ${varToken}. Make sure that all variables were set before using them.`
893
+ );
894
+ }
895
+ return varToken;
896
+ }).join("");
897
+ }).join("");
898
+ return {
899
+ nextState: nodeArgs.initState,
900
+ renderedLine,
901
+ status: BehaviorStatus.Success
902
+ };
903
+ }
904
+ }
905
+ class LineSelectorNode extends SelectorNode {
906
+ constructor(nodeList) {
907
+ super(nodeList);
908
+ }
909
+ defaultResult = () => {
910
+ return {
911
+ nextState: new BehaviorState(),
912
+ renderedLine: "",
913
+ status: BehaviorStatus.Failure
914
+ };
915
+ };
916
+ }
917
+ class LineCommentNode {
918
+ process(nodeArgs) {
919
+ if (!nodeArgs.line.startsWith("//")) {
920
+ return {
921
+ renderedLine: "",
922
+ nextState: nodeArgs.initState,
923
+ status: BehaviorStatus.Failure
924
+ };
925
+ }
926
+ return {
927
+ renderedLine: "",
928
+ nextState: nodeArgs.initState,
929
+ status: BehaviorStatus.Success
930
+ };
931
+ }
932
+ }
933
+ class DeclareCommand {
934
+ setVariableNode = new SetVariableNode();
935
+ process(nodeArgs) {
936
+ if (!nodeArgs.line.startsWith("<<declare")) {
937
+ return {
938
+ renderedLine: "",
939
+ nextState: nodeArgs.initState,
940
+ status: BehaviorStatus.Failure
941
+ };
942
+ }
943
+ const setValuePair = nodeArgs.line.split("=");
944
+ const key = setValuePair[0].slice("<<declare ".length).trim();
945
+ if (localStorage.getItem(key) !== null) {
946
+ return {
947
+ renderedLine: "",
948
+ nextState: nodeArgs.initState,
949
+ status: BehaviorStatus.Success
950
+ };
951
+ }
952
+ setValuePair.shift();
953
+ const preValue = setValuePair.join("=").split(" as ");
954
+ preValue.pop();
955
+ const value = preValue.join(" as ");
956
+ const result = this.setVariableNode.process({
957
+ initState: nodeArgs.initState,
958
+ line: `<<set ${key} = ${value}>>`,
959
+ // faking the line lol
960
+ lineIndex: nodeArgs.lineIndex
961
+ });
962
+ return {
963
+ nextState: result.nextState,
964
+ renderedLine: "",
965
+ status: BehaviorStatus.Success
966
+ };
967
+ }
968
+ }
969
+ class JumpCommand {
970
+ setVariableNode = new SetVariableNode();
971
+ process(nodeArgs) {
972
+ if (!nodeArgs.line.startsWith("<<jump")) {
973
+ return {
974
+ renderedLine: "",
975
+ nextState: nodeArgs.initState,
976
+ status: BehaviorStatus.Failure
977
+ };
978
+ }
979
+ if (nodeArgs.initState.ignoreJumps) {
980
+ return {
981
+ nextState: nodeArgs.initState,
982
+ renderedLine: "",
983
+ status: BehaviorStatus.Success
984
+ };
985
+ }
986
+ const choiceName = nodeArgs.line.slice("<<jump ".length, nodeArgs.line.length - ">>".length).replace(/^\{/, "").replace(/}$/, "");
987
+ const dialogChoice = dialogManager.dialogMessageMap.get(btreeUtils.simplifyToken(choiceName));
988
+ if (dialogChoice !== void 0) {
989
+ dialogManager.setDialogChoice(dialogChoice);
990
+ } else {
991
+ console.error(
992
+ `Unknown jump node at line ${nodeArgs.lineIndex + 1}: ${choiceName} or ${btreeUtils.simplifyToken(choiceName)}`
993
+ );
994
+ }
995
+ return {
996
+ nextState: nodeArgs.initState,
997
+ renderedLine: "",
998
+ status: BehaviorStatus.Success
999
+ };
1000
+ }
1001
+ }
1002
+ class IgnoreJumpNode {
1003
+ process(nodeArgs) {
1004
+ if (!nodeArgs.line.startsWith("// ignore jumps")) {
1005
+ return {
1006
+ renderedLine: "",
1007
+ nextState: nodeArgs.initState,
1008
+ status: BehaviorStatus.Failure
1009
+ };
1010
+ }
1011
+ nodeArgs.initState.ignoreJumps = true;
1012
+ return {
1013
+ renderedLine: "",
1014
+ nextState: nodeArgs.initState,
1015
+ status: BehaviorStatus.Success
1016
+ };
1017
+ }
1018
+ }
1019
+ class UnvisitCommand {
1020
+ process(nodeArgs) {
1021
+ if (!nodeArgs.line.startsWith("<<unvisit") || !browser) {
1022
+ return {
1023
+ renderedLine: "",
1024
+ nextState: nodeArgs.initState,
1025
+ status: BehaviorStatus.Failure
1026
+ };
1027
+ }
1028
+ const nodeName = nodeArgs.line.slice("<<unvisit ".length, nodeArgs.line.length - ">>".length).replace(/^\{/, "").replace(/}$/, "");
1029
+ const key = `+${nodeName}`;
1030
+ dialogVariableStore.removeItem(key);
1031
+ return {
1032
+ nextState: nodeArgs.initState,
1033
+ renderedLine: "",
1034
+ status: BehaviorStatus.Success
1035
+ };
1036
+ }
1037
+ }
1038
+ class DialogProcessor {
1039
+ processingTree = new LineSelectorNode([
1040
+ /*region comment based formats*/
1041
+ new IgnoreJumpNode(),
1042
+ // must be prioritized above line comment node
1043
+ new LineCommentNode(),
1044
+ /*endregion commend based formats*/
1045
+ new EndIfNode(),
1046
+ new ElseIfNode(),
1047
+ new ElseNode(),
1048
+ new IfNode(),
1049
+ new IgnoreGuardNode(),
1050
+ /*region commands*/
1051
+ new SetVariableNode(),
1052
+ new DeclareCommand(),
1053
+ new JumpCommand(),
1054
+ new UnvisitCommand(),
1055
+ /*endregion commands*/
1056
+ new NormalLineProcessorNode()
1057
+ ]);
1058
+ /**
1059
+ * process the dialog line by line and return a presentable string
1060
+ * @param dialogDetail
1061
+ */
1062
+ processDialog = (dialogDetail) => {
1063
+ {
1064
+ return "";
1065
+ }
1066
+ };
1067
+ }
1068
+ const parseYarn = async (fileContent) => {
1069
+ const dialogDetailList = [];
1070
+ fileContent.split("===").map((unparsedNode) => {
1071
+ if (unparsedNode.trim() === "") {
1072
+ return;
1073
+ }
1074
+ const dialogDetails = {
1075
+ // todo: dissect the line below and give comments because it is complex
1076
+ dialogId: unparsedNode.slice(unparsedNode.indexOf("title: ")).split("\n")[0].split(" ").pop()?.trim(),
1077
+ portraitType: PortraitType.AresNeutral,
1078
+ textContent: ""
1079
+ // will be filled later below
1080
+ };
1081
+ let portraitUnset = true;
1082
+ const unparsedBody = unparsedNode.split("---").pop().trim();
1083
+ const bodyList = unparsedBody.split("\n");
1084
+ let contentIndexStart = 0;
1085
+ for (let index = 0; index < bodyList.length; index++) {
1086
+ const possibleTagPair = bodyList[index].split(": ");
1087
+ const possibleTagName = possibleTagPair[0].toLowerCase();
1088
+ if (!["portrait"].includes(possibleTagName)) {
1089
+ break;
1090
+ }
1091
+ contentIndexStart = index + 1;
1092
+ switch (possibleTagName) {
1093
+ case "portrait":
1094
+ portraitUnset = false;
1095
+ dialogDetails.portraitType = PortraitType[possibleTagPair[1].trim()];
1096
+ break;
1097
+ }
1098
+ }
1099
+ if (portraitUnset) {
1100
+ console.warn(`Portrait missing for node: ${dialogDetails.dialogId}`);
1101
+ dialogDetails.portraitType = PortraitType.AresNeutral;
1102
+ }
1103
+ const unprocessedContent = bodyList.slice(contentIndexStart).join("\n");
1104
+ const contentPair = unprocessedContent.split("<ChoiceBreak>");
1105
+ if (contentPair.length === 2) {
1106
+ let ChoiceParsingState;
1107
+ ((ChoiceParsingState2) => {
1108
+ ChoiceParsingState2[ChoiceParsingState2["Free"] = 0] = "Free";
1109
+ ChoiceParsingState2[ChoiceParsingState2["Line"] = 1] = "Line";
1110
+ })(ChoiceParsingState || (ChoiceParsingState = {}));
1111
+ let parsingState = 0;
1112
+ const currentChoiceDetail = { jumpNode: "", name: "" };
1113
+ const choiceList = [];
1114
+ let shouldSkipChoices = false;
1115
+ const checkChoiceForSave = () => {
1116
+ if (currentChoiceDetail.name !== "") {
1117
+ choiceList.push({
1118
+ name: currentChoiceDetail.name,
1119
+ jumpNode: currentChoiceDetail.jumpNode
1120
+ });
1121
+ }
1122
+ };
1123
+ contentPair[1].trim().split("\n").filter((line) => {
1124
+ const trimmedLine = line.trim();
1125
+ if (shouldSkipChoices) {
1126
+ return false;
1127
+ }
1128
+ if (trimmedLine.startsWith("// ignore the rest")) {
1129
+ shouldSkipChoices = true;
1130
+ return false;
1131
+ }
1132
+ return true;
1133
+ }).map((line) => {
1134
+ const trimmedLine = line.trim();
1135
+ switch (parsingState) {
1136
+ case 0:
1137
+ if (trimmedLine.startsWith("->")) {
1138
+ checkChoiceForSave();
1139
+ currentChoiceDetail.name = trimmedLine.split(" ").pop();
1140
+ parsingState = 1;
1141
+ }
1142
+ break;
1143
+ case 1:
1144
+ if (trimmedLine.startsWith("<<jump")) {
1145
+ const jumpNode = trimmedLine.split(" ").pop();
1146
+ currentChoiceDetail.jumpNode = jumpNode.slice(0, jumpNode.length - 2);
1147
+ parsingState = 0;
1148
+ }
1149
+ break;
1150
+ default:
1151
+ console.error(`Unimplemented parsing state: ${parsingState}`);
1152
+ break;
1153
+ }
1154
+ });
1155
+ checkChoiceForSave();
1156
+ dialogDetails.textContent = contentPair[0];
1157
+ choiceList.forEach((choiceDetail) => {
1158
+ const keyword = `<choice ${choiceDetail.name}>`;
1159
+ while (dialogDetails.textContent.includes(keyword)) {
1160
+ dialogDetails.textContent = dialogDetails.textContent.replace(
1161
+ keyword,
1162
+ `<a class="choice-${choiceDetail.jumpNode} dialog-choice" title="Click to continue the dialog">`
1163
+ );
1164
+ }
1165
+ });
1166
+ const externalKeyword = "<a href=";
1167
+ while (dialogDetails.textContent.includes(externalKeyword)) {
1168
+ dialogDetails.textContent = dialogDetails.textContent.replace(
1169
+ externalKeyword,
1170
+ '<a target="_blank" class="external-link" href='
1171
+ );
1172
+ }
1173
+ const choiceEndKeyword = "</choice>";
1174
+ while (dialogDetails.textContent.includes(choiceEndKeyword)) {
1175
+ dialogDetails.textContent = dialogDetails.textContent.replace(choiceEndKeyword, "</a>");
1176
+ }
1177
+ } else {
1178
+ dialogDetails.textContent = unprocessedContent;
1179
+ }
1180
+ dialogDetailList.push(dialogDetails);
1181
+ });
1182
+ return dialogDetailList;
1183
+ };
1184
+ class DialogManager {
1185
+ dialogMessageMap = /* @__PURE__ */ new Map();
1186
+ currentDialogTree = [];
1187
+ fullCurrentMessage = defaultDialogMessage[0].textContent;
1188
+ currentMessageMeta = defaultDialogMessage[0];
1189
+ currentMessage = writable("");
1190
+ currentIndex = 0;
1191
+ previousTimestamp = 0;
1192
+ isDoneTransition = false;
1193
+ currentPortrait = writable();
1194
+ portraitMap = /* @__PURE__ */ new Map();
1195
+ currentState = DialogState.Visible;
1196
+ currentReadableState = writable(this.currentState);
1197
+ hidePercent = tweened(100, {
1198
+ duration: 400,
1199
+ easing: backOut
1200
+ });
1201
+ // 100 = 100%
1202
+ skipNextActiveTime = 0;
1203
+ dialogProcessor = new DialogProcessor();
1204
+ // for queueing actions
1205
+ _setDialogChoiceQueue = [];
1206
+ _setDialogChoiceMutex = false;
1207
+ onSetDialogListeners = [];
1208
+ enableDialogueOverlayCache = false;
1209
+ constructor() {
1210
+ enableDialogueOverlay.subscribe((value) => {
1211
+ this.enableDialogueOverlayCache = value;
1212
+ if (value) {
1213
+ this.hidePercent.set(0).then(() => {
1214
+ this.currentState = DialogState.Visible;
1215
+ this.currentReadableState.set(this.currentState);
1216
+ });
1217
+ } else {
1218
+ this.hidePercent.set(100).then(() => {
1219
+ this.currentState = DialogState.Invisible;
1220
+ this.currentReadableState.set(this.currentState);
1221
+ });
1222
+ this.setDialogTree([{ textContent: "" }]);
1223
+ }
1224
+ });
1225
+ }
1226
+ /**
1227
+ * when users interact with the dialog, they can skip the transition like in a game
1228
+ * note that there is a cool down to this, check out skipNextActiveTime
1229
+ */
1230
+ skipAnimation = () => {
1231
+ if (this.previousTimestamp > this.skipNextActiveTime && this.currentState == DialogState.Visible && !this.isDoneTransition) {
1232
+ this.currentIndex = this.fullCurrentMessage.length - 1;
1233
+ this.currentMessage.update(() => this.fullCurrentMessage.slice(0, this.currentIndex));
1234
+ }
1235
+ };
1236
+ /**
1237
+ * hides or shows the dialog UI
1238
+ * @param shouldEnable
1239
+ */
1240
+ enableDialog = (shouldEnable) => {
1241
+ enableDialogueOverlay.update(() => shouldEnable);
1242
+ };
1243
+ /**
1244
+ * sets the possible dialog that might appear on the Dialog UI
1245
+ * note that it overwrites the previous tree and does not append on it due to the possibility
1246
+ * of node name conflicts
1247
+ * @param newDialogTree
1248
+ */
1249
+ setDialogTree = (newDialogTree) => {
1250
+ this.currentDialogTree = newDialogTree;
1251
+ this.dialogMessageMap.clear();
1252
+ newDialogTree.map((value) => {
1253
+ if (value.dialogId) {
1254
+ this.dialogMessageMap.set(value.dialogId, value);
1255
+ }
1256
+ });
1257
+ if (this.portraitMap.size == 0) {
1258
+ this.portraitMap.set(PortraitType.AresHappy.toString(), AresHappy);
1259
+ this.portraitMap.set(PortraitType.AresBlushing.toString(), AresBlushing);
1260
+ this.portraitMap.set(PortraitType.AresDisappointed.toString(), AresDisappointed);
1261
+ this.portraitMap.set(PortraitType.AresLetsGo.toString(), AresLetsGo);
1262
+ this.portraitMap.set(PortraitType.AresMad.toString(), AresMad);
1263
+ this.portraitMap.set(PortraitType.AresNeutral.toString(), AresNeutral);
1264
+ this.portraitMap.set(PortraitType.AresSlightlyMad.toString(), AresSlightlyMad);
1265
+ this.portraitMap.set(PortraitType.AresSurprised.toString(), AresSurprised);
1266
+ this.portraitMap.set(PortraitType.AresYay.toString(), TestImage);
1267
+ }
1268
+ this.setDialogChoice(newDialogTree[0]);
1269
+ };
1270
+ /**
1271
+ * Remember to call this before SetDialogTree
1272
+ * and unsubscribe during onDestroy
1273
+ * @param callback
1274
+ */
1275
+ subscribeToSetDialogChoice = (callback) => {
1276
+ this.onSetDialogListeners.push(callback);
1277
+ };
1278
+ /**
1279
+ * Remember to call this during onDestroy
1280
+ * @param callback
1281
+ * todo: double check if this works???
1282
+ */
1283
+ unsubscribeToSetDialogChoice = (callback) => {
1284
+ const index = this.onSetDialogListeners.indexOf(callback);
1285
+ if (index > -1) {
1286
+ this.onSetDialogListeners.splice(index, 1);
1287
+ }
1288
+ };
1289
+ /**
1290
+ * Sets the next dialog to show depending on which special choice a href link the user
1291
+ * has interacted with
1292
+ * @param newMessage
1293
+ *
1294
+ * you can listen to this!
1295
+ */
1296
+ setDialogChoice = (newMessage) => {
1297
+ if (!newMessage || !newMessage.textContent) {
1298
+ return;
1299
+ }
1300
+ this._setDialogChoiceQueue.push(newMessage);
1301
+ if (!this._setDialogChoiceMutex) {
1302
+ this._setDialogChoiceMutex = true;
1303
+ this._setDialogChoice();
1304
+ }
1305
+ };
1306
+ _setDialogChoice = () => {
1307
+ const newMessage = this._setDialogChoiceQueue.shift();
1308
+ if (newMessage === void 0) {
1309
+ this._setDialogChoiceMutex = false;
1310
+ this.onSetDialogListeners.forEach((listener) => {
1311
+ listener(this.currentMessageMeta);
1312
+ });
1313
+ return;
1314
+ }
1315
+ this.currentMessageMeta = newMessage;
1316
+ let portraitValue = AresHappy;
1317
+ if (this.currentMessageMeta.portraitType) {
1318
+ portraitValue = this.portraitMap.get(this.currentMessageMeta.portraitType);
1319
+ }
1320
+ if (portraitValue) {
1321
+ this.currentPortrait.update(() => portraitValue);
1322
+ }
1323
+ this.fullCurrentMessage = this.dialogProcessor.processDialog(this.currentMessageMeta);
1324
+ this.currentMessage.update(() => "");
1325
+ this.currentIndex = 0;
1326
+ this.skipNextActiveTime = this.previousTimestamp + 1e3;
1327
+ this.isDoneTransition = false;
1328
+ if (this.currentMessageMeta.dialogId) {
1329
+ const key = `+${this.currentMessageMeta.dialogId}`;
1330
+ const value = Number(dialogVariableStore.getItem(key));
1331
+ if (isNaN(value)) {
1332
+ dialogVariableStore.setItem(key, "1");
1333
+ } else {
1334
+ dialogVariableStore.setItem(key, `${value + 1}`);
1335
+ }
1336
+ }
1337
+ this._setDialogChoice();
1338
+ };
1339
+ setDialogToDefault = () => {
1340
+ this.setDialogTree(defaultDialogMessage);
1341
+ };
1342
+ /**
1343
+ * updates the information and detail frame by frame
1344
+ * you can think of this like the main game loop
1345
+ *
1346
+ * @param timestamp
1347
+ *
1348
+ * todo: this might be too big we might want to refactor this method for better readability
1349
+ * ISSUE #81 https://github.com/TurnipXenon/pineapple/issues/81
1350
+ */
1351
+ update = (timestamp) => {
1352
+ if (this.currentState == DialogState.Invisible || this.currentState == DialogState.Busy) {
1353
+ window.requestAnimationFrame(this.update);
1354
+ return;
1355
+ }
1356
+ if (!this.isDoneTransition && this.currentIndex > this.fullCurrentMessage.length) {
1357
+ const elementList = document.getElementsByClassName("dialog-choice");
1358
+ for (const el of elementList) {
1359
+ el.addEventListener("click", (event) => {
1360
+ const choice = el.classList[0].split("-")[1];
1361
+ this.setDialogChoice(this.dialogMessageMap.get(choice));
1362
+ });
1363
+ }
1364
+ this.isDoneTransition = true;
1365
+ }
1366
+ if (this.currentIndex > this.fullCurrentMessage.length || this.previousTimestamp + updateRate > timestamp) {
1367
+ window.requestAnimationFrame(this.update);
1368
+ return;
1369
+ }
1370
+ this.previousTimestamp = timestamp;
1371
+ while (this.fullCurrentMessage[this.currentIndex] == "<" && this.currentIndex + 1 < this.fullCurrentMessage.length) {
1372
+ this.currentIndex = this.fullCurrentMessage.indexOf(">", this.currentIndex) + 1;
1373
+ this.currentIndex = Math.min(this.currentIndex, this.fullCurrentMessage.length - 1);
1374
+ }
1375
+ this.currentMessage.update(() => this.fullCurrentMessage.slice(0, this.currentIndex));
1376
+ ++this.currentIndex;
1377
+ window.requestAnimationFrame(this.update);
1378
+ };
1379
+ enableDialogOverlay(enable) {
1380
+ enableDialogueOverlay.set(enable);
1381
+ }
1382
+ toggleDialogOverlay() {
1383
+ enableDialogueOverlay.set(!this.enableDialogueOverlayCache);
1384
+ }
1385
+ async parseAndSetDialogTree(dialogYarn) {
1386
+ return parseYarn(dialogYarn).then((dialogTree) => {
1387
+ console.log(dialogTree);
1388
+ this.setDialogTree(dialogTree);
1389
+ return dialogTree;
1390
+ });
1391
+ }
1392
+ }
1393
+ const enableDialogueOverlay = writable(true);
1394
+ const dialogVariableStore = createNewMapStore();
1395
+ const updateRate = 40 / 1e3;
1396
+ const defaultDialogMessage = [
1397
+ {
1398
+ textContent: `<p>I don't really have anything to say. Have you drank water? Or perhaps, you've checked out <a target="_blank" class="external-link" href="http://crouton.net">one of the best webpages</a> out there?`
1399
+ }
1400
+ ];
1401
+ const dialogManager = new DialogManager();
1402
+ export {
1403
+ AresHappy as A,
1404
+ PortraitType as P,
1405
+ TestImage as T,
1406
+ dialogManager as d,
1407
+ enableDialogueOverlay as e,
1408
+ is_date as i,
1409
+ loop as l,
1410
+ now as n,
1411
+ tweened as t
1412
+ };