@mostfeatured/dbi 0.1.47 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/dist/src/DBI.d.ts.map +1 -0
  2. package/dist/src/DBI.js.map +1 -0
  3. package/dist/src/Events.d.ts.map +1 -0
  4. package/dist/src/Events.js.map +1 -0
  5. package/dist/src/index.d.ts.map +1 -0
  6. package/dist/src/index.js.map +1 -0
  7. package/dist/src/methods/handleMessageCommands.d.ts.map +1 -0
  8. package/dist/src/methods/handleMessageCommands.js.map +1 -0
  9. package/dist/src/methods/hookEventListeners.d.ts.map +1 -0
  10. package/dist/src/methods/hookEventListeners.js.map +1 -0
  11. package/dist/src/methods/hookInteractionListeners.d.ts.map +1 -0
  12. package/dist/{methods → src/methods}/hookInteractionListeners.js +22 -12
  13. package/dist/src/methods/hookInteractionListeners.js.map +1 -0
  14. package/dist/src/methods/publishInteractions.d.ts.map +1 -0
  15. package/dist/src/methods/publishInteractions.js.map +1 -0
  16. package/dist/src/types/ApplicationRoleConnectionMetadata.d.ts.map +1 -0
  17. package/dist/src/types/ApplicationRoleConnectionMetadata.js.map +1 -0
  18. package/dist/src/types/Builders/ButtonBuilder.d.ts.map +1 -0
  19. package/dist/src/types/Builders/ButtonBuilder.js.map +1 -0
  20. package/dist/src/types/Builders/ChannelSelectMenuBuilder.d.ts.map +1 -0
  21. package/dist/src/types/Builders/ChannelSelectMenuBuilder.js.map +1 -0
  22. package/dist/src/types/Builders/MentionableSelectMenuBuilder.d.ts.map +1 -0
  23. package/dist/src/types/Builders/MentionableSelectMenuBuilder.js.map +1 -0
  24. package/dist/src/types/Builders/ModalBuilder.d.ts.map +1 -0
  25. package/dist/src/types/Builders/ModalBuilder.js.map +1 -0
  26. package/dist/src/types/Builders/RoleSelectMenuBuilder.d.ts.map +1 -0
  27. package/dist/src/types/Builders/RoleSelectMenuBuilder.js.map +1 -0
  28. package/dist/src/types/Builders/StringSelectMenuBuilder.d.ts.map +1 -0
  29. package/dist/src/types/Builders/StringSelectMenuBuilder.js.map +1 -0
  30. package/dist/src/types/Builders/UserSelectMenuBuilder.d.ts.map +1 -0
  31. package/dist/src/types/Builders/UserSelectMenuBuilder.js.map +1 -0
  32. package/dist/src/types/ChatInput/ChatInput.d.ts.map +1 -0
  33. package/dist/src/types/ChatInput/ChatInput.js.map +1 -0
  34. package/dist/{types → src/types}/ChatInput/ChatInputOptions.d.ts +2 -2
  35. package/dist/src/types/ChatInput/ChatInputOptions.d.ts.map +1 -0
  36. package/dist/src/types/ChatInput/ChatInputOptions.js.map +1 -0
  37. package/dist/src/types/Components/Button.d.ts.map +1 -0
  38. package/dist/src/types/Components/Button.js.map +1 -0
  39. package/dist/src/types/Components/ChannelSelectMenu.d.ts.map +1 -0
  40. package/dist/src/types/Components/ChannelSelectMenu.js.map +1 -0
  41. package/dist/src/types/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.d.ts.map +1 -0
  42. package/dist/src/types/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.js.map +1 -0
  43. package/dist/src/types/Components/HTMLComponentsV2/index.d.ts +91 -0
  44. package/dist/src/types/Components/HTMLComponentsV2/index.d.ts.map +1 -0
  45. package/dist/src/types/Components/HTMLComponentsV2/index.js +300 -0
  46. package/dist/src/types/Components/HTMLComponentsV2/index.js.map +1 -0
  47. package/dist/src/types/Components/HTMLComponentsV2/parser.d.ts.map +1 -0
  48. package/dist/{types → src/types}/Components/HTMLComponentsV2/parser.js +11 -4
  49. package/dist/src/types/Components/HTMLComponentsV2/parser.js.map +1 -0
  50. package/dist/src/types/Components/HTMLComponentsV2/svelteParser.d.ts +35 -0
  51. package/dist/src/types/Components/HTMLComponentsV2/svelteParser.d.ts.map +1 -0
  52. package/dist/src/types/Components/HTMLComponentsV2/svelteParser.js +822 -0
  53. package/dist/src/types/Components/HTMLComponentsV2/svelteParser.js.map +1 -0
  54. package/dist/src/types/Components/HTMLComponentsV2/svelteRenderer.d.ts +24 -0
  55. package/dist/src/types/Components/HTMLComponentsV2/svelteRenderer.d.ts.map +1 -0
  56. package/dist/src/types/Components/HTMLComponentsV2/svelteRenderer.js +294 -0
  57. package/dist/src/types/Components/HTMLComponentsV2/svelteRenderer.js.map +1 -0
  58. package/dist/src/types/Components/MentionableSelectMenu.d.ts.map +1 -0
  59. package/dist/src/types/Components/MentionableSelectMenu.js.map +1 -0
  60. package/dist/src/types/Components/Modal.d.ts.map +1 -0
  61. package/dist/src/types/Components/Modal.js.map +1 -0
  62. package/dist/src/types/Components/RoleSelectMenu.d.ts.map +1 -0
  63. package/dist/src/types/Components/RoleSelectMenu.js.map +1 -0
  64. package/dist/src/types/Components/StringSelectMenu.d.ts.map +1 -0
  65. package/dist/src/types/Components/StringSelectMenu.js.map +1 -0
  66. package/dist/src/types/Components/UserSelectMenu.d.ts.map +1 -0
  67. package/dist/src/types/Components/UserSelectMenu.js.map +1 -0
  68. package/dist/src/types/Event.d.ts.map +1 -0
  69. package/dist/src/types/Event.js.map +1 -0
  70. package/dist/src/types/Interaction.d.ts.map +1 -0
  71. package/dist/src/types/Interaction.js.map +1 -0
  72. package/dist/src/types/other/CustomEvent.d.ts.map +1 -0
  73. package/dist/src/types/other/CustomEvent.js.map +1 -0
  74. package/dist/src/types/other/FakeMessageInteraction.d.ts.map +1 -0
  75. package/dist/src/types/other/FakeMessageInteraction.js.map +1 -0
  76. package/dist/src/types/other/InteractionLocale.d.ts.map +1 -0
  77. package/dist/src/types/other/InteractionLocale.js.map +1 -0
  78. package/dist/src/types/other/Locale.d.ts.map +1 -0
  79. package/dist/src/types/other/Locale.js.map +1 -0
  80. package/dist/src/types/other/MessageContextMenu.d.ts.map +1 -0
  81. package/dist/src/types/other/MessageContextMenu.js.map +1 -0
  82. package/dist/src/types/other/UserContextMenu.d.ts.map +1 -0
  83. package/dist/src/types/other/UserContextMenu.js.map +1 -0
  84. package/dist/src/utils/MemoryStore.d.ts.map +1 -0
  85. package/dist/src/utils/MemoryStore.js.map +1 -0
  86. package/dist/src/utils/UtilTypes.d.ts.map +1 -0
  87. package/dist/src/utils/UtilTypes.js.map +1 -0
  88. package/dist/src/utils/customId.d.ts.map +1 -0
  89. package/dist/src/utils/customId.js.map +1 -0
  90. package/dist/src/utils/permissions.d.ts.map +1 -0
  91. package/dist/src/utils/permissions.js.map +1 -0
  92. package/dist/src/utils/recursiveImport.d.ts.map +1 -0
  93. package/dist/src/utils/recursiveImport.js.map +1 -0
  94. package/dist/src/utils/recursiveUnload.d.ts.map +1 -0
  95. package/dist/src/utils/recursiveUnload.js.map +1 -0
  96. package/dist/src/utils/unloadModule.d.ts.map +1 -0
  97. package/dist/src/utils/unloadModule.js.map +1 -0
  98. package/dist/test/index.d.ts +2 -0
  99. package/dist/test/index.d.ts.map +1 -0
  100. package/dist/test/index.js +103 -0
  101. package/dist/test/index.js.map +1 -0
  102. package/docs/ADVANCED_FEATURES.md +836 -0
  103. package/docs/API_REFERENCE.md +925 -0
  104. package/docs/CHAT_INPUT.md +807 -0
  105. package/docs/COMPONENTS.md +1035 -0
  106. package/docs/EVENTS.md +564 -0
  107. package/docs/GETTING_STARTED.md +394 -0
  108. package/docs/LOCALIZATION.md +773 -0
  109. package/docs/README.md +341 -0
  110. package/docs/SVELTE_COMPONENTS.md +955 -0
  111. package/generated/globals.d.ts +1 -0
  112. package/generated/index.d.ts +30 -0
  113. package/generated/svelte-dbi.d.ts +588 -0
  114. package/package.json +57 -47
  115. package/readme.md +168 -491
  116. package/src/methods/hookInteractionListeners.ts +23 -12
  117. package/src/types/Components/HTMLComponentsV2/index.ts +353 -12
  118. package/src/types/Components/HTMLComponentsV2/parser.ts +14 -4
  119. package/src/types/Components/HTMLComponentsV2/svelteParser.ts +904 -0
  120. package/src/types/Components/HTMLComponentsV2/svelteRenderer.ts +332 -0
  121. package/test/index.ts +105 -0
  122. package/test/product-showcase.svelte +199 -0
  123. package/tsconfig.json +13 -3
  124. package/dist/DBI.d.ts.map +0 -1
  125. package/dist/DBI.js.map +0 -1
  126. package/dist/Events.d.ts.map +0 -1
  127. package/dist/Events.js.map +0 -1
  128. package/dist/index.d.ts.map +0 -1
  129. package/dist/index.js.map +0 -1
  130. package/dist/methods/handleMessageCommands.d.ts.map +0 -1
  131. package/dist/methods/handleMessageCommands.js.map +0 -1
  132. package/dist/methods/hookEventListeners.d.ts.map +0 -1
  133. package/dist/methods/hookEventListeners.js.map +0 -1
  134. package/dist/methods/hookInteractionListeners.d.ts.map +0 -1
  135. package/dist/methods/hookInteractionListeners.js.map +0 -1
  136. package/dist/methods/publishInteractions.d.ts.map +0 -1
  137. package/dist/methods/publishInteractions.js.map +0 -1
  138. package/dist/types/ApplicationRoleConnectionMetadata.d.ts.map +0 -1
  139. package/dist/types/ApplicationRoleConnectionMetadata.js.map +0 -1
  140. package/dist/types/Builders/ButtonBuilder.d.ts.map +0 -1
  141. package/dist/types/Builders/ButtonBuilder.js.map +0 -1
  142. package/dist/types/Builders/ChannelSelectMenuBuilder.d.ts.map +0 -1
  143. package/dist/types/Builders/ChannelSelectMenuBuilder.js.map +0 -1
  144. package/dist/types/Builders/MentionableSelectMenuBuilder.d.ts.map +0 -1
  145. package/dist/types/Builders/MentionableSelectMenuBuilder.js.map +0 -1
  146. package/dist/types/Builders/ModalBuilder.d.ts.map +0 -1
  147. package/dist/types/Builders/ModalBuilder.js.map +0 -1
  148. package/dist/types/Builders/RoleSelectMenuBuilder.d.ts.map +0 -1
  149. package/dist/types/Builders/RoleSelectMenuBuilder.js.map +0 -1
  150. package/dist/types/Builders/StringSelectMenuBuilder.d.ts.map +0 -1
  151. package/dist/types/Builders/StringSelectMenuBuilder.js.map +0 -1
  152. package/dist/types/Builders/UserSelectMenuBuilder.d.ts.map +0 -1
  153. package/dist/types/Builders/UserSelectMenuBuilder.js.map +0 -1
  154. package/dist/types/ChatInput/ChatInput.d.ts.map +0 -1
  155. package/dist/types/ChatInput/ChatInput.js.map +0 -1
  156. package/dist/types/ChatInput/ChatInputOptions.d.ts.map +0 -1
  157. package/dist/types/ChatInput/ChatInputOptions.js.map +0 -1
  158. package/dist/types/Components/Button.d.ts.map +0 -1
  159. package/dist/types/Components/Button.js.map +0 -1
  160. package/dist/types/Components/ChannelSelectMenu.d.ts.map +0 -1
  161. package/dist/types/Components/ChannelSelectMenu.js.map +0 -1
  162. package/dist/types/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.d.ts.map +0 -1
  163. package/dist/types/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.js.map +0 -1
  164. package/dist/types/Components/HTMLComponentsV2/index.d.ts +0 -19
  165. package/dist/types/Components/HTMLComponentsV2/index.d.ts.map +0 -1
  166. package/dist/types/Components/HTMLComponentsV2/index.js +0 -31
  167. package/dist/types/Components/HTMLComponentsV2/index.js.map +0 -1
  168. package/dist/types/Components/HTMLComponentsV2/parser.d.ts.map +0 -1
  169. package/dist/types/Components/HTMLComponentsV2/parser.js.map +0 -1
  170. package/dist/types/Components/MentionableSelectMenu.d.ts.map +0 -1
  171. package/dist/types/Components/MentionableSelectMenu.js.map +0 -1
  172. package/dist/types/Components/Modal.d.ts.map +0 -1
  173. package/dist/types/Components/Modal.js.map +0 -1
  174. package/dist/types/Components/RoleSelectMenu.d.ts.map +0 -1
  175. package/dist/types/Components/RoleSelectMenu.js.map +0 -1
  176. package/dist/types/Components/StringSelectMenu.d.ts.map +0 -1
  177. package/dist/types/Components/StringSelectMenu.js.map +0 -1
  178. package/dist/types/Components/UserSelectMenu.d.ts.map +0 -1
  179. package/dist/types/Components/UserSelectMenu.js.map +0 -1
  180. package/dist/types/Event.d.ts.map +0 -1
  181. package/dist/types/Event.js.map +0 -1
  182. package/dist/types/Interaction.d.ts.map +0 -1
  183. package/dist/types/Interaction.js.map +0 -1
  184. package/dist/types/other/CustomEvent.d.ts.map +0 -1
  185. package/dist/types/other/CustomEvent.js.map +0 -1
  186. package/dist/types/other/FakeMessageInteraction.d.ts.map +0 -1
  187. package/dist/types/other/FakeMessageInteraction.js.map +0 -1
  188. package/dist/types/other/InteractionLocale.d.ts.map +0 -1
  189. package/dist/types/other/InteractionLocale.js.map +0 -1
  190. package/dist/types/other/Locale.d.ts.map +0 -1
  191. package/dist/types/other/Locale.js.map +0 -1
  192. package/dist/types/other/MessageContextMenu.d.ts.map +0 -1
  193. package/dist/types/other/MessageContextMenu.js.map +0 -1
  194. package/dist/types/other/UserContextMenu.d.ts.map +0 -1
  195. package/dist/types/other/UserContextMenu.js.map +0 -1
  196. package/dist/utils/MemoryStore.d.ts.map +0 -1
  197. package/dist/utils/MemoryStore.js.map +0 -1
  198. package/dist/utils/UtilTypes.d.ts.map +0 -1
  199. package/dist/utils/UtilTypes.js.map +0 -1
  200. package/dist/utils/customId.d.ts.map +0 -1
  201. package/dist/utils/customId.js.map +0 -1
  202. package/dist/utils/permissions.d.ts.map +0 -1
  203. package/dist/utils/permissions.js.map +0 -1
  204. package/dist/utils/recursiveImport.d.ts.map +0 -1
  205. package/dist/utils/recursiveImport.js.map +0 -1
  206. package/dist/utils/recursiveUnload.d.ts.map +0 -1
  207. package/dist/utils/recursiveUnload.js.map +0 -1
  208. package/dist/utils/unloadModule.d.ts.map +0 -1
  209. package/dist/utils/unloadModule.js.map +0 -1
  210. package/examples/modal/dbi.js +0 -30
  211. package/examples/modal/login.js +0 -15
  212. package/examples/modal/package.json +0 -15
  213. package/examples/modal/publish.js +0 -13
  214. package/examples/modal/src/chatInput.js +0 -38
  215. package/examples/modal/src/components.js +0 -33
  216. package/examples/modal/src/event.js +0 -20
  217. package/examples/modal/src/interactionlocales.js +0 -24
  218. package/examples/modal/src/locales.js +0 -38
  219. package/examples/modal/src/modal.js +0 -28
  220. /package/dist/{DBI.d.ts → src/DBI.d.ts} +0 -0
  221. /package/dist/{DBI.js → src/DBI.js} +0 -0
  222. /package/dist/{Events.d.ts → src/Events.d.ts} +0 -0
  223. /package/dist/{Events.js → src/Events.js} +0 -0
  224. /package/dist/{data → src/data}/eventMap.json +0 -0
  225. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  226. /package/dist/{index.js → src/index.js} +0 -0
  227. /package/dist/{methods → src/methods}/handleMessageCommands.d.ts +0 -0
  228. /package/dist/{methods → src/methods}/handleMessageCommands.js +0 -0
  229. /package/dist/{methods → src/methods}/hookEventListeners.d.ts +0 -0
  230. /package/dist/{methods → src/methods}/hookEventListeners.js +0 -0
  231. /package/dist/{methods → src/methods}/hookInteractionListeners.d.ts +0 -0
  232. /package/dist/{methods → src/methods}/publishInteractions.d.ts +0 -0
  233. /package/dist/{methods → src/methods}/publishInteractions.js +0 -0
  234. /package/dist/{types → src/types}/ApplicationRoleConnectionMetadata.d.ts +0 -0
  235. /package/dist/{types → src/types}/ApplicationRoleConnectionMetadata.js +0 -0
  236. /package/dist/{types → src/types}/Builders/ButtonBuilder.d.ts +0 -0
  237. /package/dist/{types → src/types}/Builders/ButtonBuilder.js +0 -0
  238. /package/dist/{types → src/types}/Builders/ChannelSelectMenuBuilder.d.ts +0 -0
  239. /package/dist/{types → src/types}/Builders/ChannelSelectMenuBuilder.js +0 -0
  240. /package/dist/{types → src/types}/Builders/MentionableSelectMenuBuilder.d.ts +0 -0
  241. /package/dist/{types → src/types}/Builders/MentionableSelectMenuBuilder.js +0 -0
  242. /package/dist/{types → src/types}/Builders/ModalBuilder.d.ts +0 -0
  243. /package/dist/{types → src/types}/Builders/ModalBuilder.js +0 -0
  244. /package/dist/{types → src/types}/Builders/RoleSelectMenuBuilder.d.ts +0 -0
  245. /package/dist/{types → src/types}/Builders/RoleSelectMenuBuilder.js +0 -0
  246. /package/dist/{types → src/types}/Builders/StringSelectMenuBuilder.d.ts +0 -0
  247. /package/dist/{types → src/types}/Builders/StringSelectMenuBuilder.js +0 -0
  248. /package/dist/{types → src/types}/Builders/UserSelectMenuBuilder.d.ts +0 -0
  249. /package/dist/{types → src/types}/Builders/UserSelectMenuBuilder.js +0 -0
  250. /package/dist/{types → src/types}/ChatInput/ChatInput.d.ts +0 -0
  251. /package/dist/{types → src/types}/ChatInput/ChatInput.js +0 -0
  252. /package/dist/{types → src/types}/ChatInput/ChatInputOptions.js +0 -0
  253. /package/dist/{types → src/types}/Components/Button.d.ts +0 -0
  254. /package/dist/{types → src/types}/Components/Button.js +0 -0
  255. /package/dist/{types → src/types}/Components/ChannelSelectMenu.d.ts +0 -0
  256. /package/dist/{types → src/types}/Components/ChannelSelectMenu.js +0 -0
  257. /package/dist/{types → src/types}/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.d.ts +0 -0
  258. /package/dist/{types → src/types}/Components/HTMLComponentsV2/HTMLComponentsV2Handlers.js +0 -0
  259. /package/dist/{types → src/types}/Components/HTMLComponentsV2/parser.d.ts +0 -0
  260. /package/dist/{types → src/types}/Components/MentionableSelectMenu.d.ts +0 -0
  261. /package/dist/{types → src/types}/Components/MentionableSelectMenu.js +0 -0
  262. /package/dist/{types → src/types}/Components/Modal.d.ts +0 -0
  263. /package/dist/{types → src/types}/Components/Modal.js +0 -0
  264. /package/dist/{types → src/types}/Components/RoleSelectMenu.d.ts +0 -0
  265. /package/dist/{types → src/types}/Components/RoleSelectMenu.js +0 -0
  266. /package/dist/{types → src/types}/Components/StringSelectMenu.d.ts +0 -0
  267. /package/dist/{types → src/types}/Components/StringSelectMenu.js +0 -0
  268. /package/dist/{types → src/types}/Components/UserSelectMenu.d.ts +0 -0
  269. /package/dist/{types → src/types}/Components/UserSelectMenu.js +0 -0
  270. /package/dist/{types → src/types}/Event.d.ts +0 -0
  271. /package/dist/{types → src/types}/Event.js +0 -0
  272. /package/dist/{types → src/types}/Interaction.d.ts +0 -0
  273. /package/dist/{types → src/types}/Interaction.js +0 -0
  274. /package/dist/{types → src/types}/other/CustomEvent.d.ts +0 -0
  275. /package/dist/{types → src/types}/other/CustomEvent.js +0 -0
  276. /package/dist/{types → src/types}/other/FakeMessageInteraction.d.ts +0 -0
  277. /package/dist/{types → src/types}/other/FakeMessageInteraction.js +0 -0
  278. /package/dist/{types → src/types}/other/InteractionLocale.d.ts +0 -0
  279. /package/dist/{types → src/types}/other/InteractionLocale.js +0 -0
  280. /package/dist/{types → src/types}/other/Locale.d.ts +0 -0
  281. /package/dist/{types → src/types}/other/Locale.js +0 -0
  282. /package/dist/{types → src/types}/other/MessageContextMenu.d.ts +0 -0
  283. /package/dist/{types → src/types}/other/MessageContextMenu.js +0 -0
  284. /package/dist/{types → src/types}/other/UserContextMenu.d.ts +0 -0
  285. /package/dist/{types → src/types}/other/UserContextMenu.js +0 -0
  286. /package/dist/{utils → src/utils}/MemoryStore.d.ts +0 -0
  287. /package/dist/{utils → src/utils}/MemoryStore.js +0 -0
  288. /package/dist/{utils → src/utils}/UtilTypes.d.ts +0 -0
  289. /package/dist/{utils → src/utils}/UtilTypes.js +0 -0
  290. /package/dist/{utils → src/utils}/customId.d.ts +0 -0
  291. /package/dist/{utils → src/utils}/customId.js +0 -0
  292. /package/dist/{utils → src/utils}/permissions.d.ts +0 -0
  293. /package/dist/{utils → src/utils}/permissions.js +0 -0
  294. /package/dist/{utils → src/utils}/recursiveImport.d.ts +0 -0
  295. /package/dist/{utils → src/utils}/recursiveImport.js +0 -0
  296. /package/dist/{utils → src/utils}/recursiveUnload.d.ts +0 -0
  297. /package/dist/{utils → src/utils}/recursiveUnload.js +0 -0
  298. /package/dist/{utils → src/utils}/unloadModule.d.ts +0 -0
  299. /package/dist/{utils → src/utils}/unloadModule.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/types/Components/HTMLComponentsV2/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { NamespaceEnums } from \"../../../../generated/namespaceData\";\r\nimport { DBI } from \"../../../DBI\";\r\nimport { DBIBaseInteraction, DBIRateLimit, IDBIBaseExecuteCtx, TDBIReferencedData } from \"../../Interaction\";\r\nimport { parseHTMLComponentsV2 } from \"./parser\";\r\nimport { renderSvelteComponent, renderSvelteComponentFromFile, SvelteRenderResult } from \"./svelteRenderer\";\r\nimport { parseSvelteComponent, createHandlerContext, HandlerContextResult } from \"./svelteParser\";\r\nimport fs from \"fs\";\r\n\r\nexport type TDBIHTMLComponentsV2Omitted<TNamespace extends NamespaceEnums> = Omit<DBIHTMLComponentsV2<TNamespace>, \"type\" | \"dbi\" | \"toJSON\" | \"description\" | \"send\" | \"destroy\" | \"destroyAll\"> & {\r\n /**\r\n * Use 'svelte' for Svelte 5 components, 'eta' for Eta templates (default)\r\n */\r\n mode?: 'svelte' | 'eta';\r\n /**\r\n * Callback executed when the component interaction is triggered\r\n */\r\n onExecute?: (ctx: IDBIHTMLComponentsV2ExecuteCtx<TNamespace>) => void;\r\n};\r\n\r\nexport type TDBIHTMLComponentsV2ToJSONArgs = {\r\n data?: Record<string, any>;\r\n}\r\n\r\nexport interface TDBIHTMLComponentsV2SendOptions {\r\n data?: Record<string, any>;\r\n flags?: string[];\r\n content?: string;\r\n ephemeral?: boolean;\r\n /** If true, uses interaction.reply(). If false or unset, auto-detects based on target type */\r\n reply?: boolean;\r\n /** If true, uses interaction.followUp() instead of reply() */\r\n followUp?: boolean;\r\n}\r\n\r\nexport interface IDBIHTMLComponentsV2ExecuteCtx<TNamespace extends NamespaceEnums> extends IDBIBaseExecuteCtx<TNamespace> {\r\n data: TDBIReferencedData[];\r\n}\r\n\r\nexport class DBIHTMLComponentsV2<TNamespace extends NamespaceEnums> extends DBIBaseInteraction<TNamespace> {\r\n template?: string;\r\n file?: string;\r\n mode: 'svelte' | 'eta' = 'eta';\r\n private svelteComponentInfo: any = null;\r\n private _userOnExecute?: (ctx: IDBIHTMLComponentsV2ExecuteCtx<TNamespace>) => void;\r\n\r\n // Store handler contexts per ref for lifecycle management\r\n // Key: ref id, Value: handlerContext with lifecycle hooks\r\n private _activeContexts: Map<string, any> = new Map();\r\n\r\n constructor(dbi: DBI<TNamespace>, args: TDBIHTMLComponentsV2Omitted<TNamespace>) {\r\n // Store user's onExecute callback before passing to super\r\n const userOnExecute = (args as any).onExecute;\r\n\r\n // Remove onExecute from args so it doesn't override the class method\r\n const argsWithoutOnExecute = { ...args };\r\n delete (argsWithoutOnExecute as any).onExecute;\r\n\r\n super(dbi, {\r\n ...(argsWithoutOnExecute as any),\r\n type: \"HTMLComponentsV2\",\r\n });\r\n this.template = args.template || (args.file ? fs.readFileSync(args.file, \"utf-8\") : undefined);\r\n this.file = args.file;\r\n this.name = args.name;\r\n this.handlers = args.handlers || [];\r\n this.mode = args.mode || 'eta';\r\n\r\n // Store user's onExecute callback if provided\r\n if (userOnExecute) {\r\n this._userOnExecute = userOnExecute;\r\n }\r\n\r\n // Pre-extract Svelte handlers at registration time\r\n if (this.mode === 'svelte' && this.template) {\r\n this.svelteComponentInfo = parseSvelteComponent(this.template);\r\n\r\n // Debug log\r\n console.log(`[Svelte] Component \"${this.name}\" registered with handlers:`,\r\n Array.from(this.svelteComponentInfo.handlers.entries())\r\n );\r\n }\r\n\r\n // Re-assign onExecute method after super() call because parent class sets it to undefined\r\n this.onExecute = this._handleExecute.bind(this);\r\n }\r\n\r\n private _handleExecute(ctx: IDBIHTMLComponentsV2ExecuteCtx<TNamespace>) {\r\n console.log(\"[Svelte] onExecute called with data:\", ctx.data);\r\n\r\n // Call user's onExecute callback first if provided\r\n if (this._userOnExecute) {\r\n this._userOnExecute(ctx);\r\n }\r\n\r\n // If using Svelte mode, find and execute the handler\r\n if (this.mode === 'svelte' && this.svelteComponentInfo) {\r\n const [elementName, ...handlerData] = ctx.data;\r\n console.log(\"[Svelte] Element name:\", elementName, \"Handler data:\", handlerData);\r\n\r\n if (typeof elementName === 'string') {\r\n // Find the handler info for this element\r\n const handlerInfo = this.svelteComponentInfo.handlers.get(elementName);\r\n console.log(\"[Svelte] Handler info:\", handlerInfo);\r\n\r\n if (handlerInfo) {\r\n // Extract current state from handlerData (refs that were passed)\r\n // The second element in data array contains the current state\r\n const currentState = handlerData[0] || {} as Record<string, any>;\r\n console.log(\"[Svelte] Current state:\", currentState);\r\n\r\n // Get ref id for lifecycle tracking (if available)\r\n const refId = (currentState as any)?.$ref || null;\r\n\r\n // Check if this is first execution for this ref\r\n const isFirstExecution = refId && !this._activeContexts.has(refId);\r\n\r\n // Get existing context if any (to preserve lifecycle callbacks like intervals)\r\n const existingContext = refId ? this._activeContexts.get(refId) : null;\r\n\r\n // Create a NEW handler context for each execution with the current state\r\n // This ensures each interaction has its own isolated state\r\n // Pass 'this' so handlers can access component methods like toJSON()\r\n // Pass ctx so handlers can access ctx.interaction, ctx.data, ctx.locale, etc.\r\n const handlerContext = createHandlerContext(\r\n this.svelteComponentInfo.scriptContent,\r\n typeof currentState === 'object' ? currentState : {},\r\n this,\r\n ctx\r\n );\r\n\r\n const handlerFn = handlerContext.handlers[handlerInfo.handlerName];\r\n console.log(\"[Svelte] Handler function:\", handlerFn ? \"found\" : \"not found\", handlerInfo.handlerName);\r\n\r\n if (handlerFn && typeof handlerFn === 'function') {\r\n try {\r\n // Store context for lifecycle management\r\n if (refId) {\r\n // If there's an existing context, transfer its destroy callbacks to the new context\r\n // This preserves intervals/timers created in onMount\r\n if (existingContext && existingContext.destroyCallbacks) {\r\n // Merge existing destroy callbacks (don't run them!)\r\n handlerContext.destroyCallbacks.push(...existingContext.destroyCallbacks);\r\n }\r\n\r\n this._activeContexts.set(refId, handlerContext);\r\n\r\n // Wrap $unRef to call onDestroy when ref is deleted (only wrap once)\r\n const stateObj = currentState as any;\r\n if (stateObj.$unRef && !stateObj.__unRefWrapped__) {\r\n const originalUnRef = stateObj.$unRef.bind(stateObj);\r\n stateObj.$unRef = () => {\r\n // Run destroy callbacks before unref\r\n const ctx = this._activeContexts.get(refId);\r\n if (ctx && ctx.runDestroy) {\r\n ctx.runDestroy();\r\n }\r\n this._activeContexts.delete(refId);\r\n return originalUnRef();\r\n };\r\n stateObj.__unRefWrapped__ = true;\r\n }\r\n }\r\n\r\n // Run onMount callbacks only on first execution\r\n if (isFirstExecution && handlerContext.runMount) {\r\n handlerContext.runMount();\r\n }\r\n\r\n // Mark that we're inside handler execution (prevents auto-render during handler)\r\n handlerContext.setInHandler(true);\r\n\r\n try {\r\n // Bind 'this' to the DBIHTMLComponentsV2 instance so handlers can use this.toJSON()\r\n // Pass wrappedCtx so handlers use the proxy-wrapped ctx that tracks interaction calls\r\n // This ensures __asyncInteractionCalled__ flag is set when handler calls ctx.interaction.reply() etc.\r\n handlerFn.call(this, handlerContext.wrappedCtx, ...handlerData.slice(1));\r\n } finally {\r\n // Always reset handler execution flag\r\n handlerContext.setInHandler(false);\r\n }\r\n\r\n // Run effects after handler execution (state may have changed)\r\n handlerContext.runEffects();\r\n\r\n // If there are pending data changes and no interaction method was called,\r\n // flush the render now (synchronously uses interaction.update)\r\n if (handlerContext.hasPendingRender()) {\r\n handlerContext.flushRender();\r\n }\r\n } catch (error) {\r\n console.error(`Error executing Svelte handler '${handlerInfo.handlerName}':`, error);\r\n }\r\n } else {\r\n console.warn(`Handler function '${handlerInfo.handlerName}' not found for element '${elementName}'`);\r\n }\r\n } else {\r\n console.warn(`No handler info found for element '${elementName}'`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n override toJSON(arg: TDBIHTMLComponentsV2ToJSONArgs = {}): any {\r\n if (this.mode === 'svelte' && this.template) {\r\n // Render Svelte component\r\n const result = renderSvelteComponent(\r\n this.dbi as any,\r\n this.template,\r\n this.name,\r\n {\r\n data: arg.data,\r\n ttl: this.ttl\r\n }\r\n );\r\n\r\n return result.components;\r\n } else {\r\n // Use Eta template parsing (default)\r\n return parseHTMLComponentsV2(\r\n this.dbi as any,\r\n this.template!,\r\n this.name,\r\n {\r\n data: arg.data,\r\n ttl: this.ttl\r\n }\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Send the component to an interaction or channel and initialize lifecycle hooks (onMount)\r\n * This is the recommended way to send Svelte components with intervals/timers\r\n * \r\n * @param target - Discord interaction or channel to send to\r\n * @param options - Send options including data, flags, content\r\n * \r\n * @example\r\n * ```ts\r\n * const showcase = dbi.interaction(\"product-showcase\");\r\n * \r\n * // Send as interaction reply\r\n * await showcase.send(interaction, { data: { count: 0 } });\r\n * \r\n * // Send to a channel directly\r\n * await showcase.send(channel, { data: { count: 0 } });\r\n * \r\n * // Send as followUp (if already replied)\r\n * await showcase.send(interaction, { data: { count: 0 }, followUp: true });\r\n * ```\r\n */\r\n async send(target: any, options: TDBIHTMLComponentsV2SendOptions = {}): Promise<any> {\r\n const { data = {}, flags = [\"IsComponentsV2\"], content, ephemeral, reply, followUp } = options;\r\n\r\n // Render components\r\n const components = this.toJSON({ data });\r\n\r\n // Build message options\r\n const messageOptions: any = { components, flags };\r\n if (content) messageOptions.content = content;\r\n if (ephemeral) messageOptions.flags = [...flags, \"Ephemeral\"];\r\n\r\n // Detect target type and send accordingly\r\n let message: any;\r\n const isInteraction = target.reply && target.user; // Interactions have both reply method and user property\r\n const isChannel = target.send && !target.user; // Channels have send but no user\r\n\r\n if (isInteraction) {\r\n if (followUp) {\r\n message = await target.followUp(messageOptions);\r\n } else {\r\n message = await target.reply(messageOptions);\r\n }\r\n } else if (isChannel) {\r\n message = await target.send(messageOptions);\r\n } else {\r\n throw new Error(\"Invalid target: must be an interaction or channel\");\r\n }\r\n\r\n // If Svelte mode, create initial handler context and run onMount\r\n if (this.mode === 'svelte' && this.svelteComponentInfo && data.$ref) {\r\n const refId = data.$ref;\r\n\r\n // Create handler context with a fake ctx that has the message\r\n const fakeCtx = {\r\n interaction: {\r\n replied: true,\r\n deferred: false,\r\n message: message,\r\n }\r\n };\r\n\r\n const handlerContext = createHandlerContext(\r\n this.svelteComponentInfo.scriptContent,\r\n data,\r\n this,\r\n fakeCtx\r\n );\r\n\r\n // Store the context for lifecycle management\r\n this._activeContexts.set(refId, handlerContext);\r\n\r\n // Wrap $unRef to call onDestroy when ref is deleted\r\n if (data.$unRef) {\r\n const originalUnRef = data.$unRef.bind(data);\r\n data.$unRef = () => {\r\n if (handlerContext.runDestroy) {\r\n handlerContext.runDestroy();\r\n }\r\n this._activeContexts.delete(refId);\r\n return originalUnRef();\r\n };\r\n }\r\n\r\n // Run onMount callbacks\r\n handlerContext.runMount();\r\n\r\n // Run initial effects\r\n handlerContext.runEffects();\r\n }\r\n\r\n return message;\r\n }\r\n\r\n /**\r\n * Destroy a component instance by ref ID or data object\r\n * This runs onDestroy callbacks (clears intervals/timers) and removes the ref\r\n * \r\n * @param refOrData - Either a ref ID string or the data object with $ref\r\n * @returns true if destroyed, false if not found\r\n * \r\n * @example\r\n * ```ts\r\n * // Destroy by data object\r\n * showcase.destroy(data);\r\n * \r\n * // Destroy by ref ID\r\n * showcase.destroy(data.$ref);\r\n * \r\n * // Destroy all active instances of this component\r\n * showcase.destroyAll();\r\n * ```\r\n */\r\n destroy(refOrData: string | Record<string, any>): boolean {\r\n const refId = typeof refOrData === 'string' ? refOrData : refOrData?.$ref;\r\n\r\n if (!refId) {\r\n console.warn(\"[Svelte] Cannot destroy: no ref ID provided\");\r\n return false;\r\n }\r\n\r\n const context = this._activeContexts.get(refId);\r\n if (context) {\r\n // Run destroy callbacks (clears intervals, timers, etc.)\r\n if (context.runDestroy) {\r\n context.runDestroy();\r\n }\r\n this._activeContexts.delete(refId);\r\n }\r\n\r\n // Also delete from DBI refs store\r\n this.dbi.data.refs.delete(refId);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Destroy all active instances of this component\r\n * Useful for cleanup when the bot shuts down or component is unloaded\r\n * \r\n * @returns Number of instances destroyed\r\n */\r\n destroyAll(): number {\r\n let count = 0;\r\n for (const [refId, context] of this._activeContexts) {\r\n if (context.runDestroy) {\r\n context.runDestroy();\r\n }\r\n this.dbi.data.refs.delete(refId);\r\n count++;\r\n }\r\n this._activeContexts.clear();\r\n return count;\r\n }\r\n\r\n handlers?: any[] = [];\r\n}"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../../src/types/Components/HTMLComponentsV2/parser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAqSrE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAS,EAAE,GAAO,EAAE,GAAE,GAA0B,SA4BpJ"}
