lumen-plus 0.0.5 → 0.0.6

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 (446) hide show
  1. package/dist/components/Alert/Alert.svelte +1 -1
  2. package/dist/components/Autocomplete/Autocomplete.svelte +1 -1
  3. package/dist/components/Backtop/Backtop.svelte +1 -1
  4. package/dist/components/Breadcrumb/Breadcrumb.svelte +1 -1
  5. package/dist/components/Button/Button.svelte +1 -1
  6. package/dist/components/Calendar/Calendar.svelte +1 -1
  7. package/dist/components/Carousel/Carousel.svelte +1 -1
  8. package/dist/components/Cascader/Cascader.svelte +1 -1
  9. package/dist/components/Checkbox/Checkbox.svelte +1 -1
  10. package/dist/components/Collapse/CollapseItem.svelte +1 -1
  11. package/dist/components/ColorPicker/ColorPicker.svelte +1 -1
  12. package/dist/components/DatePicker/DatePicker.svelte +1 -1
  13. package/dist/components/DateTimePicker/DateTimePicker.svelte +1 -1
  14. package/dist/components/Dialog/Dialog.svelte +1 -1
  15. package/dist/components/Drawer/Drawer.svelte +1 -1
  16. package/dist/components/Dropdown/Dropdown.svelte +1 -1
  17. package/dist/components/Image/Image.svelte +1 -1
  18. package/dist/components/Input/Input.svelte +1 -1
  19. package/dist/components/InputNumber/InputNumber.svelte +1 -1
  20. package/dist/components/InputTag/InputTag.svelte +1 -1
  21. package/dist/components/Loading/Loading.svelte +1 -1
  22. package/dist/components/Menu/Menu.svelte +1 -1
  23. package/dist/components/Message/MessageBox.svelte +1 -1
  24. package/dist/components/MessageBox/MessageBox.svelte +2 -2
  25. package/dist/components/Notification/Notification.svelte +1 -1
  26. package/dist/components/Pagination/Pagination.svelte +4 -4
  27. package/dist/components/Popconfirm/Popconfirm.svelte +2 -2
  28. package/dist/components/Result/Result.svelte +1 -1
  29. package/dist/components/Select/Select.svelte +1 -1
  30. package/dist/components/Slider/Slider.svelte +1 -1
  31. package/dist/components/Steps/Step.svelte +1 -1
  32. package/dist/components/Switch/Switch.svelte +1 -1
  33. package/dist/components/Table/Table.svelte +5 -5
  34. package/dist/components/Tabs/Tabs.svelte +1 -1
  35. package/dist/components/Tag/Tag.svelte +1 -1
  36. package/dist/components/Textarea/Textarea.svelte +1 -1
  37. package/dist/components/TimePicker/TimePicker.svelte +1 -1
  38. package/dist/components/Transfer/Transfer.svelte +2 -2
  39. package/dist/components/Tree/TreeNode.svelte +2 -2
  40. package/dist/components/TreeSelect/TreeSelect.svelte +3 -3
  41. package/dist/components/Upload/Upload.svelte +1 -1
  42. package/dist/utils/node_modules/.bin/tsc +2 -0
  43. package/dist/utils/node_modules/.bin/tsserver +2 -0
  44. package/dist/utils/node_modules/svelte/LICENSE.md +7 -0
  45. package/dist/utils/node_modules/svelte/README.md +41 -0
  46. package/dist/utils/node_modules/svelte/compiler/index.js +1 -0
  47. package/dist/utils/node_modules/svelte/compiler/package.json +3 -0
  48. package/dist/utils/node_modules/svelte/package.json +184 -0
  49. package/dist/utils/node_modules/svelte/src/animate/index.js +78 -0
  50. package/dist/utils/node_modules/svelte/src/attachments/index.js +113 -0
  51. package/dist/utils/node_modules/svelte/src/compiler/errors.js +1719 -0
  52. package/dist/utils/node_modules/svelte/src/compiler/index.js +198 -0
  53. package/dist/utils/node_modules/svelte/src/compiler/legacy.js +632 -0
  54. package/dist/utils/node_modules/svelte/src/compiler/migrate/index.js +1996 -0
  55. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/acorn.js +198 -0
  56. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/index.js +326 -0
  57. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/read/context.js +116 -0
  58. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/read/expression.js +93 -0
  59. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/read/options.js +261 -0
  60. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/read/script.js +97 -0
  61. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/read/style.js +633 -0
  62. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/remove_typescript_nodes.js +180 -0
  63. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/state/element.js +877 -0
  64. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/state/fragment.js +17 -0
  65. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/state/tag.js +751 -0
  66. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/state/text.js +23 -0
  67. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/utils/bracket.js +213 -0
  68. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/utils/create.js +16 -0
  69. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/utils/entities.js +2234 -0
  70. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/utils/fuzzymatch.js +280 -0
  71. package/dist/utils/node_modules/svelte/src/compiler/phases/1-parse/utils/html.js +127 -0
  72. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/css/css-analyze.js +331 -0
  73. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/css/css-prune.js +1160 -0
  74. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/css/css-warn.js +47 -0
  75. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/css/utils.js +177 -0
  76. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/index.js +1283 -0
  77. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/utils/check_graph_for_cycles.js +47 -0
  78. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/AnimateDirective.js +15 -0
  79. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ArrowFunctionExpression.js +11 -0
  80. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/AssignmentExpression.js +31 -0
  81. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/AttachTag.js +17 -0
  82. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/Attribute.js +66 -0
  83. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/AwaitBlock.js +48 -0
  84. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/AwaitExpression.js +150 -0
  85. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/BindDirective.js +280 -0
  86. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/CallExpression.js +339 -0
  87. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ClassBody.js +156 -0
  88. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ClassDeclaration.js +25 -0
  89. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ClassDirective.js +13 -0
  90. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/Component.js +26 -0
  91. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ConstTag.js +45 -0
  92. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/DebugTag.js +15 -0
  93. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/EachBlock.js +97 -0
  94. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ExportDefaultDeclaration.js +20 -0
  95. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ExportNamedDeclaration.js +70 -0
  96. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ExportSpecifier.js +30 -0
  97. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ExpressionStatement.js +38 -0
  98. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ExpressionTag.js +26 -0
  99. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/Fragment.js +10 -0
  100. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/FunctionDeclaration.js +16 -0
  101. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/FunctionExpression.js +11 -0
  102. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/HtmlTag.js +19 -0
  103. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/Identifier.js +193 -0
  104. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/IfBlock.js +27 -0
  105. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/ImportDeclaration.js +31 -0
  106. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/KeyBlock.js +21 -0
  107. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/LabeledStatement.js +95 -0
  108. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/LetDirective.js +24 -0
  109. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/Literal.js +14 -0
  110. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/MemberExpression.js +28 -0
  111. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/NewExpression.js +17 -0
  112. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/OnDirective.js +28 -0
  113. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/PropertyDefinition.js +21 -0
  114. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/RegularElement.js +210 -0
  115. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/RenderTag.js +68 -0
  116. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SlotElement.js +42 -0
  117. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SnippetBlock.js +113 -0
  118. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SpreadAttribute.js +13 -0
  119. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SpreadElement.js +16 -0
  120. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/StyleDirective.js +39 -0
  121. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SvelteBody.js +22 -0
  122. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SvelteBoundary.js +30 -0
  123. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SvelteComponent.js +18 -0
  124. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SvelteDocument.js +24 -0
  125. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SvelteElement.js +78 -0
  126. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SvelteFragment.js +27 -0
  127. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SvelteHead.js +18 -0
  128. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SvelteSelf.js +36 -0
  129. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/SvelteWindow.js +24 -0
  130. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/TaggedTemplateExpression.js +16 -0
  131. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/TemplateElement.js +12 -0
  132. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/Text.js +52 -0
  133. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/TitleElement.js +21 -0
  134. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/TransitionDirective.js +19 -0
  135. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/UpdateExpression.js +29 -0
  136. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/UseDirective.js +18 -0
  137. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/VariableDeclarator.js +160 -0
  138. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/constants.js +319 -0
  139. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/shared/a11y/index.js +977 -0
  140. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/shared/attribute.js +125 -0
  141. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/shared/component.js +177 -0
  142. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/shared/element.js +160 -0
  143. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/shared/fragment.js +15 -0
  144. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/shared/function.js +24 -0
  145. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/shared/snippets.js +17 -0
  146. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/shared/special-element.js +16 -0
  147. package/dist/utils/node_modules/svelte/src/compiler/phases/2-analyze/visitors/shared/utils.js +301 -0
  148. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/transform-client.js +709 -0
  149. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/transform-template/fix-attribute-casing.js +18 -0
  150. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/transform-template/index.js +67 -0
  151. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/transform-template/template.js +162 -0
  152. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/utils.js +181 -0
  153. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/AnimateDirective.js +38 -0
  154. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/ArrowFunctionExpression.js +11 -0
  155. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/AssignmentExpression.js +225 -0
  156. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/AttachTag.js +26 -0
  157. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/Attribute.js +14 -0
  158. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/AwaitBlock.js +124 -0
  159. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/AwaitExpression.js +25 -0
  160. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/BinaryExpression.js +34 -0
  161. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/BindDirective.js +290 -0
  162. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/BlockStatement.js +32 -0
  163. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/BreakStatement.js +20 -0
  164. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js +136 -0
  165. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/ClassBody.js +111 -0
  166. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/Comment.js +11 -0
  167. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/Component.js +12 -0
  168. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/ConstTag.js +134 -0
  169. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/DebugTag.js +28 -0
  170. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/EachBlock.js +367 -0
  171. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/ExportNamedDeclaration.js +19 -0
  172. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/ExpressionStatement.js +20 -0
  173. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/ForOfStatement.js +25 -0
  174. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/Fragment.js +181 -0
  175. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/FunctionDeclaration.js +12 -0
  176. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/FunctionExpression.js +11 -0
  177. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/HtmlTag.js +49 -0
  178. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/Identifier.js +45 -0
  179. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/IfBlock.js +90 -0
  180. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/KeyBlock.js +39 -0
  181. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/LabeledStatement.js +64 -0
  182. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/LetDirective.js +55 -0
  183. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/MemberExpression.js +23 -0
  184. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/OnDirective.js +38 -0
  185. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/Program.js +153 -0
  186. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js +791 -0
  187. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/RenderTag.js +91 -0
  188. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SlotElement.js +94 -0
  189. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SnippetBlock.js +94 -0
  190. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SpreadAttribute.js +10 -0
  191. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SvelteBody.js +11 -0
  192. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SvelteBoundary.js +126 -0
  193. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SvelteComponent.js +13 -0
  194. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SvelteDocument.js +11 -0
  195. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SvelteElement.js +157 -0
  196. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SvelteFragment.js +17 -0
  197. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SvelteHead.js +23 -0
  198. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SvelteSelf.js +13 -0
  199. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/SvelteWindow.js +11 -0
  200. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/TitleElement.js +48 -0
  201. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/TransitionDirective.js +41 -0
  202. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/UpdateExpression.js +55 -0
  203. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/UseDirective.js +49 -0
  204. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/VariableDeclaration.js +422 -0
  205. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/shared/component.js +530 -0
  206. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/shared/declarations.js +53 -0
  207. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/shared/element.js +263 -0
  208. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/shared/events.js +176 -0
  209. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/shared/fragment.js +185 -0
  210. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/shared/function.js +17 -0
  211. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/shared/special_element.js +22 -0
  212. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/client/visitors/shared/utils.js +513 -0
  213. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/css/index.js +479 -0
  214. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/index.js +118 -0
  215. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/transform-server.js +423 -0
  216. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/AssignmentExpression.js +107 -0
  217. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/AwaitBlock.js +37 -0
  218. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/AwaitExpression.js +40 -0
  219. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/CallExpression.js +71 -0
  220. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/ClassBody.js +81 -0
  221. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/Component.js +12 -0
  222. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/ConstTag.js +49 -0
  223. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/DebugTag.js +24 -0
  224. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/EachBlock.js +80 -0
  225. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/ExpressionStatement.js +23 -0
  226. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/Fragment.js +53 -0
  227. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/HtmlTag.js +26 -0
  228. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/Identifier.js +19 -0
  229. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/IfBlock.js +39 -0
  230. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/KeyBlock.js +22 -0
  231. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/LabeledStatement.js +24 -0
  232. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/MemberExpression.js +19 -0
  233. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/Program.js +25 -0
  234. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/PropertyDefinition.js +37 -0
  235. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/RegularElement.js +255 -0
  236. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/RenderTag.js +51 -0
  237. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/SlotElement.js +77 -0
  238. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/SnippetBlock.js +29 -0
  239. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/SpreadAttribute.js +10 -0
  240. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/SvelteBoundary.js +71 -0
  241. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/SvelteComponent.js +12 -0
  242. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/SvelteElement.js +102 -0
  243. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/SvelteFragment.js +11 -0
  244. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/SvelteHead.js +25 -0
  245. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/SvelteSelf.js +12 -0
  246. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/TitleElement.js +21 -0
  247. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/UpdateExpression.js +26 -0
  248. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/VariableDeclaration.js +212 -0
  249. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/shared/component.js +360 -0
  250. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/shared/element.js +563 -0
  251. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/server/visitors/shared/utils.js +407 -0
  252. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/shared/assignments.js +93 -0
  253. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/shared/transform-async.js +114 -0
  254. package/dist/utils/node_modules/svelte/src/compiler/phases/3-transform/utils.js +451 -0
  255. package/dist/utils/node_modules/svelte/src/compiler/phases/bindings.js +227 -0
  256. package/dist/utils/node_modules/svelte/src/compiler/phases/css.js +14 -0
  257. package/dist/utils/node_modules/svelte/src/compiler/phases/nodes.js +245 -0
  258. package/dist/utils/node_modules/svelte/src/compiler/phases/patterns.js +27 -0
  259. package/dist/utils/node_modules/svelte/src/compiler/phases/scope.js +1412 -0
  260. package/dist/utils/node_modules/svelte/src/compiler/preprocess/decode_sourcemap.js +96 -0
  261. package/dist/utils/node_modules/svelte/src/compiler/preprocess/index.js +368 -0
  262. package/dist/utils/node_modules/svelte/src/compiler/preprocess/replace_in_code.js +72 -0
  263. package/dist/utils/node_modules/svelte/src/compiler/print/index.js +890 -0
  264. package/dist/utils/node_modules/svelte/src/compiler/state.js +144 -0
  265. package/dist/utils/node_modules/svelte/src/compiler/utils/assert.js +9 -0
  266. package/dist/utils/node_modules/svelte/src/compiler/utils/ast.js +639 -0
  267. package/dist/utils/node_modules/svelte/src/compiler/utils/builders.js +698 -0
  268. package/dist/utils/node_modules/svelte/src/compiler/utils/compile_diagnostic.js +107 -0
  269. package/dist/utils/node_modules/svelte/src/compiler/utils/extract_svelte_ignore.js +104 -0
  270. package/dist/utils/node_modules/svelte/src/compiler/utils/mapped_code.js +454 -0
  271. package/dist/utils/node_modules/svelte/src/compiler/utils/push_array.js +13 -0
  272. package/dist/utils/node_modules/svelte/src/compiler/utils/sanitize_template_string.js +7 -0
  273. package/dist/utils/node_modules/svelte/src/compiler/utils/slot.js +20 -0
  274. package/dist/utils/node_modules/svelte/src/compiler/utils/string.js +9 -0
  275. package/dist/utils/node_modules/svelte/src/compiler/validate-options.js +324 -0
  276. package/dist/utils/node_modules/svelte/src/compiler/warnings.js +845 -0
  277. package/dist/utils/node_modules/svelte/src/constants.js +64 -0
  278. package/dist/utils/node_modules/svelte/src/easing/index.js +286 -0
  279. package/dist/utils/node_modules/svelte/src/escaping.js +26 -0
  280. package/dist/utils/node_modules/svelte/src/events/index.js +1 -0
  281. package/dist/utils/node_modules/svelte/src/html-tree-validation.js +238 -0
  282. package/dist/utils/node_modules/svelte/src/index-client.js +255 -0
  283. package/dist/utils/node_modules/svelte/src/index-server.js +56 -0
  284. package/dist/utils/node_modules/svelte/src/internal/client/constants.js +73 -0
  285. package/dist/utils/node_modules/svelte/src/internal/client/context.js +258 -0
  286. package/dist/utils/node_modules/svelte/src/internal/client/dev/assign.js +78 -0
  287. package/dist/utils/node_modules/svelte/src/internal/client/dev/console-log.js +35 -0
  288. package/dist/utils/node_modules/svelte/src/internal/client/dev/css.js +31 -0
  289. package/dist/utils/node_modules/svelte/src/internal/client/dev/debug.js +500 -0
  290. package/dist/utils/node_modules/svelte/src/internal/client/dev/elements.js +63 -0
  291. package/dist/utils/node_modules/svelte/src/internal/client/dev/equality.js +101 -0
  292. package/dist/utils/node_modules/svelte/src/internal/client/dev/hmr.js +89 -0
  293. package/dist/utils/node_modules/svelte/src/internal/client/dev/inspect.js +72 -0
  294. package/dist/utils/node_modules/svelte/src/internal/client/dev/legacy.js +25 -0
  295. package/dist/utils/node_modules/svelte/src/internal/client/dev/ownership.js +81 -0
  296. package/dist/utils/node_modules/svelte/src/internal/client/dev/tracing.js +162 -0
  297. package/dist/utils/node_modules/svelte/src/internal/client/dev/validation.js +16 -0
  298. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/async.js +64 -0
  299. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/await.js +142 -0
  300. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/boundary.js +507 -0
  301. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/branches.js +227 -0
  302. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/css-props.js +28 -0
  303. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/each.js +666 -0
  304. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/html.js +121 -0
  305. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/if.js +70 -0
  306. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/key.js +33 -0
  307. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/slot.js +44 -0
  308. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/snippet.js +103 -0
  309. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/svelte-component.js +26 -0
  310. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/svelte-element.js +152 -0
  311. package/dist/utils/node_modules/svelte/src/internal/client/dom/blocks/svelte-head.js +59 -0
  312. package/dist/utils/node_modules/svelte/src/internal/client/dom/css.js +32 -0
  313. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/actions.js +43 -0
  314. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/attachments.js +33 -0
  315. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/attributes.js +657 -0
  316. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/document.js +17 -0
  317. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/input.js +312 -0
  318. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/media.js +232 -0
  319. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/navigator.js +11 -0
  320. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/props.js +22 -0
  321. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/select.js +159 -0
  322. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/shared.js +76 -0
  323. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/size.js +108 -0
  324. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/this.js +61 -0
  325. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/universal.js +75 -0
  326. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/bindings/window.js +66 -0
  327. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/class.js +51 -0
  328. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/custom-element.js +338 -0
  329. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/customizable-select.js +98 -0
  330. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/events.js +338 -0
  331. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/misc.js +58 -0
  332. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/style.js +57 -0
  333. package/dist/utils/node_modules/svelte/src/internal/client/dom/elements/transitions.js +472 -0
  334. package/dist/utils/node_modules/svelte/src/internal/client/dom/hydration.js +120 -0
  335. package/dist/utils/node_modules/svelte/src/internal/client/dom/legacy/event-modifiers.js +127 -0
  336. package/dist/utils/node_modules/svelte/src/internal/client/dom/legacy/lifecycle.js +82 -0
  337. package/dist/utils/node_modules/svelte/src/internal/client/dom/legacy/misc.js +68 -0
  338. package/dist/utils/node_modules/svelte/src/internal/client/dom/operations.js +260 -0
  339. package/dist/utils/node_modules/svelte/src/internal/client/dom/reconciler.js +6 -0
  340. package/dist/utils/node_modules/svelte/src/internal/client/dom/task.js +42 -0
  341. package/dist/utils/node_modules/svelte/src/internal/client/dom/template.js +388 -0
  342. package/dist/utils/node_modules/svelte/src/internal/client/error-handling.js +116 -0
  343. package/dist/utils/node_modules/svelte/src/internal/client/errors.js +491 -0
  344. package/dist/utils/node_modules/svelte/src/internal/client/hydratable.js +33 -0
  345. package/dist/utils/node_modules/svelte/src/internal/client/index.js +184 -0
  346. package/dist/utils/node_modules/svelte/src/internal/client/legacy.js +46 -0
  347. package/dist/utils/node_modules/svelte/src/internal/client/loop.js +48 -0
  348. package/dist/utils/node_modules/svelte/src/internal/client/proxy.js +432 -0
  349. package/dist/utils/node_modules/svelte/src/internal/client/reactivity/async.js +302 -0
  350. package/dist/utils/node_modules/svelte/src/internal/client/reactivity/batch.js +988 -0
  351. package/dist/utils/node_modules/svelte/src/internal/client/reactivity/deriveds.js +394 -0
  352. package/dist/utils/node_modules/svelte/src/internal/client/reactivity/effects.js +717 -0
  353. package/dist/utils/node_modules/svelte/src/internal/client/reactivity/equality.js +31 -0
  354. package/dist/utils/node_modules/svelte/src/internal/client/reactivity/props.js +430 -0
  355. package/dist/utils/node_modules/svelte/src/internal/client/reactivity/sources.js +368 -0
  356. package/dist/utils/node_modules/svelte/src/internal/client/reactivity/status.js +25 -0
  357. package/dist/utils/node_modules/svelte/src/internal/client/reactivity/store.js +203 -0
  358. package/dist/utils/node_modules/svelte/src/internal/client/reactivity/utils.js +40 -0
  359. package/dist/utils/node_modules/svelte/src/internal/client/render.js +319 -0
  360. package/dist/utils/node_modules/svelte/src/internal/client/runtime.js +831 -0
  361. package/dist/utils/node_modules/svelte/src/internal/client/timing.js +16 -0
  362. package/dist/utils/node_modules/svelte/src/internal/client/validate.js +88 -0
  363. package/dist/utils/node_modules/svelte/src/internal/client/warnings.js +271 -0
  364. package/dist/utils/node_modules/svelte/src/internal/disclose-version.js +6 -0
  365. package/dist/utils/node_modules/svelte/src/internal/flags/async.js +3 -0
  366. package/dist/utils/node_modules/svelte/src/internal/flags/index.js +23 -0
  367. package/dist/utils/node_modules/svelte/src/internal/flags/legacy.js +3 -0
  368. package/dist/utils/node_modules/svelte/src/internal/flags/tracing.js +3 -0
  369. package/dist/utils/node_modules/svelte/src/internal/index.js +5 -0
  370. package/dist/utils/node_modules/svelte/src/internal/server/abort-signal.js +13 -0
  371. package/dist/utils/node_modules/svelte/src/internal/server/blocks/html.js +11 -0
  372. package/dist/utils/node_modules/svelte/src/internal/server/blocks/snippet.js +24 -0
  373. package/dist/utils/node_modules/svelte/src/internal/server/context.js +122 -0
  374. package/dist/utils/node_modules/svelte/src/internal/server/crypto.js +41 -0
  375. package/dist/utils/node_modules/svelte/src/internal/server/dev.js +115 -0
  376. package/dist/utils/node_modules/svelte/src/internal/server/errors.js +118 -0
  377. package/dist/utils/node_modules/svelte/src/internal/server/hydratable.js +142 -0
  378. package/dist/utils/node_modules/svelte/src/internal/server/hydration.js +6 -0
  379. package/dist/utils/node_modules/svelte/src/internal/server/index.js +490 -0
  380. package/dist/utils/node_modules/svelte/src/internal/server/render-context.js +86 -0
  381. package/dist/utils/node_modules/svelte/src/internal/server/renderer.js +770 -0
  382. package/dist/utils/node_modules/svelte/src/internal/server/warnings.js +29 -0
  383. package/dist/utils/node_modules/svelte/src/internal/shared/attributes.js +223 -0
  384. package/dist/utils/node_modules/svelte/src/internal/shared/clone.js +137 -0
  385. package/dist/utils/node_modules/svelte/src/internal/shared/dev.js +65 -0
  386. package/dist/utils/node_modules/svelte/src/internal/shared/errors.js +134 -0
  387. package/dist/utils/node_modules/svelte/src/internal/shared/utils.js +118 -0
  388. package/dist/utils/node_modules/svelte/src/internal/shared/validate.js +47 -0
  389. package/dist/utils/node_modules/svelte/src/internal/shared/warnings.js +40 -0
  390. package/dist/utils/node_modules/svelte/src/legacy/legacy-client.js +280 -0
  391. package/dist/utils/node_modules/svelte/src/legacy/legacy-server.js +112 -0
  392. package/dist/utils/node_modules/svelte/src/motion/index.js +32 -0
  393. package/dist/utils/node_modules/svelte/src/motion/spring.js +369 -0
  394. package/dist/utils/node_modules/svelte/src/motion/tweened.js +306 -0
  395. package/dist/utils/node_modules/svelte/src/motion/utils.js +7 -0
  396. package/dist/utils/node_modules/svelte/src/reactivity/create-subscriber.js +95 -0
  397. package/dist/utils/node_modules/svelte/src/reactivity/date.js +118 -0
  398. package/dist/utils/node_modules/svelte/src/reactivity/index-client.js +7 -0
  399. package/dist/utils/node_modules/svelte/src/reactivity/index-server.js +23 -0
  400. package/dist/utils/node_modules/svelte/src/reactivity/map.js +273 -0
  401. package/dist/utils/node_modules/svelte/src/reactivity/media-query.js +55 -0
  402. package/dist/utils/node_modules/svelte/src/reactivity/reactive-value.js +24 -0
  403. package/dist/utils/node_modules/svelte/src/reactivity/set.js +213 -0
  404. package/dist/utils/node_modules/svelte/src/reactivity/url-search-params.js +174 -0
  405. package/dist/utils/node_modules/svelte/src/reactivity/url.js +205 -0
  406. package/dist/utils/node_modules/svelte/src/reactivity/window/index.js +161 -0
  407. package/dist/utils/node_modules/svelte/src/server/index.js +1 -0
  408. package/dist/utils/node_modules/svelte/src/store/index-client.js +169 -0
  409. package/dist/utils/node_modules/svelte/src/store/index-server.js +101 -0
  410. package/dist/utils/node_modules/svelte/src/store/shared/index.js +209 -0
  411. package/dist/utils/node_modules/svelte/src/store/utils.js +36 -0
  412. package/dist/utils/node_modules/svelte/src/transition/index.js +300 -0
  413. package/dist/utils/node_modules/svelte/src/utils.js +491 -0
  414. package/dist/utils/node_modules/svelte/src/version.js +8 -0
  415. package/dist/utils/node_modules/typescript/LICENSE.txt +55 -0
  416. package/dist/utils/node_modules/typescript/README.md +50 -0
  417. package/dist/utils/node_modules/typescript/SECURITY.md +41 -0
  418. package/dist/utils/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  419. package/dist/utils/node_modules/typescript/bin/tsc +2 -0
  420. package/dist/utils/node_modules/typescript/bin/tsserver +2 -0
  421. package/dist/utils/node_modules/typescript/lib/_tsc.js +133818 -0
  422. package/dist/utils/node_modules/typescript/lib/_tsserver.js +659 -0
  423. package/dist/utils/node_modules/typescript/lib/_typingsInstaller.js +222 -0
  424. package/dist/utils/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
  425. package/dist/utils/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
  426. package/dist/utils/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
  427. package/dist/utils/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
  428. package/dist/utils/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
  429. package/dist/utils/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
  430. package/dist/utils/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
  431. package/dist/utils/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
  432. package/dist/utils/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
  433. package/dist/utils/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
  434. package/dist/utils/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
  435. package/dist/utils/node_modules/typescript/lib/tsc.js +8 -0
  436. package/dist/utils/node_modules/typescript/lib/tsserver.js +8 -0
  437. package/dist/utils/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  438. package/dist/utils/node_modules/typescript/lib/typesMap.json +497 -0
  439. package/dist/utils/node_modules/typescript/lib/typescript.js +200276 -0
  440. package/dist/utils/node_modules/typescript/lib/typingsInstaller.js +8 -0
  441. package/dist/utils/node_modules/typescript/lib/watchGuard.js +53 -0
  442. package/dist/utils/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
  443. package/dist/utils/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
  444. package/dist/utils/node_modules/typescript/package.json +120 -0
  445. package/dist/utils/package.json +27 -0
  446. package/package.json +1 -1
