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,1160 @@
1
+ /** @import * as Compiler from '#compiler' */
2
+ import { walk } from 'zimmerframe';
3
+ import {
4
+ get_parent_rules,
5
+ get_possible_values,
6
+ is_outer_global,
7
+ is_unscoped_pseudo_class
8
+ } from './utils.js';
9
+ import { regex_ends_with_whitespace, regex_starts_with_whitespace } from '../../patterns.js';
10
+ import { get_attribute_chunks, is_text_attribute } from '../../../utils/ast.js';
11
+
12
+ /** @typedef {typeof NODE_PROBABLY_EXISTS | typeof NODE_DEFINITELY_EXISTS} NodeExistsValue */
13
+ /** @typedef {typeof FORWARD | typeof BACKWARD} Direction */
14
+
15
+ const NODE_PROBABLY_EXISTS = 0;
16
+ const NODE_DEFINITELY_EXISTS = 1;
17
+ const FORWARD = 0;
18
+ const BACKWARD = 1;
19
+
20
+ const whitelist_attribute_selector = new Map([
21
+ ['details', ['open']],
22
+ ['dialog', ['open']]
23
+ ]);
24
+
25
+ /** @type {Compiler.AST.CSS.Combinator} */
26
+ const descendant_combinator = {
27
+ type: 'Combinator',
28
+ name: ' ',
29
+ start: -1,
30
+ end: -1
31
+ };
32
+
33
+ /** @type {Compiler.AST.CSS.RelativeSelector} */
34
+ const nesting_selector = {
35
+ type: 'RelativeSelector',
36
+ start: -1,
37
+ end: -1,
38
+ combinator: null,
39
+ selectors: [
40
+ {
41
+ type: 'NestingSelector',
42
+ name: '&',
43
+ start: -1,
44
+ end: -1
45
+ }
46
+ ],
47
+ metadata: {
48
+ is_global: false,
49
+ is_global_like: false,
50
+ scoped: false
51
+ }
52
+ };
53
+
54
+ /** @type {Compiler.AST.CSS.RelativeSelector} */
55
+ const any_selector = {
56
+ type: 'RelativeSelector',
57
+ start: -1,
58
+ end: -1,
59
+ combinator: null,
60
+ selectors: [
61
+ {
62
+ type: 'TypeSelector',
63
+ name: '*',
64
+ start: -1,
65
+ end: -1
66
+ }
67
+ ],
68
+ metadata: {
69
+ is_global: false,
70
+ is_global_like: false,
71
+ scoped: false
72
+ }
73
+ };
74
+
75
+ /**
76
+ * Snippets encountered already (avoids infinite loops)
77
+ * @type {Set<Compiler.AST.SnippetBlock>}
78
+ */
79
+ const seen = new Set();
80
+
81
+ /**
82
+ *
83
+ * @param {Compiler.AST.CSS.StyleSheet} stylesheet
84
+ * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement} element
85
+ */
86
+ export function prune(stylesheet, element) {
87
+ walk(/** @type {Compiler.AST.CSS.Node} */ (stylesheet), null, {
88
+ Rule(node, context) {
89
+ if (node.metadata.is_global_block) {
90
+ context.visit(node.prelude);
91
+ } else {
92
+ context.next();
93
+ }
94
+ },
95
+ ComplexSelector(node) {
96
+ const selectors = get_relative_selectors(node);
97
+
98
+ seen.clear();
99
+
100
+ if (
101
+ apply_selector(
102
+ selectors,
103
+ /** @type {Compiler.AST.CSS.Rule} */ (node.metadata.rule),
104
+ element,
105
+ BACKWARD
106
+ )
107
+ ) {
108
+ node.metadata.used = true;
109
+ }
110
+
111
+ // note: we don't call context.next() here, we only recurse into
112
+ // selectors that don't belong to rules (i.e. inside `:is(...)` etc)
113
+ // when we encounter them below
114
+ }
115
+ });
116
+ }
117
+
118
+ /**
119
+ * Retrieves the relative selectors (minus the trailing globals) from a complex selector.
120
+ * Also searches them for any existing `&` selectors and adds one if none are found.
121
+ * This ensures we traverse up to the parent rule when the inner selectors match and we're
122
+ * trying to see if the parent rule also matches.
123
+ * @param {Compiler.AST.CSS.ComplexSelector} node
124
+ */
125
+ function get_relative_selectors(node) {
126
+ const selectors = truncate(node);
127
+
128
+ if (node.metadata.rule?.metadata.parent_rule && selectors.length > 0) {
129
+ let has_explicit_nesting_selector = false;
130
+
131
+ // nesting could be inside pseudo classes like :is, :has or :where
132
+ for (let selector of selectors) {
133
+ walk(selector, null, {
134
+ // @ts-ignore
135
+ NestingSelector() {
136
+ has_explicit_nesting_selector = true;
137
+ }
138
+ });
139
+
140
+ // if we found one we can break from the others
141
+ if (has_explicit_nesting_selector) break;
142
+ }
143
+
144
+ if (!has_explicit_nesting_selector) {
145
+ if (selectors[0].combinator === null) {
146
+ selectors[0] = {
147
+ ...selectors[0],
148
+ combinator: descendant_combinator
149
+ };
150
+ }
151
+
152
+ selectors.unshift(nesting_selector);
153
+ }
154
+ }
155
+
156
+ return selectors;
157
+ }
158
+
159
+ /**
160
+ * Discard trailing `:global(...)` selectors, these are unused for scoping purposes
161
+ * @param {Compiler.AST.CSS.ComplexSelector} node
162
+ */
163
+ function truncate(node) {
164
+ const i = node.children.findLastIndex(({ metadata, selectors }) => {
165
+ const first = selectors[0];
166
+ return (
167
+ // not after a :global selector
168
+ !metadata.is_global_like &&
169
+ !(first.type === 'PseudoClassSelector' && first.name === 'global' && first.args === null) &&
170
+ // not a :global(...) without a :has/is/where(...) modifier that is scoped
171
+ !metadata.is_global
172
+ );
173
+ });
174
+
175
+ return node.children.slice(0, i + 1).map((child) => {
176
+ // In case of `:root.y:has(...)`, `y` is unscoped, but everything in `:has(...)` should be scoped (if not global).
177
+ // To properly accomplish that, we gotta filter out all selector types except `:has`.
178
+ const root = child.selectors.find((s) => s.type === 'PseudoClassSelector' && s.name === 'root');
179
+ if (!root || child.metadata.is_global_like) return child;
180
+
181
+ return {
182
+ ...child,
183
+ selectors: child.selectors.filter((s) => s.type === 'PseudoClassSelector' && s.name === 'has')
184
+ };
185
+ });
186
+ }
187
+
188
+ /**
189
+ * @param {Compiler.AST.CSS.RelativeSelector[]} relative_selectors
190
+ * @param {Compiler.AST.CSS.Rule} rule
191
+ * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement} element
192
+ * @param {Direction} direction
193
+ * @returns {boolean}
194
+ */
195
+ function apply_selector(relative_selectors, rule, element, direction) {
196
+ const rest_selectors = relative_selectors.slice();
197
+ const relative_selector = direction === FORWARD ? rest_selectors.shift() : rest_selectors.pop();
198
+
199
+ const matched =
200
+ !!relative_selector &&
201
+ relative_selector_might_apply_to_node(relative_selector, rule, element, direction) &&
202
+ apply_combinator(relative_selector, rest_selectors, rule, element, direction);
203
+
204
+ if (matched) {
205
+ if (!is_outer_global(relative_selector)) {
206
+ relative_selector.metadata.scoped = true;
207
+ }
208
+
209
+ element.metadata.scoped = true;
210
+ }
211
+
212
+ return matched;
213
+ }
214
+
215
+ /**
216
+ * @param {Compiler.AST.CSS.RelativeSelector} relative_selector
217
+ * @param {Compiler.AST.CSS.RelativeSelector[]} rest_selectors
218
+ * @param {Compiler.AST.CSS.Rule} rule
219
+ * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement | Compiler.AST.RenderTag | Compiler.AST.Component | Compiler.AST.SvelteComponent | Compiler.AST.SvelteSelf} node
220
+ * @param {Direction} direction
221
+ * @returns {boolean}
222
+ */
223
+ function apply_combinator(relative_selector, rest_selectors, rule, node, direction) {
224
+ const combinator =
225
+ direction == FORWARD ? rest_selectors[0]?.combinator : relative_selector.combinator;
226
+ if (!combinator) return true;
227
+
228
+ switch (combinator.name) {
229
+ case ' ':
230
+ case '>': {
231
+ const is_adjacent = combinator.name === '>';
232
+ const parents =
233
+ direction === FORWARD
234
+ ? get_descendant_elements(node, is_adjacent)
235
+ : get_ancestor_elements(node, is_adjacent);
236
+ let parent_matched = false;
237
+
238
+ for (const parent of parents) {
239
+ if (apply_selector(rest_selectors, rule, parent, direction)) {
240
+ parent_matched = true;
241
+ }
242
+ }
243
+
244
+ return (
245
+ parent_matched ||
246
+ (direction === BACKWARD &&
247
+ (!is_adjacent || parents.length === 0) &&
248
+ rest_selectors.every((selector) => is_global(selector, rule)))
249
+ );
250
+ }
251
+
252
+ case '+':
253
+ case '~': {
254
+ const siblings = get_possible_element_siblings(node, direction, combinator.name === '+');
255
+
256
+ let sibling_matched = false;
257
+
258
+ for (const possible_sibling of siblings.keys()) {
259
+ if (
260
+ possible_sibling.type === 'RenderTag' ||
261
+ possible_sibling.type === 'SlotElement' ||
262
+ possible_sibling.type === 'Component'
263
+ ) {
264
+ // `{@render foo()}<p>foo</p>` with `:global(.x) + p` is a match
265
+ if (rest_selectors.length === 1 && rest_selectors[0].metadata.is_global) {
266
+ sibling_matched = true;
267
+ }
268
+ } else if (apply_selector(rest_selectors, rule, possible_sibling, direction)) {
269
+ sibling_matched = true;
270
+ }
271
+ }
272
+
273
+ return (
274
+ sibling_matched ||
275
+ (direction === BACKWARD &&
276
+ get_element_parent(node) === null &&
277
+ rest_selectors.every((selector) => is_global(selector, rule)))
278
+ );
279
+ }
280
+
281
+ default:
282
+ // TODO other combinators
283
+ return true;
284
+ }
285
+ }
286
+
287
+ /**
288
+ * Returns `true` if the relative selector is global, meaning
289
+ * it's a `:global(...)` or unscopeable selector, or
290
+ * is an `:is(...)` or `:where(...)` selector that contains
291
+ * a global selector
292
+ * @param {Compiler.AST.CSS.RelativeSelector} selector
293
+ * @param {Compiler.AST.CSS.Rule} rule
294
+ * @returns {boolean}
295
+ */
296
+ function is_global(selector, rule) {
297
+ if (selector.metadata.is_global || selector.metadata.is_global_like) {
298
+ return true;
299
+ }
300
+
301
+ let explicitly_global = false;
302
+
303
+ for (const s of selector.selectors) {
304
+ /** @type {Compiler.AST.CSS.SelectorList | null} */
305
+ let selector_list = null;
306
+ let can_be_global = false;
307
+ let owner = rule;
308
+
309
+ if (s.type === 'PseudoClassSelector') {
310
+ if ((s.name === 'is' || s.name === 'where') && s.args) {
311
+ selector_list = s.args;
312
+ } else {
313
+ can_be_global = is_unscoped_pseudo_class(s);
314
+ }
315
+ }
316
+
317
+ if (s.type === 'NestingSelector') {
318
+ owner = /** @type {Compiler.AST.CSS.Rule} */ (rule.metadata.parent_rule);
319
+ selector_list = owner.prelude;
320
+ }
321
+
322
+ const has_global_selectors = !!selector_list?.children.some((complex_selector) => {
323
+ return complex_selector.children.every((relative_selector) =>
324
+ is_global(relative_selector, owner)
325
+ );
326
+ });
327
+ explicitly_global ||= has_global_selectors;
328
+
329
+ if (!has_global_selectors && !can_be_global) {
330
+ return false;
331
+ }
332
+ }
333
+
334
+ return explicitly_global || selector.selectors.length === 0;
335
+ }
336
+
337
+ const regex_backslash_and_following_character = /\\(.)/g;
338
+
339
+ /**
340
+ * Ensure that `element` satisfies each simple selector in `relative_selector`
341
+ *
342
+ * @param {Compiler.AST.CSS.RelativeSelector} relative_selector
343
+ * @param {Compiler.AST.CSS.Rule} rule
344
+ * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement} element
345
+ * @param {Direction} direction
346
+ * @returns {boolean}
347
+ */
348
+ function relative_selector_might_apply_to_node(relative_selector, rule, element, direction) {
349
+ // Sort :has(...) selectors in one bucket and everything else into another
350
+ const has_selectors = [];
351
+ const other_selectors = [];
352
+
353
+ for (const selector of relative_selector.selectors) {
354
+ if (selector.type === 'PseudoClassSelector' && selector.name === 'has' && selector.args) {
355
+ has_selectors.push(selector);
356
+ } else {
357
+ other_selectors.push(selector);
358
+ }
359
+ }
360
+
361
+ // If we're called recursively from a :has(...) selector, we're on the way of checking if the other selectors match.
362
+ // In that case ignore this check (because we just came from this) to avoid an infinite loop.
363
+ if (has_selectors.length > 0) {
364
+ // If this is a :has inside a global selector, we gotta include the element itself, too,
365
+ // because the global selector might be for an element that's outside the component,
366
+ // e.g. :root:has(.scoped), :global(.foo):has(.scoped), or :root { &:has(.scoped) {} }
367
+ const rules = get_parent_rules(rule);
368
+ const include_self =
369
+ rules.some((r) => r.prelude.children.some((c) => c.children.some((s) => is_global(s, r)))) ||
370
+ rules[rules.length - 1].prelude.children.some((c) =>
371
+ c.children.some((r) =>
372
+ r.selectors.some(
373
+ (s) =>
374
+ s.type === 'PseudoClassSelector' &&
375
+ (s.name === 'root' || (s.name === 'global' && s.args))
376
+ )
377
+ )
378
+ );
379
+
380
+ // :has(...) is special in that it means "look downwards in the CSS tree". Since our matching algorithm goes
381
+ // upwards and back-to-front, we need to first check the selectors inside :has(...), then check the rest of the
382
+ // selector in a way that is similar to ancestor matching. In a sense, we're treating `.x:has(.y)` as `.x .y`.
383
+ for (const has_selector of has_selectors) {
384
+ const complex_selectors = /** @type {Compiler.AST.CSS.SelectorList} */ (has_selector.args)
385
+ .children;
386
+ let matched = false;
387
+
388
+ for (const complex_selector of complex_selectors) {
389
+ const [first, ...rest] = truncate(complex_selector);
390
+ // if it was just a :global(...)
391
+ if (!first) {
392
+ complex_selector.metadata.used = true;
393
+ matched = true;
394
+ continue;
395
+ }
396
+
397
+ if (include_self) {
398
+ const selector_including_self = [
399
+ first.combinator ? { ...first, combinator: null } : first,
400
+ ...rest
401
+ ];
402
+ if (apply_selector(selector_including_self, rule, element, FORWARD)) {
403
+ complex_selector.metadata.used = true;
404
+ matched = true;
405
+ }
406
+ }
407
+
408
+ const selector_excluding_self = [
409
+ any_selector,
410
+ first.combinator ? first : { ...first, combinator: descendant_combinator },
411
+ ...rest
412
+ ];
413
+ if (apply_selector(selector_excluding_self, rule, element, FORWARD)) {
414
+ complex_selector.metadata.used = true;
415
+ matched = true;
416
+ }
417
+ }
418
+
419
+ if (!matched) {
420
+ return false;
421
+ }
422
+ }
423
+ }
424
+
425
+ for (const selector of other_selectors) {
426
+ if (selector.type === 'Percentage' || selector.type === 'Nth') continue;
427
+
428
+ const name = selector.name.replace(regex_backslash_and_following_character, '$1');
429
+
430
+ switch (selector.type) {
431
+ case 'PseudoClassSelector': {
432
+ if (name === 'host' || name === 'root') return false;
433
+
434
+ if (
435
+ name === 'global' &&
436
+ selector.args !== null &&
437
+ relative_selector.selectors.length === 1
438
+ ) {
439
+ const args = selector.args;
440
+ const complex_selector = args.children[0];
441
+ return apply_selector(complex_selector.children, rule, element, BACKWARD);
442
+ }
443
+
444
+ // We came across a :global, everything beyond it is global and therefore a potential match
445
+ if (name === 'global' && selector.args === null) return true;
446
+
447
+ // :not(...) contents should stay unscoped. Scoping them would achieve the opposite of what we want,
448
+ // because they are then _more_ likely to bleed out of the component. The exception is complex selectors
449
+ // with descendants, in which case we scope them all.
450
+ if (name === 'not' && selector.args) {
451
+ for (const complex_selector of selector.args.children) {
452
+ walk(complex_selector, null, {
453
+ ComplexSelector(node, context) {
454
+ node.metadata.used = true;
455
+ context.next();
456
+ }
457
+ });
458
+ const relative = truncate(complex_selector);
459
+
460
+ if (complex_selector.children.length > 1) {
461
+ // foo:not(bar foo) means that bar is an ancestor of foo (side note: ending with foo is the only way the selector make sense).
462
+ // We can't fully check if that actually matches with our current algorithm, so we just assume it does.
463
+ // The result may not match a real element, so the only drawback is the missing prune.
464
+ for (const selector of relative) {
465
+ selector.metadata.scoped = true;
466
+ }
467
+
468
+ /** @type {Compiler.AST.RegularElement | Compiler.AST.SvelteElement | null} */
469
+ let el = element;
470
+ while (el) {
471
+ el.metadata.scoped = true;
472
+ el = get_element_parent(el);
473
+ }
474
+ }
475
+ }
476
+
477
+ break;
478
+ }
479
+
480
+ if ((name === 'is' || name === 'where') && selector.args) {
481
+ let matched = false;
482
+
483
+ for (const complex_selector of selector.args.children) {
484
+ const relative = truncate(complex_selector);
485
+ const is_global = relative.length === 0;
486
+
487
+ if (is_global) {
488
+ complex_selector.metadata.used = true;
489
+ matched = true;
490
+ } else if (apply_selector(relative, rule, element, BACKWARD)) {
491
+ complex_selector.metadata.used = true;
492
+ matched = true;
493
+ } else if (complex_selector.children.length > 1 && (name == 'is' || name == 'where')) {
494
+ // foo :is(bar baz) can also mean that bar is an ancestor of foo, and baz a descendant.
495
+ // We can't fully check if that actually matches with our current algorithm, so we just assume it does.
496
+ // The result may not match a real element, so the only drawback is the missing prune.
497
+ complex_selector.metadata.used = true;
498
+ matched = true;
499
+ for (const selector of relative) {
500
+ selector.metadata.scoped = true;
501
+ }
502
+ }
503
+ }
504
+
505
+ if (!matched) {
506
+ return false;
507
+ }
508
+ }
509
+
510
+ break;
511
+ }
512
+
513
+ case 'PseudoElementSelector': {
514
+ break;
515
+ }
516
+
517
+ case 'AttributeSelector': {
518
+ const whitelisted = whitelist_attribute_selector.get(element.name.toLowerCase());
519
+ if (
520
+ !whitelisted?.includes(selector.name.toLowerCase()) &&
521
+ !attribute_matches(
522
+ element,
523
+ selector.name,
524
+ selector.value && unquote(selector.value),
525
+ selector.matcher,
526
+ selector.flags?.includes('i') ?? false
527
+ )
528
+ ) {
529
+ return false;
530
+ }
531
+ break;
532
+ }
533
+
534
+ case 'ClassSelector': {
535
+ if (!attribute_matches(element, 'class', name, '~=', false)) {
536
+ return false;
537
+ }
538
+
539
+ break;
540
+ }
541
+
542
+ case 'IdSelector': {
543
+ if (!attribute_matches(element, 'id', name, '=', false)) {
544
+ return false;
545
+ }
546
+
547
+ break;
548
+ }
549
+
550
+ case 'TypeSelector': {
551
+ if (
552
+ element.name.toLowerCase() !== name.toLowerCase() &&
553
+ name !== '*' &&
554
+ element.type !== 'SvelteElement'
555
+ ) {
556
+ return false;
557
+ }
558
+
559
+ break;
560
+ }
561
+
562
+ case 'NestingSelector': {
563
+ let matched = false;
564
+
565
+ const parent = /** @type {Compiler.AST.CSS.Rule} */ (rule.metadata.parent_rule);
566
+
567
+ for (const complex_selector of parent.prelude.children) {
568
+ if (
569
+ apply_selector(get_relative_selectors(complex_selector), parent, element, direction) ||
570
+ complex_selector.children.every((s) => is_global(s, parent))
571
+ ) {
572
+ complex_selector.metadata.used = true;
573
+ matched = true;
574
+ }
575
+ }
576
+
577
+ if (!matched) {
578
+ return false;
579
+ }
580
+
581
+ break;
582
+ }
583
+ }
584
+ }
585
+
586
+ // possible match
587
+ return true;
588
+ }
589
+
590
+ /**
591
+ * @param {any} operator
592
+ * @param {any} expected_value
593
+ * @param {any} case_insensitive
594
+ * @param {any} value
595
+ */
596
+ function test_attribute(operator, expected_value, case_insensitive, value) {
597
+ if (case_insensitive) {
598
+ expected_value = expected_value.toLowerCase();
599
+ value = value.toLowerCase();
600
+ }
601
+ switch (operator) {
602
+ case '=':
603
+ return value === expected_value;
604
+ case '~=':
605
+ return value.split(/\s/).includes(expected_value);
606
+ case '|=':
607
+ return `${value}-`.startsWith(`${expected_value}-`);
608
+ case '^=':
609
+ return value.startsWith(expected_value);
610
+ case '$=':
611
+ return value.endsWith(expected_value);
612
+ case '*=':
613
+ return value.includes(expected_value);
614
+ default:
615
+ throw new Error("this shouldn't happen");
616
+ }
617
+ }
618
+
619
+ /**
620
+ * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement} node
621
+ * @param {string} name
622
+ * @param {string | null} expected_value
623
+ * @param {string | null} operator
624
+ * @param {boolean} case_insensitive
625
+ */
626
+ function attribute_matches(node, name, expected_value, operator, case_insensitive) {
627
+ for (const attribute of node.attributes) {
628
+ if (attribute.type === 'SpreadAttribute') return true;
629
+ if (attribute.type === 'BindDirective' && attribute.name === name) return true;
630
+
631
+ const name_lower = name.toLowerCase();
632
+ // match attributes against the corresponding directive but bail out on exact matching
633
+ if (attribute.type === 'StyleDirective' && name_lower === 'style') return true;
634
+ if (attribute.type === 'ClassDirective' && name_lower === 'class') {
635
+ if (operator === '~=') {
636
+ if (attribute.name === expected_value) return true;
637
+ } else {
638
+ return true;
639
+ }
640
+ }
641
+
642
+ if (attribute.type !== 'Attribute') continue;
643
+ if (attribute.name.toLowerCase() !== name_lower) continue;
644
+
645
+ if (attribute.value === true) return operator === null;
646
+ if (expected_value === null) return true;
647
+
648
+ if (is_text_attribute(attribute)) {
649
+ const matches = test_attribute(
650
+ operator,
651
+ expected_value,
652
+ case_insensitive,
653
+ attribute.value[0].data
654
+ );
655
+ // continue if we still may match against a class/style directive
656
+ if (!matches && (name_lower === 'class' || name_lower === 'style')) continue;
657
+ return matches;
658
+ }
659
+
660
+ const chunks = get_attribute_chunks(attribute.value);
661
+ const possible_values = new Set();
662
+
663
+ /** @type {string[]} */
664
+ let prev_values = [];
665
+ for (const chunk of chunks) {
666
+ const current_possible_values = get_possible_values(chunk, name_lower === 'class');
667
+
668
+ // impossible to find out all combinations
669
+ if (!current_possible_values) return true;
670
+
671
+ if (prev_values.length > 0) {
672
+ /** @type {string[]} */
673
+ const start_with_space = [];
674
+
675
+ /** @type {string[]} */
676
+ const remaining = [];
677
+
678
+ current_possible_values.forEach((current_possible_value) => {
679
+ if (regex_starts_with_whitespace.test(current_possible_value)) {
680
+ start_with_space.push(current_possible_value);
681
+ } else {
682
+ remaining.push(current_possible_value);
683
+ }
684
+ });
685
+ if (remaining.length > 0) {
686
+ if (start_with_space.length > 0) {
687
+ prev_values.forEach((prev_value) => possible_values.add(prev_value));
688
+ }
689
+
690
+ /** @type {string[]} */
691
+ const combined = [];
692
+
693
+ prev_values.forEach((prev_value) => {
694
+ remaining.forEach((value) => {
695
+ combined.push(prev_value + value);
696
+ });
697
+ });
698
+ prev_values = combined;
699
+ start_with_space.forEach((value) => {
700
+ if (regex_ends_with_whitespace.test(value)) {
701
+ possible_values.add(value);
702
+ } else {
703
+ prev_values.push(value);
704
+ }
705
+ });
706
+ continue;
707
+ } else {
708
+ prev_values.forEach((prev_value) => possible_values.add(prev_value));
709
+ prev_values = [];
710
+ }
711
+ }
712
+ current_possible_values.forEach((current_possible_value) => {
713
+ if (regex_ends_with_whitespace.test(current_possible_value)) {
714
+ possible_values.add(current_possible_value);
715
+ } else {
716
+ prev_values.push(current_possible_value);
717
+ }
718
+ });
719
+ if (prev_values.length < current_possible_values.length) {
720
+ prev_values.push(' ');
721
+ }
722
+ if (prev_values.length > 20) {
723
+ // might grow exponentially, bail out
724
+ return true;
725
+ }
726
+ }
727
+ prev_values.forEach((prev_value) => possible_values.add(prev_value));
728
+
729
+ for (const value of possible_values) {
730
+ if (test_attribute(operator, expected_value, case_insensitive, value)) return true;
731
+ }
732
+ }
733
+
734
+ return false;
735
+ }
736
+
737
+ /** @param {string} str */
738
+ function unquote(str) {
739
+ if ((str[0] === str[str.length - 1] && str[0] === "'") || str[0] === '"') {
740
+ return str.slice(1, str.length - 1);
741
+ }
742
+ return str;
743
+ }
744
+
745
+ /**
746
+ * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement | Compiler.AST.RenderTag | Compiler.AST.Component | Compiler.AST.SvelteComponent | Compiler.AST.SvelteSelf} node
747
+ * @param {boolean} adjacent_only
748
+ * @param {Set<Compiler.AST.SnippetBlock>} seen
749
+ */
750
+ function get_ancestor_elements(node, adjacent_only, seen = new Set()) {
751
+ /** @type {Array<Compiler.AST.RegularElement | Compiler.AST.SvelteElement>} */
752
+ const ancestors = [];
753
+
754
+ const path = node.metadata.path;
755
+ let i = path.length;
756
+
757
+ while (i--) {
758
+ const parent = path[i];
759
+
760
+ if (parent.type === 'SnippetBlock') {
761
+ if (!seen.has(parent)) {
762
+ seen.add(parent);
763
+
764
+ for (const site of parent.metadata.sites) {
765
+ ancestors.push(...get_ancestor_elements(site, adjacent_only, seen));
766
+ }
767
+ }
768
+
769
+ break;
770
+ }
771
+
772
+ if (parent.type === 'RegularElement' || parent.type === 'SvelteElement') {
773
+ // Special handling for <option> inside <select>: elements inside <option> should
774
+ // also be considered descendants of <selectedcontent>, which clones the selected option's content
775
+ if (parent.type === 'RegularElement' && parent.name === 'option') {
776
+ const is_direct_child = ancestors.length === 0;
777
+
778
+ const select_element = path.findLast(
779
+ (element, j) => element.type === 'RegularElement' && element.name === 'select' && j < i
780
+ );
781
+
782
+ if (select_element && (!adjacent_only || is_direct_child)) {
783
+ /** @type {Compiler.AST.RegularElement | null} */
784
+ let selectedcontent_element = null;
785
+ walk(select_element, null, {
786
+ RegularElement(child, context) {
787
+ if (child.name === 'selectedcontent') {
788
+ selectedcontent_element = child;
789
+ context.stop();
790
+ return;
791
+ }
792
+ context.next();
793
+ }
794
+ });
795
+
796
+ if (adjacent_only && is_direct_child && selectedcontent_element) {
797
+ return [selectedcontent_element, parent];
798
+ } else if (selectedcontent_element) {
799
+ ancestors.push(selectedcontent_element);
800
+ }
801
+ }
802
+ }
803
+
804
+ ancestors.push(parent);
805
+
806
+ if (adjacent_only) {
807
+ break;
808
+ }
809
+ }
810
+ }
811
+
812
+ return ancestors;
813
+ }
814
+
815
+ /**
816
+ * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement | Compiler.AST.RenderTag | Compiler.AST.Component | Compiler.AST.SvelteComponent | Compiler.AST.SvelteSelf} node
817
+ * @param {boolean} adjacent_only
818
+ * @param {Set<Compiler.AST.SnippetBlock>} seen
819
+ */
820
+ function get_descendant_elements(node, adjacent_only, seen = new Set()) {
821
+ /** @type {Array<Compiler.AST.RegularElement | Compiler.AST.SvelteElement>} */
822
+ const descendants = [];
823
+
824
+ /**
825
+ * @param {Compiler.AST.SvelteNode} node
826
+ */
827
+ function walk_children(node) {
828
+ walk(node, null, {
829
+ _(node, context) {
830
+ if (node.type === 'RegularElement' || node.type === 'SvelteElement') {
831
+ descendants.push(node);
832
+
833
+ if (!adjacent_only) {
834
+ context.next();
835
+ }
836
+ } else if (node.type === 'RenderTag') {
837
+ for (const snippet of node.metadata.snippets) {
838
+ if (seen.has(snippet)) continue;
839
+
840
+ seen.add(snippet);
841
+ walk_children(snippet.body);
842
+ }
843
+ } else {
844
+ context.next();
845
+ }
846
+ }
847
+ });
848
+ }
849
+
850
+ walk_children(node.type === 'RenderTag' ? node : node.fragment);
851
+
852
+ // Special handling for <selectedcontent>: it clones the content of the selected <option>,
853
+ // so descendants of <option> elements in the same <select> should also be considered descendants
854
+ if (node.type === 'RegularElement' && node.name === 'selectedcontent') {
855
+ const path = node.metadata.path;
856
+ const select_element = path.findLast(
857
+ (/** @type {Compiler.AST.SvelteNode} */ element) =>
858
+ element.type === 'RegularElement' && element.name === 'select'
859
+ );
860
+
861
+ if (select_element) {
862
+ walk(
863
+ select_element,
864
+ { inside_option: false },
865
+ {
866
+ _(child, context) {
867
+ if (child.type === 'RegularElement' && child.name === 'option') {
868
+ context.next({ inside_option: true });
869
+ } else if (context.state.inside_option) {
870
+ walk_children(child);
871
+ } else {
872
+ context.next();
873
+ }
874
+ }
875
+ }
876
+ );
877
+ }
878
+ }
879
+
880
+ return descendants;
881
+ }
882
+
883
+ /**
884
+ * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement | Compiler.AST.RenderTag | Compiler.AST.Component | Compiler.AST.SvelteComponent | Compiler.AST.SvelteSelf} node
885
+ * @returns {Compiler.AST.RegularElement | Compiler.AST.SvelteElement | null}
886
+ */
887
+ function get_element_parent(node) {
888
+ let path = node.metadata.path;
889
+ let i = path.length;
890
+
891
+ while (i--) {
892
+ const parent = path[i];
893
+
894
+ if (parent.type === 'RegularElement' || parent.type === 'SvelteElement') {
895
+ return parent;
896
+ }
897
+ }
898
+
899
+ return null;
900
+ }
901
+
902
+ /**
903
+ * @param {Compiler.AST.RegularElement | Compiler.AST.SvelteElement | Compiler.AST.RenderTag | Compiler.AST.Component | Compiler.AST.SvelteComponent | Compiler.AST.SvelteSelf} node
904
+ * @param {Direction} direction
905
+ * @param {boolean} adjacent_only
906
+ * @param {Set<Compiler.AST.SnippetBlock>} seen
907
+ * @returns {Map<Compiler.AST.RegularElement | Compiler.AST.SvelteElement | Compiler.AST.SlotElement | Compiler.AST.RenderTag | Compiler.AST.Component, NodeExistsValue>}
908
+ */
909
+ function get_possible_element_siblings(node, direction, adjacent_only, seen = new Set()) {
910
+ /** @type {Map<Compiler.AST.RegularElement | Compiler.AST.SvelteElement | Compiler.AST.SlotElement | Compiler.AST.RenderTag | Compiler.AST.Component, NodeExistsValue>} */
911
+ const result = new Map();
912
+ const path = node.metadata.path;
913
+
914
+ /** @type {Compiler.AST.SvelteNode} */
915
+ let current = node;
916
+
917
+ let i = path.length;
918
+
919
+ while (i--) {
920
+ const fragment = /** @type {Compiler.AST.Fragment} */ (path[i--]);
921
+ let j = fragment.nodes.indexOf(current) + (direction === FORWARD ? 1 : -1);
922
+
923
+ while (j >= 0 && j < fragment.nodes.length) {
924
+ const node = fragment.nodes[j];
925
+
926
+ if (node.type === 'RegularElement') {
927
+ const has_slot_attribute = node.attributes.some(
928
+ (attr) => attr.type === 'Attribute' && attr.name.toLowerCase() === 'slot'
929
+ );
930
+
931
+ if (!has_slot_attribute) {
932
+ result.set(node, NODE_DEFINITELY_EXISTS);
933
+
934
+ if (adjacent_only) {
935
+ return result;
936
+ }
937
+ }
938
+ // Special case: slots, render tags and svelte:element tags could resolve to no siblings,
939
+ // so we want to continue until we find a definite sibling even with the adjacent-only combinator
940
+ } else if (is_block(node) || node.type === 'Component') {
941
+ if (node.type === 'SlotElement' || node.type === 'Component') {
942
+ result.set(node, NODE_PROBABLY_EXISTS);
943
+ }
944
+
945
+ const possible_last_child = get_possible_nested_siblings(node, direction, adjacent_only);
946
+ add_to_map(possible_last_child, result);
947
+ if (
948
+ adjacent_only &&
949
+ node.type !== 'Component' &&
950
+ has_definite_elements(possible_last_child)
951
+ ) {
952
+ return result;
953
+ }
954
+ } else if (node.type === 'SvelteElement') {
955
+ result.set(node, NODE_PROBABLY_EXISTS);
956
+ } else if (node.type === 'RenderTag') {
957
+ result.set(node, NODE_PROBABLY_EXISTS);
958
+ for (const snippet of node.metadata.snippets) {
959
+ add_to_map(get_possible_nested_siblings(snippet, direction, adjacent_only), result);
960
+ }
961
+ }
962
+
963
+ j = direction === FORWARD ? j + 1 : j - 1;
964
+ }
965
+
966
+ current = path[i];
967
+
968
+ if (!current) break;
969
+
970
+ if (
971
+ current.type === 'Component' ||
972
+ current.type === 'SvelteComponent' ||
973
+ current.type === 'SvelteSelf'
974
+ ) {
975
+ continue;
976
+ }
977
+
978
+ if (current.type === 'SnippetBlock') {
979
+ if (seen.has(current)) break;
980
+ seen.add(current);
981
+
982
+ for (const site of current.metadata.sites) {
983
+ const siblings = get_possible_element_siblings(site, direction, adjacent_only, seen);
984
+ add_to_map(siblings, result);
985
+
986
+ if (adjacent_only && current.metadata.sites.size === 1 && has_definite_elements(siblings)) {
987
+ return result;
988
+ }
989
+ }
990
+ }
991
+
992
+ if (!is_block(current)) break;
993
+
994
+ if (current.type === 'EachBlock' && fragment === current.body) {
995
+ // `{#each ...}<a /><b />{/each}` — `<b>` can be previous sibling of `<a />`
996
+ add_to_map(get_possible_nested_siblings(current, direction, adjacent_only), result);
997
+ }
998
+ }
999
+
1000
+ return result;
1001
+ }
1002
+
1003
+ /**
1004
+ * @param {Compiler.AST.EachBlock | Compiler.AST.IfBlock | Compiler.AST.AwaitBlock | Compiler.AST.KeyBlock | Compiler.AST.SlotElement | Compiler.AST.SnippetBlock | Compiler.AST.Component} node
1005
+ * @param {Direction} direction
1006
+ * @param {boolean} adjacent_only
1007
+ * @param {Set<Compiler.AST.SnippetBlock>} seen
1008
+ * @returns {Map<Compiler.AST.RegularElement | Compiler.AST.SvelteElement, NodeExistsValue>}
1009
+ */
1010
+ function get_possible_nested_siblings(node, direction, adjacent_only, seen = new Set()) {
1011
+ /** @type {Array<Compiler.AST.Fragment | undefined | null>} */
1012
+ let fragments = [];
1013
+
1014
+ switch (node.type) {
1015
+ case 'EachBlock':
1016
+ fragments.push(node.body, node.fallback);
1017
+ break;
1018
+
1019
+ case 'IfBlock':
1020
+ fragments.push(node.consequent, node.alternate);
1021
+ break;
1022
+
1023
+ case 'AwaitBlock':
1024
+ fragments.push(node.pending, node.then, node.catch);
1025
+ break;
1026
+
1027
+ case 'KeyBlock':
1028
+ case 'SlotElement':
1029
+ fragments.push(node.fragment);
1030
+ break;
1031
+
1032
+ case 'SnippetBlock':
1033
+ if (seen.has(node)) {
1034
+ return new Map();
1035
+ }
1036
+ seen.add(node);
1037
+ fragments.push(node.body);
1038
+ break;
1039
+
1040
+ case 'Component':
1041
+ fragments.push(node.fragment, ...[...node.metadata.snippets].map((s) => s.body));
1042
+ break;
1043
+ }
1044
+
1045
+ /** @type {Map<Compiler.AST.RegularElement | Compiler.AST.SvelteElement, NodeExistsValue>} NodeMap */
1046
+ const result = new Map();
1047
+
1048
+ let exhaustive = node.type !== 'SlotElement' && node.type !== 'SnippetBlock';
1049
+
1050
+ for (const fragment of fragments) {
1051
+ if (fragment == null) {
1052
+ exhaustive = false;
1053
+ continue;
1054
+ }
1055
+
1056
+ const map = loop_child(fragment.nodes, direction, adjacent_only, seen);
1057
+ exhaustive &&= has_definite_elements(map);
1058
+
1059
+ add_to_map(map, result);
1060
+ }
1061
+
1062
+ if (!exhaustive) {
1063
+ for (const key of result.keys()) {
1064
+ result.set(key, NODE_PROBABLY_EXISTS);
1065
+ }
1066
+ }
1067
+
1068
+ return result;
1069
+ }
1070
+
1071
+ /**
1072
+ * @param {Map<unknown, NodeExistsValue>} result
1073
+ * @returns {boolean}
1074
+ */
1075
+ function has_definite_elements(result) {
1076
+ if (result.size === 0) return false;
1077
+ for (const exist of result.values()) {
1078
+ if (exist === NODE_DEFINITELY_EXISTS) {
1079
+ return true;
1080
+ }
1081
+ }
1082
+ return false;
1083
+ }
1084
+
1085
+ /**
1086
+ * @template T2
1087
+ * @template {T2} T1
1088
+ * @param {Map<T1, NodeExistsValue>} from
1089
+ * @param {Map<T2, NodeExistsValue>} to
1090
+ * @returns {void}
1091
+ */
1092
+ function add_to_map(from, to) {
1093
+ from.forEach((exist, element) => {
1094
+ to.set(element, higher_existence(exist, to.get(element)));
1095
+ });
1096
+ }
1097
+
1098
+ /**
1099
+ * @param {NodeExistsValue} exist1
1100
+ * @param {NodeExistsValue | undefined} exist2
1101
+ * @returns {NodeExistsValue}
1102
+ */
1103
+ function higher_existence(exist1, exist2) {
1104
+ if (exist2 === undefined) return exist1;
1105
+ return exist1 > exist2 ? exist1 : exist2;
1106
+ }
1107
+
1108
+ /**
1109
+ * @param {Compiler.AST.SvelteNode[]} children
1110
+ * @param {Direction} direction
1111
+ * @param {boolean} adjacent_only
1112
+ * @param {Set<Compiler.AST.SnippetBlock>} seen
1113
+ */
1114
+ function loop_child(children, direction, adjacent_only, seen) {
1115
+ /** @type {Map<Compiler.AST.RegularElement | Compiler.AST.SvelteElement, NodeExistsValue>} */
1116
+ const result = new Map();
1117
+
1118
+ let i = direction === FORWARD ? 0 : children.length - 1;
1119
+
1120
+ while (i >= 0 && i < children.length) {
1121
+ const child = children[i];
1122
+
1123
+ if (child.type === 'RegularElement') {
1124
+ result.set(child, NODE_DEFINITELY_EXISTS);
1125
+ if (adjacent_only) {
1126
+ break;
1127
+ }
1128
+ } else if (child.type === 'SvelteElement') {
1129
+ result.set(child, NODE_PROBABLY_EXISTS);
1130
+ } else if (child.type === 'RenderTag') {
1131
+ for (const snippet of child.metadata.snippets) {
1132
+ add_to_map(get_possible_nested_siblings(snippet, direction, adjacent_only, seen), result);
1133
+ }
1134
+ } else if (is_block(child)) {
1135
+ const child_result = get_possible_nested_siblings(child, direction, adjacent_only, seen);
1136
+ add_to_map(child_result, result);
1137
+ if (adjacent_only && has_definite_elements(child_result)) {
1138
+ break;
1139
+ }
1140
+ }
1141
+
1142
+ i = direction === FORWARD ? i + 1 : i - 1;
1143
+ }
1144
+
1145
+ return result;
1146
+ }
1147
+
1148
+ /**
1149
+ * @param {Compiler.AST.SvelteNode} node
1150
+ * @returns {node is Compiler.AST.IfBlock | Compiler.AST.EachBlock | Compiler.AST.AwaitBlock | Compiler.AST.KeyBlock | Compiler.AST.SlotElement}
1151
+ */
1152
+ function is_block(node) {
1153
+ return (
1154
+ node.type === 'IfBlock' ||
1155
+ node.type === 'EachBlock' ||
1156
+ node.type === 'AwaitBlock' ||
1157
+ node.type === 'KeyBlock' ||
1158
+ node.type === 'SlotElement'
1159
+ );
1160
+ }