@@ -82,13 +82,15 @@ function parseActionRow(dbi, dbiName, actionRow) {
82
82
  }
83
83
  function parseButton(dbi, dbiName, button) {
84
84
  const style = button.getAttribute("style") || button.getAttribute("button-style") || "Primary";
85
+ const isDisabled = getAttributeBoolean(button, "disabled");
86
+ const needsCustomId = style !== "Link" && style !== "Premium";
85
87
  return {
86
88
  type: discord_js_1.ComponentType.Button,
87
89
  style: discord_js_1.ButtonStyle[style],
88
90
  label: getCleanTextContent(button),
89
91
  emoji: button.getAttribute("emoji"),
90
- custom_id: style !== "Link" && style !== "Premium" ? parseCustomIdAttributes(dbi, dbiName, button) : undefined,
91
- disabled: getAttributeBoolean(button, "disabled"),
92
+ custom_id: needsCustomId ? parseCustomIdAttributes(dbi, dbiName, button) : undefined,
93
+ disabled: isDisabled,
92
94
  url: button.getAttribute("url"),
93
95
  sku_id: button.getAttribute("sku-id"),
94
96
  };
@@ -138,7 +140,12 @@ function parseSection(dbi, dbiName, sectionElement) {
138
140
  const childs = [...sectionElement.children];
139
141
  const components = childs.find(el => el.tagName === "COMPONENTS");
140
142
  const children = Array.from(components?.children || []);
141
- const accessory = childs.find(el => el.tagName === "ACCESSORY")?.children?.[0];
143
+ // Look for accessory in <accessory> wrapper or directly as <thumbnail>/<button>
144
+ let accessory = childs.find(el => el.tagName === "ACCESSORY")?.children?.[0];
145
+ // If no <accessory> wrapper, look for direct thumbnail or button
146
+ if (!accessory) {
147
+ accessory = childs.find(el => el.tagName === "THUMBNAIL" || el.tagName === "BUTTON");
148
+ }
142
149
  return {
143
150
  type: discord_js_1.ComponentType.Section,
144
151
  components: children.map((element) => {
@@ -157,7 +164,7 @@ function parseThumbnail(dbi, dbiName, thumbnailElement) {
157
164
  return {
158
165
  type: discord_js_1.ComponentType.Thumbnail,
159
166
  media: {
160
- url: thumbnailElement.getAttribute("url")
167
+ url: thumbnailElement.getAttribute("url") || thumbnailElement.getAttribute("media")
161
168
  }
162
169
  };
163
170
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../src/types/Components/HTMLComponentsV2/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { JSDOM } from \"jsdom\";\r\nimport { Eta } from \"eta\";\r\nimport { DBI } from \"../../../DBI\";\r\nimport { NamespaceEnums } from \"../../../../generated/namespaceData\";\r\nimport { ButtonStyle, ComponentType, TextInputStyle } from \"discord.js\";\r\nimport { buildCustomId } from \"../../../utils/customId\";\r\nimport * as stuffs from \"stuffs\";\r\n\r\nconst eta = new Eta({\r\n useWith: true,\r\n});\r\n\r\nfunction getAttributeBoolean(element: Element, attribute: string): boolean {\r\n return element.hasAttribute(attribute) ? ['true', ''].includes(element.getAttribute(attribute)) : false\r\n}\r\n\r\nfunction parseElementDataAttributes(dbi: DBI<NamespaceEnums>, attributes: NamedNodeMap): any[] {\r\n let list = Array.from(attributes)\r\n .filter(attr => attr.nodeName.startsWith(\"data-\"))\r\n .map(attr => {\r\n let splited = attr.nodeName.slice(5).split(\":\");\r\n let index = parseInt(splited[0]);\r\n let value;\r\n switch (splited[1]) {\r\n case \"int\":\r\n case \"integer\":\r\n case \"float\":\r\n case \"number\": value = Number(attr.nodeValue!); break;\r\n case \"bool\":\r\n case \"boolean\": value = attr.nodeValue === \"true\" || attr.nodeValue === \"1\"; break;\r\n case \"string\":\r\n case \"str\": value = attr.nodeValue; break;\r\n case \"refrence\":\r\n case \"ref\": value = dbi.data.refs.get(attr.nodeValue!)?.value; break;\r\n case \"json\": value = JSON.parse(attr.nodeValue!); break;\r\n default: value = attr.nodeValue; break;\r\n }\r\n return {\r\n index,\r\n value\r\n };\r\n })\r\n .sort((a, b) => a.index - b.index)\r\n .map(i => i.value);\r\n let data = attributes.getNamedItem(\"data\")?.nodeValue;\r\n return list.length ? list : data ? [data] : [];\r\n}\r\n\r\nfunction getCleanTextContent(element: Element): string {\r\n return (element.textContent?.trim() || \"\").split(\"\\n\").map(line => line.trim()).join(\"\\n\");\r\n}\r\n\r\nfunction parseCustomIdAttributes(dbi: DBI<NamespaceEnums>, dbiName: string, element: Element): string {\r\n let customId = element.getAttribute(\"custom-id\");\r\n if (!customId) {\r\n let name = element.getAttribute(\"name\");\r\n if (!name) throw new Error(\"Element must have a name or custom-id attribute.\");\r\n customId = buildCustomId(\r\n dbi,\r\n dbiName,\r\n [\r\n name,\r\n ...parseElementDataAttributes(dbi, element.attributes),\r\n ],\r\n element.hasAttribute(\"ttl\") ? parseInt(element.getAttribute(\"ttl\")!) : undefined,\r\n true\r\n );\r\n }\r\n return customId;\r\n}\r\n\r\nfunction parseActionRow(dbi: DBI<NamespaceEnums>, dbiName: string, actionRow: Element) {\r\n return {\r\n type: ComponentType.ActionRow,\r\n components: Array.from(actionRow.children).map((element) => {\r\n return parseElement(dbi, dbiName, element);\r\n })\r\n }\r\n}\r\n\r\nfunction parseButton(dbi: DBI<NamespaceEnums>, dbiName: string, button: Element) {\r\n const style = button.getAttribute(\"style\") || button.getAttribute(\"button-style\") || \"Primary\";\r\n const isDisabled = getAttributeBoolean(button, \"disabled\");\r\n\r\n const needsCustomId = style !== \"Link\" && style !== \"Premium\";\r\n\r\n return {\r\n type: ComponentType.Button,\r\n style: ButtonStyle[style],\r\n label: getCleanTextContent(button),\r\n emoji: button.getAttribute(\"emoji\"),\r\n custom_id: needsCustomId ? parseCustomIdAttributes(dbi, dbiName, button) : undefined,\r\n disabled: isDisabled,\r\n url: button.getAttribute(\"url\"),\r\n sku_id: button.getAttribute(\"sku-id\"),\r\n }\r\n}\r\n\r\nfunction parseStringSelect(dbi: DBI<NamespaceEnums>, dbiName: string, stringSelect: Element) {\r\n let minValues = parseInt(stringSelect.getAttribute(\"min-values\"));\r\n let maxValues = parseInt(stringSelect.getAttribute(\"max-values\"));\r\n\r\n let options = Array.from(stringSelect.querySelectorAll(\"option\")).map(option => {\r\n return {\r\n label: getCleanTextContent(option),\r\n value: option.getAttribute(\"value\"),\r\n description: option.getAttribute(\"description\"),\r\n emoji: option.getAttribute(\"emoji\"),\r\n default: getAttributeBoolean(option, \"default\"),\r\n }\r\n });\r\n\r\n return {\r\n type: ComponentType.StringSelect,\r\n custom_id: parseCustomIdAttributes(dbi, dbiName, stringSelect),\r\n placeholder: stringSelect.getAttribute(\"placeholder\"),\r\n min_values: !isNaN(minValues) ? minValues : undefined,\r\n max_values: !isNaN(maxValues) ? maxValues : undefined,\r\n disabled: getAttributeBoolean(stringSelect, \"disabled\"),\r\n options\r\n }\r\n}\r\n\r\nfunction parseNonStringSelect(dbi: DBI<NamespaceEnums>, dbiName: string, userSelect: Element, type: ComponentType) {\r\n let minValues = parseInt(userSelect.getAttribute(\"min-values\"));\r\n let maxValues = parseInt(userSelect.getAttribute(\"max-values\"));\r\n\r\n let options = Array.from(userSelect.querySelectorAll(\"option\")).map(option => {\r\n return {\r\n id: getCleanTextContent(option) || option.getAttribute(\"id\"),\r\n type: option.getAttribute(\"type\")\r\n }\r\n });\r\n\r\n return {\r\n type,\r\n custom_id: parseCustomIdAttributes(dbi, dbiName, userSelect),\r\n placeholder: userSelect.getAttribute(\"placeholder\"),\r\n min_values: !isNaN(minValues) ? minValues : undefined,\r\n max_values: !isNaN(maxValues) ? maxValues : undefined,\r\n disabled: getAttributeBoolean(userSelect, \"disabled\"),\r\n options\r\n }\r\n}\r\n\r\nfunction parseSection(dbi: DBI<NamespaceEnums>, dbiName: string, sectionElement: Element) {\r\n const childs = [...sectionElement.children];\r\n const components = childs.find(el => el.tagName === \"COMPONENTS\");\r\n const children = Array.from(components?.children || []);\r\n\r\n // Look for accessory in <accessory> wrapper or directly as <thumbnail>/<button>\r\n let accessory = childs.find(el => el.tagName === \"ACCESSORY\")?.children?.[0];\r\n\r\n // If no <accessory> wrapper, look for direct thumbnail or button\r\n if (!accessory) {\r\n accessory = childs.find(el => el.tagName === \"THUMBNAIL\" || el.tagName === \"BUTTON\");\r\n }\r\n\r\n return {\r\n type: ComponentType.Section,\r\n components: children.map((element) => {\r\n return parseElement(dbi, dbiName, element);\r\n }),\r\n ...(accessory ? { accessory: parseElement(dbi, dbiName, accessory) } : {})\r\n }\r\n}\r\n\r\nfunction parseTextDisplay(dbi: DBI<NamespaceEnums>, dbiName: string, textDisplayElement: Element) {\r\n return {\r\n type: ComponentType.TextDisplay,\r\n content: getCleanTextContent(textDisplayElement) || \"\",\r\n }\r\n}\r\n\r\nfunction parseThumbnail(dbi: DBI<NamespaceEnums>, dbiName: string, thumbnailElement: Element) {\r\n return {\r\n type: ComponentType.Thumbnail,\r\n media: {\r\n url: thumbnailElement.getAttribute(\"url\") || thumbnailElement.getAttribute(\"media\")\r\n }\r\n }\r\n}\r\n\r\nfunction parseMediaGallery(dbi: DBI<NamespaceEnums>, dbiName: string, mediaGalleryElement: Element) {\r\n return {\r\n type: ComponentType.MediaGallery,\r\n items: Array.from(mediaGalleryElement.querySelectorAll(\"item\")).map(item => {\r\n return {\r\n media: {\r\n url: item.getAttribute(\"url\")\r\n },\r\n description: getCleanTextContent(mediaGalleryElement) || item.getAttribute(\"description\") || \"\",\r\n spoiler: getAttributeBoolean(item, \"spoiler\"),\r\n };\r\n })\r\n }\r\n}\r\n\r\nfunction parseFile(dbi: DBI<NamespaceEnums>, dbiName: string, fileElement: Element) {\r\n return {\r\n type: ComponentType.File,\r\n file: {\r\n url: fileElement.getAttribute(\"url\"),\r\n },\r\n spoiler: getAttributeBoolean(fileElement, \"spoiler\"),\r\n }\r\n}\r\n\r\nfunction parseSeparator(dbi: DBI<NamespaceEnums>, dbiName: string, separatorElement: Element) {\r\n return {\r\n type: ComponentType.Separator,\r\n divider: separatorElement.hasAttribute(\"divider\"),\r\n spacing: parseInt(separatorElement.getAttribute(\"spacing\") || '1'),\r\n }\r\n}\r\n\r\nfunction parseContainer(dbi: DBI<NamespaceEnums>, dbiName: string, containerElement: Element) {\r\n const components = [...containerElement.children].find(el => el.tagName === \"COMPONENTS\");\r\n const children = Array.from(components?.children || []);\r\n\r\n return {\r\n type: ComponentType.Container,\r\n components: children.map((element) => {\r\n return parseElement(dbi, dbiName, element);\r\n }),\r\n accent_color: parseColor(containerElement.getAttribute(\"accent-color\") || \"\"),\r\n spoiler: containerElement.hasAttribute(\"spoiler\"),\r\n }\r\n}\r\n\r\nfunction parseTextInput(dbi: DBI<NamespaceEnums>, dbiName: string, textInputSelect: Element) {\r\n let minLength = parseInt(textInputSelect.getAttribute(\"min-length\"));\r\n let maxLength = parseInt(textInputSelect.getAttribute(\"max-length\"));\r\n\r\n return {\r\n type: ComponentType.TextInput,\r\n custom_id: textInputSelect.getAttribute(\"custom-id\") || textInputSelect.getAttribute(\"id\"),\r\n style: TextInputStyle[textInputSelect.getAttribute(\"input-style\") || textInputSelect.getAttribute(\"style\") || \"Short\"],\r\n label: textInputSelect.getAttribute(\"label\"),\r\n placeholder: textInputSelect.getAttribute(\"placeholder\"),\r\n min_length: !isNaN(minLength) ? minLength : undefined,\r\n max_length: !isNaN(maxLength) ? maxLength : undefined,\r\n required: textInputSelect.hasAttribute(\"required\"),\r\n value: getCleanTextContent(textInputSelect) || textInputSelect.getAttribute(\"value\"),\r\n }\r\n}\r\n\r\nfunction parseColor(color: string) {\r\n if (!color) return;\r\n if (/\\d{3,6}/.test(color)) return parseInt(color, 10);\r\n if (color.startsWith(\"#\")) return parseInt(color.slice(1), 16);\r\n if (color.startsWith(\"0x\")) return parseInt(color.slice(2), 16);\r\n if (color.startsWith(\"rgb(\")) {\r\n const rgb = color.slice(4, -1).split(\",\").map(Number);\r\n return (rgb[0] << 16) + (rgb[1] << 8) + rgb[2];\r\n }\r\n return parseInt(color, 16);\r\n}\r\n\r\nfunction parseElement(dbi: DBI<NamespaceEnums>, dbiName: string, element: Element) {\r\n switch (element.tagName) {\r\n case \"ACTION-ROW\":\r\n return parseActionRow(dbi, dbiName, element);\r\n case \"BUTTON\":\r\n return parseButton(dbi, dbiName, element);\r\n case \"STRING-SELECT\":\r\n return parseStringSelect(dbi, dbiName, element);\r\n case \"USER-SELECT\":\r\n return parseNonStringSelect(dbi, dbiName, element, ComponentType.UserSelect);\r\n case \"ROLE-SELECT\":\r\n return parseNonStringSelect(dbi, dbiName, element, ComponentType.RoleSelect);\r\n case \"MENTIONABLE-SELECT\":\r\n return parseNonStringSelect(dbi, dbiName, element, ComponentType.MentionableSelect);\r\n case \"CHANNEL-SELECT\":\r\n return parseNonStringSelect(dbi, dbiName, element, ComponentType.ChannelSelect);\r\n case \"SECTION\":\r\n return parseSection(dbi, dbiName, element);\r\n case \"TEXT-DISPLAY\":\r\n return parseTextDisplay(dbi, dbiName, element);\r\n case \"THUMBNAIL\":\r\n return parseThumbnail(dbi, dbiName, element);\r\n case \"MEDIA-GALLERY\":\r\n return parseMediaGallery(dbi, dbiName, element);\r\n case \"FILE\":\r\n return parseFile(dbi, dbiName, element);\r\n case \"SEPARATOR\":\r\n return parseSeparator(dbi, dbiName, element);\r\n case \"CONTAINER\":\r\n return parseContainer(dbi, dbiName, element);\r\n case \"TEXT-INPUT\":\r\n return parseTextInput(dbi, dbiName, element);\r\n default:\r\n throw new Error(`Unknown HTML component: ${element.tagName}`);\r\n }\r\n}\r\n\r\nexport function parseHTMLComponentsV2(dbi: DBI<NamespaceEnums>, template: string, dbiName: string, { data = {}, ttl = 0 }: any = { data: {}, ttl: 0 }) {\r\n const { window: { document } } = new JSDOM(\r\n eta.renderString(\r\n template,\r\n {\r\n it: data,\r\n $refId(obj: any) {\r\n if (obj?.$ref) return `¤${obj.$ref}`;\r\n let id = stuffs.randomString(8);\r\n Object.assign(obj, {\r\n $ref: id,\r\n $unRef() { return dbi.data.refs.delete(id); },\r\n });\r\n dbi.data.refs.set(id, { at: Date.now(), value: obj, ttl });\r\n return `¤${id}`;\r\n }\r\n }\r\n )\r\n );\r\n\r\n const components = [...document.body.children].find(el => el.tagName === \"COMPONENTS\");\r\n const children = Array.from(components?.children || []);\r\n\r\n if (!children.length) throw new Error(\"No components found in the provided HTML template.\");\r\n\r\n return children.map((element) => {\r\n return parseElement(dbi, dbiName, element);\r\n });\r\n}"]}
@@ -0,0 +1,35 @@
1
+ export interface SvelteHandlerInfo {
2
+ name: string;
3
+ handlerName: string;
4
+ eventType: string;
5
+ element: string;
6
+ }
7
+ export interface SvelteComponentInfo {
8
+ handlers: Map<string, SvelteHandlerInfo>;
9
+ scriptContent: string;
10
+ processedSource: string;
11
+ }
12
+ /**
13
+ * Parse a Svelte component and extract event handlers
14
+ * Also injects auto-generated names into elements that have handlers but no name
15
+ */
16
+ export declare function parseSvelteComponent(source: string, data?: Record<string, any>): SvelteComponentInfo;
17
+ export interface HandlerContextResult {
18
+ handlers: Record<string, Function>;
19
+ effects: Function[];
20
+ runEffects: () => void;
21
+ hasPendingRender: () => boolean;
22
+ flushRender: () => Promise<void>;
23
+ wrappedCtx: any;
24
+ mountCallbacks: Function[];
25
+ destroyCallbacks: Function[];
26
+ runMount: () => void;
27
+ runDestroy: () => void;
28
+ setInHandler: (value: boolean) => void;
29
+ }
30
+ /**
31
+ * Create a handler context from script content
32
+ * This evaluates the Svelte script and returns the handler functions and effects
33
+ */
34
+ export declare function createHandlerContext(scriptContent: string, initialData?: Record<string, any>, component?: any, ctx?: any): HandlerContextResult;
35
+ //# sourceMappingURL=svelteParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svelteParser.d.ts","sourceRoot":"","sources":["../../../../../src/types/Components/HTMLComponentsV2/svelteParser.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,mBAAmB,CA6HpG;AAkDD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,GAAG,CAAC;IAEhB,cAAc,EAAE,QAAQ,EAAE,CAAC;IAC3B,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC;AAsGD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,oBAAoB,CA0hBnJ"}