@@ -0,0 +1,791 @@
1
+ /** @import { ArrayExpression, Expression, ExpressionStatement, Identifier, MemberExpression, ObjectExpression } from 'estree' */
2
+ /** @import { AST } from '#compiler' */
3
+ /** @import { ComponentClientTransformState, ComponentContext } from '../types' */
4
+ /** @import { Scope } from '../../../scope' */
5
+ import {
6
+ cannot_be_set_statically,
7
+ is_boolean_attribute,
8
+ is_dom_property,
9
+ is_load_error_element
10
+ } from '../../../../../utils.js';
11
+ import { is_ignored } from '../../../../state.js';
12
+ import { is_event_attribute, is_text_attribute } from '../../../../utils/ast.js';
13
+ import * as b from '#compiler/builders';
14
+ import {
15
+ create_attribute,
16
+ ExpressionMetadata,
17
+ is_custom_element_node,
18
+ is_customizable_select_element
19
+ } from '../../../nodes.js';
20
+ import { clean_nodes, determine_namespace_for_children } from '../../utils.js';
21
+ import { build_getter } from '../utils.js';
22
+ import {
23
+ get_attribute_name,
24
+ build_attribute_value,
25
+ build_attribute_effect,
26
+ build_set_class,
27
+ build_set_style
28
+ } from './shared/element.js';
29
+ import { process_children, is_static_element } from './shared/fragment.js';
30
+ import { build_render_statement, build_template_chunk, Memoizer } from './shared/utils.js';
31
+ import { visit_event_attribute } from './shared/events.js';
32
+ import { Template } from '../transform-template/template.js';
33
+ import { transform_template } from '../transform-template/index.js';
34
+ import { TEMPLATE_FRAGMENT } from '../../../../../constants.js';
35
+
36
+ /**
37
+ * @param {AST.RegularElement} node
38
+ * @param {ComponentContext} context
39
+ */
40
+ export function RegularElement(node, context) {
41
+ context.state.template.push_element(node.name, node.start);
42
+
43
+ if (node.name === 'noscript') {
44
+ context.state.template.pop_element();
45
+ return;
46
+ }
47
+
48
+ const is_custom_element = is_custom_element_node(node);
49
+
50
+ // cloneNode is faster, but it does not instantiate the underlying class of the
51
+ // custom element until the template is connected to the dom, which would
52
+ // cause problems when setting properties on the custom element.
53
+ // Therefore we need to use importNode instead, which doesn't have this caveat.
54
+ // Additionally, Webkit browsers need importNode for video elements for autoplay
55
+ // to work correctly.
56
+ context.state.template.needs_import_node ||= node.name === 'video' || is_custom_element;
57
+
58
+ context.state.template.contains_script_tag ||= node.name === 'script';
59
+
60
+ /** @type {Array<AST.Attribute | AST.SpreadAttribute>} */
61
+ const attributes = [];
62
+
63
+ /** @type {AST.ClassDirective[]} */
64
+ const class_directives = [];
65
+
66
+ /** @type {AST.StyleDirective[]} */
67
+ const style_directives = [];
68
+
69
+ /** @type {Array<AST.AnimateDirective | AST.BindDirective | AST.OnDirective | AST.TransitionDirective | AST.UseDirective | AST.AttachTag>} */
70
+ const other_directives = [];
71
+
72
+ /** @type {ExpressionStatement[]} */
73
+ const lets = [];
74
+
75
+ /** @type {Map<string, AST.Attribute>} */
76
+ const lookup = new Map();
77
+
78
+ /** @type {Map<string, AST.BindDirective>} */
79
+ const bindings = new Map();
80
+
81
+ let has_spread = node.metadata.has_spread;
82
+ let has_use = false;
83
+ let should_remove_defaults = false;
84
+
85
+ for (const attribute of node.attributes) {
86
+ switch (attribute.type) {
87
+ case 'AnimateDirective':
88
+ other_directives.push(attribute);
89
+ break;
90
+
91
+ case 'Attribute':
92
+ // `is` attributes need to be part of the template, otherwise they break
93
+ if (attribute.name === 'is' && context.state.metadata.namespace === 'html') {
94
+ const { value } = build_attribute_value(attribute.value, context);
95
+
96
+ if (value.type === 'Literal' && typeof value.value === 'string') {
97
+ context.state.template.set_prop('is', value.value);
98
+ continue;
99
+ }
100
+ }
101
+
102
+ attributes.push(attribute);
103
+ lookup.set(attribute.name, attribute);
104
+ break;
105
+
106
+ case 'BindDirective':
107
+ bindings.set(attribute.name, attribute);
108
+ other_directives.push(attribute);
109
+ break;
110
+
111
+ case 'ClassDirective':
112
+ class_directives.push(attribute);
113
+ break;
114
+
115
+ case 'LetDirective':
116
+ // visit let directives before everything else, to set state
117
+ context.visit(attribute, { ...context.state, let_directives: lets });
118
+ break;
119
+
120
+ case 'OnDirective':
121
+ other_directives.push(attribute);
122
+ break;
123
+
124
+ case 'SpreadAttribute':
125
+ attributes.push(attribute);
126
+ break;
127
+
128
+ case 'StyleDirective':
129
+ style_directives.push(attribute);
130
+ break;
131
+
132
+ case 'TransitionDirective':
133
+ other_directives.push(attribute);
134
+ break;
135
+
136
+ case 'UseDirective':
137
+ has_use = true;
138
+ other_directives.push(attribute);
139
+ break;
140
+
141
+ case 'AttachTag':
142
+ other_directives.push(attribute);
143
+ break;
144
+ }
145
+ }
146
+
147
+ /** @type {typeof state} */
148
+ const element_state = { ...context.state, init: [], after_update: [] };
149
+
150
+ for (const attribute of other_directives) {
151
+ if (attribute.type === 'OnDirective') {
152
+ const handler = /** @type {Expression} */ (context.visit(attribute));
153
+
154
+ if (has_use) {
155
+ element_state.init.push(b.stmt(b.call('$.effect', b.thunk(handler))));
156
+ } else {
157
+ element_state.after_update.push(b.stmt(handler));
158
+ }
159
+ } else {
160
+ context.visit(attribute, element_state);
161
+ }
162
+ }
163
+
164
+ if (node.name === 'input') {
165
+ const has_value_attribute = attributes.some(
166
+ (attribute) =>
167
+ attribute.type === 'Attribute' &&
168
+ (attribute.name === 'value' || attribute.name === 'checked') &&
169
+ !is_text_attribute(attribute)
170
+ );
171
+ const has_default_value_attribute = attributes.some(
172
+ (attribute) =>
173
+ attribute.type === 'Attribute' &&
174
+ (attribute.name === 'defaultValue' || attribute.name === 'defaultChecked')
175
+ );
176
+ if (
177
+ !has_default_value_attribute &&
178
+ (has_spread ||
179
+ bindings.has('value') ||
180
+ bindings.has('checked') ||
181
+ bindings.has('group') ||
182
+ (!bindings.has('group') && has_value_attribute))
183
+ ) {
184
+ if (has_spread) {
185
+ // remove_input_defaults will be called inside set_attributes
186
+ should_remove_defaults = true;
187
+ } else {
188
+ context.state.init.push(b.stmt(b.call('$.remove_input_defaults', context.state.node)));
189
+ }
190
+ }
191
+ }
192
+
193
+ if (node.name === 'textarea') {
194
+ const attribute = lookup.get('value') ?? lookup.get('checked');
195
+ const needs_content_reset = attribute && !is_text_attribute(attribute);
196
+
197
+ if (has_spread || bindings.has('value') || needs_content_reset) {
198
+ context.state.init.push(b.stmt(b.call('$.remove_textarea_child', context.state.node)));
199
+ }
200
+ }
201
+
202
+ if (node.name === 'select' && bindings.has('value')) {
203
+ setup_select_synchronization(/** @type {AST.BindDirective} */ (bindings.get('value')), context);
204
+ }
205
+
206
+ // Let bindings first, they can be used on attributes
207
+ context.state.init.push(...lets);
208
+
209
+ const node_id = context.state.node;
210
+
211
+ /** If true, needs `__value` for inputs */
212
+ const needs_special_value_handling =
213
+ node.name === 'option' ||
214
+ node.name === 'select' ||
215
+ bindings.has('group') ||
216
+ bindings.has('checked');
217
+
218
+ if (has_spread) {
219
+ build_attribute_effect(
220
+ attributes,
221
+ class_directives,
222
+ style_directives,
223
+ context,
224
+ node,
225
+ node_id,
226
+ should_remove_defaults
227
+ );
228
+ } else {
229
+ for (const attribute of /** @type {AST.Attribute[]} */ (attributes)) {
230
+ if (is_event_attribute(attribute)) {
231
+ visit_event_attribute(attribute, context);
232
+ continue;
233
+ }
234
+
235
+ if (needs_special_value_handling && attribute.name === 'value') {
236
+ continue;
237
+ }
238
+
239
+ const name = get_attribute_name(node, attribute);
240
+
241
+ if (
242
+ !is_custom_element &&
243
+ !cannot_be_set_statically(attribute.name) &&
244
+ (attribute.value === true || is_text_attribute(attribute)) &&
245
+ (name !== 'class' || class_directives.length === 0) &&
246
+ (name !== 'style' || style_directives.length === 0)
247
+ ) {
248
+ let value = is_text_attribute(attribute) ? attribute.value[0].data : true;
249
+
250
+ if (name === 'class' && node.metadata.scoped && context.state.analysis.css.hash) {
251
+ if (value === true || value === '') {
252
+ value = context.state.analysis.css.hash;
253
+ } else {
254
+ value += ' ' + context.state.analysis.css.hash;
255
+ }
256
+ }
257
+
258
+ if (name !== 'class' || value) {
259
+ context.state.template.set_prop(
260
+ attribute.name,
261
+ is_boolean_attribute(name) && value === true ? undefined : value === true ? '' : value
262
+ );
263
+ }
264
+ } else if (name === 'autofocus') {
265
+ let { value } = build_attribute_value(attribute.value, context);
266
+ context.state.init.push(b.stmt(b.call('$.autofocus', node_id, value)));
267
+ } else if (name === 'class') {
268
+ const is_html = context.state.metadata.namespace === 'html' && node.name !== 'svg';
269
+ build_set_class(node, node_id, attribute, class_directives, context, is_html);
270
+ } else if (name === 'style') {
271
+ build_set_style(node_id, attribute, style_directives, context);
272
+ } else if (is_custom_element) {
273
+ build_custom_element_attribute_update_assignment(node_id, attribute, context);
274
+ } else {
275
+ const { value, has_state } = build_attribute_value(
276
+ attribute.value,
277
+ context,
278
+ (value, metadata) => context.state.memoizer.add(value, metadata)
279
+ );
280
+
281
+ const update = build_element_attribute_update(node, node_id, name, value, attributes);
282
+
283
+ (has_state ? context.state.update : context.state.init).push(b.stmt(update));
284
+ }
285
+ }
286
+ }
287
+
288
+ if (
289
+ is_load_error_element(node.name) &&
290
+ (has_spread || has_use || lookup.has('onload') || lookup.has('onerror'))
291
+ ) {
292
+ context.state.after_update.push(b.stmt(b.call('$.replay_events', node_id)));
293
+ }
294
+
295
+ const metadata = {
296
+ ...context.state.metadata,
297
+ namespace: determine_namespace_for_children(node, context.state.metadata.namespace)
298
+ };
299
+
300
+ if (bindings.has('innerHTML') || bindings.has('innerText') || bindings.has('textContent')) {
301
+ const contenteditable = lookup.get('contenteditable');
302
+
303
+ if (
304
+ contenteditable &&
305
+ (contenteditable.value === true ||
306
+ (is_text_attribute(contenteditable) && contenteditable.value[0].data === 'true'))
307
+ ) {
308
+ metadata.bound_contenteditable = true;
309
+ }
310
+ }
311
+
312
+ /** @type {ComponentClientTransformState} */
313
+ const state = {
314
+ ...context.state,
315
+ metadata,
316
+ scope: /** @type {Scope} */ (context.state.scopes.get(node.fragment)),
317
+ preserve_whitespace:
318
+ context.state.preserve_whitespace || node.name === 'pre' || node.name === 'textarea'
319
+ };
320
+
321
+ const { hoisted, trimmed } = clean_nodes(
322
+ node,
323
+ node.fragment.nodes,
324
+ context.path,
325
+ state.metadata.namespace,
326
+ state,
327
+ node.name === 'script' || state.preserve_whitespace,
328
+ state.options.preserveComments
329
+ );
330
+
331
+ /** @type {typeof state} */
332
+ const child_state = { ...state, init: [], update: [], after_update: [], snippets: [] };
333
+
334
+ for (const node of hoisted) {
335
+ context.visit(node, child_state);
336
+ }
337
+
338
+ // special case — if an element that only contains text, we don't need
339
+ // to descend into it if the text is non-reactive
340
+ // in the rare case that we have static text that can't be inlined
341
+ // (e.g. `<span>{location}</span>`), set `textContent` programmatically
342
+ const use_text_content =
343
+ trimmed.every((node) => node.type === 'Text' || node.type === 'ExpressionTag') &&
344
+ trimmed.every(
345
+ (node) =>
346
+ node.type === 'Text' ||
347
+ (!node.metadata.expression.has_state &&
348
+ !node.metadata.expression.has_await &&
349
+ !node.metadata.expression.has_blockers())
350
+ ) &&
351
+ trimmed.some((node) => node.type === 'ExpressionTag');
352
+
353
+ if (use_text_content) {
354
+ const { value } = build_template_chunk(trimmed, context, child_state);
355
+ const empty_string = value.type === 'Literal' && value.value === '';
356
+
357
+ if (!empty_string) {
358
+ child_state.init.push(
359
+ b.stmt(b.assignment('=', b.member(context.state.node, 'textContent'), value))
360
+ );
361
+ }
362
+ } else if (is_customizable_select_element(node)) {
363
+ // For <option>, <optgroup>, or <select> elements with rich content, we need to branch based on browser support.
364
+ // Modern browsers preserve rich HTML in options, older browsers strip it to text only.
365
+ // We create a separate template for the rich content and append it to the element.
366
+
367
+ const element_node = context.state.node;
368
+
369
+ // Add a hydration marker inside the option element so $.child() has an anchor to find
370
+ context.state.template.push_comment();
371
+
372
+ // Create a separate template for the rich content
373
+ const template_name = context.state.scope.root.unique(`${node.name}_content`);
374
+ const fragment_id = b.id(context.state.scope.generate('fragment'));
375
+ const anchor_id = b.id(context.state.scope.generate('anchor'));
376
+
377
+ // Create state with a new template for the rich content
378
+ /** @type {typeof state} */
379
+ const select_state = {
380
+ ...state,
381
+ init: [],
382
+ update: [],
383
+ after_update: [],
384
+ template: new Template()
385
+ };
386
+
387
+ process_children(
388
+ trimmed,
389
+ (is_text) => b.call('$.first_child', fragment_id, is_text && b.true),
390
+ false,
391
+ {
392
+ ...context,
393
+ state: select_state
394
+ }
395
+ );
396
+
397
+ // Transform the template to $.from_html(...) and hoist it
398
+ const template = transform_template(select_state, metadata.namespace, TEMPLATE_FRAGMENT);
399
+ context.state.hoisted.push(b.var(template_name, template));
400
+
401
+ // Build the rich content function body
402
+ // The anchor is the child of the element (a hydration marker during hydration)
403
+ const body = b.block([
404
+ b.var(anchor_id, b.call('$.child', element_node)),
405
+ b.var(fragment_id, b.call(template_name)),
406
+ ...select_state.init,
407
+ ...(select_state.update.length > 0 ? [build_render_statement(select_state)] : []),
408
+ ...select_state.after_update,
409
+ b.stmt(b.call('$.append', anchor_id, fragment_id))
410
+ ]);
411
+
412
+ child_state.init.push(b.stmt(b.call('$.customizable_select', element_node, b.arrow([], body))));
413
+ } else {
414
+ /** @type {Expression} */
415
+ let arg = context.state.node;
416
+
417
+ // If `hydrate_node` is set inside the element, we need to reset it
418
+ // after the element has been hydrated. We need to check if any child
419
+ // would actually advance the hydrate_node cursor - static elements don't.
420
+ let needs_reset = trimmed.some((node) => node.type !== 'Text' && !is_static_element(node));
421
+
422
+ // The same applies if it's a `<template>` element, since we need to
423
+ // set the value of `hydrate_node` to `node.content`
424
+ if (node.name === 'template') {
425
+ needs_reset = true;
426
+ child_state.init.push(b.stmt(b.call('$.hydrate_template', arg)));
427
+ arg = b.member(arg, 'content');
428
+ }
429
+
430
+ process_children(trimmed, (is_text) => b.call('$.child', arg, is_text && b.true), true, {
431
+ ...context,
432
+ state: child_state
433
+ });
434
+
435
+ if (needs_reset) {
436
+ child_state.init.push(b.stmt(b.call('$.reset', context.state.node)));
437
+ }
438
+ }
439
+
440
+ if (node.fragment.nodes.some((node) => node.type === 'SnippetBlock')) {
441
+ // Wrap children in `{...}` to avoid declaration conflicts
442
+ context.state.init.push(
443
+ b.block([
444
+ ...child_state.snippets,
445
+ ...child_state.init,
446
+ ...element_state.init,
447
+ child_state.update.length > 0 ? build_render_statement(child_state) : b.empty,
448
+ ...child_state.after_update,
449
+ ...element_state.after_update
450
+ ])
451
+ );
452
+ } else if (node.fragment.metadata.dynamic) {
453
+ context.state.init.push(...child_state.init, ...element_state.init);
454
+ context.state.update.push(...child_state.update);
455
+ context.state.after_update.push(...child_state.after_update, ...element_state.after_update);
456
+ } else {
457
+ context.state.init.push(...element_state.init);
458
+ context.state.after_update.push(...element_state.after_update);
459
+ }
460
+
461
+ if (node.name === 'selectedcontent') {
462
+ context.state.init.push(
463
+ b.stmt(
464
+ b.call(
465
+ '$.selectedcontent',
466
+ context.state.node,
467
+ b.arrow([b.id('$$element')], b.assignment('=', context.state.node, b.id('$$element')))
468
+ )
469
+ )
470
+ );
471
+ }
472
+
473
+ if (lookup.has('dir')) {
474
+ // This fixes an issue with Chromium where updates to text content within an element
475
+ // does not update the direction when set to auto. If we just re-assign the dir, this fixes it.
476
+ const dir = b.member(node_id, 'dir');
477
+ context.state.update.push(b.stmt(b.assignment('=', dir, dir)));
478
+ }
479
+
480
+ if (!has_spread && needs_special_value_handling) {
481
+ if (node.metadata.synthetic_value_node) {
482
+ const synthetic_node = node.metadata.synthetic_value_node;
483
+ const synthetic_attribute = create_attribute(
484
+ 'value',
485
+ null,
486
+ synthetic_node.start,
487
+ synthetic_node.end,
488
+ [synthetic_node]
489
+ );
490
+ // this node is an `option` that didn't have a `value` attribute, but had
491
+ // a single-expression child, so we treat the value of that expression as
492
+ // the value of the option
493
+ build_element_special_value_attribute(node.name, node_id, synthetic_attribute, context, true);
494
+ } else {
495
+ for (const attribute of /** @type {AST.Attribute[]} */ (attributes)) {
496
+ if (attribute.name === 'value') {
497
+ build_element_special_value_attribute(node.name, node_id, attribute, context);
498
+ break;
499
+ }
500
+ }
501
+ }
502
+ }
503
+
504
+ context.state.template.pop_element();
505
+ }
506
+
507
+ /**
508
+ * Special case: if we have a value binding on a select element, we need to set up synchronization
509
+ * between the value binding and inner signals, for indirect updates
510
+ * @param {AST.BindDirective} value_binding
511
+ * @param {ComponentContext} context
512
+ */
513
+ function setup_select_synchronization(value_binding, context) {
514
+ if (context.state.analysis.runes) return;
515
+
516
+ let bound = value_binding.expression;
517
+
518
+ if (bound.type === 'SequenceExpression') {
519
+ return;
520
+ }
521
+
522
+ while (bound.type === 'MemberExpression') {
523
+ bound = /** @type {Identifier | MemberExpression} */ (bound.object);
524
+ }
525
+
526
+ /** @type {string[]} */
527
+ const names = [];
528
+
529
+ for (const [name, refs] of context.state.scope.references) {
530
+ if (
531
+ refs.length > 0 &&
532
+ // prevent infinite loop
533
+ name !== bound.name
534
+ ) {
535
+ names.push(name);
536
+ }
537
+ }
538
+
539
+ const invalidator = b.call(
540
+ '$.invalidate_inner_signals',
541
+ b.thunk(
542
+ b.block(
543
+ names.map((name) => {
544
+ const serialized = build_getter(b.id(name), context.state);
545
+ return b.stmt(serialized);
546
+ })
547
+ )
548
+ )
549
+ );
550
+
551
+ context.state.init.push(
552
+ b.stmt(
553
+ b.call(
554
+ '$.template_effect',
555
+ b.thunk(
556
+ b.block([b.stmt(/** @type {Expression} */ (context.visit(bound))), b.stmt(invalidator)])
557
+ )
558
+ )
559
+ )
560
+ );
561
+ }
562
+
563
+ /**
564
+ * @param {AST.ClassDirective[]} class_directives
565
+ * @param {ComponentContext} context
566
+ * @param {Memoizer} memoizer
567
+ */
568
+ export function build_class_directives_object(
569
+ class_directives,
570
+ context,
571
+ memoizer = context.state.memoizer
572
+ ) {
573
+ let properties = [];
574
+
575
+ const metadata = new ExpressionMetadata();
576
+
577
+ for (const d of class_directives) {
578
+ metadata.merge(d.metadata.expression);
579
+
580
+ const expression = /** @type Expression */ (context.visit(d.expression));
581
+ properties.push(b.init(d.name, expression));
582
+ }
583
+
584
+ const directives = b.object(properties);
585
+
586
+ return memoizer.add(directives, metadata);
587
+ }
588
+
589
+ /**
590
+ * @param {AST.StyleDirective[]} style_directives
591
+ * @param {ComponentContext} context
592
+ * @param {Memoizer} memoizer
593
+ */
594
+ export function build_style_directives_object(
595
+ style_directives,
596
+ context,
597
+ memoizer = context.state.memoizer
598
+ ) {
599
+ const normal = b.object([]);
600
+ const important = b.object([]);
601
+
602
+ const metadata = new ExpressionMetadata();
603
+
604
+ for (const d of style_directives) {
605
+ metadata.merge(d.metadata.expression);
606
+
607
+ const expression =
608
+ d.value === true
609
+ ? build_getter(b.id(d.name), context.state)
610
+ : build_attribute_value(d.value, context).value;
611
+
612
+ const object = d.modifiers.includes('important') ? important : normal;
613
+ object.properties.push(b.init(d.name, expression));
614
+ }
615
+
616
+ const directives = important.properties.length ? b.array([normal, important]) : normal;
617
+
618
+ return memoizer.add(directives, metadata);
619
+ }
620
+
621
+ /**
622
+ * Serializes an assignment to an element property by adding relevant statements to either only
623
+ * the init or the init and update arrays, depending on whether or not the value is dynamic.
624
+ * Resulting code for static looks something like this:
625
+ * ```js
626
+ * element.property = value;
627
+ * // or
628
+ * $.set_attribute(element, property, value);
629
+ * });
630
+ * ```
631
+ * Resulting code for dynamic looks something like this:
632
+ * ```js
633
+ * let value;
634
+ * $.template_effect(() => {
635
+ * if (value !== (value = 'new value')) {
636
+ * element.property = value;
637
+ * // or
638
+ * $.set_attribute(element, property, value);
639
+ * }
640
+ * });
641
+ * ```
642
+ * Returns true if attribute is deemed reactive, false otherwise.
643
+ * @param {AST.RegularElement} element
644
+ * @param {Identifier} node_id
645
+ * @param {string} name
646
+ * @param {Expression} value
647
+ * @param {Array<AST.Attribute | AST.SpreadAttribute>} attributes
648
+ */
649
+ function build_element_attribute_update(element, node_id, name, value, attributes) {
650
+ if (name === 'muted') {
651
+ // Special case for Firefox who needs it set as a property in order to work
652
+ return b.assignment('=', b.member(node_id, b.id('muted')), value);
653
+ }
654
+
655
+ if (name === 'value') {
656
+ return b.call('$.set_value', node_id, value);
657
+ }
658
+
659
+ if (name === 'checked') {
660
+ return b.call('$.set_checked', node_id, value);
661
+ }
662
+
663
+ if (name === 'selected') {
664
+ return b.call('$.set_selected', node_id, value);
665
+ }
666
+
667
+ if (
668
+ // If we would just set the defaultValue property, it would override the value property,
669
+ // because it is set in the template which implicitly means it's also setting the default value,
670
+ // and if one updates the default value while the input is pristine it will also update the
671
+ // current value, which is not what we want, which is why we need to do some extra work.
672
+ name === 'defaultValue' &&
673
+ (attributes.some(
674
+ (attr) => attr.type === 'Attribute' && attr.name === 'value' && is_text_attribute(attr)
675
+ ) ||
676
+ (element.name === 'textarea' && element.fragment.nodes.length > 0))
677
+ ) {
678
+ return b.call('$.set_default_value', node_id, value);
679
+ }
680
+
681
+ if (
682
+ // See defaultValue comment
683
+ name === 'defaultChecked' &&
684
+ attributes.some(
685
+ (attr) => attr.type === 'Attribute' && attr.name === 'checked' && attr.value === true
686
+ )
687
+ ) {
688
+ return b.call('$.set_default_checked', node_id, value);
689
+ }
690
+
691
+ if (is_dom_property(name)) {
692
+ return b.assignment('=', b.member(node_id, name), value);
693
+ }
694
+
695
+ return b.call(
696
+ name.startsWith('xlink') ? '$.set_xlink_attribute' : '$.set_attribute',
697
+ node_id,
698
+ b.literal(name),
699
+ value,
700
+ is_ignored(element, 'hydration_attribute_changed') && b.true
701
+ );
702
+ }
703
+
704
+ /**
705
+ * Like `build_element_attribute_update` but without any special attribute treatment.
706
+ * @param {Identifier} node_id
707
+ * @param {AST.Attribute} attribute
708
+ * @param {ComponentContext} context
709
+ */
710
+ function build_custom_element_attribute_update_assignment(node_id, attribute, context) {
711
+ const { value, has_state } = build_attribute_value(attribute.value, context);
712
+
713
+ // don't lowercase name, as we set the element's property, which might be case sensitive
714
+ const call = b.call('$.set_custom_element_data', node_id, b.literal(attribute.name), value);
715
+
716
+ // this is different from other updates — it doesn't get grouped,
717
+ // because set_custom_element_data may not be idempotent
718
+ const update = has_state ? b.call('$.template_effect', b.thunk(call)) : call;
719
+
720
+ context.state.init.push(b.stmt(update));
721
+ }
722
+
723
+ /**
724
+ * Serializes an assignment to the value property of a `<select>`, `<option>` or `<input>` element
725
+ * that needs the hidden `__value` property.
726
+ * Returns true if attribute is deemed reactive, false otherwise.
727
+ * @param {string} element
728
+ * @param {Identifier} node_id
729
+ * @param {AST.Attribute} attribute
730
+ * @param {ComponentContext} context
731
+ * @param {boolean} [synthetic] - true if this should not sync to the DOM
732
+ */
733
+ function build_element_special_value_attribute(
734
+ element,
735
+ node_id,
736
+ attribute,
737
+ context,
738
+ synthetic = false
739
+ ) {
740
+ const state = context.state;
741
+ const is_select_with_value =
742
+ // attribute.metadata.dynamic would give false negatives because even if the value does not change,
743
+ // the inner options could still change, so we need to always treat it as reactive
744
+ element === 'select' && attribute.value !== true && !is_text_attribute(attribute);
745
+
746
+ const { value, has_state } = build_attribute_value(attribute.value, context, (value, metadata) =>
747
+ state.memoizer.add(value, metadata)
748
+ );
749
+
750
+ const evaluated = context.state.scope.evaluate(value);
751
+ const assignment = b.assignment('=', b.member(node_id, '__value'), value);
752
+
753
+ const set_value_assignment = b.assignment(
754
+ '=',
755
+ b.member(node_id, 'value'),
756
+ evaluated.is_defined ? assignment : b.logical('??', assignment, b.literal(''))
757
+ );
758
+
759
+ const update = b.stmt(
760
+ is_select_with_value
761
+ ? b.sequence([
762
+ set_value_assignment,
763
+ // This ensures a one-way street to the DOM in case it's <select {value}>
764
+ // and not <select bind:value>. We need it in addition to $.init_select
765
+ // because the select value is not reflected as an attribute, so the
766
+ // mutation observer wouldn't notice.
767
+ b.call('$.select_option', node_id, value)
768
+ ])
769
+ : synthetic
770
+ ? assignment
771
+ : set_value_assignment
772
+ );
773
+
774
+ if (has_state) {
775
+ const id = b.id(state.scope.generate(`${node_id.name}_value`));
776
+
777
+ // `<option>` is a special case: The value property reflects to the DOM. If the value is set to undefined,
778
+ // that means the value should be set to the empty string. To be able to do that when the value is
779
+ // initially undefined, we need to set a value that is guaranteed to be different.
780
+ const init = element === 'option' ? b.object([]) : undefined;
781
+
782
+ state.init.push(b.var(id, init));
783
+ state.update.push(b.if(b.binary('!==', id, b.assignment('=', id, value)), b.block([update])));
784
+ } else {
785
+ state.init.push(update);
786
+ }
787
+
788
+ if (is_select_with_value) {
789
+ state.init.push(b.stmt(b.call('$.init_select', node_id)));
790
+ }
791
+ }